mirror of
https://github.com/neovim/neovim.git
synced 2025-10-21 17:21:49 +00:00
fix(api): single-line visual block insert triggers extra on_lines #35098
Problem: Visual block insert on a single line incorrectly triggers two on_lines callbacks - one for the correct line (0-indexed) and another for a non-existent additional line. Solution: Only call changed_lines() in block_insert() when additional lines beyond the first were actually modified (start.lnum < end.lnum).
This commit is contained in:
@@ -449,6 +449,19 @@ describe('lua buffer event callbacks: on_lines', function()
|
||||
eq({ 'bytes', 2, 5, 0, 0, 0, 4, 0, 40, 0, 10, 10 }, api.nvim_get_var('qf_on_bytes'))
|
||||
eq({ 'lines', 2, 6, 0, 5, 1, 42 }, api.nvim_get_var('qf_on_lines'))
|
||||
end)
|
||||
|
||||
it('single-line visual block insert should not trigger extra on_lines #22009', function()
|
||||
exec_lua(function()
|
||||
_G.res = {}
|
||||
vim.api.nvim_buf_attach(0, false, {
|
||||
on_lines = function(_, bufnr, _, first, last, last_updated, _, _, _)
|
||||
_G.res = { bufnr, first, last, last_updated }
|
||||
end,
|
||||
})
|
||||
end)
|
||||
feed('<C-v>I <ESC>')
|
||||
eq({ api.nvim_get_current_buf(), 0, 1, 1 }, exec_lua('return _G.res'))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('lua: nvim_buf_attach on_bytes', function()
|
||||
|
Reference in New Issue
Block a user