]> git.eshelyaron.com Git - emacs.git/commitdiff
(imenu--in-alist): Accept only bottom-level matches.
authorRichard M. Stallman <rms@gnu.org>
Mon, 26 Aug 1996 00:08:21 +0000 (00:08 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 26 Aug 1996 00:08:21 +0000 (00:08 +0000)
lisp/imenu.el

index bc9e86693690628cbf15ade3fb1c8b97e6869db5..b62b650e5e6789f236767d67f9f4b37b27764ce4 100644 (file)
@@ -493,11 +493,17 @@ This function is called after the function pointed out by
            tail (cdr elt)
            alist (cdr alist) 
            head (car elt)) 
-      (if (string= str head)
-         (setq alist nil res elt)
-       (if (and (listp tail)
-                (setq res (imenu--in-alist str tail)))
-           (setq alist nil))))
+      ;; A nested ALIST element looks like
+      ;;   (INDEX-NAME (INDEX-NAME . INDEX-POSITION) ...)
+      ;; while a bottom-level element looks like
+      ;;   (INDEX-NAME . INDEX-POSITION)
+      ;; We are only interested in the bottom-level elements, so we need to
+      ;; recurse if TAIL is a list.
+      (cond ((listp tail)
+            (if (setq res (imenu--in-alist str tail))
+                (setq alist nil)))
+           ((string= str head)
+            (setq alist nil res elt))))
     res))
 
 (defun imenu-default-create-index-function ()