branch: externals/transient
commit 49a61fb905f647a4635595cf20e394e5e8868858
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
Support setting per-suffix level for duplicated commands
Re #153.
---
lisp/transient.el | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/lisp/transient.el b/lisp/transient.el
index 30083d79a7..d446b43551 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -1893,7 +1893,10 @@ value. Otherwise return CHILDREN as is."
(defun transient--init-suffix (levels spec)
(pcase-let* ((`(,level ,class ,args) spec)
(cmd (plist-get args :command))
- (level (or (alist-get cmd levels) level)))
+ (key (transient--kbd (plist-get args :key)))
+ (level (or (alist-get (cons cmd key) levels nil nil #'equal)
+ (alist-get cmd levels)
+ level)))
(let ((fn (and (symbolp cmd)
(symbol-function cmd))))
(when (autoloadp fn)
@@ -2678,13 +2681,17 @@ transient is active."
(level
(let* ((prefix (oref transient--prefix command))
(alist (alist-get prefix transient-levels))
- (sym command))
+ (akey command))
(cond ((eq command prefix)
(oset transient--prefix level level)
- (setq sym t))
+ (setq akey t))
(t
- (oset (transient-suffix-object command) level level)))
- (setf (alist-get sym alist) level)
+ (oset (transient-suffix-object command) level level)
+ (when (cdr (cl-remove-if-not (lambda (obj)
+ (eq (oref obj command) command))
+ transient--suffixes))
+ (setq akey (cons command (this-command-keys))))))
+ (setf (alist-get akey alist) level)
(setf (alist-get prefix transient-levels) alist))
(transient-save-levels)
(transient--show))