Suffix Classes
All suffix and infix classes derive from
transient-suffix, which in turn derives fromtransient-child, from whichtransient-groupalso derives (see Group Classes).All infix classes derive from the abstract
transient-infixclass, which in turn derives from thetransient-suffixclass.Infixes are a special type of suffixes. The primary difference is that infixes always use the
transient--do-staypre-command, while non-infix suffixes use a variety of pre-commands (see Transient State). Doing that is most easily achieved by using this class, though theoretically it would be possible to define an infix class that does not do so. If you do that then you get to implement many methods.Also, infixes and non-infix suffixes are usually defined using different macros (see Defining Suffix and Infix Commands).
Classes used for infix commands that represent arguments should be derived from the abstract
transient-argumentclass.The
transient-switchclass (or a derived class) is used for infix arguments that represent command-line switches (arguments that do not take a value).The
transient-optionclass (or a derived class) is used for infix arguments that represent command-line options (arguments that do take a value).The
transient-switchesclass can be used for a set of mutually exclusive command-line switches.The
transient-filesclass can be used for a ‘--’ argument that indicates that all remaining arguments are files.Classes used for infix commands that represent variables should derived from the abstract
transient-variableclass.The
transient-informationclass is special in that suffixes that use this class are not associated with a command and thus also not with any key binding. Such suffixes are only used to display arbitrary information, and that anywhere a suffix can appear. Display-only suffix specifications take this form:emacs-lisp([LEVEL] :info DESCRIPTION [KEYWORD VALUE]...)The
:infokeyword argument replaces the:descriptionkeyword used for other suffix classes. Other keyword arguments that you might want to set, include:face, predicate keywords (such as:if), and:format. By default the value of:formatincludes%k, which for this class is replaced with the empty string or spaces, if keys are being padded in the containing group.
Magit defines additional classes, which can serve as examples for the fancy things you can do without modifying Transient. Some of these classes will likely get generalized and added to Transient. For now they are very much subject to change and not documented.