mirror of
https://github.com/neovim/neovim.git
synced 2025-12-08 23:52:39 +00:00
Merge #32426 fix(lsp): reset active request when reporting an error
This commit is contained in:
@@ -288,15 +288,23 @@ function STHighlighter:send_request()
|
|||||||
method = method .. '/delta'
|
method = method .. '/delta'
|
||||||
params.previousResultId = current_result.result_id
|
params.previousResultId = current_result.result_id
|
||||||
end
|
end
|
||||||
|
---@param response? lsp.SemanticTokens|lsp.SemanticTokensDelta
|
||||||
local success, request_id = client:request(method, params, function(err, response, ctx)
|
local success, request_id = client:request(method, params, function(err, response, ctx)
|
||||||
-- look client up again using ctx.client_id instead of using a captured
|
-- look client up again using ctx.client_id instead of using a captured
|
||||||
-- client object
|
-- client object
|
||||||
local c = vim.lsp.get_client_by_id(ctx.client_id)
|
local c = vim.lsp.get_client_by_id(ctx.client_id)
|
||||||
local bufnr = assert(ctx.bufnr)
|
local bufnr = assert(ctx.bufnr)
|
||||||
local highlighter = STHighlighter.active[bufnr]
|
local highlighter = STHighlighter.active[bufnr]
|
||||||
if not err and c and highlighter then
|
if not (c and highlighter) then
|
||||||
coroutine.wrap(STHighlighter.process_response)(highlighter, response, c, version)
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if err or not response then
|
||||||
|
highlighter.client_state[c.id].active_request = {}
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
coroutine.wrap(STHighlighter.process_response)(highlighter, response, c, version)
|
||||||
end, self.bufnr)
|
end, self.bufnr)
|
||||||
|
|
||||||
if success then
|
if success then
|
||||||
@@ -331,12 +339,6 @@ function STHighlighter:process_response(response, client, version)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- skip nil responses
|
|
||||||
if response == nil then
|
|
||||||
state.active_request = {}
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if not api.nvim_buf_is_valid(self.bufnr) then
|
if not api.nvim_buf_is_valid(self.bufnr) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2218,6 +2218,7 @@ function M._refresh(method, opts)
|
|||||||
M._cancel_requests({
|
M._cancel_requests({
|
||||||
bufnr = bufnr,
|
bufnr = bufnr,
|
||||||
clients = clients,
|
clients = clients,
|
||||||
|
method = method,
|
||||||
type = 'pending',
|
type = 'pending',
|
||||||
})
|
})
|
||||||
for _, client in ipairs(clients) do
|
for _, client in ipairs(clients) do
|
||||||
|
|||||||
Reference in New Issue
Block a user