summaryrefslogtreecommitdiff
path: root/lisp/imenu.el
diff options
context:
space:
mode:
authorFilipp Gunbin <fgunbin@fastmail.fm>2018-07-18 16:11:47 +0300
committerFilipp Gunbin <fgunbin@fastmail.fm>2018-07-18 16:11:47 +0300
commit343b29381cc53d53b1a2c1fdfacf0f5c4761f505 (patch)
treeb89158b012985e9d90ed67753793c78facae74b4 /lisp/imenu.el
parenta68270785be1301fd4d416ae0bdfa06b81fb1cda (diff)
downloademacs-343b29381cc53d53b1a2c1fdfacf0f5c4761f505.tar.gz
Fix imenu--generic-function after fix for Bug#32024.
* lisp/imenu.el (imenu--generic-function): Restore returning of nconc result from the function. Move filtering out empty menus so it is done before removing dummy element and splicing main element into index-alist.
Diffstat (limited to 'lisp/imenu.el')
-rw-r--r--lisp/imenu.el13
1 files changed, 6 insertions, 7 deletions
diff --git a/lisp/imenu.el b/lisp/imenu.el
index edca51e3ade..7285b105748 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -832,15 +832,14 @@ depending on PATTERNS."
(dolist (item index-alist)
(when (listp item)
(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)))
;; 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)))))
+ (setq index-alist (cl-delete-if
+ (lambda (it) (and (consp it) (null (cdr it))))
+ index-alist))
+ (let ((main-element (assq nil index-alist)))
+ (nconc (delq main-element (delq 'dummy index-alist))
+ (cdr main-element)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;