]> git.eshelyaron.com Git - emacs.git/commitdiff
Use map-keymap in context-menu-global, context-menu-local, context-menu-minor
authorJuri Linkov <juri@linkov.net>
Sun, 15 Aug 2021 16:27:06 +0000 (19:27 +0300)
committerJuri Linkov <juri@linkov.net>
Sun, 15 Aug 2021 16:27:06 +0000 (19:27 +0300)
lisp/mouse.el

index 1f5bd8e4a6be95f077dd2f8e966f32b4fae2e4fa..42154255475180e5baae1b400c7526a6f8428301 100644 (file)
@@ -317,22 +317,24 @@ the same menu with changes such as added new menu items."
   "Global submenus."
   (run-hooks 'activate-menubar-hook 'menu-bar-update-hook)
   (define-key-after menu [separator-global] menu-bar-separator)
-  (dolist (item (lookup-key global-map [menu-bar]))
-    (when (and (consp item) (consp (cdr item)))
-      (define-key-after menu (vector (car item))
-        (copy-sequence (cdr item)))))
+  (map-keymap (lambda (key binding)
+                (when (consp binding)
+                  (define-key-after menu (vector key)
+                    (copy-sequence binding))))
+              (lookup-key global-map [menu-bar]))
   menu)
 
 (defun context-menu-local (menu)
   "Major mode submenus."
   (run-hooks 'activate-menubar-hook 'menu-bar-update-hook)
   (define-key-after menu [separator-local] menu-bar-separator)
-  (dolist (item (local-key-binding [menu-bar]))
-    (when (and (consp item) (consp (cdr item)))
-      ;; Fix deep menu created by `imenu-add-to-menubar'.
-      (when (eq (car item) 'keymap) (setq item (cadr item)))
-      (define-key-after menu (vector (car item))
-        (copy-sequence (cdr item)))))
+  (let ((keymap (local-key-binding [menu-bar])))
+    (when keymap
+      (map-keymap (lambda (key binding)
+                    (when (consp binding)
+                      (define-key-after menu (vector key)
+                        (copy-sequence binding))))
+                  keymap)))
   menu)
 
 (defun context-menu-minor (menu)
@@ -341,10 +343,11 @@ the same menu with changes such as added new menu items."
   (define-key-after menu [separator-minor] menu-bar-separator)
   (dolist (mode (minor-mode-key-binding [menu-bar]))
     (when (and (consp mode) (symbol-value (car mode)))
-      (dolist (item (cdr mode))
-        (when (and (consp item) (consp (cdr item)))
-          (define-key-after menu (vector (car item))
-            (copy-sequence (cdr item)))))))
+      (map-keymap (lambda (key binding)
+                    (when (consp binding)
+                      (define-key-after menu (vector key)
+                        (copy-sequence binding))))
+                  (cdr mode))))
   menu)
 
 (defun context-menu-vc (menu)