branch: externals/transient commit 70abf5a07b3391164e9a8706f6319fb6741fb3c0 Author: Jonas Bernoulli <jo...@bernoul.li> Commit: Jonas Bernoulli <jo...@bernoul.li>
Update changelog --- CHANGELOG | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 8 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 54b727f9bb..2dcb40f28a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,10 +1,34 @@ # -*- mode: org -*- * v0.4.0 UNRELEASED -- Compatibility of Transient with various uses of the minibuffer has - been greatly improved, addressing several edge-cases and making it - possible to invoke a transient prefix command when the minibuffer - is active. 7b8a7d71 et al. +- Transient has to update state after every suffix command. If that + fails for some reason, then Emacs ends up in an badly broken state. + It was rare, but in the worst case scenario, that meant that Emacs + refused to call any more commands and had to be killed. + + Naturally ~post-command-hook~ is the first choice to run something + after commands, but unfortunately that hook is not guaranteed to run + only once, and worse it is not guaranteed run /after/ the command. + Working around this limitation made an essential part of Transient + much more complex and fragile. As new edge-cases were discovered, + new and increasingly desperate heuristics had to be added, until I + finally decided that relying solely on hooks was just not feasible. + + Now ~pre-command-hook~ is used to advice ~this-command~, to add an + around advice, which ensures that the state update takes place, even + when ~post-command-hook~ is run prematurely. The advice wraps both + the function body and the interactive spec with ~unwind-protect~, so + we can finally be sure that the state change is always performed, + and that the advice is removed again. + + It has been an interesting journey, and I have documented it in long + commit messages. If you are interested in the details, see 7b8a7d71 + (which still tries to avoid using any advice), 51c68c87, 52cac9c0, + bug#61179 and bug#61176. + +- The ~transient-define-prefix~ now expands to code instead of data, + meaning that lambda expressions are finally properly evaluated and + byte-compiled. ea851f3b e88f51d6 277e5f2d a1774182 - Popup navigation is no longer considered a second-class feature and is enabled by default. Some transients allow arbitrary non-suffixes @@ -44,11 +68,12 @@ (setq read-extended-command-predicate 'command-completion-default-include-p) -- Added new command ~transient-toggle-debug~. b466cd9a + Infix arguments are implemented as commands, so they by default show + up as completion candidates of ~execute-extended-command~, which is + useless because they are only intended to be invoked from transient + prefix commands. Enable this feature to prevent that. -- Expressions inside the group vectors that are prefixed with a comma - are now evaluated when the ~transient-define-prefix~ macro is expanded. - 99943f73 +- Added new command ~transient-toggle-debug~. b466cd9a - Depend on the Compat package, allowing me to use convenient features that were added to Emacs over the last few years, without having to @@ -63,6 +88,21 @@ because it conflicts with the most common prefix key used for infix arguments. ed2febd0 +- Removed obsolete aliases for functions deprecated in v0.3.0. #192 + +- Duplicated suffix commands are now disambiguated, making it possible + to bind a command multiple times as a suffix of a transient command, + but still have it do different things depending on what binding is + used, based on the value of some slot of the corresponding suffix + object, similar to how ~self-insert-command~ inserts the pressed key. + f27c840a + +- ~recursive-edit~ and ~top-level~ can now be used while a transient is + active. fcdeadc1 5a1b2bac + +- Switched to Emacs 29's new keymap functions, which are also supported + in newer releases, thanks to the Compat package. 87f70af5 5a966aa8 + Bug fixes: - 938b0591 #173 transient--show: Set point after displaying window again @@ -93,6 +133,20 @@ Bug fixes: - 5686a792 transient--suspend-override: Cancel prefix key display - 1c84d7ad Remap kp-subtract, kp-equal and kp-add - 5302db18 Once popup is showing keep doing so until full exit +- cc887ebe transient--delay-post-command: Fix execute-extended-command handling +- 3b267425 transient--fit-window-to-buffer: Use correct package prefix +- 9d4fabc3 #208 transient--describe-function: Handle renamed help buffer +- 555792f7 #209 Fix setting level of anonymous infixes +- 0a3b22f1 #215 transient--delay-post-command: Account for events returned as vector +- ad953cc3 #204 transient--insert-group: Add fallback for failed alignment calculation +- 5337e5eb #230 transient-define-{*}: Error if ARGLIST is missing +- d800ce01 Use equal to compare with empty vector +- 3657117b #234 transient--parse-suffix: Detect when mandatory command is missing +- f88cbbc5 #234 transient--parse-suffix: Differentiate command and desc lambda +- 0204a243 #234 transient--parse-suffix: Define suffix aliases at load-time +- 0ae0de43 #241 transient--invalid: Add special-case for anonymous inapt commands +- af7fe42b #244 transient--parse-suffix: Don't try to evaluate closures again +- 6ff5c51f transient-isearch-abort: Fix partial match case Also contains various documentation updates, code clean-ups and build improvements.