feat(lsp): support version in textDocument/publishDiagnostics #36754

This commit makes it so that push diagnostics received for an outdated
document version are ignored.
This commit is contained in:
Riley Bruins
2025-11-29 20:38:11 -08:00
committed by GitHub
parent 5bb8734fb6
commit 03d6cf7aae
4 changed files with 44 additions and 2 deletions

View File

@@ -148,6 +148,40 @@ describe('vim.lsp.diagnostic', function()
)
end)
it('ignores outdated diagnostics', function()
local result = exec_lua(function()
vim.lsp.diagnostic.on_publish_diagnostics(nil, {
uri = fake_uri,
version = vim.lsp.util.buf_versions[diagnostic_bufnr] - 1,
diagnostics = {
_G.make_error('Error', 0, 0, 1, 0),
},
}, { client_id = client_id })
local diags = vim.diagnostic.get(diagnostic_bufnr)
return diags
end)
-- Ignored: outdated version.
eq(0, #result)
result = exec_lua(function()
vim.lsp.diagnostic.on_publish_diagnostics(nil, {
uri = fake_uri,
version = vim.lsp.util.buf_versions[diagnostic_bufnr],
diagnostics = {
_G.make_error('Error', 0, 0, 1, 0),
},
}, { client_id = client_id })
local diags = vim.diagnostic.get(diagnostic_bufnr)
return diags
end)
-- Applied: up-to-date version.
eq(1, #result)
end)
it('does not create buffer on empty diagnostics', function()
-- No buffer is created without diagnostics
eq(