mirror of
https://github.com/neovim/neovim.git
synced 2026-08-01 05:09:08 +00:00
fix(api): nvim_buf_set_text resets changelist to 0 #39965
Problem: changed_lines got a hardcoded 0, so the changelist entry
and '. mark always recorded column 0 instead of where the edit
actually happened.
Solution: pass start_col instead. changelist now tracks the real
column.
(cherry picked from commit 7312df77bb)
This commit is contained in:
committed by
github-actions[bot]
parent
61765b97fe
commit
e57c37d246
@@ -684,7 +684,8 @@ void nvim_buf_set_text(uint64_t channel_id, Buffer buf, Integer start_row, Integ
|
||||
(int)new_len - 1, (colnr_T)last_item.size, new_byte,
|
||||
kExtmarkUndo);
|
||||
|
||||
changed_lines(b, (linenr_T)start_row, 0, (linenr_T)end_row + 1, (linenr_T)extra, true);
|
||||
changed_lines(b, (linenr_T)start_row, (colnr_T)start_col, (linenr_T)end_row + 1,
|
||||
(linenr_T)extra, true);
|
||||
|
||||
FOR_ALL_TAB_WINDOWS(tp, win) {
|
||||
if (win->w_buffer == b) {
|
||||
|
||||
@@ -959,6 +959,10 @@ describe('api/buf', function()
|
||||
eq('hello foo!', curbuf_depr('get_line', 0))
|
||||
-- cursor should be moved left by two columns (replacement is shorter by 2 chars)
|
||||
eq({ 1, 9 }, api.nvim_win_get_cursor(0))
|
||||
|
||||
-- changelist entry reflects the edit column #28618
|
||||
local changes = fn.getchangelist()[1]
|
||||
eq(6, changes[#changes].col)
|
||||
end)
|
||||
|
||||
it('updates the cursor position in non-current window', function()
|
||||
|
||||
Reference in New Issue
Block a user