]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid the type error on f10 when lookup-key returns an number.
authorSam Steingold <sds@gnu.org>
Mon, 2 Jun 2014 19:02:31 +0000 (15:02 -0400)
committerSam Steingold <sds@gnu.org>
Mon, 2 Jun 2014 19:02:31 +0000 (15:02 -0400)
* lisp/menu-bar.el (lookup-key-ignore-too-long): Extract from...
(popup-menu): ...here.
(menu-bar-open): Use it to avoid an error when `lookup-key'
returns a number.

lisp/ChangeLog
lisp/menu-bar.el

index d62169188434e76a0e0cb4c3b74b9854b795e54d..9e1ccce988d8dfb5a72d0a00c4d2dba0b5763d4e 100644 (file)
@@ -1,3 +1,10 @@
+2014-06-02  Sam Steingold  <sds@gnu.org>
+
+       * menu-bar.el (lookup-key-ignore-too-long): Extract from...
+       (popup-menu): ...here.
+       (menu-bar-open): Use it to avoid an error when `lookup-key'
+       returns a number.
+
 2014-06-02  Michael Albinus  <michael.albinus@gmx.de>
 
        * net/tramp.el (tramp-call-process): Add traces.
index f9cbc62b4647913944c06abf433305ef389fe155..efbeeb3579c6f4edff552f83da19eb4ea2278f70 100644 (file)
@@ -2140,6 +2140,13 @@ See `menu-bar-mode' for more information."
 (declare-function x-menu-bar-open "term/x-win" (&optional frame))
 (declare-function w32-menu-bar-open "term/w32-win" (&optional frame))
 
+(defun lookup-key-ignore-too-long (map key)
+  "Call `lookup-key' and convert numeric values to nil."
+  (let ((binding (lookup-key map key)))
+    (if (numberp binding)       ; `too long'
+        nil
+      binding)))
+
 (defun popup-menu (menu &optional position prefix from-menu-bar)
   "Popup the given menu and call the selected option.
 MENU can be a keymap, an easymenu-style menu or a list of keymaps as for
@@ -2192,11 +2199,9 @@ FROM-MENU-BAR, if non-nil, means we are dropping one of menu-bar's menus."
              (let ((mouse-click (apply 'vector event))
                    binding)
                (while (and map (null binding))
-                 (setq binding (lookup-key (car map) mouse-click))
-                 (if (numberp binding) ; `too long'
-                     (setq binding nil))
+                 (setq binding (lookup-key-ignore-too-long (car map) mouse-click))
                  (setq map (cdr map)))
-                 binding))
+                binding))
             (t
              ;; We were given a single keymap.
              (lookup-key map (apply 'vector event)))))
@@ -2270,8 +2275,10 @@ If FRAME is nil or not given, use the selected frame."
       (let* ((x tty-menu--initial-menu-x)
             (menu (menu-bar-menu-at-x-y x 0 frame)))
        (popup-menu (or
-                    (lookup-key global-map (vector 'menu-bar menu))
-                    (lookup-key (current-local-map) (vector 'menu-bar menu))
+                    (lookup-key-ignore-too-long
+                      global-map (vector 'menu-bar menu))
+                    (lookup-key-ignore-too-long
+                      (current-local-map) (vector 'menu-bar menu))
                     (cdar (minor-mode-key-binding (vector 'menu-bar menu))))
                    (posn-at-x-y x 0 nil t) nil t)))
      (t (with-selected-frame (or frame (selected-frame))