diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-03-09 10:19:00 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-09 10:19:00 +0800 |
commit | 89a525de9f2551e460cc91d40fd7afbb7e07622f (patch) | |
tree | 2e9bd543d89b693c7a6382fa66ec82488f8a0c61 /runtime | |
parent | eaccd0decd707ff7cec318e06914f963daa9574c (diff) | |
download | rneovim-89a525de9f2551e460cc91d40fd7afbb7e07622f.tar.gz rneovim-89a525de9f2551e460cc91d40fd7afbb7e07622f.tar.bz2 rneovim-89a525de9f2551e460cc91d40fd7afbb7e07622f.zip |
fix(buffer_updates): save and restore current window cursor (#16732)
When a buffer update callback is called, textlock is active so buffer
text cannot be changed, but cursor can still be moved. This can cause
problems when the buffer update is in the middle of an operator, like
the one mentioned in #16729. The solution is to save cursor position and
restore it afterwards, like how cursor is saved and restored when
evaluating an <expr> mapping.
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/doc/api.txt | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/runtime/doc/api.txt b/runtime/doc/api.txt index 3ca50dda15..2930f2314b 100644 --- a/runtime/doc/api.txt +++ b/runtime/doc/api.txt @@ -356,6 +356,7 @@ In-process Lua plugins can receive buffer updates in the form of Lua callbacks. These callbacks are called frequently in various contexts; |textlock| prevents changing buffer contents and window layout (use |vim.schedule()| to defer such operations to the main loop instead). +Moving the cursor is allowed, but it is restored afterwards. |nvim_buf_attach()| will take keyword args for the callbacks. "on_lines" will receive parameters ("lines", {buf}, {changedtick}, {firstline}, {lastline}, |