Function: transient-scope

transient-scope is a byte-compiled function defined in transient.el.

Signature

(transient-scope &optional PREFIXES CLASSES)

Documentation

Return the scope of the active or current transient prefix command.

If optional PREFIXES and CLASSES are both nil, return the scope of the prefix currently being setup, making this variation useful, e.g., in :if* predicates. If no prefix is being setup, but the current command was invoked from some prefix, then return the scope of that.

If PREFIXES is non-nil, it must be a prefix command or a list of such commands. If CLASSES is non-nil, it must be a prefix class or a list of such classes. When this function is called from the body or the interactive form of a suffix command, PREFIXES and/or CLASSES should be non-nil. If either is non-nil, try the following in order:

- If the current suffix command was invoked from a prefix, which
  appears in PREFIXES, return the scope of that prefix.

- If the current suffix command was invoked from a prefix, and its
  class derives from one of the CLASSES, return the scope of that
  prefix.

- If a prefix is being setup and it appears in PREFIXES, return its
  scope.

- If a prefix is being setup and its class derives from one of the
  CLASSES, return its scope.

- Finally try to return the default scope of the first command in
  PREFIXES. This only works if that slot is set in the respective
  class definition or using its transient-init-scope method.

If no prefix matches, return nil.

Source Code

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

(defun transient-scope (&optional prefixes classes)
  "Return the scope of the active or current transient prefix command.

If optional PREFIXES and CLASSES are both nil, return the scope of
the prefix currently being setup, making this variation useful, e.g.,
in `:if*' predicates.  If no prefix is being setup, but the current
command was invoked from some prefix, then return the scope of that.

If PREFIXES is non-nil, it must be a prefix command or a list of such
commands.  If CLASSES is non-nil, it must be a prefix class or a list
of such classes.  When this function is called from the body or the
`interactive' form of a suffix command, PREFIXES and/or CLASSES should
be non-nil.  If either is non-nil, try the following in order:

- If the current suffix command was invoked from a prefix, which
  appears in PREFIXES, return the scope of that prefix.

- If the current suffix command was invoked from a prefix, and its
  class derives from one of the CLASSES, return the scope of that
  prefix.

- If a prefix is being setup and it appears in PREFIXES, return its
  scope.

- If a prefix is being setup and its class derives from one of the
  CLASSES, return its scope.

- Finally try to return the default scope of the first command in
  PREFIXES.  This only works if that slot is set in the respective
  class definition or using its `transient-init-scope' method.

If no prefix matches, return nil."
  (cond-let
    ((or prefixes classes)
     (let* ((prefixes (ensure-list prefixes))
            (type (if (symbolp classes) classes (cons 'or classes)))
            (match (lambda (obj)
                     (and obj
                          (or (memq (oref obj command) prefixes)
                              (cl-typep obj type))
                          obj))))
       (cond-let
         ([obj (or (funcall match transient-current-prefix)
                   (funcall match transient--prefix))]
          (oref obj scope))
         ((get (car prefixes) 'transient--prefix)
          (oref (transient--init-prefix (car prefixes)) scope)))))
    ([obj (transient-prefix-object)]
     (oref obj scope))))