mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-23 07:19:15 +00:00
(imenu--generic-function): The official position of a
definition is the start of the line that BEG is in.
This commit is contained in:
parent
ed4761a927
commit
1cade2b675
@ -777,7 +777,7 @@ They may also be nested index alists like:
|
||||
depending on PATTERNS."
|
||||
|
||||
(let ((index-alist (list 'dummy))
|
||||
prev-pos beg
|
||||
prev-pos
|
||||
(case-fold-search (if (or (local-variable-p 'imenu-case-fold-search)
|
||||
(not (local-variable-p 'font-lock-defaults)))
|
||||
imenu-case-fold-search
|
||||
@ -807,7 +807,7 @@ depending on PATTERNS."
|
||||
(index (nth 2 pat))
|
||||
(function (nth 3 pat))
|
||||
(rest (nthcdr 4 pat))
|
||||
start)
|
||||
start beg)
|
||||
;; Go backwards for convenience of adding items in order.
|
||||
(goto-char (point-max))
|
||||
(while (and (re-search-backward regexp nil t)
|
||||
@ -815,32 +815,35 @@ depending on PATTERNS."
|
||||
;; because it means a bad regexp was specified.
|
||||
(not (= (match-beginning 0) (match-end 0))))
|
||||
(setq start (point))
|
||||
(goto-char (match-end index))
|
||||
(setq beg (match-beginning index))
|
||||
;; Go to the start of the match.
|
||||
;; Record the start of the line in which the match starts.
|
||||
;; That's the official position of this definition.
|
||||
(goto-char start)
|
||||
(goto-char (match-beginning index))
|
||||
(beginning-of-line)
|
||||
(setq beg (point))
|
||||
(imenu-progress-message prev-pos nil t)
|
||||
;; Add this sort of submenu only when we've found an
|
||||
;; item for it, avoiding empty, duff menus.
|
||||
(unless (assoc menu-title index-alist)
|
||||
(push (list menu-title) index-alist))
|
||||
(if imenu-use-markers
|
||||
(setq start (copy-marker start)))
|
||||
(setq beg (copy-marker beg)))
|
||||
(let ((item
|
||||
(if function
|
||||
(nconc (list (match-string-no-properties index)
|
||||
start function)
|
||||
beg function)
|
||||
rest)
|
||||
(cons (match-string-no-properties index)
|
||||
start)))
|
||||
beg)))
|
||||
;; This is the desired submenu,
|
||||
;; starting with its title (or nil).
|
||||
(menu (assoc menu-title index-alist)))
|
||||
;; Insert the item unless it is already present.
|
||||
(unless (member item (cdr menu))
|
||||
(setcdr menu
|
||||
(cons item (cdr menu))))))))
|
||||
(cons item (cdr menu)))))
|
||||
;; Go to the start of the match, to make sure we
|
||||
;; keep making progress backwards.
|
||||
(goto-char start))))
|
||||
(set-syntax-table old-table)))
|
||||
(imenu-progress-message prev-pos 100 t)
|
||||
;; Sort each submenu by position.
|
||||
|
Loading…
Reference in New Issue
Block a user