mirror of
https://github.com/neovim/neovim.git
synced 2026-02-20 09:19:43 +10:00
feat(lsp): support workspace/codeLens/refresh
This commit is contained in:
@@ -300,6 +300,8 @@ LSP
|
||||
|hl-LspReferenceTarget| highlight group.
|
||||
• Support for `textDocument/codeLens` |lsp-codelens| has been reimplemented:
|
||||
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.18/specification/#textDocument_codeLens
|
||||
• Support for `workspace/codeLens/refresh`:
|
||||
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#codeLens_refresh
|
||||
|
||||
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
|
||||
|
||||
@@ -649,6 +649,11 @@ RSC['window/showDocument'] = function(_, params, ctx)
|
||||
return { success = success or false }
|
||||
end
|
||||
|
||||
---@see https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#codeLens_refresh
|
||||
RSC['workspace/codeLens/refresh'] = function(err, result, ctx)
|
||||
return vim.lsp.codelens.on_refresh(err, result, ctx)
|
||||
end
|
||||
|
||||
---@see https://microsoft.github.io/language-server-protocol/specification/#diagnostic_refresh
|
||||
RSC['workspace/diagnostic/refresh'] = function(err, result, ctx)
|
||||
return vim.lsp.diagnostic.on_refresh(err, result, ctx)
|
||||
|
||||
@@ -604,6 +604,9 @@ function protocol.make_client_capabilities()
|
||||
dynamicRegistration = sysname == 'Darwin' or sysname == 'Windows_NT',
|
||||
relativePatternSupport = true,
|
||||
},
|
||||
codeLens = {
|
||||
refreshSupport = true,
|
||||
},
|
||||
inlayHint = {
|
||||
refreshSupport = true,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user