diff options
author | Yi Ming <ofseed@foxmail.com> | 2025-02-13 11:51:31 +0800 |
---|---|---|
committer | Yi Ming <ofseed@foxmail.com> | 2025-02-13 11:59:18 +0800 |
commit | d76f7fef13e534cce870cbce6b1bfaecd18bd034 (patch) | |
tree | 5782ab5de37fbcea2fce75c8433a43384a6091fb | |
parent | 4fd2694f20d6abe4305e3f37ca06cf86762ad6a2 (diff) | |
download | rneovim-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.lua | 11 |
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 |