# HG changeset patch # User Richard M. Stallman # Date 1100993494 0 # Node ID c8e69a3cb57f06cafcf89799f85e109229740267 # Parent f8ac0eb0faa372e5ad6cfe9387bccef7f5088ba0 (imenu--generic-function): Ensure we keep moving backward even if BEG isn't further back. diff -r f8ac0eb0faa3 -r c8e69a3cb57f lisp/imenu.el --- a/lisp/imenu.el Sat Nov 20 22:32:07 2004 +0000 +++ b/lisp/imenu.el Sat Nov 20 23:31:34 2004 +0000 @@ -808,14 +808,18 @@ (index (nth 2 pat)) (function (nth 3 pat)) (rest (nthcdr 4 pat)) + start cs) ;; Go backwards for convenience of adding items in order. (goto-char (point-max)) (while (re-search-backward regexp nil t) + (setq start (point)) (goto-char (match-end index)) (setq beg (match-beginning index)) - (if (setq cs (save-match-data (comment-beginning))) - (goto-char cs) ; skip this one, it's in a comment + (setq cs (and comment-start-skip + (save-match-data (comment-beginning)))) + (if cs + (goto-char (min cs beg)) ; skip this one, it's in a comment (goto-char beg) (imenu-progress-message prev-pos nil t) ;; Add this sort of submenu only when we've found an @@ -837,7 +841,11 @@ ;; Insert the item unless it is already present. (unless (member item (cdr menu)) (setcdr menu - (cons item (cdr menu))))))))) + (cons item (cdr menu))))) + ;; Move to the start of the entire match, + ;; to ensure we keep moving backwards + ;; as long as the match is nonempty. + (goto-char start))))) (set-syntax-table old-table))) (imenu-progress-message prev-pos 100 t) ;; Sort each submenu by position.