mirror of
https://github.com/neovim/neovim.git
synced 2025-12-11 17:12:40 +00:00
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:
@@ -222,7 +222,8 @@ end
|
||||
--- @param client_id? integer
|
||||
--- @param diagnostics lsp.Diagnostic[]
|
||||
--- @param is_pull boolean
|
||||
local function handle_diagnostics(uri, client_id, diagnostics, is_pull)
|
||||
--- @param version integer?
|
||||
local function handle_diagnostics(uri, client_id, diagnostics, is_pull, version)
|
||||
local fname = vim.uri_to_fname(uri)
|
||||
|
||||
if #diagnostics == 0 and vim.fn.bufexists(fname) == 0 then
|
||||
@@ -234,6 +235,10 @@ local function handle_diagnostics(uri, client_id, diagnostics, is_pull)
|
||||
return
|
||||
end
|
||||
|
||||
if version and util.buf_versions[bufnr] ~= version then
|
||||
return
|
||||
end
|
||||
|
||||
client_id = client_id or DEFAULT_CLIENT_ID
|
||||
|
||||
local namespace = M.get_namespace(client_id, is_pull)
|
||||
@@ -249,7 +254,7 @@ end
|
||||
---@param params lsp.PublishDiagnosticsParams
|
||||
---@param ctx lsp.HandlerContext
|
||||
function M.on_publish_diagnostics(_, params, ctx)
|
||||
handle_diagnostics(params.uri, ctx.client_id, params.diagnostics, false)
|
||||
handle_diagnostics(params.uri, ctx.client_id, params.diagnostics, false, params.version)
|
||||
end
|
||||
|
||||
--- |lsp-handler| for the method "textDocument/diagnostic"
|
||||
|
||||
@@ -560,6 +560,7 @@ function protocol.make_client_capabilities()
|
||||
valueSet = get_value_set(constants.DiagnosticTag),
|
||||
},
|
||||
dataSupport = true,
|
||||
versionSupport = true,
|
||||
},
|
||||
callHierarchy = {
|
||||
dynamicRegistration = false,
|
||||
|
||||
Reference in New Issue
Block a user