mirror of
https://github.com/neovim/neovim.git
synced 2025-12-20 13:25:34 +00:00
lsp: Fix text edits operating on the last line of a document (#13677)
`lines` can be empty, in which case `#lines[#lines]` failed with an
error:
lsp/util.lua:214: attempt to get length of a nil value
This commit is contained in:
committed by
GitHub
parent
b2fcfc65b7
commit
1caf58578c
@@ -211,7 +211,7 @@ function M.apply_text_edits(text_edits, bufnr)
|
||||
local lines = api.nvim_buf_get_lines(bufnr, start_line, finish_line + 1, false)
|
||||
local fix_eol = api.nvim_buf_get_option(bufnr, 'fixeol')
|
||||
local set_eol = fix_eol and api.nvim_buf_line_count(bufnr) <= finish_line + 1
|
||||
if set_eol and #lines[#lines] ~= 0 then
|
||||
if set_eol and (#lines == 0 or #lines[#lines] ~= 0) then
|
||||
table.insert(lines, '')
|
||||
end
|
||||
|
||||
|
||||
@@ -1032,6 +1032,20 @@ describe('LSP', function()
|
||||
'å ä ɧ 汉语 ↥ 🤦 🦄';
|
||||
}, buf_lines(1))
|
||||
end)
|
||||
it('applies text edits at the end of the document', function()
|
||||
local edits = {
|
||||
make_edit(5, 0, 5, 0, "foobar");
|
||||
}
|
||||
exec_lua('vim.lsp.util.apply_text_edits(...)', edits, 1)
|
||||
eq({
|
||||
'First line of text';
|
||||
'Second line of text';
|
||||
'Third line of text';
|
||||
'Fourth line of text';
|
||||
'å å ɧ 汉语 ↥ 🤦 🦄';
|
||||
'foobar';
|
||||
}, buf_lines(1))
|
||||
end)
|
||||
|
||||
describe('with LSP end line after what Vim considers to be the end line', function()
|
||||
it('applies edits when the last linebreak is considered a new line', function()
|
||||
|
||||
Reference in New Issue
Block a user