diff options
| author | Jonas Bernoulli <jonas@bernoul.li> | 2023-11-24 18:00:00 +0100 |
|---|---|---|
| committer | Jonas Bernoulli <jonas@bernoul.li> | 2023-11-24 18:00:00 +0100 |
| commit | b1951a87b586a95d6f52d61e6fbfde0b3732b653 (patch) | |
| tree | 13de385276889c44efe9085d219dd024d10c6253 /lisp | |
| parent | 4c1cda998434fc3a9d2a0b54cc059e5083a96b94 (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.el | 18 |
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))))) |
