changeset 24075:516b3dad7381

(easy-menu-get-map): Fix bugs in prev change.
author Richard M. Stallman <rms@gnu.org>
date Fri, 15 Jan 1999 03:21:44 +0000
parents 96a0e2b175a7
children 6236e60302e2
files lisp/emacs-lisp/easymenu.el
diffstat 1 files changed, 11 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/easymenu.el	Thu Jan 14 20:28:50 1999 +0000
+++ b/lisp/emacs-lisp/easymenu.el	Fri Jan 15 03:21:44 1999 +0000
@@ -479,14 +479,17 @@
   ;; Return a sparse keymap in which to add or remove an item.
   ;; MAP and PATH are as defined in `easy-menu-add-item'.
   (if (null map)
-      (setq map (or (lookup-key (current-local-map)
-				(vconcat '(menu-bar) (mapcar 'intern path)))
-		    (lookup-key global-map
-				(vconcat '(menu-bar) (mapcar 'intern path)))
-		    (let ((new (make-sparse-keymap)))
-		      (define-key (current-local-map)
-			(vconcat '(menu-bar) (mapcar 'intern path)) new)
-		      new)))
+      (let ((local (lookup-key (current-local-map)
+			       (vconcat '(menu-bar) (mapcar 'intern path))))
+	    (global (lookup-key global-map
+				(vconcat '(menu-bar) (mapcar 'intern path)))))
+	(if (and local (not (integerp local)))
+	    (setq map local)
+	  (if (and global (not (integerp global)))
+	      (setq map global)
+	    (setq map (make-sparse-keymap))
+	    (define-key (current-local-map)
+	      (vconcat '(menu-bar) (mapcar 'intern path)) map))))
     (if (and (symbolp map) (not (keymapp map)))
 	(setq map (symbol-value map)))
     (if path (setq map (lookup-key map (vconcat (mapcar 'intern path))))))