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