Ensure we do undo sync when emulating <Esc><some_key> #11706
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
After PR #8226 an unmapped META key in insert mode behaves as
<Esc>-<key>
.The behaviour does not fully match, since if
<Esc>-<key>
is pressedmanually then since it were pressed manually
gotchars
would be calledon the second
<key>
after insert-mode had already been left.This would mean that
may_sync_undo
(called fromgotchars
) wouldcall
u_sync(FALSE)
on the second key (since we would be in normalmode).
This overall means that
<Meta-[something]>
behaves differently withrespect to undo than
<Esc>[something]
when the [something] makes achange.
As an example, under
nvim -u NONE
.Leaves the buffer empty, while
Leaves the buffer with one instance of
hello
.This patch fixes that by calling u_sync() manually in the new clause
under
normalchar:
ininsert_handle_key
.I also include a new test, and change a test in tui_spec.lua that relies
on the old behaviour.
The test in tui_spec.lua looks to not be testing for this behaviour, but
just testing it by side-effect (i.e. I don't believe this behaviour was
intentionally checked in that file).