To install this package, run in Emacs:
M-x package-install RET transient RET
Taking inspiration from prefix keys and prefix arguments, Transient implements a similar abstraction involving a prefix command, infix arguments and suffix commands. We could call this abstraction a "transient command", but because it always involves at least two commands (a prefix and a suffix) we prefer to call it just a "transient". When the user calls a transient prefix command, then a transient (temporary) keymap is activated, which binds the transient's infix and suffix commands, and functions that control the transient state are added to `pre-command-hook' and `post-command-hook'. The available suffix and infix commands and their state are shown in the echo area until the transient is exited by invoking a suffix command. Calling an infix command causes its value to be changed, possibly by reading a new value in the minibuffer. Calling a suffix command usually causes the transient to be exited but suffix commands can also be configured to not exit the transient state.
# -*- mode: org -*- * v0.3.0 2021-02-21 - As a temporary kludge prevent a transient from being invoked while the minibuffer is active. The next release will enable this again, once we are sure that cannot cause Emacs to enter an inconsistent state, that causes most events to be ignored. #112 - Improved the backtrace that is shown when a fatal error occured in a critical context. This involved some back and forth. See commits mentioning the "emergency exit". - Added support for defining a per-prefix fallback suffix description function, which is used for suffixes that do not explicitly provide a description. The new ~suffix-description~ slot is used to specify that function. The new ~transient-command-summary-or-name~ function is useful, not just as an example. 8b22b52b - Added ~transient-arg-value~, which can be used to extract the values of individual arguments in the output of ~transient-args~. d76f73f8 - Added support for using variables in group and suffix definitions of a prefix. Such indirect specifications are resolved when the transient prefix is being defined. #101 - No longer bind ~M-<key>~ to any common suffix commands; freeing this namespace for a variety of uses in individual transient. A few existing bindings had to be changed because of this. 990eb0a2 - Added ~transient-suffixes~ function, which is useful when ~transient-args~ is not sufficient because one needs the suffix objects, not just their values. #98 - Added ~init-value~ slot for infix and prefix objects. If this value bound then it is called with the object as only argument instead of the primary ~transient-init-value~ method of the object class. #96, 3284f6a0 - Added ~unsavable~ slot for infix objects. If this is non-nil, then the value of the infix is removed from the prefix value before saving, setting and adding to history. #96 - Added support for right padding the keys of all suffixes in a group. This is controlled using the new ~pad-keys~ slot of group objects. 7502390b, 293a437d - Added support for delaying setup of the suffixes of a prefix until that is invoked. Also added support for using unnamed functions as suffix commands. Taken together these changes make it possible to dynamically create the list of suffixed. See the ~notmuch-transient~ package for two examples: ~notmuch-search-transient~ and ~notmuch-tag-transient~. f2252d53, a3e53633 - Added the infix class ~transient-lisp-variable~. 2d8ceff4 - Added ~transient-infix-read~, which allows arbitrary commands to read a value the same way as would the infix command that is provided as an argument to this function. 73694be4 - Added support for coloring suffixes in a Hydra-like fashion. To enable this, customize option ~transient-semantic-coloring~. 248862c5 - Added support for disabling and dimming suffix commands that are currently not suitable, instead of completely hidding them. #80 - Autoload functions that serve a purpose similar to that of ~define-key~. #85 - Consistently use ~transient-~ as the prefix of all symbols. The old names remain available as obsolete aliases. dd0c44cb - Added support for scrolling the transient popup buffer using the scroll bar. #84 - Various bug fixes. 48238bf5 Allow invoking arbitrary prefixes as non-suffixes d85eb790 transient-read-directory: Pass read value through file-local-name f086cb62 transient--insert-suffix: Allow same key with different predicates d555d260 transient-format-description(lisp-variable): Return string 0d79ccfa transient--parse-suffix: Don't fallback to read-string for options f88dbc43 transient-suffix-object: Support all suffixes b343e2a3 transient-infix-read: Fix ivy specific kludge 55bad195 transient--pp-to-file: Bugfix c1df3b21 Ensure we use symbols in a few more places 769fa438 transient-set-level: Fix edge-case 88d935c7 transient-display-buffer-action: inhibit-same-window by default * v0.2.... ...