neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 350d81856473b45100d6b0e5920b757df1b4ad27
parent d5063f4b290e1c4262f7ced6d425ff2d7a2e2045
Author: Yi Ming <ofseed@foxmail.com>
Date:   Thu,  2 May 2024 22:26:07 +0800

feat(lsp): inlay_hint.is_enabled({filter}) #28523

vim.diagnostic.enable and vim.diagnostic.is_enabled() use the same pattern.
Diffstat:
Mruntime/doc/lsp.txt | 6++++--
Mruntime/doc/news.txt | 2++
Mruntime/lua/vim/lsp/inlay_hint.lua | 23++++++++++++++++++++---
Mtest/functional/plugin/lsp/inlay_hint_spec.lua | 2+-
4 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/runtime/doc/lsp.txt b/runtime/doc/lsp.txt @@ -1645,13 +1645,15 @@ get({filter}) *vim.lsp.inlay_hint.get()* • {client_id} (`integer`) • {inlay_hint} (`lsp.InlayHint`) -is_enabled({bufnr}) *vim.lsp.inlay_hint.is_enabled()* +is_enabled({filter}) *vim.lsp.inlay_hint.is_enabled()* Note: ~ • This API is pre-release (unstable). Parameters: ~ - • {bufnr} (`integer?`) Buffer handle, or 0 for current + • {filter} (`table`) Optional filters |kwargs|, or `nil` for all. + • {bufnr} (`integer?`) Buffer number, or 0 for current + buffer, or nil for all. Return: ~ (`boolean`) diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt @@ -148,6 +148,8 @@ BREAKING CHANGES IN HEAD *news-breaking-dev* The following changes to UNRELEASED features were made during the development cycle (Nvim HEAD, the "master" branch). +• Changed the signature of `vim.lsp.inlay_hint.is_enabled()`. + • `vim.lsp.inlay_hint.enable()` now take effect on all buffers by default. • Removed `vim.treesitter.foldtext` as transparent foldtext is now supported diff --git a/runtime/lua/vim/lsp/inlay_hint.lua b/runtime/lua/vim/lsp/inlay_hint.lua @@ -364,12 +364,29 @@ api.nvim_set_decoration_provider(namespace, { end, }) ---- @param bufnr (integer|nil) Buffer handle, or 0 for current +--- @param filter vim.lsp.inlay_hint.enable.Filter --- @return boolean --- @since 12 -function M.is_enabled(bufnr) +function M.is_enabled(filter) + ---@type integer + local bufnr + if type(filter) == 'number' then + vim.deprecate( + 'vim.lsp.inlay_hint.is_enabled(bufnr:number)', + 'vim.lsp.inlay_hint.is_enabled(filter:table)', + '0.10-dev' + ) + bufnr = filter + else + vim.validate({ filter = { filter, 'table', true } }) + filter = filter or {} + bufnr = filter.bufnr + end + vim.validate({ bufnr = { bufnr, 'number', true } }) - if bufnr == nil or bufnr == 0 then + if bufnr == nil then + return globalstate.enabled + elseif bufnr == 0 then bufnr = api.nvim_get_current_buf() end return bufstates[bufnr].enabled diff --git a/test/functional/plugin/lsp/inlay_hint_spec.lua b/test/functional/plugin/lsp/inlay_hint_spec.lua @@ -163,7 +163,7 @@ describe('vim.lsp.inlay_hint', function() screen:expect({ grid = grid_with_inlay_hints, unchanged = true }) exec_lua( - [[vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled(bufnr), { bufnr = bufnr })]] + [[vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = bufnr }), { bufnr = bufnr })]] ) screen:expect({ grid = grid_without_inlay_hints, unchanged = true })