aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/_inlay_hint.lua
diff options
context:
space:
mode:
authorChinmay Dalal <dalal.chinmay.0101@gmail.com>2023-06-24 05:03:15 +0530
committerGitHub <noreply@github.com>2023-06-23 16:33:15 -0700
commitfa0a25dcb3a4fd2d6f03e09bcc7edac2f9ea8ded (patch)
tree654cdbc1932f7708f3d4c1a0b418291f164eb441 /runtime/lua/vim/lsp/_inlay_hint.lua
parent46e95909bf898bd295f8009b15a88719733de906 (diff)
downloadrneovim-fa0a25dcb3a4fd2d6f03e09bcc7edac2f9ea8ded.tar.gz
rneovim-fa0a25dcb3a4fd2d6f03e09bcc7edac2f9ea8ded.tar.bz2
rneovim-fa0a25dcb3a4fd2d6f03e09bcc7edac2f9ea8ded.zip
fix(lsp): error in reset_timer on second detach #24117
Problem: On running `zig fmt` manually, the on_lines callback and the server both detach (for some reason), and both of them call `clear()`. This fixes it, otherwise the second one to detach has an error in `reset_timer` since the bufstate doesn't exist Solution: * exit early in clear if `bufstates[bufnr]` is nil * set bufstatte.enabled to true on reload instead of making bufstate nil
Diffstat (limited to 'runtime/lua/vim/lsp/_inlay_hint.lua')
-rw-r--r--runtime/lua/vim/lsp/_inlay_hint.lua7
1 files changed, 6 insertions, 1 deletions
diff --git a/runtime/lua/vim/lsp/_inlay_hint.lua b/runtime/lua/vim/lsp/_inlay_hint.lua
index 66fed4f350..84794841ae 100644
--- a/runtime/lua/vim/lsp/_inlay_hint.lua
+++ b/runtime/lua/vim/lsp/_inlay_hint.lua
@@ -144,6 +144,9 @@ end
---@private
local function clear(bufnr)
bufnr = resolve_bufnr(bufnr)
+ if not bufstates[bufnr] then
+ return
+ end
reset_timer(bufnr)
local bufstate = bufstates[bufnr]
local client_lens = (bufstate or {}).client_hint or {}
@@ -184,7 +187,9 @@ function M.enable(bufnr)
end,
on_reload = function(_, cb_bufnr)
clear(cb_bufnr)
- bufstates[cb_bufnr] = nil
+ if bufstates[cb_bufnr] and bufstates[cb_bufnr].enabled then
+ bufstates[cb_bufnr] = { enabled = true }
+ end
M.refresh({ bufnr = cb_bufnr })
end,
on_detach = function(_, cb_bufnr)