changeset 11325:032239e758c4

(menu-bar-update-buffers): Reuse the entry for list-buffers rather than making a new one each time.
author Richard M. Stallman <rms@gnu.org>
date Sun, 09 Apr 1995 07:32:17 +0000
parents 3190c85854b6
children 0d5ebc078c51
files lisp/menu-bar.el
diffstat 1 files changed, 22 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/menu-bar.el	Sun Apr 09 06:47:22 1995 +0000
+++ b/lisp/menu-bar.el	Sun Apr 09 07:32:17 1995 +0000
@@ -429,6 +429,8 @@
 	   file))
 	(car elt)))
 
+(defvar menu-bar-buffers-menu-list-buffers-entry nil)
+
 (defun menu-bar-update-buffers ()
   ;; If user discards the Buffers item, play along.
   (and (lookup-key (current-global-map) [menu-bar buffer])
@@ -486,6 +488,25 @@
 				(setq maxlen (length (car (car alist))))))
 			 (setq tail (cdr tail)))
 		       (setq alist (nreverse alist))
+		       ;; Make the menu item for list-buffers
+		       ;; or reuse the one we already have.
+		       ;; The advantage in reusing one
+		       ;; is that it already has the keyboard equivalent
+		       ;; cached, so we save the time to look that up again.
+		       (or menu-bar-buffers-menu-list-buffers-entry
+			   (setq menu-bar-buffers-menu-list-buffers-entry
+				 (cons
+				  'list-buffers
+				  (cons
+				   ""
+				   'list-buffers))))
+		       ;; Update the item string for menu's new width.
+		       (setcar (cdr menu-bar-buffers-menu-list-buffers-entry)
+			       (concat (make-string (max (- (/ maxlen 2) 8) 0)
+						    ?\ )
+				       "List All Buffers"))
+		       ;; Now make the actual list of items,
+		       ;; ending with the list-buffers item.
 		       (nconc (mapcar '(lambda (pair)
 					 ;; This is somewhat risque, to use
 					 ;; the buffer name itself as the event
@@ -498,14 +519,7 @@
 						      (cons nil nil))
 						'menu-bar-select-buffer))
 				      alist)
-			      (list
-			       (cons
-				'list-buffers
-				(cons
-				 (concat (make-string (max (- (/ maxlen 2) 8) 0)
-						      ?\ )
-					 "List All Buffers")
-				 'list-buffers)))))))
+			      (list menu-bar-buffers-menu-list-buffers-entry)))))
 
 
 	 ;; Make a Frames menu if we have more than one frame.