]> code.delx.au - gnu-emacs/blobdiff - lisp/imenu.el
(gdb-flush-pending-output): New variable.
[gnu-emacs] / lisp / imenu.el
index 7c775dc6337166e4dd6d7b12a328492379461669..d20dc4bccb832820c28443410e4d5477c179c790 100644 (file)
@@ -126,7 +126,9 @@ If `on-mouse' use a popup menu when `imenu' was invoked with the mouse."
 (defcustom imenu-eager-completion-buffer
   (not (eq imenu-always-use-completion-buffer-p 'never))
   "If non-nil, eagerly popup the completion buffer."
-  :type 'boolean)
+  :type 'boolean
+  :group 'imenu
+  :version "21.4")
 
 (defcustom imenu-after-jump-hook nil
   "*Hooks called after jumping to a place in the buffer.
@@ -806,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
@@ -835,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.