mirror of
https://github.com/neovim/neovim.git
synced 2026-06-16 16:51:19 +00:00
fix(lsp): trailing blank line when edit inserts past end of buffer #40133
Problem:
A text edit positioned entirely past the last buffer line, with
newText ending in a newline, leaves a stray blank line: the
past-the-end path appends the trailing empty fragment produced by
vim.split() and does not set has_eol_text_edit, so the end-of-buffer
cleanup is skipped. Formatting servers emit such edits whenever
formatting moves text to the end of a document.
Regression from ec94014cd1 (#20137), which split the past-the-end
fast path off the clamp path that sets the flag.
Solution:
Set has_eol_text_edit in the past-the-end path, like the adjacent
path that clamps end_row.
This commit is contained in:
@@ -2250,6 +2250,20 @@ describe('LSP', function()
|
||||
}, buf_lines(1))
|
||||
end)
|
||||
|
||||
it('applies newline-terminated text edits at the end of the document', function()
|
||||
apply_text_edits({
|
||||
{ 5, 0, 5, 0, 'foobar\n' },
|
||||
})
|
||||
eq({
|
||||
'First line of text',
|
||||
'Second line of text',
|
||||
'Third line of text',
|
||||
'Fourth line of text',
|
||||
'å å ɧ 汉语 ↥ 🤦 🦄',
|
||||
'foobar',
|
||||
}, buf_lines(1))
|
||||
end)
|
||||
|
||||
it('it restores marks', function()
|
||||
eq(true, api.nvim_buf_set_mark(1, 'a', 2, 1, {}))
|
||||
apply_text_edits({
|
||||
|
||||
Reference in New Issue
Block a user