*** empty log message ***
[bpt/emacs.git] / lisp / emacs-lisp / easymenu.el
index 6ed2903..2bed708 100644 (file)
@@ -148,7 +148,7 @@ as a solid horizontal line.
 
 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
@@ -266,14 +266,8 @@ would always fail because the key is `equal' but not `eq'."
               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.
@@ -460,7 +454,7 @@ the submenu named BEFORE, otherwise add it at the end of the menu.
 
 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
@@ -504,7 +498,7 @@ In the latter case, ITEM is normally added at the end of the submenu.
 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.
 
@@ -606,12 +600,12 @@ In some cases we use that to select between the local and global maps."
            ;; 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