]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix menu display of keys when cua-mode is active
authorLars Ingebrigtsen <larsi@gnus.org>
Mon, 11 Oct 2021 11:17:38 +0000 (13:17 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 11 Oct 2021 11:17:38 +0000 (13:17 +0200)
* 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

index 40a1730637d1393686fa7dd8daf3581f629135a2..7c9fc1aeba00c96d3068079b190956dc8f1370b8 100644 (file)
                                          (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).
                             '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))