diff options
author | William Boman <william@redwill.se> | 2022-05-05 18:50:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-05 18:50:12 +0200 |
commit | 94eb72cc44fee4cae7a41cb1ff5fb21f81976658 (patch) | |
tree | 7df203fbcf80f232861aefc64a51cc068017391d /runtime/lua/vim/lsp/codelens.lua | |
parent | b2fb3614b05f2c2f5f65e8300f4da548e6095b61 (diff) | |
download | rneovim-94eb72cc44fee4cae7a41cb1ff5fb21f81976658.tar.gz rneovim-94eb72cc44fee4cae7a41cb1ff5fb21f81976658.tar.bz2 rneovim-94eb72cc44fee4cae7a41cb1ff5fb21f81976658.zip |
fix(lsp): make sure to always reset active codelens refreshes (#18331)
This fixes issues where subsequent calls to vim.lsp.codelens.refresh()
would have no effect due to the buffer not getting cleared from the
active_refresh table.
Examples of how such scenarios would occur are:
- A textDocument/codeLens result yielded an error.
- The 'textDocument/codeLens' handler was overriden in such a way that
it no longer called vim.lsp.codelens.on_codelens().
Diffstat (limited to 'runtime/lua/vim/lsp/codelens.lua')
-rw-r--r-- | runtime/lua/vim/lsp/codelens.lua | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/runtime/lua/vim/lsp/codelens.lua b/runtime/lua/vim/lsp/codelens.lua index 9eb64c9a2e..99695d2ed1 100644 --- a/runtime/lua/vim/lsp/codelens.lua +++ b/runtime/lua/vim/lsp/codelens.lua @@ -1,4 +1,5 @@ local util = require('vim.lsp.util') +local log = require('vim.lsp.log') local api = vim.api local M = {} @@ -214,7 +215,11 @@ end --- |lsp-handler| for the method `textDocument/codeLens` --- function M.on_codelens(err, result, ctx, _) - assert(not err, vim.inspect(err)) + if err then + active_refreshes[ctx.bufnr] = nil + local _ = log.error() and log.error("codelens", err) + return + end M.save(result, ctx.bufnr, ctx.client_id) @@ -222,8 +227,8 @@ function M.on_codelens(err, result, ctx, _) -- once resolved. M.display(result, ctx.bufnr, ctx.client_id) resolve_lenses(result, ctx.bufnr, ctx.client_id, function() - M.display(result, ctx.bufnr, ctx.client_id) active_refreshes[ctx.bufnr] = nil + M.display(result, ctx.bufnr, ctx.client_id) end) end @@ -245,7 +250,7 @@ function M.refresh() return end active_refreshes[bufnr] = true - vim.lsp.buf_request(0, 'textDocument/codeLens', params) + vim.lsp.buf_request(0, 'textDocument/codeLens', params, M.on_codelens) end |