]> git.eshelyaron.com Git - emacs.git/commitdiff
(imenu-update-menubar-modified-tick): New variable.
authorRichard M. Stallman <rms@gnu.org>
Mon, 11 Mar 2002 09:16:37 +0000 (09:16 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 11 Mar 2002 09:16:37 +0000 (09:16 +0000)
(imenu-update-menubar): Don't call imenu--make-index-alist
if buffer has not changed since last time.

lisp/imenu.el

index 0dce3a98a6ed6bdca02b959459c8947c50c8ae11..eb30f94182feb69af830fb455dd6018727f62149 100644 (file)
@@ -980,9 +980,16 @@ A trivial interface to `imenu-add-to-menubar' suitable for use in a hook."
 
 (defvar imenu-buffer-menubar nil)
 
+(defvar imenu-update-menubar-modified-tick 0
+  "The value of (buffer-modified-tick) as of last call to `imenu-update-menubar'.
+This value becomes local in every buffer when it is set.")
+(make-variable-buffer-local 'imenu-update-menubar-modified-tick)
+
 (defun imenu-update-menubar ()
   (and (current-local-map)
        (keymapp (lookup-key (current-local-map) [menu-bar index]))
+       (not (eq (buffer-modified-tick)
+               imenu-update-menubar-modified-tick))
        (let ((index-alist (imenu--make-index-alist t)))
         ;; Don't bother updating if the index-alist has not changed
         ;; since the last time we did it.
@@ -996,6 +1003,8 @@ A trivial interface to `imenu-add-to-menubar' suitable for use in a hook."
                                                    (if (< 1 (length (cdr menu)))
                                                        (cdr menu)
                                                     (cdr (car (cdr menu))))))
+              (setq imenu-update-menubar-modified-tick
+                    (buffer-modified-tick))
               (setq old (lookup-key (current-local-map) [menu-bar index]))
               (setcdr old (cdr menu1)))))))