dotemacs

My Emacs configuration
git clone git://git.entf.net/dotemacs
Log | Files | Refs | LICENSE

CHANGELOG (37230B)


      1 # -*- mode: org -*-
      2 * v0.6.0    2024-03-21
      3 
      4 - On Emacs 28.1 and later, all infix commands and suffix commands
      5   that are defined inline (i.e., using a lambda when defining a prefix
      6   command), are now hidden from ~execute-extended-command~ (aka ~M-x~) /by
      7   default/.  It was already possible to hide these commands, but users
      8   had to opt-in explicitly.  After refactoring how these commands are
      9   declared to be unsuitable for ~M-x~, it is now possible to hide them
     10   /without/ also hiding other, unrelated kinds of unsuitable commands.
     11 
     12   I recommend that you instruct to hide /all/ unsuitable command.
     13   This requires that you customizing ~read-extended-command-predicate~,
     14   because the Emacs authors have decided that this should be an opt-in
     15   feature.
     16 
     17   Note that this has no effect on Emacs releases before 28.1.
     18 
     19 - Added documentation stating that ~:class~ has to be specified when
     20   using ~:setup-children~.  beecdc85
     21 
     22 - Added a new prefix slot ~column-widths~, which can be used to specify
     23   the minimal width of each column in all ~transient-columns~ groups of
     24   that prefix.  92e8952e
     25 
     26 - When assigning a name to a suffix that is defined inline, we no
     27   longer use the suffix description, iff that would result in an
     28   overly long name.  81a108ba
     29 
     30 - Functions used as the value of face slots can now take one
     31   argument, the suffix object.  Functions that take zero arguments
     32   are still supported.  Additionally, ~transient--pending-suffix~ is
     33   bound around calls to these functions, but it is better to pass
     34   the object as an argument.  f582a9bc
     35 
     36 - The new ~definition~ suffix slot can be used to specify a default
     37   function definition that is used if no function body is provided
     38   using ~transient-define-suffix~.  5b334a51
     39 
     40 - Taught ~transient-suffix-object~ about ~transient--pending-suffix~.
     41   20a3770d
     42 
     43 Bug fixes:
     44 
     45 - If ~transient-parse-suffix~ and ~transient-parse-suffixes~ are called
     46   with an invalid value for their ~prefix~ argument, they failed to
     47   detect that.  03e752d9
     48 
     49 - If ~nil~ is encountered inside a group specification, that was
     50   silently ignored.  Now an error is signaled.  8c01a1eb
     51 
     52 - ~find-function~ wasn't able to locate the definitions of infix
     53   commands anymore.  a30df67b
     54 
     55 - There was no binding for ~ignore-preserving-kill-region~ in
     56   ~transient-predicate-map~.  0fc87002
     57 
     58 - Invoking a non-symbolic non-suffix command, caused an error.
     59   bd2a5ea0
     60 
     61 - When a group begins with an included subgroup, that affected what
     62   group class was assumed, in the absence of an explicit specification.
     63   df36bc87
     64 
     65 - ~transient--suspend-override~ failed to move out of the minibuffer
     66   before refreshing the transient buffer.  833143ba
     67 
     68 - When a suffix command signaled an error during a trivial phase
     69   (which does not involve, e.g., the minibuffer), then the transient
     70   window was not deleted when the debugger was entered.  9d8f361f
     71 
     72 - When a prefix was refreshed, the wrong color was used for suffix
     73   commands that exit the prefix, indicating that would cause a return
     74   to the outer prefix, even though there is none.  f51c144a
     75 
     76 - Calling ~transient-infix-read~ with an invalid value, resulted in
     77   a confusing error.  Now an appropriate error is used.  3ebb6acf
     78 
     79 - When third-party code or user customization managed to display
     80   another buffer in our dedicated window, then that buffer got
     81   killed when we tried to kill the transient buffer.  #271
     82 
     83 * v0.5.3    2023-12-16
     84 
     85 - Fixed regression when setting ~:pad-keys~ for a ~transient-columns~
     86   group.  #269
     87 
     88 * v0.5.2    2023-12-05
     89 
     90 - Fixed formatting issues in the manual.
     91 
     92 * v0.5.1    2023-12-05
     93 
     94 - Added a new introduction by JD Smith (@jdtsmith).
     95 
     96 Bug fixes:
     97 
     98 - Faces that use a box are now defined more defensively to protect
     99   against unexpected values and provide reasonable fallback colors.
    100   413310cd, b8aefce3
    101 
    102 - Only prepare to return to the parent transient if there actually is
    103   a parent.  The only negative effect of failing to do this was that
    104   the suffix was colored wrong, since ~transient--do-return~ falls back
    105   to behave like ~transient--do-exit~.  5f2cfc9f
    106 
    107 * v0.5.0    2023-11-28
    108 
    109 - Some suffix commands exit the transient from which they were
    110   invoked, while others don't (allowing the user to invoke another
    111   suffix without first having to enter the transient again).
    112 
    113   Until now it wasn't possible to tell which category any given suffix
    114   falls into, at least not by default.  Now the key binding of each
    115   suffix is colorized to indicate its transient behavior.  Red means
    116   that the suffix exits the transient, and blue means that it does
    117   not.  Keys for suffixes that currently cannot be invoked are gray.
    118 
    119   Likewise, the thin line, that is drawn between the transient popup
    120   buffer and the minibuffer, is used to indicate what happens, if you
    121   invoke a command that is not a suffix.  Most prefixes do not allow
    122   non-suffixes to be invoked, so this line usually is gray.  c8a9ac51
    123 
    124 - Many faces have also been improved.  This involves changing which
    125   built-in faces they inherit from, some explicit changes to their
    126   appearance, and semantic clarifications.  Of course your mileage may
    127   vary — it's possible that some face just happened to look right with
    128   your chosen theme, but now it has to be themed to achieve that
    129   again.  47d3f01d 71d16d86 et al.
    130 
    131 - Added a new face, ~transient-delimiter~, which is used for parentheses
    132   around values and the pipe character used to separate possible values
    133   from each other.  567b5d54
    134 
    135 - Added a new command ~transient-toggle-level-limit~, bound to ~C-x a~,
    136   which temporarily shows all suffix commands a transient has to
    137   offer.  This makes it possible to occasionally use more obscure
    138   commands and arguments, without having to always display them.
    139   For more information see [[https://magit.vc/manual/transient/Enabling-and-Disabling-Suffixes.html][Enabling and Disabling Suffixes]].  #243
    140 
    141 The changes described below, only directly affect package authors and
    142 users who implement their own transients.  If that does not describe
    143 you, then all you have to know is that many features were fine-tuned
    144 and otherwise improved, opening up some new use-cases and making some
    145 things easier to implement.  This will hopefully lead to improvements
    146 in your favorite transient-using packages in the coming months.
    147 
    148 - It sometimes makes sense to bind multiple keys to the same suffix
    149   command, e.g., because they behave differently based on the suffix
    150   description, or some other slot that can be set per binding.
    151   Previously these bindings shared a visibility level; how this can
    152   be set individually.  #153
    153 
    154 - While functions are run, which format strings to be inserted into the
    155   transient buffer or to determine whether other aspects of a suffix,
    156   that transient buffer no longer is the current buffer.  Instead the
    157   buffer in which the prefix and its suffixes operate, is the current
    158   buffer.  This affects functions such as ~transient-format-description~
    159   and those found in predicate slots such as ~if~.  In contexts where
    160   the transient buffer is needed but the other buffer happens to be
    161   current, the new macro ~transient-with-shadowed-buffer~ can be used
    162   to temporarily change that.
    163 
    164 - The new suffix slots ~face~ and ~inapt-face~ can be used to specify how
    165   a suffix looks, which in simple cases is more convenient than using
    166   a function as ~description~ and adding the face there.  The values of
    167   these slots should be faces or functions that returns a face.  The
    168   default for ~inapt-face~ is ~transient-inapt-suffix~, but in some cases
    169   it is undesirable to apply this face to the whole description, so
    170   this can be overridden by setting this slot to ~nil~ for individual
    171   suffixes.  The default for ~face~ is ~nil~.  c2a75880 8e15a29b 71399d21
    172 
    173 - Added new variables ~transient--pending-suffix~ and
    174   ~transient--pending-group~, which are bound while a suffix/group is
    175   being inserted.  These are mostly intended for internal purposes,
    176   but in some rare complex cases package authors might need them too.
    177   0717589a 70e8dc80
    178 
    179 - Sometimes it is useful to display some information in the transient
    180   buffer, which is not associated with a suffix command.  The new
    181   class ~transient-info~ can be used for that purpose.  Children that
    182   use this class are very similar to regular suffixes, the lack of a
    183   command binding being nearly the only difference.  #226
    184 
    185 - Instead of a list of choices, the value of a suffix's ~choices~ slot
    186   can now be a function that returns such a list.  #212
    187 
    188 - Per-suffix functions that format its description (specified using the
    189   ~description~ slot) can now optionally take one instead of zero argument,
    190   the respective suffix object.  09be367b
    191 
    192 - Added a new command ~transient-echo-arguments~ intended for use in
    193   examples and bug reports, when a prefix must bind some command, but it
    194   does not really matter which.  Using this command is less verbose than
    195   having to implement a dummy every time, and it comes with some goodies.
    196   I.e., it reports information about the prefix from which it was invoked.
    197   faa3d09d
    198 
    199 - When a command was defined using ~transient-define-suffix~ and an alias
    200   for that command was created using ~defalias~, then the alias had no
    201   access to the associated suffix object.  Now it does, which makes it
    202   possible to bind the same command multiple times in a prefix, and make
    203   it behave differently depending on the symbol-name that was used to
    204   invoke it.  f43aee1a
    205 
    206 - The values of a prefix's ~transient-suffix~ and ~transient-non-suffix~
    207   slots should now be a boolean.  The value of the ~transient-suffix~
    208   slot has to be handled differently for different types of suffixes.
    209   I.e., infix arguments must ignore it, and sub-prefixes must honor
    210   it but to do so they must use a different pre-command.  Previously
    211   booleans were not supported and the previously recommended values,
    212   ~transient--do-stay~ and ~transient--do-exit~ are still supported (but
    213   they are "corrected" for sub-prefixes).  For the ~transient~ slot the
    214   use of booleans was always allowed and recommended.  8098d175
    215 
    216 - For sub-prefixes a value of ~t~ for the ~transient-suffix~ slot of the
    217   parent prefix now means that suffixes, which exit the sub-prefix,
    218   return to the parent prefix, instead of exiting that as well.
    219   784887b7 5ad5b627
    220 
    221 - In addition to booleans and pre-commands, the values of the
    222   ~transient-suffix~, ~transient-non-suffix~ and ~transient~ slots
    223   may now also be pre-command "shorthands", e.g., use ~leave~ instead
    224   of ~transient--do-leave~ (which in some cases is a good value for
    225   `transient-non-suffix`). 9617b6c7
    226 
    227 - ~transient--do-replace~ now behaves as documented and implied by its
    228   name.  Use the new ~transient--do-stack~ if you want to return to the
    229   outer prefix.  94661e0c
    230 
    231 - Added a new prefix slot ~transient-switch-frame~, which allows
    232   specifying the transient behavior of ~switch-frame~ per prefix and
    233   independently of the transient behavior of other non-suffixes
    234   (specified using the ~transient-non-suffix~ slot).  609dabfd
    235 
    236 - Added a new function ~transient-prefix-object~ to allow package
    237   authors to avoid the following unfortunate complication.
    238 
    239   While a transient is being setup or refreshed (which involves
    240   preparing its suffixes) the variable ~transient--prefix~ can be
    241   used to access the prefix object.  Thus this is what has to be
    242   used in suffix methods such as ~transient-format-description~,
    243   and in object-specific functions that are stored in suffix slots
    244   such as ~description~.  When a suffix command is invoked (i.e.,
    245   in its ~interactive~ form and function body) then the variable
    246   ~transient-current-prefix~ has to be used instead.
    247 
    248   Two distinct variables are needed, because any prefix may itself
    249   be used as a suffix of another prefix, and such sub-prefixes have
    250   to be able to tell themselves apart from the prefix they were
    251   invoked from.  Regular suffix commands, which are not prefixes, do
    252   not have to concern themselves with this distinction, so they can
    253   use this function instead.  In the context of a plain suffix, it
    254   always returns the value of the appropriate variable.
    255   37307c1b
    256 
    257 Bug fixes:
    258 
    259 - cc0fa805 transient--post-command: Redisplay after universal argument
    260 - dd970cd4 Compile suffix commands that are defined inside prefix definitions
    261 - b150b48b transient-quit-one: Cancel prefix-arg instead of exiting transient
    262 - 7c08beb8 Revert "transient-{set,save,reset}: Stay transient"
    263 - f8209cc8 transient--maybe-pad-keys: Ignore raw strings
    264 - 0a0ba1aa transient--do-leave: Actually behave as documented
    265 - ed5bd6fd transient-infix-set(argument): Fix disabling incompatible options
    266 - 3a2b936a Fix highlighting infix for which user input is being read
    267 - d834f764 transient-format(around:suffix): Don't attempt to highlight full line
    268 - af6eb310 transient-format: Only highlight infix if minibuffer is used
    269 - b1d1c369 Prevent temporary faces from leaking back into objects
    270 - 307695d2 transient-format-description(around:suffix): Combine faces
    271 - 7f0215c4 transient-format-value(option,value): Use argument faces
    272 
    273 Also contains various documentation updates and a lot of code clean-ups.
    274 
    275 This release drops support for Emacs 25.  The last Emacs 25 release
    276 (25.3) was released in 2017; over six years ago.  The current Emacs
    277 version is 29.1; that's four major releases since 25.1.
    278 
    279 * v0.4.3    2023-08-25
    280 
    281 - Added a second implementation of ~transient--wrap-command~, taking
    282   advantage of improvements in Emacs 30.
    283 
    284 * v0.4.2    2023-08-25
    285 
    286 - Infix commands are only useful when invoked from a transient prefix
    287   command and ~execute-extended-command~ should not offer them as
    288   completion candidates.  In the past we used a weird kludge to
    289   accomplish that, but now we rely on ~read-extended-command-predicate~.
    290   That allowed the removal of some complications and made it possible
    291   to fix a bug in ~transient--wrap-command~.
    292 
    293   To hide infix commands, users now have to update to Emacs 28, or
    294   later, and customize ~read-extended-command-predicate~.
    295 
    296   #+begin_src emacs-lisp
    297     (setq read-extended-command-predicate
    298           'command-completion-default-include-p)
    299   #+end_src
    300 
    301 - Due to changes in Emacs 29.1, pretty-printing isn't consistent
    302   across Emacs releases anymore by default, which is unfortunate
    303   in our case because we use it to write to files that are likely
    304   to be checked into version control.  We now force the use of the
    305   old style across releases.
    306 
    307 * v0.4.1    2023-06-02
    308 
    309 Bug fixes:
    310 
    311 - 070d47b0 Support searches that end right after suffix
    312 - ab831828 transient--insert-group(columns): Drop separator before first column
    313 - 62edeffd #247 Fix bug using :incompatible using suffixes before infixes
    314 - 6efa9fad transient-predicate-map: Bind univeral-argument-more
    315 
    316 * v0.4.0    2023-05-10
    317 
    318 - Transient has to update state after every suffix command.  If that
    319   fails for some reason, then Emacs ends up in an badly broken state.
    320   It was rare, but in the worst case scenario, that meant that Emacs
    321   refused to call any more commands and had to be killed.
    322 
    323   Naturally ~post-command-hook~ is the first choice to run something
    324   after commands, but unfortunately that hook is not guaranteed to run
    325   only once, and worse it is not guaranteed run /after/ the command.
    326   Working around this limitation made an essential part of Transient
    327   much more complex and fragile.  As new edge-cases were discovered,
    328   new and increasingly desperate heuristics had to be added, until I
    329   finally decided that relying solely on hooks was just not feasible.
    330 
    331   Now ~pre-command-hook~ is used to advice ~this-command~, to add an
    332   around advice, which ensures that the state update takes place, even
    333   when ~post-command-hook~ is run prematurely.  The advice wraps both
    334   the function body and the interactive spec with ~unwind-protect~, so
    335   we can finally be sure that the state change is always performed,
    336   and that the advice is removed again.
    337 
    338   It has been an interesting journey, and I have documented it in long
    339   commit messages.  If you are interested in the details, see 7b8a7d71
    340   (which still tries to avoid using any advice), 51c68c87, 52cac9c0,
    341   bug#61179 and bug#61176.
    342 
    343 - The ~transient-define-prefix~ now expands to code instead of data,
    344   meaning that lambda expressions are finally properly evaluated and
    345   byte-compiled.  ea851f3b e88f51d6 277e5f2d a1774182
    346 
    347 - Popup navigation is no longer considered a second-class feature and
    348   is enabled by default.  Some transients allow arbitrary non-suffixes
    349   to be invoked, so some key bindings, which were previously used for
    350   popup navigation, had to be removed, to avoid conflicts.  98d50202 ff
    351 
    352 - Each prefix and suffix can now have its own help function.  This is
    353   configured using the new ~show-help~ slot.  ea5ac99f
    354 
    355 - The ~transient-options~ class now supports two types of options that
    356   can have multiple values: repeated option-value pairs and a final
    357   option that takes all remaining arguments as value.  #154
    358 
    359 - Added support for the use of non-proportional text in the transient
    360   popup.  7f5520b3
    361 
    362 - Imenu was taught about Transient's definition macros.  #178
    363 
    364 - It is now possible to return to the parent prefix from a sub-prefix.
    365   e90f7a16
    366 
    367 - Boolean values of the ~transient~ slot of sub-prefixes are now
    368   interpreted correctly.  4a36b1d9
    369 
    370 - Added new option ~transient-hide-during-minibuffer-read~.  5762bd9a
    371 
    372 - Added new option ~transient-align-variable-pitch~.  cda6a120
    373 
    374 - Added new command ~transient-reset~, which clears the set and saved
    375   value of the active transient.  51585b8d
    376 
    377 - When using Emacs 28, ~execute-extended-command~ can be told to ignore
    378   transient infix commands.  Even when using that Emacs version, that
    379   command does not ignore any commands by default, but this behavior
    380   can be easily be enabled using:
    381 
    382     (setq read-extended-command-predicate
    383           'command-completion-default-include-p)
    384 
    385   Infix arguments are implemented as commands, so they by default show
    386   up as completion candidates of ~execute-extended-command~, which is
    387   useless because they are only intended to be invoked from transient
    388   prefix commands.  Enable this feature to prevent that.
    389 
    390 - Added new command ~transient-toggle-debug~.  b466cd9a
    391 
    392 - Depend on the Compat package, allowing me to use convenient features
    393   that were added to Emacs over the last few years, without having to
    394   wait another few years until everybody has updated to a reasonably
    395   recent Emacs release.  5ae3c401
    396 
    397 - Added basic support for suffixes that span multiple lines (multi-row
    398   cells).  #193
    399 
    400 - Infix arguments can now be invoked following a prefix argument.  To
    401   use a negative prefix argument use "C--".  "-" cannot be used anymore
    402   because it conflicts with the most common prefix key used for infix
    403   arguments.  ed2febd0
    404 
    405 - Removed obsolete aliases for functions deprecated in v0.3.0.  #192
    406 
    407 - Duplicated suffix commands are now disambiguated, making it possible
    408   to bind a command multiple times as a suffix of a transient command,
    409   but still have it do different things depending on what binding is
    410   used, based on the value of some slot of the corresponding suffix
    411   object, similar to how ~self-insert-command~ inserts the pressed key.
    412   f27c840a
    413 
    414 - ~recursive-edit~ and ~top-level~ can now be used while a transient is
    415   active.  fcdeadc1 5a1b2bac
    416 
    417 - Switched to Emacs 29's new keymap functions, which are also supported
    418   in newer releases, thanks to the Compat package.  87f70af5 5a966aa8
    419 
    420 Bug fixes:
    421 
    422 - 938b0591 #173 transient--show: Set point after displaying window again
    423 - 202271f7 Resurrect transient-files class
    424 - c26cbac5 #181 transient-{init,set}-value: Use case-sensitive matching
    425 - 28491e1f Properly deal with stealth undefined command
    426 - 143a1393 transient-infix-read: Always enable-recursive-minibuffers
    427 - 76b77e01 magit--{pre,post}-command: Add emergency exits
    428 - 09b436fa transient--debug: Ignore error in transient--suffix-symbol
    429 - f2e0dfcc transient--get-predicate-for: Ignore error in transient--suffix-symbol
    430 - bf29731a transient--post-command: Don't pop and push equal redisplay maps
    431 - 3c78b10f transient--redisplay: Don't redisplay during mouse-drag-region
    432 - 714e3482 No longer always suspend when handle-switch-frame is called
    433 - ecb815bc transient--abort-commands: Add keyboard-escape-quit
    434 - 8b1f8dcc transient--minibuffer-depth: Must always be a number
    435 - 686b7ebc Fix handling of sub-prefix command that use the minibuffer
    436 - a19faa1c Return to outer prefix when minibuffer is aborted for sub-prefix
    437 - 4477555b transient--post-exit: Deal with unbound transient slot properly
    438 - 0f39af0e #188 transient-format-description: Use cl-call-next-method
    439 - 1fd1cf51 When highlighting suffixes not normally displayed consider group level
    440 - 7c771c94 Do not let-bind overriding-terminal-local-map to nil
    441 - 31d355b5 transient-set-level: Refresh shown levels after setting one
    442 - bb056e71 Invoke suffix commands directly when a button is pushed
    443 - 270eff1c Fix redisplay when popup navigation is enabled
    444 - 81b2b912 Use this-original-command again
    445 - d4fb853d #198 transient--show: Also hide the header-line
    446 - 7467a79c transient--suspend-override: Cancel display timer
    447 - 5686a792 transient--suspend-override: Cancel prefix key display
    448 - 1c84d7ad Remap kp-subtract, kp-equal and kp-add
    449 - 5302db18 Once popup is showing keep doing so until full exit
    450 - cc887ebe transient--delay-post-command: Fix execute-extended-command handling
    451 - 3b267425 transient--fit-window-to-buffer: Use correct package prefix
    452 - 9d4fabc3 #208 transient--describe-function: Handle renamed help buffer
    453 - 555792f7 #209 Fix setting level of anonymous infixes
    454 - 0a3b22f1 #215 transient--delay-post-command: Account for events returned as vector
    455 - ad953cc3 #204 transient--insert-group: Add fallback for failed alignment calculation
    456 - 5337e5eb #230 transient-define-{*}: Error if ARGLIST is missing
    457 - d800ce01 Use equal to compare with empty vector
    458 - 3657117b #234 transient--parse-suffix: Detect when mandatory command is missing
    459 - f88cbbc5 #234 transient--parse-suffix: Differentiate command and desc lambda
    460 - 0204a243 #234 transient--parse-suffix: Define suffix aliases at load-time
    461 - 0ae0de43 #241 transient--invalid: Add special-case for anonymous inapt commands
    462 - af7fe42b #244 transient--parse-suffix: Don't try to evaluate closures again
    463 - 6ff5c51f transient-isearch-abort: Fix partial match case
    464 
    465 Also contains various documentation updates, code clean-ups and
    466 build improvements.
    467 
    468 * v0.3.7    2021-10-25
    469 
    470 - Added an additional safety hatch to prevent Emacs from entering an
    471   inconsistent state when an unexpected error occurs.  99e48369
    472 
    473 - Added support for implementing section movement commands in
    474   third-party packages.  This was requested by the maintainer of
    475   Emacspeak.  Because they would be of very limited use to sighted
    476   users no such commands are added to Transient itself.  769219b5
    477 
    478 - ~transient-read-number-{N0,N+,N}~ now support infix arguments that
    479   have three different states: disabled, enabled without an empty
    480   value, and enabled with a non-empty value.  626d105e
    481 
    482 - If a command is called as a suffix of itself, then the help command
    483   shows the function definition instead of the man-page as it usually
    484   does for prefixes.  e17e2b2f
    485 
    486 - Give users more control over how the transient buffer is displayed.
    487   Various aspects that were previously hardcoded can now be changed
    488   using the ~transient-display-buffer-action~ option.  7c677737
    489 
    490 - Added support for adding suffixes that might be neither defined nor
    491   autoloaded when the prefix is invoked.  This usually results in an
    492   error and while it is now possible to override that using an extra
    493   step, it is still discouraged.  6842305e
    494 
    495 Bug fixes:
    496 
    497 - 1e740608 transient-map: Bind C-u to universal-argument
    498 - e9048100 Explicitly call transient--pre-command in button action
    499 - be119ee4 Export variables for transient non-infix suffixes
    500 - b526b9c7 transient-infix-set: Consider all incompatibility rules
    501 - 7126d6aa Fix hydra-inspired colors
    502 - 0c2255a2 transient-get-value: Add an emergency exit
    503 
    504 Also contains various documentation updates and code clean-ups.
    505 
    506 * v0.3.6    2021-07-01
    507 
    508 - Added new option ~transient-force-single-column~, which may be useful
    509   for low vision.  #122
    510 
    511 - Added new option ~transient-highlight-higher-levels~, which is
    512   intended for package authors.  90a05622
    513 
    514 * v0.3.5    2021-06-16
    515 
    516 - Added a kludge to work around some unexpected Emacs behavior.
    517   ef921d30
    518 
    519 - When showing help for a suffix that is also a subprefix, then also
    520   consider the manpage that is set for the prefix, if any.  a9bdd013
    521 
    522 * v0.3.4    2021-05-25
    523 
    524 - Very minor changes.
    525 
    526 * v0.3.3    2021-05-24
    527 
    528 - Added SPDX-License-Identifier library header.  7d3d8d79
    529 
    530 * v0.3.2    2021-04-20
    531 
    532 - Fixed an error message.  c145229a
    533 
    534 * v0.3.1    2021-04-19
    535 
    536 - Changed ~transient-prefix~'s ~suffix-description~ slot to be initially
    537   unbound, as was always intended.  c28b8a4
    538 
    539 - Added new functions ~transient-read-file~ and
    540   ~transient-read-existing-file~.  a3b44224
    541 
    542 * v0.3.0    2021-02-21
    543 
    544 - Added a temporary kludge to prevent a transient from being invoked
    545   while the minibuffer is active.  A future release will enable
    546   this again, once we are sure that cannot cause Emacs to enter an
    547   inconsistent state, that causes most events to be ignored.  #112
    548 
    549 - Improved the backtrace that is shown when a fatal error occurred in a
    550   critical context.  This involved some back and forth.  See commits
    551   mentioning the "emergency exit".
    552 
    553 - Added support for defining a per-prefix fallback suffix description
    554   function, which is used for suffixes that do not explicitly provide
    555   a description.  The new ~suffix-description~ slot is used to specify
    556   that function.  The new ~transient-command-summary-or-name~ function
    557   is useful, not just as an example.  8b22b52b
    558 
    559 - Added ~transient-arg-value~, which can be used to extract the values
    560   of individual arguments in the output of ~transient-args~.  d76f73f8
    561 
    562 - Added support for using variables in group and suffix definitions
    563   of a prefix.  Such indirect specifications are resolved when the
    564   transient prefix is being defined.  #101
    565 
    566 - No longer bind ~M-<key>~ to any common suffix commands; freeing this
    567   namespace for a variety of uses in individual transient.  A few
    568   existing bindings had to be changed because of this.  990eb0a2
    569 
    570 - Added ~transient-suffixes~ function, which is useful when
    571   ~transient-args~ is not sufficient because one needs the suffix
    572   objects, not just their values.  #98
    573 
    574 - Added ~init-value~ slot for infix and prefix objects.  If this value
    575   bound then it is called with the object as only argument instead of
    576   the primary ~transient-init-value~ method of the object class.  #96,
    577   3284f6a0
    578 
    579 - Added ~unsavable~ slot for infix objects.  If this is non-nil, then
    580   the value of the infix is removed from the prefix value before
    581   saving, setting and adding to history.  #96
    582 
    583 - Added support for right padding the keys of all suffixes in a group.
    584   This is controlled using the new ~pad-keys~ slot of group objects.
    585   7502390b, 293a437d
    586 
    587 - Added support for delaying setup of the suffixes of a prefix until
    588   that is invoked.  Also added support for using unnamed functions as
    589   suffix commands.  Taken together these changes make it possible to
    590   dynamically create the list of suffixed.  See the ~notmuch-transient~
    591   package for two examples: ~notmuch-search-transient~ and
    592   ~notmuch-tag-transient~.  f2252d53, a3e53633
    593 
    594 - Added the infix class ~transient-lisp-variable~.  2d8ceff4
    595 
    596 - Added ~transient-infix-read~, which allows arbitrary commands to read
    597   a value the same way as would the infix command that is provided as
    598   an argument to this function.  73694be4
    599 
    600 - Added support for coloring suffixes in a Hydra-like fashion.
    601   To enable this, customize option ~transient-semantic-coloring~.
    602   248862c5
    603 
    604 - Added support for disabling and dimming suffix commands that are
    605   currently not suitable, instead of completely hidding them.  #80
    606 
    607 - Autoload functions that serve a purpose similar to that of
    608   ~define-key~. #85
    609 
    610 - Consistently use ~transient-~ as the prefix of all symbols.
    611   The old names remain available as obsolete aliases.  dd0c44cb
    612 
    613 - Added support for scrolling the transient popup buffer using the
    614   scroll bar.  #84
    615 
    616 - Various bug fixes.
    617   48238bf5 Allow invoking arbitrary prefixes as non-suffixes
    618   d85eb790 transient-read-directory: Pass read value through file-local-name
    619   f086cb62 transient--insert-suffix: Allow same key with different predicates
    620   d555d260 transient-format-description(lisp-variable): Return string
    621   0d79ccfa transient--parse-suffix: Don't fallback to read-string for options
    622   f88dbc43 transient-suffix-object: Support all suffixes
    623   b343e2a3 transient-infix-read: Fix ivy specific kludge
    624   55bad195 transient--pp-to-file: Bugfix
    625   c1df3b21 Ensure we use symbols in a few more places
    626   769fa438 transient-set-level: Fix edge-case
    627   88d935c7 transient-display-buffer-action: inhibit-same-window by default
    628 
    629 * v0.2.0    2020-02-26
    630 
    631 - ~transient-args~ must now be called with a transient prefix command
    632   as argument.  It is now the only argument and its value must be a
    633   symbol now, an object is no longer supported.  When this command
    634   does not match ~current-transient-command~, then this function now
    635   returns the set, saved or default value.  0312b93, 7d0db28,
    636   d33fe5a, a6ce195
    637 
    638 - No longer use the last history element as initial minibuffer input
    639   by default.  Added new option ~transient-read-with-initial-input~ to
    640   allow users to restore the old default. dcf7a4d, 5decc6e
    641 
    642 - The set and saved values were not always used.  #68
    643 
    644 - Added support for inserting and removing groups.  #36
    645 
    646 - Added support for specifying where to insert elements and groups
    647   using coordinates.  #26
    648 
    649 - Added support for moving the cursor inside the transient popup
    650   buffer using the arrow keys or Isearch, and for invoke suffix
    651   commands using RET or mouse clicks.  Unlike Magit-Popup, Transient
    652   doesn't make the transient popup buffer the current buffer.  This
    653   is important when invoking suffix commands that take the current
    654   position into account, but it has the drawback that we do not get
    655   these features for free.  Because I also consider them unnecessary
    656   I did not implement them initially.  Turns out quite a few users
    657   strongly disagree.  Set ~transient-enable-popup-navigation~ to ~t~ to
    658   enable these features.  #42
    659 
    660 - Explicitly support Edebug.  Previously when Edebug was triggered
    661   while a transient was active, then Emacs entered an unrecoverable
    662   state.  #19
    663 
    664 - No longer attempt to display a thin line in termcap frames.  0a96a57
    665 
    666 - Work around some Ivy bugs/incompatibilities.  af243d5, fed7ab1
    667 
    668 - The new option ~transient-force-fixed-pitch~ allows users to use a
    669   monospaced font in transient's popup buffer even if they use a
    670   proportional font for the rest of Emacs.  #25, #67
    671 
    672 - Adapted to backward incompatible changes in Emacs 27 that prevented
    673   faces from extending to the edge of the window as expected.  c1ae1ee
    674 
    675 - No longer depend on dash (or any other third-party package).  #66
    676 
    677 - When a transient has conflicting key bindings and Transient is
    678   configure to warn about that, then Emacs entered an unrecoverable
    679   state instead.  75de1f0
    680 
    681 - ~transient-format-value~ now supports options with multiple values.
    682   #65
    683 
    684 - Removing a suffix based on its position was broken.  41cbf49
    685 
    686 - In our popup buffers disable the tab feature that Emacs 27
    687   introduces.  #62
    688 
    689 - Inserting a new suffix next to another ended up replacing the latter
    690   instead if its key binding was defined in the suffix object.  #58
    691 
    692 - ~transient-undefined~ learned to make some noise.  #57
    693 
    694 - Fix replacing a suffix with another suffix bound to the same key.
    695   5a360bb, 4ce1868
    696 
    697 - Characters are no longer allowed as pseudo suffixes.  To insert a
    698   an empty cell into a table use the empty string instead.  71687ba
    699 
    700 - Added new variable ~transient--buffer-name~.  #45
    701 
    702 - Some misconfiguration that affects how the transient popup buffer
    703   is displayed could lead to Emacs entering an unrecoverable state.
    704   #34, #44
    705 
    706 - The echo area is now cleared when the transient popup buffer is
    707   shown.  afdf1f0
    708 
    709 - If ~transient-show-popup~ is 0 or a negative number, then not even
    710   a one-line summary is shown initially.  #41
    711 
    712 - Added new function ~transient-read-directory~.  a87cb2c
    713 
    714 - ~define-transient-command~ now supports specifying the level of a
    715   suffix using the ~:level~ keyword argument.  6506cfd
    716 
    717 - The mode-related suffix predicates now also support a list of modes
    718   as argument in addition to a single mode as before.  1c6afb8
    719 
    720 - The new ~incompatible~ slot of prefix objects makes it possible to
    721   specify which arguments should be autoatically disabled when the
    722   user enables certain other arguments.  544b3bb
    723 
    724 - ~transient--history-push~ is now defined as generic function.  47b7975
    725 
    726 - The a new ~history-key~ slot and ~transient--history-key~ generic
    727   function for prefix objects.  3668aeb, e627d45
    728 
    729 - Disallow setting the level of essential suffixes that are shared
    730   between all transients.  #29
    731 
    732 - The active infix is now highlight while reading its value from the
    733   user.  #30
    734 
    735 - The commands ~transient-set~  and ~transient-save~ can now be configured
    736   to exit the transient, though by default they still don't.  a47ae94
    737 
    738 - Always respect the ~transient~ slot of a suffix, even if that suffix
    739   has a binding in ~transient-predicate-map~.  919fc66
    740 
    741 - Added new generic functions ~transient-set-value~ and
    742   ~transient-save-value~ intended for prefix commands.  ebe9d9d
    743 
    744 - It is no longer possible to set a prefix level to 0, which is an
    745   invalid value.  #28
    746 
    747 - All transient prefix and suffix commands are now automatically
    748   declared to be for interactive use only.  a6295fa
    749 
    750 - Infix arguments are no longer added to ~command-history~ because
    751   these entries were both useless and extremely noisy.  #23
    752 
    753 - ~digit-argument~ no longer exits the transient.  5f0ec7d
    754 
    755 - A new keymap, ~transient-base-map~ was added to make it easier to
    756   change key bindings that are shared between all transients.  This
    757   new keymap is used as the parent of all the other keymaps that are
    758   shared between all transients.
    759 
    760 - Added new commands ~transient-scroll-up~ and ~transient-scroll-down~,
    761   which scroll the transient window.  ~C-v~ and ~M-v~ (and ~<next>~ and
    762   ~<prior>~) are bound to these commands.  These keys were chosen they
    763   are bound to scrolling commands in the global map too.  This made
    764   it necessary to find a new binding for ~transient-show~, which ~C-t~ is
    765   bound to now.  #17
    766 
    767 - The new option ~transient-mode-line-format~ allows users to use
    768   a mode-line for the transient popup buffer instead of just a
    769   thin line that separates it from the echo area.  When using a
    770   non-standard value for ~transient-display-buffer-action~ it may
    771   be necessary to do that.  #17
    772 
    773 - The new option ~transient-display-buffer-action~ allows users to
    774   specify how a window is selected to display the transient popup
    775   buffer.  The ~lv~ library is no longer used.  #17
    776 
    777 - The window that was selected before the transient window was shown
    778   is no longer re-selected before calling a suffix that exits the
    779   transient.  If a suffix changes the selected window unintentionally,
    780   then that is a bug.  This makes it possible to intentionally change
    781   the window layout using transients.
    782 
    783 - An infix is a special kind of suffix.  Depending on context
    784   "suffixes" means "suffixes (including infixes)" or "non-infix
    785   suffixes".  This is now mention in a few places where users might
    786   otherwise get confused.
    787 
    788 - Stopped claiming that the transient is shown in the "echo area",
    789   because technically that is not correct.  Instead talk about the
    790   "popup buffer".
    791 
    792 - Fixed handling of suffix commands that are undefined at the time the
    793   prefix is invoked.  This is still an error, but the error message
    794   now explains what is wrong.  a729bbb
    795 
    796 - Fixed saving values/history/levels, making sure that the printed
    797   expression is never abbreviated.  #15
    798 
    799 - Fixed jumping to the correct place in a manpage when showing the
    800   documentation for an infix argument.  c4bf4af
    801 
    802 - Bound ~ESC ESC ESC~ to ~transient-quit-all~ because the convention is
    803   that it should be possible to exit any temporary state using this
    804   binding.  #12
    805 
    806 - Fixed referencing suffix bindings by their key when the key binding
    807   is defined in the suffix object instead of in the suffix spec.
    808   e4ffb97
    809 
    810 - Remove trailing whitespace from popup text for the benefit of users
    811   who have set enabled ~show-trailing-whitespace~ globally.  0758efa
    812 
    813 - Fixed showing available bindings on a single line instead of using
    814   the usual popup buffer.  2f011c9, 99d3bf6
    815 
    816 - Added a line between the ~lv~ window and the echo area.  ca18bb6
    817 
    818 - Fixed adding a new suffix at the end of a group and removing a
    819   group's last suffix.  #20, #6
    820 
    821 - No longer use ~cl-typep~, which appears to have a bug on Emacs 25.
    822   9183fe1
    823 
    824 - Fixed ~lisp~ make target.  170a3fd
    825 
    826 - Fixed reading a number as the value of an infix.  8219c0b
    827 
    828 - Various bug fixes to
    829   ~transient--goto-argument-description~ (4f80a89),
    830   ~transient-show-help~ (ccac95e),
    831   ~transient-infix-read~ (7bf9759).
    832 
    833 * v0.1.0    2019-01-14
    834 
    835 - First release.