mirror of
https://github.com/neovim/neovim
synced 2025-07-28 17:32:00 +00:00
fix(vim.lsp.inlay_hint): requesting inlay_hints even when disabled #32999
Problem:
Nvim needlessly requests inlay_hints even if they are disabled for a given buffer.
Solution:
Add the missing `enabled` check in `on_refresh`.
Rest of the code has this check already so that's the only needed one to fix this.
(cherry picked from commit 49756ebc70
)
This commit is contained in:
committed by
github-actions[bot]
parent
d2dd403693
commit
9056c01a95
@ -94,13 +94,13 @@ function M.on_refresh(err, _, ctx)
|
|||||||
for _, bufnr in ipairs(vim.lsp.get_buffers_by_client_id(ctx.client_id)) do
|
for _, bufnr in ipairs(vim.lsp.get_buffers_by_client_id(ctx.client_id)) do
|
||||||
for _, winid in ipairs(api.nvim_list_wins()) do
|
for _, winid in ipairs(api.nvim_list_wins()) do
|
||||||
if api.nvim_win_get_buf(winid) == bufnr then
|
if api.nvim_win_get_buf(winid) == bufnr then
|
||||||
if bufstates[bufnr] then
|
if bufstates[bufnr] and bufstates[bufnr].enabled then
|
||||||
bufstates[bufnr].applied = {}
|
bufstates[bufnr].applied = {}
|
||||||
end
|
|
||||||
util._refresh(ms.textDocument_inlayHint, { bufnr = bufnr })
|
util._refresh(ms.textDocument_inlayHint, { bufnr = bufnr })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return vim.NIL
|
return vim.NIL
|
||||||
end
|
end
|
||||||
|
@ -297,6 +297,50 @@ int main() {
|
|||||||
end)
|
end)
|
||||||
)
|
)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('does not request hints from lsp when disabled', function()
|
||||||
|
exec_lua(function()
|
||||||
|
_G.server2 = _G._create_server({
|
||||||
|
capabilities = {
|
||||||
|
inlayHintProvider = true,
|
||||||
|
},
|
||||||
|
handlers = {
|
||||||
|
['textDocument/inlayHint'] = function(_, _, callback)
|
||||||
|
_G.got_inlay_hint_request = true
|
||||||
|
callback(nil, {})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
_G.client2 = vim.lsp.start({ name = 'dummy2', cmd = _G.server2.cmd })
|
||||||
|
end)
|
||||||
|
|
||||||
|
local function was_request_sent()
|
||||||
|
return exec_lua(function()
|
||||||
|
return _G.got_inlay_hint_request == true
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
eq(false, was_request_sent())
|
||||||
|
|
||||||
|
exec_lua(function()
|
||||||
|
vim.lsp.inlay_hint.get()
|
||||||
|
end)
|
||||||
|
|
||||||
|
eq(false, was_request_sent())
|
||||||
|
|
||||||
|
exec_lua(function()
|
||||||
|
vim.lsp.inlay_hint.enable(false, { bufnr = bufnr })
|
||||||
|
vim.lsp.inlay_hint.get()
|
||||||
|
end)
|
||||||
|
|
||||||
|
eq(false, was_request_sent())
|
||||||
|
|
||||||
|
exec_lua(function()
|
||||||
|
vim.lsp.inlay_hint.enable(true, { bufnr = bufnr })
|
||||||
|
end)
|
||||||
|
|
||||||
|
eq(true, was_request_sent())
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user