branch: externals/transient commit 20c231e0ec1e4adc910a801df8274305f4b8600a Author: Jonas Bernoulli <jo...@bernoul.li> Commit: Jonas Bernoulli <jo...@bernoul.li>
transient--layout-member-1: Refactor Spin out `transient--group-member' in the process. --- lisp/transient.el | 47 ++++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/lisp/transient.el b/lisp/transient.el index 70f54db44c..04d6bcbd7b 100644 --- a/lisp/transient.el +++ b/lisp/transient.el @@ -944,31 +944,28 @@ PROP has to be a keyword. What keywords and values (error "%s is not a transient command" prefix))) (defun transient--layout-member-1 (loc layout remove) - (cond ((and (listp layout) - (vectorp (car layout))) - (--any (transient--layout-member-1 it loc) layout)) - ((vectorp layout) - (if (vectorp (car (aref layout 3))) - (--any (transient--layout-member-1 it loc) - (aref layout 3)) - (let* ((list (aref layout 3)) - (cons (cl-member-if (lambda (suffix) - (transient--layout-member-1 suffix loc)) - list))) - (if remove - (prog1 nil - (aset layout 3 (delq (car cons) list))) - cons)))) - ((and (listp layout) - (let* ((def (nth 2 layout)) - (cmd (plist-get def :command))) - (if (symbolp loc) - (eq cmd loc) - (equal (transient--kbd - (or (plist-get def :key) - (transient--command-key cmd))) - loc)))) - layout))) + (cond ((listp layout) + (--any (transient--layout-member-1 loc it remove) layout)) + ((vectorp (car (aref layout 3))) + (--any (transient--layout-member-1 loc it remove) (aref layout 3))) + (remove + (aset layout 3 + (delq (car (transient--group-member loc layout)) + (aref layout 3))) + nil) + (t (transient--group-member loc layout)))) + +(defun transient--group-member (loc group) + (cl-member-if (lambda (suffix) + (let* ((def (nth 2 suffix)) + (cmd (plist-get def :command))) + (if (symbolp loc) + (eq cmd loc) + (equal (transient--kbd + (or (plist-get def :key) + (transient--command-key cmd))) + loc)))) + (aref group 3))) (defun transient--kbd (keys) (when (vectorp keys)