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.6 2021-07-01 - Added new option ~transient-force-single-column~, which may be useful for low vision. #122 - Added new option ~transient-highlight-higher-levels~, which is intended for package authors. 90a05622 * v0.3.5 2021-06-16 - Added a kludge to work around some unexpected Emacs behavior. ef921d30 - When showing help for a suffix that is also a subprefix, then also consider the manpage that is set for the prefix, if any. a9bdd013 * v0.3.4 2021-05-25 - Very minor changes. * v0.3.3 2021-05-24 - Added SPDX-License-Identifier library header. 7d3d8d79 * v0.3.2 2021-04-20 - Fixed an error message. c145229a * v0.3.1 2021-04-19 - Changed ~transient-prefix~'s ~suffix-description~ slot to be initially unbound, as was always intended. c28b8a4 - Added new functions ~transient-read-file~ and ~transient-read-existing-file~. a3b44224 * v0.3.0 2021-02-21 - Added a temporary kludge to prevent a transient from being invoked while the minibuffer is active. A future 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 th... ...