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

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

[elpa] externals/transient eaf062a921 11/41: transient--make-predicate-m


From: Jonas Bernoulli
Subject: [elpa] externals/transient eaf062a921 11/41: transient--make-predicate-map: Refactor
Date: Sun, 12 Nov 2023 20:04:07 -0500 (EST)

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

    transient--make-predicate-map: Refactor
---
 lisp/transient.el | 31 ++++++++++++++++---------------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/lisp/transient.el b/lisp/transient.el
index c9e6d4267f..442cdcd3cd 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -1756,34 +1756,35 @@ of the corresponding object."
     map))
 
 (defun transient--make-predicate-map ()
-  (let ((map (make-sparse-keymap)))
+  (let ((default (oref transient--prefix transient-suffix))
+        (map (make-sparse-keymap)))
     (set-keymap-parent map transient-predicate-map)
     (when (memq (oref transient--prefix transient-non-suffix)
                 '(nil transient--do-warn transient--do-noop))
       (define-key map [handle-switch-frame] #'transient--do-suspend))
     (dolist (obj transient--suffixes)
       (let* ((cmd (oref obj command))
-             (sub-prefix (and (get cmd 'transient--prefix) t)))
+             (kind (cond ((get cmd 'transient--prefix)    'prefix)
+                         ((cl-typep obj 'transient-infix) 'infix)
+                         (t                               'suffix))))
         (cond
          ((oref obj inapt)
           (define-key map (vector cmd) #'transient--do-warn-inapt))
          ((slot-boundp obj 'transient)
           (define-key map (vector cmd)
-            (let ((do (oref obj transient)))
-              (pcase (list do sub-prefix)
-                ('(t     t) #'transient--do-recurse)
-                ('(t   nil) (if (cl-typep obj 'transient-infix)
-                                #'transient--do-stay
-                              #'transient--do-call))
-                ('(nil   t) #'transient--do-replace)
-                ('(nil nil) #'transient--do-exit)
-                (_          do)))))
+            (pcase (list kind (oref obj transient))
+              ('(prefix   t) #'transient--do-recurse)
+              ('(infix    t) #'transient--do-stay)
+              ('(suffix   t) #'transient--do-call)
+              ('(prefix nil) #'transient--do-replace)
+              (`(,_     nil) #'transient--do-exit)
+              (`(,_     ,do) do))))
          ((not (lookup-key transient-predicate-map (vector cmd)))
           (define-key map (vector cmd)
-            (if sub-prefix
-                #'transient--do-replace
-              (or (oref transient--prefix transient-suffix)
-                  #'transient--do-exit)))))))
+            (pcase (list kind default)
+              (`(prefix  ,_) #'transient--do-replace)
+              (`(,_     nil) #'transient--do-exit)
+              (`(,_     ,do) do)))))))
     map))
 
 (defun transient--make-redisplay-map ()



reply via email to

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