[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/eat 96dfb50d84: Allow modifying semi-char key exceptions
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/eat 96dfb50d84: Allow modifying semi-char key exceptions |
Date: |
Mon, 16 Jan 2023 11:59:34 -0500 (EST) |
branch: elpa/eat
commit 96dfb50d84468da36c4ca33b2d0f9774c5efefcd
Author: Akib Azmain Turja <akib@disroot.org>
Commit: Akib Azmain Turja <akib@disroot.org>
Allow modifying semi-char key exceptions
* eat.el (eat-semi-char-non-bound-keys)
(eat-eshell-semi-char-non-bound-keys): New user option.
* eat.el (eat--prepare-semi-char-mode-map)
(eat--eshell-prepare-semi-char-mode-map): New function.
* eat.el (eat-semi-char-mode-map): Use
'eat--prepare-semi-char-mode-map' to make the keymap.
* eat.el (eat-eshell-semi-char-mode-map): Use
'eat--eshell-prepare-semi-char-mode-map' to make the keymap.
---
eat.el | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++----------------
1 file changed, 59 insertions(+), 18 deletions(-)
diff --git a/eat.el b/eat.el
index 5689679310..11ab738a7c 100644
--- a/eat.el
+++ b/eat.el
@@ -157,6 +157,44 @@ FUNCTION Call FUNCTION with the command and arguments
(using
:type 'boolean
:group 'eat-eshell)
+(defcustom eat-semi-char-non-bound-keys
+ '([?\C-x] [?\C-\\] [?\C-q] [?\C-g] [?\C-h] [?\e ?\C-c] [?\C-u]
+ [?\e ?x] [?\e ?:] [?\e ?!] [?\e ?&])
+ "List of keys not bound in Eat \"semi-char\" mode.
+
+Keys appearing in this list are not bound to send the key to terminal.
+Eat might still bound them to do something else (for example, changing
+keybinding mode).
+
+Each element is a vector of form [KEY] or [?\e KEY], meaning KEY or
+M-KEY shouldn't be bound. KEY shouldn't contain Meta (Alt) modifier."
+ :type '(repeat sexp)
+ :set (lambda (sym val)
+ (set-default-toplevel-value sym val)
+ (when (boundp 'eat-semi-char-mode-map)
+ (setq eat-semi-char-mode-map
+ (eat--prepare-semi-char-mode-map))))
+ :group 'eat-ui)
+
+(defcustom eat-eshell-semi-char-non-bound-keys
+ '([?\C-\\] [?\C-x] [?\C-g] [?\C-h] [?\e ?\C-c] [?\C-u] [?\C-q]
+ [?\e ?x] [?\e ?:] [?\e ?!] [?\e ?&])
+ "List of keys not bound in Eat-Eshell \"semi-char\" mode.
+
+Keys appearing in this list are not bound to send the key to terminal.
+Eat might still bound them to do something else (for example, changing
+keybinding mode).
+
+Each element is a vector of form [KEY] or [?\e KEY], meaning KEY or
+M-KEY shouldn't be bound. KEY shouldn't contain Meta (Alt) modifier."
+ :type '(repeat sexp)
+ :set (lambda (sym val)
+ (set-default-toplevel-value sym val)
+ (when (boundp 'eat-eshell-semi-char-mode-map)
+ (setq eat-eshell-semi-char-mode-map
+ (eat--eshell-prepare-semi-char-mode-map))))
+ :group 'eat-eshell)
+
(defcustom eat-enable-directory-tracking t
"Non-nil means do directory tracking.
@@ -4820,13 +4858,12 @@ STRING and ARG are passed to `yank-pop', which see."
map)
"Keymap for Eat mode.")
-(defvar eat-semi-char-mode-map
+(defun eat--prepare-semi-char-mode-map ()
+ "Prepare `eat-semi-char-mode-map'."
(let ((map (eat-term-make-keymap
- #'eat-self-input
- '(:ascii :arrow :navigation)
- '( [?\C-\\] [?\C-q] [?\C-c] [?\C-x] [?\C-g] [?\C-h]
- [?\e ?\C-c] [?\C-u] [?\C-q] [?\e ?x] [?\e ?:]
- [?\e ?!] [?\e ?&] [?\C-y] [?\e ?y]))))
+ #'eat-self-input '(:ascii :arrow :navigation)
+ `([?\C-c] [?\C-q] [?\C-y] [?\e ?y]
+ ,@eat-semi-char-non-bound-keys))))
(define-key map [?\C-q] #'eat-quoted-input)
(define-key map [?\C-y] #'eat-yank)
(define-key map [?\M-y] #'eat-yank-from-kill-ring)
@@ -4834,13 +4871,15 @@ STRING and ARG are passed to `yank-pop', which see."
(define-key map [?\C-c ?\C-e] #'eat-emacs-mode)
(define-key map [remap insert-char] #'eat-input-char)
(define-key map [xterm-paste] #'eat-xterm-paste)
- map)
+ map))
+
+(defvar eat-semi-char-mode-map (ignore-errors
+ (eat--prepare-semi-char-mode-map))
"Keymap for Eat semi-char mode.")
(defvar eat-char-mode-map
(let ((map (eat-term-make-keymap
- #'eat-self-input
- '(:ascii :arrow :navigation :function)
+ #'eat-self-input '(:ascii :arrow :navigation :function)
'([?\e ?\C-m]))))
(define-key map [?\C-\M-m] #'eat-semi-char-mode)
(define-key map [xterm-paste] #'eat-xterm-paste)
@@ -5461,26 +5500,28 @@ PROGRAM can be a shell command."
map)
"Keymap for Eat Eshell \"emacs\" mode.")
-(defvar eat-eshell-semi-char-mode-map
+(defun eat--eshell-prepare-semi-char-mode-map ()
+ "Prepare `eat-eshell-semi-char-mode-map'."
(let ((map (eat-term-make-keymap
- #'eat-self-input
- '(:ascii :arrow :navigation)
- '( [?\C-\\] [?\C-q] [?\C-c] [?\C-x] [?\C-g] [?\C-h]
- [?\e ?\C-c] [?\C-u] [?\C-q] [?\e ?x] [?\e ?:]
- [?\e ?!] [?\e ?&] [?\C-y] [?\e ?y]))))
+ #'eat-self-input '(:ascii :arrow :navigation)
+ `([?\C-c] [?\C-q] [?\C-y] [?\e ?y]
+ ,@eat-eshell-semi-char-non-bound-keys))))
(define-key map [?\C-q] #'eat-quoted-input)
(define-key map [?\C-y] #'eat-yank)
(define-key map [?\M-y] #'eat-yank-from-kill-ring)
(define-key map [?\C-c ?\C-e] #'eat-eshell-emacs-mode)
(define-key map [remap insert-char] #'eat-input-char)
(define-key map [xterm-paste] #'eat-xterm-paste)
- map)
+ map))
+
+(defvar eat-eshell-semi-char-mode-map
+ (ignore-errors
+ (eat--eshell-prepare-semi-char-mode-map))
"Keymap for Eat Eshell semi-char mode.")
(defvar eat-eshell-char-mode-map
(let ((map (eat-term-make-keymap
- #'eat-self-input
- '(:ascii :arrow :navigation :function)
+ #'eat-self-input '(:ascii :arrow :navigation :function)
'([?\e ?\C-m]))))
(define-key map [?\C-\M-m] #'eat-eshell-semi-char-mode)
(define-key map [xterm-paste] #'eat-xterm-paste)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/eat 96dfb50d84: Allow modifying semi-char key exceptions,
ELPA Syncer <=