mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-17 01:34:21 +00:00
(imenu--cleanup): Handle shared structure in alist.
This commit is contained in:
parent
edce365443
commit
79e098ca05
1 changed files with 14 additions and 7 deletions
|
|
@ -469,16 +469,21 @@ This function is called after the function pointed out by
|
|||
(setq imenu--index-alist (list nil)))
|
||||
;; Add a rescan option to the index.
|
||||
(cons imenu--rescan-item imenu--index-alist))
|
||||
;;;
|
||||
|
||||
;;; Find all markers in alist and makes
|
||||
;;; them point nowhere.
|
||||
;;;
|
||||
;;; The top-level call uses nil as the argument;
|
||||
;;; non-nil arguments are in recursivecalls.
|
||||
(defvar imenu--cleanup-seen)
|
||||
|
||||
(defun imenu--cleanup (&optional alist)
|
||||
;; Sets the markers in imenu--index-alist
|
||||
;; point nowhere.
|
||||
;; if alist is provided use that list.
|
||||
(or alist
|
||||
(setq alist imenu--index-alist))
|
||||
;; If alist is provided use that list.
|
||||
;; If not, empty the table of lists already seen
|
||||
;; and use imenu--index-alist.
|
||||
(if alist
|
||||
(setq imenu--cleanup-seen (cons alist imenu--cleanup-seen))
|
||||
(setq alist imenu--index-alist imenu--cleanup-seen (list alist)))
|
||||
|
||||
(and alist
|
||||
(mapcar
|
||||
(function
|
||||
|
|
@ -486,6 +491,8 @@ This function is called after the function pointed out by
|
|||
(cond
|
||||
((markerp (cdr item))
|
||||
(set-marker (cdr item) nil))
|
||||
;; Don't process one alist twice.
|
||||
((memq (cdr item) imenu--cleanup-seen))
|
||||
((imenu--subalist-p item)
|
||||
(imenu--cleanup (cdr item))))))
|
||||
alist)
|
||||
|
|
|
|||
Loading…
Reference in a new issue