A menu item can be a list with the same format as MENU. This is a submenu."
`(progn
- (defvar ,symbol nil ,doc)
+ ,(if symbol `(defvar ,symbol nil ,doc))
(easy-menu-do-define (quote ,symbol) ,maps ,doc ,menu)))
;;;###autoload
easy-menu-converted-items-table)))
(defun easy-menu-convert-item-1 (item)
- "Parse an item description and add the item to a keymap.
-This is the function that is used for item definition by the other easy-menu
-functions.
-MENU is a sparse keymap i.e. a list starting with the symbol `keymap'.
-ITEM defines an item as in `easy-menu-define'.
-Optional argument BEFORE is nil or a key in MENU. If BEFORE is not nil
-put item before BEFORE in MENU, otherwise if item is already present in
-MENU, just change it, otherwise put it last in MENU."
+ "Parse an item description and convert it to a menu keymap element.
+ITEM defines an item as in `easy-menu-define'."
(let (name command label prop remove help)
(cond
((stringp item) ; An item or separator.
Either call this from `menu-bar-update-hook' or use a menu filter,
to implement dynamic menus."
- (easy-menu-add-item nil path (cons name items) before))
+ (easy-menu-add-item nil path (easy-menu-create-menu name items) before))
;; XEmacs needs the following two functions to add and remove menus.
;; In Emacs this is done automatically when switching keymaps, so
However, if BEFORE is a string and there is an item in the submenu
with that name, then ITEM is added before that item.
-MAP should normally be a keymap; nil stands for the global menu-bar keymap.
+MAP should normally be a keymap; nil stands for the local menu-bar keymap.
It can also be a symbol, which has earlier been used as the first
argument in a call to `easy-menu-define', or the value of such a symbol.
;; Prefer a map that already contains the to-be-modified entry.
(when to-modify
(dolist (map maps)
- (when (and map (not (integerp map))
+ (when (and (keymapp map)
(easy-menu-get-map-look-for-name to-modify map))
(throw 'found map))))
;; Use the first valid map.
(dolist (map maps)
- (when (and map (not (integerp map)))
+ (when (keymapp map)
(throw 'found map)))
;; Otherwise, make one up.
;; Hardcoding current-local-map is lame, but it's difficult