summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorJonas Bernoulli <jonas@bernoul.li>2023-11-24 18:00:00 +0100
committerJonas Bernoulli <jonas@bernoul.li>2023-11-24 18:00:00 +0100
commitb1951a87b586a95d6f52d61e6fbfde0b3732b653 (patch)
tree13de385276889c44efe9085d219dd024d10c6253 /lisp
parent4c1cda998434fc3a9d2a0b54cc059e5083a96b94 (diff)
transient--resolve-pre-command: Optionally resolve boolean as well
This assumes that we are dealing with the predicate of a non-suffix. For other types of commands resolving a boolean is more complex and handled elsewhere.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/transient.el18
1 files changed, 9 insertions, 9 deletions
diff --git a/lisp/transient.el b/lisp/transient.el
index 1b3be62..d959400 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -2521,15 +2521,15 @@ nil) then do nothing."
(or (ignore-errors
(lookup-key transient--predicate-map (vector cmd)))
(and (not suffix-only)
- (let ((pred (transient--resolve-pre-command
- (oref transient--prefix transient-non-suffix))))
- (pcase pred
- ('t #'transient--do-stay)
- ('nil #'transient--do-warn)
- (_ pred))))))
-
-(defun transient--resolve-pre-command (pre)
- (cond ((booleanp pre) pre)
+ (transient--resolve-pre-command
+ (oref transient--prefix transient-non-suffix)
+ t))))
+
+(defun transient--resolve-pre-command (pre &optional resolve-boolean)
+ (cond ((booleanp pre)
+ (if resolve-boolean
+ (if pre #'transient--do-stay #'transient--do-warn)
+ pre))
((string-match-p "--do-" (symbol-name pre)) pre)
((let ((sym (intern (format "transient--do-%s" pre))))
(if (functionp sym) sym pre)))))