diff options
author | Sean Dewar <6256228+seandewar@users.noreply.github.com> | 2025-03-06 08:31:50 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-06 08:31:50 +0000 |
commit | fa46441264b28e9272973ead7bea65f27868e94c (patch) | |
tree | 8c58e641725b5f2c7046e7a49e33ad4147161bbe /runtime/lua/vim/_defaults.lua | |
parent | 41b07b128ccbdc445c3a56618b0c6ec6ed0f3438 (diff) | |
download | rneovim-fa46441264b28e9272973ead7bea65f27868e94c.tar.gz rneovim-fa46441264b28e9272973ead7bea65f27868e94c.tar.bz2 rneovim-fa46441264b28e9272973ead7bea65f27868e94c.zip |
fix(terminal): improve cursor refresh handling (#32596)
Problem: terminal mode cursor refresh logic has too many edge cases where it
fails when events change curbuf.
Solution: change the logic. Introduce cursor_visible to TerminalState to more
reliably track if terminal mode has changed busy. Move visibility handling to
refresh_cursor and move its call in refresh_terminal to terminal_check to avoid
temporarily changed curbufs from influencing cursor state.
This has the effect of "debouncing" shape/visibility updates to once per
terminal state tick (with the final attributes taking effect, as expected). I
think this is OK, but as a result it may also be warranted to update when
redrawing during the same state tick (e.g: from events executing :redraw); this
can be added later, if wanted.
Also move previous tests to a more appropriate place.
Diffstat (limited to 'runtime/lua/vim/_defaults.lua')
0 files changed, 0 insertions, 0 deletions