Browse Source

Merge pull request #14366 from mfussenegger/text-document-version-zero

lsp: Accept text document edits with version zero
pull/11988/merge
Michael Lingelbach 3 weeks ago
committed by GitHub
parent
commit
9471b15936
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      runtime/lua/vim/lsp/util.lua
  2. 16
      test/functional/plugin/lsp_spec.lua

1
runtime/lua/vim/lsp/util.lua

@ -470,6 +470,7 @@ function M.apply_text_document_edit(text_document_edit, index)
-- `VersionedTextDocumentIdentifier`s version may be null
-- https://microsoft.github.io/language-server-protocol/specification#versionedTextDocumentIdentifier
if should_check_version and (text_document.version
and text_document.version > 0
and M.buf_versions[bufnr]
and M.buf_versions[bufnr] > text_document.version) then
print("Buffer ", text_document.uri, " newer than edits.")

16
test/functional/plugin/lsp_spec.lua

@ -1124,14 +1124,14 @@ describe('LSP', function()
'2nd line of 语text';
}, buf_lines(target_bufnr))
end)
it('correctly goes ahead with the edit if the version is vim.NIL', function()
-- we get vim.NIL when we decode json null value.
local json = exec_lua[[
return vim.fn.json_decode("{ \"a\": 1, \"b\": null }")
]]
eq(json.b, exec_lua("return vim.NIL"))
exec_lua('vim.lsp.util.apply_text_document_edit(...)', text_document_edit(exec_lua("return vim.NIL")))
it('always accepts edit with version = 0', function()
exec_lua([[
local args = {...}
local bufnr = select(1, ...)
local text_edit = select(2, ...)
vim.lsp.util.buf_versions[bufnr] = 10
vim.lsp.util.apply_text_document_edit(text_edit)
]], target_bufnr, text_document_edit(0))
eq({
'First ↥ 🤦 🦄 line of text';
'2nd line of 语text';

Loading…
Cancel
Save