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.