summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuri Linkov <juri@linkov.net>2021-08-15 19:27:06 +0300
committerJuri Linkov <juri@linkov.net>2021-08-15 19:27:06 +0300
commitd9eac0b4263c10b2ab3a428cf8faa4b5e1d99a83 (patch)
tree3ae63ce8a39c438c71a6e74ed6f351fc82b7c390
parentde5601f0902b05f594bd2254b23032ed4c598f9d (diff)
downloademacs-feature/context-menu.tar.gz
Use map-keymap in context-menu-global, context-menu-local, context-menu-minorfeature/context-menu
-rw-r--r--lisp/mouse.el31
1 files changed, 17 insertions, 14 deletions
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 1f5bd8e4a6b..42154255475 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -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)