aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/handlers.lua
diff options
context:
space:
mode:
authorChinmay Dalal <dalal.chinmay.0101@gmail.com>2023-06-11 15:23:37 +0530
committerGitHub <noreply@github.com>2023-06-11 11:53:37 +0200
commit643546b82b4bc0c29ca869f81af868a019723d83 (patch)
treedcabb24372fa2d5157cce4b9b8eea2b0c9927735 /runtime/lua/vim/lsp/handlers.lua
parentcce9460524aa17bcd4daa095f4706220b81f8845 (diff)
downloadrneovim-643546b82b4bc0c29ca869f81af868a019723d83.tar.gz
rneovim-643546b82b4bc0c29ca869f81af868a019723d83.tar.bz2
rneovim-643546b82b4bc0c29ca869f81af868a019723d83.zip
feat(lsp): add handlers for inlay hints (#23736)
initial support; public API left for a follow-up PR
Diffstat (limited to 'runtime/lua/vim/lsp/handlers.lua')
-rw-r--r--runtime/lua/vim/lsp/handlers.lua26
1 files changed, 26 insertions, 0 deletions
diff --git a/runtime/lua/vim/lsp/handlers.lua b/runtime/lua/vim/lsp/handlers.lua
index 19338ae8f0..44a9a58aca 100644
--- a/runtime/lua/vim/lsp/handlers.lua
+++ b/runtime/lua/vim/lsp/handlers.lua
@@ -219,6 +219,10 @@ M['textDocument/codeLens'] = function(...)
return require('vim.lsp.codelens').on_codelens(...)
end
+M['textDocument/inlayHint'] = function(...)
+ return require('vim.lsp._inlay_hint').on_inlayhint(...)
+end
+
--see: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_references
M['textDocument/references'] = function(_, result, ctx, config)
if not result or vim.tbl_isempty(result) then
@@ -612,6 +616,28 @@ M['window/showDocument'] = function(_, result, ctx, _)
return { success = success or false }
end
+---@see https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspace_inlayHint_refresh
+M['workspace/inlayHint/refresh'] = function(err, _, ctx)
+ local inlay_hint = require('vim.lsp._inlay_hint')
+ if not inlay_hint.__explicit_buffers[ctx.bufnr] then
+ return vim.NIL
+ end
+ if err then
+ return vim.NIL
+ end
+
+ for _, bufnr in ipairs(vim.lsp.get_buffers_by_client_id(ctx.client_id)) do
+ for _, winid in ipairs(api.nvim_list_wins()) do
+ if api.nvim_win_get_buf(winid) == bufnr then
+ inlay_hint.refresh({ bufnr = bufnr })
+ break
+ end
+ end
+ end
+
+ return vim.NIL
+end
+
-- Add boilerplate error validation and logging for all of these.
for k, fn in pairs(M) do
M[k] = function(err, result, ctx, config)