Mercurial > emacs
changeset 58364:c8e69a3cb57f
(imenu--generic-function):
Ensure we keep moving backward even if BEG isn't further back.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 20 Nov 2004 23:31:34 +0000 |
parents | f8ac0eb0faa3 |
children | 1b70e511be22 |
files | lisp/imenu.el |
diffstat | 1 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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.