diff options
Diffstat (limited to 'lisp')
| -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) |