GNU-devel ELPA - transient


Transient commands
transient-, 2021-Mar-16, 390 KiB
Jonas Bernoulli <>
Home page
Browse ELPA's repository
CGit or Gitweb

To install this package, run in Emacs:

M-x package-install RET transient RET

Full description

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

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

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.

Old versions

transient- KiB
transient-0.0.20201221.170234.tar.lz2020-Dec-2167.2 KiB
transient-0.0.20201220.191149.tar.lz2020-Dec-2067.1 KiB
transient-0.0.20200517.210054.tar.lz2020-Dec-1475.0 KiB


# -*- 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,

- 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~.

- 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....