comparison lisp/imenu.el @ 43832:5d834c3f5d18

(imenu-update-menubar-modified-tick): New variable. (imenu-update-menubar): Don't call imenu--make-index-alist if buffer has not changed since last time.
author Richard M. Stallman <rms@gnu.org>
date Mon, 11 Mar 2002 09:16:37 +0000
parents 71197bcff33c
children a40fcee55faa
comparison
equal deleted inserted replaced
43831:7837693f5bac 43832:5d834c3f5d18
978 (interactive) 978 (interactive)
979 (imenu-add-to-menubar "Index")) 979 (imenu-add-to-menubar "Index"))
980 980
981 (defvar imenu-buffer-menubar nil) 981 (defvar imenu-buffer-menubar nil)
982 982
983 (defvar imenu-update-menubar-modified-tick 0
984 "The value of (buffer-modified-tick) as of last call to `imenu-update-menubar'.
985 This value becomes local in every buffer when it is set.")
986 (make-variable-buffer-local 'imenu-update-menubar-modified-tick)
987
983 (defun imenu-update-menubar () 988 (defun imenu-update-menubar ()
984 (and (current-local-map) 989 (and (current-local-map)
985 (keymapp (lookup-key (current-local-map) [menu-bar index])) 990 (keymapp (lookup-key (current-local-map) [menu-bar index]))
991 (not (eq (buffer-modified-tick)
992 imenu-update-menubar-modified-tick))
986 (let ((index-alist (imenu--make-index-alist t))) 993 (let ((index-alist (imenu--make-index-alist t)))
987 ;; Don't bother updating if the index-alist has not changed 994 ;; Don't bother updating if the index-alist has not changed
988 ;; since the last time we did it. 995 ;; since the last time we did it.
989 (or (equal index-alist imenu--last-menubar-index-alist) 996 (or (equal index-alist imenu--last-menubar-index-alist)
990 (let (menu menu1 old) 997 (let (menu menu1 old)
994 (buffer-name))) 1001 (buffer-name)))
995 (setq menu1 (imenu--create-keymap-1 (car menu) 1002 (setq menu1 (imenu--create-keymap-1 (car menu)
996 (if (< 1 (length (cdr menu))) 1003 (if (< 1 (length (cdr menu)))
997 (cdr menu) 1004 (cdr menu)
998 (cdr (car (cdr menu)))))) 1005 (cdr (car (cdr menu))))))
1006 (setq imenu-update-menubar-modified-tick
1007 (buffer-modified-tick))
999 (setq old (lookup-key (current-local-map) [menu-bar index])) 1008 (setq old (lookup-key (current-local-map) [menu-bar index]))
1000 (setcdr old (cdr menu1))))))) 1009 (setcdr old (cdr menu1)))))))
1001 1010
1002 (defun imenu--menubar-select (item) 1011 (defun imenu--menubar-select (item)
1003 "Use Imenu to select the function or variable named in this menu ITEM." 1012 "Use Imenu to select the function or variable named in this menu ITEM."