Function: transient--insert-suffix

transient--insert-suffix is a byte-compiled function defined in transient.el.

Signature

(transient--insert-suffix PREFIX LOC SUFFIX ACTION &optional KEEP-OTHER)

Source Code

;; Defined in ~/.emacs.d/elpa/transient-20260414.1009/transient.el
;;; Edit

(defun transient--insert-suffix (prefix loc suffix action &optional keep-other)
  (pcase-let* ((suf (cl-etypecase suffix
                      (vector (eval (transient--parse-group  prefix suffix) t))
                      (list   (eval (transient--parse-suffix prefix suffix) t))
                      (string suffix)
                      (symbol suffix)))
               (`(,elt ,group) (transient--locate-child prefix loc)))
    (cond
      ((not elt)
       (funcall (if transient-error-on-insert-failure #'error #'message)
                "Cannot insert %S into %s; %s not found"
                suffix prefix loc))
      ((or (and (vectorp suffix) (not (vectorp elt)))
           (and (listp   suffix) (vectorp elt))
           (and (stringp suffix) (vectorp elt)))
       (funcall (if transient-error-on-insert-failure #'error #'message)
                "Cannot place %S into %s at %s; %s"
                suffix prefix loc
                "suffixes and groups cannot be siblings"))
      (t
       (when-let* ((_(not (eq keep-other 'always)))
                   (bindingp (listp suf))
                   (key (transient--suffix-key suf))
                   (conflict (car (transient--locate-child prefix key)))
                   (conflictp
                    (and (not (and (eq action 'replace)
                                   (eq conflict elt)))
                         (or (not keep-other)
                             (eq (plist-get (transient--suffix-props suf)
                                            :command)
                                 (plist-get (transient--suffix-props conflict)
                                            :command)))
                         (equal (transient--suffix-predicate suf)
                                (transient--suffix-predicate conflict)))))
         (transient-remove-suffix prefix key)
         (let ((eg (transient--locate-child prefix loc)))
           (setq elt (car eg) group (cadr eg))))
       (let ((mem (memq elt (aref group 2))))
         (pcase-exhaustive action
           ('insert  (setcdr mem (cons elt (cdr mem)))
                     (setcar mem suf))
           ('append  (setcdr mem (cons suf (cdr mem))))
           ('replace (setcar mem suf))))))))