Mercurial > emacs
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." |