branch: externals/transient commit 49a61fb905f647a4635595cf20e394e5e8868858 Author: Jonas Bernoulli <jo...@bernoul.li> Commit: Jonas Bernoulli <jo...@bernoul.li>
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))