perf(cmdline): reduce spurious cursor and char events #1953
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.
See discussion in #1952 (comment)
For Neovim 0.11, there’s no real change to the core logic, I added throttling for rapid cursor movements. Considering as "rapid", a cursor move below 60ms from the last "move" (char added included). This is not an ideal solution but I don't see a better option for now.
For Neovim 0.10, I simplified the logic. In both cases, the number of triggered events is reduced by at least 50%, should be easier on downstream listeners and, in my opinion, only includes the meaningful events.
Test case
:=
:=
<SPACE>
:=
<ALT+v>
(paste):= vim.treesitter.
f
:= vim.treesitter.f
oldexpr
(accept):= vim.treesitter.foldexpr
<C-w>
:= vim.treesitter.
<C-w>
:= vim.treesitter
<C-w>
:= vim.
<C-u>
:
mes<CR>
(abbrev):mes
->:
->:Messages
Events triggered
Details
0.11 original
0.11 patched
0.10 original
0.10 patched