From 409b81b0e7a78874f14ae699f0d25e19555e6804 Mon Sep 17 00:00:00 2001 From: Yi Ming Date: Sat, 27 Apr 2024 00:12:02 +0800 Subject: [PATCH] feat(lsp): use a parameter strategy similar to `enable` --- runtime/doc/lsp.txt | 6 ++++-- runtime/doc/news.txt | 2 ++ runtime/lua/vim/lsp/inlay_hint.lua | 20 ++++++++++++++++--- .../functional/plugin/lsp/inlay_hint_spec.lua | 2 +- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/runtime/doc/lsp.txt b/runtime/doc/lsp.txt index a0d0b75407..4bc220ea7d 100644 --- a/runtime/doc/lsp.txt +++ b/runtime/doc/lsp.txt @@ -1649,13 +1649,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/nil for current + buffer. Return: ~ (`boolean`) diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt index 5881d90358..87dcea5a52 100644 --- a/runtime/doc/news.txt +++ b/runtime/doc/news.txt @@ -146,6 +146,8 @@ BREAKING CHANGES IN HEAD *news-breaking-dev* The following breaking changes were made during the development cycle to unreleased features on Nvim HEAD. +• Changed the signature of `vim.lsp.inlay_hint.is_enabled()`. + • Removed `vim.treesitter.foldtext` as transparent foldtext is now supported https://github.com/neovim/neovim/pull/20750 diff --git a/runtime/lua/vim/lsp/inlay_hint.lua b/runtime/lua/vim/lsp/inlay_hint.lua index 3d8b54ee3d..339ca8d247 100644 --- a/runtime/lua/vim/lsp/inlay_hint.lua +++ b/runtime/lua/vim/lsp/inlay_hint.lua @@ -353,11 +353,25 @@ 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) - vim.validate({ bufnr = { bufnr, 'number', true } }) +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 + if bufnr == nil or bufnr == 0 then bufnr = api.nvim_get_current_buf() end diff --git a/test/functional/plugin/lsp/inlay_hint_spec.lua b/test/functional/plugin/lsp/inlay_hint_spec.lua index 0aaf94d6da..c9c30b154f 100644 --- a/test/functional/plugin/lsp/inlay_hint_spec.lua +++ b/test/functional/plugin/lsp/inlay_hint_spec.lua @@ -145,7 +145,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 })