mirror of
https://github.com/neovim/neovim.git
synced 2026-05-28 07:45:35 +00:00
fix(lsp): stale codelens after external file change (#39203)
Problem: Codelens virtual lines remain on stale rows after an external file change and buffer reload. Solution: Clear codelens extmarks and cached row/version state in `on_reload` before requesting fresh code lenses.
This commit is contained in:
@@ -55,6 +55,7 @@ function Provider:new(bufnr)
|
||||
on_reload = function(_, buf)
|
||||
local provider = Provider.active[buf]
|
||||
if provider then
|
||||
provider:clear()
|
||||
provider:automatic_request()
|
||||
end
|
||||
end,
|
||||
@@ -94,6 +95,20 @@ function Provider:on_detach(client_id)
|
||||
end
|
||||
end
|
||||
|
||||
---@package
|
||||
function Provider:clear()
|
||||
self:reset_timer()
|
||||
self.version = nil
|
||||
self.row_version = {}
|
||||
|
||||
for _, state in pairs(self.client_state) do
|
||||
state.row_lenses = {}
|
||||
api.nvim_buf_clear_namespace(self.bufnr, state.namespace, 0, -1)
|
||||
end
|
||||
|
||||
api.nvim__redraw({ buf = self.bufnr, valid = true, flush = false })
|
||||
end
|
||||
|
||||
--- `lsp.Handler` for `textDocument/codeLens`.
|
||||
---
|
||||
---@package
|
||||
|
||||
Reference in New Issue
Block a user