aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/imenu.el
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>2004-11-20 23:31:55 +0000
committerRichard M. Stallman <[email protected]>2004-11-20 23:31:55 +0000
commit58b00d475bebd1402eb44f4de4a3a0a972bd647e (patch)
treed6a390055af011919270738f2bfdb39c5e558f3d /lisp/imenu.el
parent36baf3b70ed00000fe4dafe2fed72575cfd93dbd (diff)
(imenu--generic-function):
Ensure we keep moving backward even if BEG isn't further back.
Diffstat (limited to 'lisp/imenu.el')
-rw-r--r--lisp/imenu.el14
1 files changed, 11 insertions, 3 deletions
diff --git a/lisp/imenu.el b/lisp/imenu.el
index 16116025fb..d20dc4bccb 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -808,14 +808,18 @@ depending on PATTERNS."
(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 @@ depending on PATTERNS."
;; 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.