mirror of
https://github.com/neovim/neovim
synced 2025-07-16 01:01:49 +00:00
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().
This commit is contained in:
@ -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
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user