Suffix Slots
Here we document most of the slots that are only available for suffix objects. Some slots are shared by suffix and group objects, they are documented in Predicate Slots.
Also see Suffix Classes.
Slots of transient-child
This is the abstract superclass of transient-suffix and transient-group. In addition to the slots listed below, this class is also where the if* and inapt-if* slots (see Predicate Slots) and the level slot (see Enabling and Disabling Suffixes) are defined.
parentThe object for the parent group, if any.inactiveIf an:if*predicate of a suffix or group returnsnil, then it is not displayed in the menu, but it has to remain in the internal object tree, in case that predicate later returnst, and theobjecttherefore has to appear in the menu again. Likewise a group or suffix may be (potentially only temporarily) inactive due to itslevel. Theinactiveslot is set accordingly. Never set it yourself.
The following two slots are experimental. If they are set for a group, then they apply to all suffixes in that group, except for suffixes that themselves set the same slot to a non-nil value.
adviceA function used to advise the command. The advise is called using(apply advice command args), i.e., it behaves like an "around" advice.advice*A function used to advise the command. Unlikeadvice, this advises not only the command body but also itsinteractivespec. If both slots are non-nil,adviceis used for the body andadvice*is used for theinteractiveform. When advising theinteractivespec, called using(funcall advice #'advice-eval-interactive-spec spec).
Slots of transient-suffix
keyis the key binding, a string in the format returned bydescribe-keyand understood bykbd.That format is more permissive than the one accepted by
key-valid-p. Being more permissive makes it possible, for example, to write the key binding, which toggles the-acommand line argument, as "-a", instead of having to write "- a". Likewise additional spaces can be added, which is not removed when displaying the binding in the menu, which is useful for alignment purposes.commandThe command, a symbol.transientWhether to stay transient. See Transient State.formatThe format used to display the suffix in the menu buffer. It must contain the following %-placeholders:%kFor the key.%dFor the description.%vFor the infix value. Non-infix suffixes don’t have a value.
descriptionThe description, either a string or a function, which is called with zero or one argument (the suffix object), and returns a string.faceFace used for the description. In simple cases it is easier to use this instead of using a function asdescriptionand adding the styling there.faceis appended usingadd-face-text-property.show-helpA function used to display help for the suffix. If unspecified, the prefix controls how help is displayed for its suffixes. See also functiontransient-show-help.summaryA short description to be displayed in addition to the text displayed in the menu itself. If this isnil, the first line of the documentation string is used instead. If non-nil, this must be a string or a function that returns a string ornil.This description is displayed as a tooltip, when hovering an element in the menu. If
transient-enable-menu-navigationisverbose, it is also shown in the echo area, when navigating the menu.The generic function
transient-get-summaryis used to determine and format this description.definitionA command, which is used if the body is omitted when defining a command usingtransient-define-suffix.
Slots of transient-infix
Some of these slots are only meaningful for some of the subclasses. They are defined here anyway to allow sharing certain methods.
argumentThe long argument, e.g.,--verbose.shortargThe short argument, e.g.,-v.valueThe value. Should not be accessed directly.init-valueFunction that is responsible for setting the object’s value. If bound, then this is called with the object as the only argument. Usually this is not bound, in which case the object’s primarytransient-init-valuemethod is called instead.unsavableWhether the value of the suffix is not saved as part of the prefixes.multi-valueFor options, whether the option can have multiple values. If this is non-nil, then the values are read usingcompleting-read-multipleby default and if you specify your own reader, then it should read the values using that function or similar.Supported non-
nilvalues are:Use
restfor an option that can have multiple values. This is useful e.g., for an--argument that indicates that all remaining arguments are files (such asgit log -- file1 file2).In the list returned by
transient-argssuch an option and its values are represented by a single list of the form(ARGUMENT . VALUES).Use
repeatfor an option that can be specified multiple times.In the list returned by
transient-argseach instance of the option and its value appears separately in the usual from, for example:("--another-argument" "--option=first" "--option=second").
In both cases the option’s values have to be specified in the default value of a prefix using the same format as returned by
transient-args, e.g.,("--other" "--o=1" "--o=2" ("--" "f1" "f2")).always-readFor options, whether to read a value on every invocation. If this isnil, then options that have a value are simply unset and have to be invoked a second time to set a new value.allow-emptyFor options, whether the empty string is a valid value.history-keyThe key used to store the history. This defaults to the command name. This is useful when multiple infixes should share the same history because their values are of the same kind.readerThe function used to read the value of an infix. Not used for switches. The function takes three arguments,PROMPT,INITIAL-INPUTandHISTORY, and must return a string.promptThe prompt used when reading the value, either a string or a function that takes the object as the only argument and which returns a prompt string.choicesA list of valid values, or a function that returns such a list. The latter is not implemented fortransient-switches, because I couldn’t think of a use-case. How exactly the choices are used varies depending on the class of the suffix.
Slots of transient-variable
variableThe variable.
Slots of transient-switches
argument-formatThe display format. Must contain%s, one of thechoicesis substituted for that. E.g.,--%s-order.argument-regexpThe regexp used to match any one of the switches. E.g.,\\(--\\(topo\\|author-date\\|date\\)-order\\).