mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-30 19:53:09 +00:00
Fix 2 minor bugs in 'imenu--generic-function'
* lisp/imenu.el (imenu--generic-function): Move point to START before checking whether the current item is inside a comment or a string. Remove any empty menus that could have been added before returning. (Bug#32024)
This commit is contained in:
parent
ea2f96837d
commit
77166e0da2
@ -60,6 +60,7 @@
|
||||
;;; Code:
|
||||
|
||||
(eval-when-compile (require 'cl-lib))
|
||||
(require 'cl-seq)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;
|
||||
@ -819,7 +820,8 @@ depending on PATTERNS."
|
||||
;; Insert the item unless it is already present.
|
||||
(unless (or (member item (cdr menu))
|
||||
(and imenu-generic-skip-comments-and-strings
|
||||
(nth 8 (syntax-ppss))))
|
||||
(save-excursion
|
||||
(goto-char start) (nth 8 (syntax-ppss)))))
|
||||
(setcdr menu
|
||||
(cons item (cdr menu)))))
|
||||
;; Go to the start of the match, to make sure we
|
||||
@ -833,7 +835,13 @@ depending on PATTERNS."
|
||||
(setcdr item (sort (cdr item) 'imenu--sort-by-position))))
|
||||
(let ((main-element (assq nil index-alist)))
|
||||
(nconc (delq main-element (delq 'dummy index-alist))
|
||||
(cdr main-element)))))
|
||||
(cdr main-element)))
|
||||
;; Remove any empty menus. That can happen because of skipping
|
||||
;; things inside comments or strings.
|
||||
(when (consp (car index-alist))
|
||||
(setq index-alist (cl-delete-if-not
|
||||
(lambda (it) (cdr it))
|
||||
index-alist)))))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;
|
||||
|
Loading…
Reference in New Issue
Block a user