aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYi Ming <ofseed@foxmail.com>2025-02-13 11:51:31 +0800
committerYi Ming <ofseed@foxmail.com>2025-02-13 11:59:18 +0800
commitd76f7fef13e534cce870cbce6b1bfaecd18bd034 (patch)
tree5782ab5de37fbcea2fce75c8433a43384a6091fb
parent4fd2694f20d6abe4305e3f37ca06cf86762ad6a2 (diff)
downloadrneovim-d76f7fef13e534cce870cbce6b1bfaecd18bd034.tar.gz
rneovim-d76f7fef13e534cce870cbce6b1bfaecd18bd034.tar.bz2
rneovim-d76f7fef13e534cce870cbce6b1bfaecd18bd034.zip
fix(lsp): reset active request when reporting an error
-rw-r--r--runtime/lua/vim/lsp/semantic_tokens.lua11
1 files changed, 9 insertions, 2 deletions
diff --git a/runtime/lua/vim/lsp/semantic_tokens.lua b/runtime/lua/vim/lsp/semantic_tokens.lua
index 619f7f1110..9aa93862bc 100644
--- a/runtime/lua/vim/lsp/semantic_tokens.lua
+++ b/runtime/lua/vim/lsp/semantic_tokens.lua
@@ -294,9 +294,16 @@ function STHighlighter:send_request()
local c = vim.lsp.get_client_by_id(ctx.client_id)
local bufnr = assert(ctx.bufnr)
local highlighter = STHighlighter.active[bufnr]
- if not err and c and highlighter then
- coroutine.wrap(STHighlighter.process_response)(highlighter, response, c, version)
+ if not (c and highlighter) then
+ return
end
+
+ if err then
+ highlighter.client_state[c.id].active_request = {}
+ return
+ end
+
+ coroutine.wrap(STHighlighter.process_response)(highlighter, response, c, version)
end, self.bufnr)
if success then