diff options
| author | Aaron Tinio <aptinio@gmail.com> | 2026-06-11 07:25:13 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-10 23:25:13 +0000 |
| commit | d42f7ee9dcbbece1c65d901fb9825fbe97eeedce (patch) | |
| tree | 6c3ff90b679c18614569ad527b21cdf07a860e2d /runtime/lua | |
| parent | 16549f2f40379342c37650be216ed5fe36f562e6 (diff) | |
| download | rneovim-d42f7ee9dcbbece1c65d901fb9825fbe97eeedce.tar.gz rneovim-d42f7ee9dcbbece1c65d901fb9825fbe97eeedce.tar.bz2 rneovim-d42f7ee9dcbbece1c65d901fb9825fbe97eeedce.zip | |
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.
Diffstat (limited to 'runtime/lua')
| -rw-r--r-- | runtime/lua/vim/lsp/util.lua | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index 0b5e978323..b702afb6d9 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -223,6 +223,7 @@ function M.apply_text_edits(text_edits, bufnr, position_encoding, change_annotat -- of the buffer. if max <= start_row then api.nvim_buf_set_lines(bufnr, max, max, false, text) + has_eol_text_edit = true else local last_line_len = #get_line(bufnr, math.min(end_row, max - 1)) -- Some LSP servers may return +1 range of the buffer content but nvim_buf_set_text can't |