From 932c23f7978cf5e94ed9b6df4969b393f7551716 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Mon, 11 Oct 2021 13:17:38 +0200 Subject: [PATCH] Fix menu display of keys when cua-mode is active * lisp/menu-bar.el (menu-bar-edit-menu): Make the menus display the correct keys for editing when cua-mode is active (bug#28930). --- lisp/menu-bar.el | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 40a1730637d..7c9fc1aeba0 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -514,7 +514,11 @@ (cdr yank-menu) kill-ring)) (not buffer-read-only)))) - :help "Paste (yank) text most recently cut/copied")) + :help "Paste (yank) text most recently cut/copied" + :keys (lambda () + (if cua-mode + "\\[cua-paste]" + "\\[yank]")))) (bindings--define-key menu [copy] ;; ns-win.el said: Substitute a Copy function that works better ;; under X (for GNUstep). @@ -523,14 +527,23 @@ 'kill-ring-save) :enable mark-active :help "Copy text in region between mark and current position" - :keys ,(if (featurep 'ns) - "\\[ns-copy-including-secondary]" - "\\[kill-ring-save]"))) + :keys (lambda () + (cond + ((featurep 'ns) + "\\[ns-copy-including-secondary]") + ((and cua-mode mark-active) + "\\[cua-copy-handler]") + (t + "\\[kill-ring-save]"))))) (bindings--define-key menu [cut] '(menu-item "Cut" kill-region :enable (and mark-active (not buffer-read-only)) :help - "Cut (kill) text in region between mark and current position")) + "Cut (kill) text in region between mark and current position" + :keys (lambda () + (if (and cua-mode mark-active) + "\\[cua-cut-handler]" + "\\[kill-region]")))) ;; ns-win.el said: Separate undo from cut/paste section. (if (featurep 'ns) (bindings--define-key menu [separator-undo] menu-bar-separator)) -- 2.39.2