]> git.eshelyaron.com Git - emacs.git/commitdiff
Introduce new defcustom for terminal CUA rectangle commands
authorAlexander Gramiak <agrambot@gmail.com>
Wed, 3 Apr 2019 20:06:45 +0000 (14:06 -0600)
committerAlexander Gramiak <agrambot@gmail.com>
Sun, 7 Apr 2019 04:43:59 +0000 (22:43 -0600)
This allows a user to set a non-meta modifier for their terminal
should his/her terminal support it. See bug#35058 for background on
this change.

* lisp/emulation/cua-base.el (cua-rectangle-terminal-modifier-key):
New defcustom.

* lisp/emulation/cua-base.el (cua--shift-control-x-prefix): Use new
defcustom.

etc/NEWS
lisp/emulation/cua-base.el

index be4543c0166db86520a504b89eb931ba6d593418..c7456c681a28074d95bd3f5b675a54331913b516 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1252,6 +1252,13 @@ near the current column in Tabulated Lists (see variables
 +++
 *** 'text-mode-variant' is now obsolete, use 'derived-mode-p' instead.
 
+** CUA mode
+
+---
+*** New defcustom 'cua-rectangle-terminal-modifier-key'.
+This defcustom allows for the customization of the modifier key used
+in a terminal frame.
+
 \f
 * New Modes and Packages in Emacs 27.1
 
index 302ef123865d37a9c49c8600624358f0f93bfa40..105e1ab43d882f37e1aff13070a1fcefcaae30e8 100644 (file)
@@ -427,7 +427,7 @@ and after the region marked by the rectangle to search."
 
 (defcustom cua-rectangle-modifier-key 'meta
   "Modifier key used for rectangle commands bindings.
-On non-window systems, always use the meta modifier.
+On non-window systems, use `cua-rectangle-terminal-modifier-key'.
 Must be set prior to enabling CUA."
   :type '(choice (const :tag "Meta key" meta)
                 (const :tag "Alt key" alt)
@@ -435,6 +435,16 @@ Must be set prior to enabling CUA."
                 (const :tag "Super key" super))
   :group 'cua)
 
+(defcustom cua-rectangle-terminal-modifier-key 'meta
+  "Modifier key used for rectangle commands bindings in terminals.
+Must be set prior to enabling CUA."
+  :type '(choice (const :tag "Meta key" meta)
+                (const :tag "Alt key" alt)
+                (const :tag "Hyper key" hyper)
+                (const :tag "Super key" super))
+  :group 'cua
+  :version "27.1")
+
 (defcustom cua-enable-rectangle-auto-help t
   "If non-nil, automatically show help for region, rectangle and global mark."
   :type 'boolean
@@ -1237,10 +1247,9 @@ If ARG is the atom `-', scroll upward by nearly full screen."
 (defun cua--init-keymaps ()
   ;; Cache actual rectangle modifier key.
   (setq cua--rectangle-modifier-key
-       (if (and cua-rectangle-modifier-key
-                (memq window-system '(x)))
-           cua-rectangle-modifier-key
-         'meta))
+       (if (eq (framep (selected-frame)) t)
+           cua-rectangle-terminal-modifier-key
+         cua-rectangle-modifier-key))
   ;; C-return always toggles rectangle mark
   (define-key cua-global-keymap cua-rectangle-mark-key 'cua-set-rectangle-mark)
   (unless (eq cua--rectangle-modifier-key 'meta)