changeset 48942:86ecd875b9c5

(easy-menu-do-define): Handle nil for SYMBOL. (easy-menu-define): Doc fix, say SYMBOL can be nil.
author Richard M. Stallman <rms@gnu.org>
date Mon, 23 Dec 2002 17:59:04 +0000
parents 7262fd90146a
children d096b3c93f80
files lisp/emacs-lisp/easymenu.el
diffstat 1 files changed, 18 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/easymenu.el	Mon Dec 23 17:57:12 2002 +0000
+++ b/lisp/emacs-lisp/easymenu.el	Mon Dec 23 17:59:04 2002 +0000
@@ -49,8 +49,10 @@
 ;;;###autoload
 (defmacro easy-menu-define (symbol maps doc menu)
   "Define a menu bar submenu in maps MAPS, according to MENU.
-The menu keymap is stored in symbol SYMBOL, both as its value
-and as its function definition.  DOC is used as the doc string for SYMBOL.
+
+If SYMBOL is non-nil, store the menu keymap in the value of SYMBOL,
+and define SYMBOL as a function to pop up the menu, with DOC as its doc string.
+If SYMBOL is nil, just store the menu keymap into MAPS.
 
 The first element of MENU must be a string.  It is the menu bar item name.
 It may be followed by the following keyword argument pairs
@@ -156,19 +158,20 @@
   ;; compatible.  Therefore everything interesting is done in this
   ;; function.
   (let ((keymap (easy-menu-create-menu (car menu) (cdr menu))))
-    (set symbol keymap)
-    (fset symbol
-	  `(lambda (event) ,doc (interactive "@e")
-	     ;; FIXME: XEmacs uses popup-menu which calls the binding
-	     ;; while x-popup-menu only returns the selection.
-	     (x-popup-menu event
-			   (or (and (symbolp ,symbol)
-				    (funcall
-				     (or (plist-get (get ,symbol 'menu-prop)
-						    :filter)
-					 'identity)
-				     (symbol-function ,symbol)))
-			       ,symbol))))
+    (when symbol
+      (set symbol keymap)
+      (fset symbol
+	    `(lambda (event) ,doc (interactive "@e")
+	       ;; FIXME: XEmacs uses popup-menu which calls the binding
+	       ;; while x-popup-menu only returns the selection.
+	       (x-popup-menu event
+			     (or (and (symbolp ,symbol)
+				      (funcall
+				       (or (plist-get (get ,symbol 'menu-prop)
+						      :filter)
+					   'identity)
+				       (symbol-function ,symbol)))
+				 ,symbol)))))
     (mapcar (lambda (map)
 	      (define-key map (vector 'menu-bar (easy-menu-intern (car menu)))
 		(cons 'menu-item