diff options
| author | Juri Linkov | 2021-08-15 19:27:06 +0300 |
|---|---|---|
| committer | Juri Linkov | 2021-08-15 19:27:06 +0300 |
| commit | d9eac0b4263c10b2ab3a428cf8faa4b5e1d99a83 (patch) | |
| tree | 3ae63ce8a39c438c71a6e74ed6f351fc82b7c390 | |
| parent | de5601f0902b05f594bd2254b23032ed4c598f9d (diff) | |
| download | emacs-feature/context-menu.tar.gz emacs-feature/context-menu.zip | |
Use map-keymap in context-menu-global, context-menu-local, context-menu-minorfeature/context-menu
| -rw-r--r-- | lisp/mouse.el | 31 |
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." | |||
| 317 | "Global submenus." | 317 | "Global submenus." |
| 318 | (run-hooks 'activate-menubar-hook 'menu-bar-update-hook) | 318 | (run-hooks 'activate-menubar-hook 'menu-bar-update-hook) |
| 319 | (define-key-after menu [separator-global] menu-bar-separator) | 319 | (define-key-after menu [separator-global] menu-bar-separator) |
| 320 | (dolist (item (lookup-key global-map [menu-bar])) | 320 | (map-keymap (lambda (key binding) |
| 321 | (when (and (consp item) (consp (cdr item))) | 321 | (when (consp binding) |
| 322 | (define-key-after menu (vector (car item)) | 322 | (define-key-after menu (vector key) |
| 323 | (copy-sequence (cdr item))))) | 323 | (copy-sequence binding)))) |
| 324 | (lookup-key global-map [menu-bar])) | ||
| 324 | menu) | 325 | menu) |
| 325 | 326 | ||
| 326 | (defun context-menu-local (menu) | 327 | (defun context-menu-local (menu) |
| 327 | "Major mode submenus." | 328 | "Major mode submenus." |
| 328 | (run-hooks 'activate-menubar-hook 'menu-bar-update-hook) | 329 | (run-hooks 'activate-menubar-hook 'menu-bar-update-hook) |
| 329 | (define-key-after menu [separator-local] menu-bar-separator) | 330 | (define-key-after menu [separator-local] menu-bar-separator) |
| 330 | (dolist (item (local-key-binding [menu-bar])) | 331 | (let ((keymap (local-key-binding [menu-bar]))) |
| 331 | (when (and (consp item) (consp (cdr item))) | 332 | (when keymap |
| 332 | ;; Fix deep menu created by `imenu-add-to-menubar'. | 333 | (map-keymap (lambda (key binding) |
| 333 | (when (eq (car item) 'keymap) (setq item (cadr item))) | 334 | (when (consp binding) |
| 334 | (define-key-after menu (vector (car item)) | 335 | (define-key-after menu (vector key) |
| 335 | (copy-sequence (cdr item))))) | 336 | (copy-sequence binding)))) |
| 337 | keymap))) | ||
| 336 | menu) | 338 | menu) |
| 337 | 339 | ||
| 338 | (defun context-menu-minor (menu) | 340 | (defun context-menu-minor (menu) |
| @@ -341,10 +343,11 @@ the same menu with changes such as added new menu items." | |||
| 341 | (define-key-after menu [separator-minor] menu-bar-separator) | 343 | (define-key-after menu [separator-minor] menu-bar-separator) |
| 342 | (dolist (mode (minor-mode-key-binding [menu-bar])) | 344 | (dolist (mode (minor-mode-key-binding [menu-bar])) |
| 343 | (when (and (consp mode) (symbol-value (car mode))) | 345 | (when (and (consp mode) (symbol-value (car mode))) |
| 344 | (dolist (item (cdr mode)) | 346 | (map-keymap (lambda (key binding) |
| 345 | (when (and (consp item) (consp (cdr item))) | 347 | (when (consp binding) |
| 346 | (define-key-after menu (vector (car item)) | 348 | (define-key-after menu (vector key) |
| 347 | (copy-sequence (cdr item))))))) | 349 | (copy-sequence binding)))) |
| 350 | (cdr mode)))) | ||
| 348 | menu) | 351 | menu) |
| 349 | 352 | ||
| 350 | (defun context-menu-vc (menu) | 353 | (defun context-menu-vc (menu) |