diff options
| author | Yi Ming <ofseed@foxmail.com> | 2026-02-02 09:40:31 +0800 |
|---|---|---|
| committer | Yi Ming <ofseed@foxmail.com> | 2026-02-03 22:25:21 +0800 |
| commit | 965468fca1e7c465292ea9dd767f5cf02fc61dad (patch) | |
| tree | 7f2988b750ae4c9bf968157ba5a03664bbf5ee50 /runtime/lua/vim/lsp/codelens.lua | |
| parent | fe23168e2bc1a985b8206c3c9049d6f94233bf2d (diff) | |
| download | rneovim-965468fca1e7c465292ea9dd767f5cf02fc61dad.tar.gz rneovim-965468fca1e7c465292ea9dd767f5cf02fc61dad.tar.bz2 rneovim-965468fca1e7c465292ea9dd767f5cf02fc61dad.zip | |
feat(lsp): support `workspace/codeLens/refresh`
Diffstat (limited to 'runtime/lua/vim/lsp/codelens.lua')
| -rw-r--r-- | runtime/lua/vim/lsp/codelens.lua | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/runtime/lua/vim/lsp/codelens.lua b/runtime/lua/vim/lsp/codelens.lua index 1baba2a06a..3b72b1990b 100644 --- a/runtime/lua/vim/lsp/codelens.lua +++ b/runtime/lua/vim/lsp/codelens.lua @@ -123,9 +123,10 @@ function Provider:handler(err, result, ctx) self.version = ctx.version end ----@private +---@package ---@param client_id? integer -function Provider:request(client_id) +---@param on_response? function +function Provider:request(client_id, on_response) ---@type lsp.CodeLensParams local params = { textDocument = util.make_text_document_params(self.bufnr) } for id in pairs(self.client_state) do @@ -133,6 +134,10 @@ function Provider:request(client_id) local client = assert(vim.lsp.get_client_by_id(id)) client:request('textDocument/codeLens', params, function(...) self:handler(...) + + if on_response then + on_response() + end end, self.bufnr) end end @@ -404,6 +409,28 @@ function M.run(opts) end end +--- |lsp-handler| for the method `workspace/codeLens/refresh` +--- +---@private +---@type lsp.Handler +function M.on_refresh(err, _, ctx) + if err then + return vim.NIL + end + + for bufnr, provider in pairs(Provider.active) do + for client_id in pairs(provider.client_state) do + if client_id == ctx.client_id then + provider:request(client_id, function() + provider.row_version = {} + vim.api.nvim__redraw({ buf = bufnr, valid = true, flush = false }) + end) + end + end + end + return vim.NIL +end + ---@deprecated ---@param client_id? integer ---@param bufnr? integer |