emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/transient a2222d294c 038/366: transient-base-map: New p


From: Jonas Bernoulli
Subject: [elpa] externals/transient a2222d294c 038/366: transient-base-map: New parent of other shared keymaps
Date: Tue, 25 Jan 2022 18:54:24 -0500 (EST)

branch: externals/transient
commit a2222d294c24ef587ff5538b7e6251ec67c9fab4
Author: Jonas Bernoulli <jonas@bernoul.li>
Commit: Jonas Bernoulli <jonas@bernoul.li>

    transient-base-map: New parent of other shared keymaps
---
 docs/CHANGELOG    |  5 +++++
 lisp/transient.el | 56 +++++++++++++++++++++++++++----------------------------
 2 files changed, 33 insertions(+), 28 deletions(-)

diff --git a/docs/CHANGELOG b/docs/CHANGELOG
index 55ef46891b..611ab24b1c 100644
--- a/docs/CHANGELOG
+++ b/docs/CHANGELOG
@@ -18,6 +18,11 @@
   it necessary to find a new binding for ~transient-show~, which ~C-t~ is
   bound to now.  #17
 
+- A new keymap, ~transient-base-map~ was added to make it easier to
+  change key bindings that are shared between all transients.  This
+  new keymap is used as the parent of all the other keymaps that are
+  shared between all transients.
+
 - The window that was selected before the transient window was shown
   is no longer re-selected before calling a suffix that exits the
   transient.  If a suffix changes the selected window unintentionally,
diff --git a/lisp/transient.el b/lisp/transient.el
index f8449ea8ed..48475a382d 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -1095,8 +1095,32 @@ but unfortunately that does not exist (yet?)."
 
 ;;; Keymaps
 
+(defvar transient-base-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "ESC ESC ESC") 'transient-quit-all)
+    (define-key map (kbd "C-g") 'transient-quit-one)
+    (define-key map (kbd "C-q") 'transient-quit-all)
+    (define-key map (kbd "C-z") 'transient-suspend)
+    (define-key map (kbd "C-v") 'transient-scroll-up)
+    (define-key map (kbd "M-v") 'transient-scroll-down)
+    (define-key map [next]      'transient-scroll-up)
+    (define-key map [prior]     'transient-scroll-down)
+    map)
+  "Parent of other keymaps used by Transient.
+
+This is the parent keymap of all the keymaps that are used in
+all transients: `transient-map' (which in turn is the parent
+of the transient-specific keymaps), `transient-edit-map' and
+`transient-sticky-map'.
+
+If you change a binding here, then you might also have to edit
+`transient-sticky-map' and `transient-common-commands'.  While
+the latter isn't a proper transient prefix command, it can be
+edited using the same functions as used for transients.")
+
 (defvar transient-map
   (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map transient-base-map)
     (define-key map (kbd "C-p") 'universal-argument)
     (define-key map (kbd "C--") 'negative-argument)
     (define-key map (kbd "C-t") 'transient-show)
@@ -1104,45 +1128,22 @@ but unfortunately that does not exist (yet?)."
     (define-key map (kbd "C-h") 'transient-help)
     (define-key map (kbd "M-p") 'transient-history-prev)
     (define-key map (kbd "M-n") 'transient-history-next)
-    ;; While setting suffix levels `transient-common-commands'
-    ;; isn't used, making this duplication necessary.
-    (define-key map (kbd "C-g") 'transient-quit-one)
-    (define-key map (kbd "C-q") 'transient-quit-all)
-    (define-key map (kbd "C-z") 'transient-suspend)
-    (define-key map (kbd "ESC ESC ESC") 'transient-quit-all)
-    (define-key map (kbd "C-v") 'transient-scroll-up)
-    (define-key map (kbd "M-v") 'transient-scroll-down)
-    (define-key map [next]      'transient-scroll-up)
-    (define-key map [prior]     'transient-scroll-down)
     map)
-  "Base keymap used by all transients.")
+  "Top-level keymap used by all transients.")
 
 (defvar transient-edit-map
   (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map transient-base-map)
     (define-key map (kbd "?")     'transient-help)
     (define-key map (kbd "C-h")   'transient-help)
     (define-key map (kbd "C-x l") 'transient-set-level)
-    (define-key map (kbd "C-g")   'transient-quit-one)
-    (define-key map (kbd "C-q")   'transient-quit-all)
-    (define-key map (kbd "C-z")   'transient-suspend)
-    (define-key map (kbd "ESC ESC ESC") 'transient-quit-all)
-    (define-key map (kbd "C-v") 'transient-scroll-up)
-    (define-key map (kbd "M-v") 'transient-scroll-down)
-    (define-key map [next]      'transient-scroll-up)
-    (define-key map [prior]     'transient-scroll-down)
     map)
   "Keymap that is active while a transient in is in \"edit mode\".")
 
 (defvar transient-sticky-map
   (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map transient-base-map)
     (define-key map (kbd "C-g") 'transient-quit-seq)
-    (define-key map (kbd "C-q") 'transient-quit-all)
-    (define-key map (kbd "C-z") 'transient-suspend)
-    (define-key map (kbd "ESC ESC ESC") 'transient-quit-all)
-    (define-key map (kbd "C-v") 'transient-scroll-up)
-    (define-key map (kbd "M-v") 'transient-scroll-down)
-    (define-key map [next]      'transient-scroll-up)
-    (define-key map [prior]     'transient-scroll-down)
     map)
   "Keymap that is active while an incomplete key sequence is active.")
 
@@ -2733,8 +2734,7 @@ that does that.  Of course \"Q\" may already be bound to 
something
 else, so that function binds \"M-q\" to that command instead.
 Of course \"M-q\" may already be bound to something else, but
 we stop there."
-  (define-key transient-map        "q" 'transient-quit-one)
-  (define-key transient-edit-map   "q" 'transient-quit-one)
+  (define-key transient-base-map   "q" 'transient-quit-one)
   (define-key transient-sticky-map "q" 'transient-quit-seq)
   (setq transient-substitute-key-function
         'transient-rebind-quit-commands))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]