aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/imenu.el16
1 files changed, 11 insertions, 5 deletions
diff --git a/lisp/imenu.el b/lisp/imenu.el
index bc9e8669369..b62b650e5e6 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -493,11 +493,17 @@ This function is called after the function pointed out by
493 tail (cdr elt) 493 tail (cdr elt)
494 alist (cdr alist) 494 alist (cdr alist)
495 head (car elt)) 495 head (car elt))
496 (if (string= str head) 496 ;; A nested ALIST element looks like
497 (setq alist nil res elt) 497 ;; (INDEX-NAME (INDEX-NAME . INDEX-POSITION) ...)
498 (if (and (listp tail) 498 ;; while a bottom-level element looks like
499 (setq res (imenu--in-alist str tail))) 499 ;; (INDEX-NAME . INDEX-POSITION)
500 (setq alist nil)))) 500 ;; We are only interested in the bottom-level elements, so we need to
501 ;; recurse if TAIL is a list.
502 (cond ((listp tail)
503 (if (setq res (imenu--in-alist str tail))
504 (setq alist nil)))
505 ((string= str head)
506 (setq alist nil res elt))))
501 res)) 507 res))
502 508
503(defun imenu-default-create-index-function () 509(defun imenu-default-create-index-function ()