diff options
author | Chinmay Dalal <dalal.chinmay.0101@gmail.com> | 2023-06-24 05:03:15 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-23 16:33:15 -0700 |
commit | fa0a25dcb3a4fd2d6f03e09bcc7edac2f9ea8ded (patch) | |
tree | 654cdbc1932f7708f3d4c1a0b418291f164eb441 /runtime/lua/vim/lsp/_inlay_hint.lua | |
parent | 46e95909bf898bd295f8009b15a88719733de906 (diff) | |
download | rneovim-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.lua | 7 |
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) |