diff options
author | Raphael <glephunter@gmail.com> | 2023-01-13 00:57:39 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-12 08:57:39 -0800 |
commit | 572cd8031dd7c91ac9e17cbdfab16d87f1fed6b7 (patch) | |
tree | a7fbcfec93b8d07609cad67d2155513909cb0f34 | |
parent | a0b2c124a3cba591575ecf6d2dfe91f515c2ebe2 (diff) | |
download | rneovim-572cd8031dd7c91ac9e17cbdfab16d87f1fed6b7.tar.gz rneovim-572cd8031dd7c91ac9e17cbdfab16d87f1fed6b7.tar.bz2 rneovim-572cd8031dd7c91ac9e17cbdfab16d87f1fed6b7.zip |
feat(diagnostic): vim.diagnostic.is_disabled() #21527
-rw-r--r-- | runtime/doc/diagnostic.txt | 12 | ||||
-rw-r--r-- | runtime/doc/news.txt | 3 | ||||
-rw-r--r-- | runtime/lua/vim/diagnostic.lua | 36 | ||||
-rw-r--r-- | test/functional/lua/diagnostic_spec.lua | 26 |
4 files changed, 63 insertions, 14 deletions
diff --git a/runtime/doc/diagnostic.txt b/runtime/doc/diagnostic.txt index 66ac2170e3..7066a3739a 100644 --- a/runtime/doc/diagnostic.txt +++ b/runtime/doc/diagnostic.txt @@ -565,6 +565,18 @@ hide({namespace}, {bufnr}) *vim.diagnostic.hide()* • {bufnr} (number|nil) Buffer number, or 0 for current buffer. When omitted, hide diagnostics in all buffers. +is_disabled({bufnr}, {namespace}) *vim.diagnostic.is_disabled()* + Check whether diagnostics are disabled in a given buffer. + + Parameters: ~ + • {bufnr} (number|nil) Buffer number, or 0 for current buffer. + • {namespace} (number|nil) Diagnostic namespace. When omitted, checks if all diagnostics are + disabled in {bufnr}. Otherwise, only checks if + diagnostics from {namespace} are disabled. + + Return: ~ + (boolean) + *vim.diagnostic.match()* match({str}, {pat}, {groups}, {severity_map}, {defaults}) Parse a diagnostic from a string. diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt index 7dceaa3318..ce07c3035c 100644 --- a/runtime/doc/news.txt +++ b/runtime/doc/news.txt @@ -135,6 +135,9 @@ The following new APIs or features were added. See https://github.com/neovim/neovim/pull/14537. +• |vim.diagnostic.is_disabled()| checks if diagnostics are disabled in a given + buffer or namespace. + • |--remote-ui| option was added to connect to a remote instance and display in it in a |TUI| in the local terminal. This can be used run a headless nvim instance in the background and display its UI on demand, which previously diff --git a/runtime/lua/vim/diagnostic.lua b/runtime/lua/vim/diagnostic.lua index f41f4a9c68..6fd000a029 100644 --- a/runtime/lua/vim/diagnostic.lua +++ b/runtime/lua/vim/diagnostic.lua @@ -252,19 +252,6 @@ local function get_bufnr(bufnr) end ---@private -local function is_disabled(namespace, bufnr) - local ns = M.get_namespace(namespace) - if ns.disabled then - return true - end - - if type(diagnostic_disabled[bufnr]) == 'table' then - return diagnostic_disabled[bufnr][namespace] - end - return diagnostic_disabled[bufnr] -end - ----@private local function diagnostic_lines(diagnostics) if not diagnostics then return {} @@ -1119,6 +1106,27 @@ function M.hide(namespace, bufnr) end end +--- Check whether diagnostics are disabled in a given buffer. +--- +---@param bufnr number|nil Buffer number, or 0 for current buffer. +---@param namespace number|nil Diagnostic namespace. When omitted, checks if +--- all diagnostics are disabled in {bufnr}. +--- Otherwise, only checks if diagnostics from +--- {namespace} are disabled. +---@return boolean +function M.is_disabled(bufnr, namespace) + bufnr = get_bufnr(bufnr) + if namespace and M.get_namespace(namespace).disabled then + return true + end + + if type(diagnostic_disabled[bufnr]) == 'table' then + return diagnostic_disabled[bufnr][namespace] + end + + return diagnostic_disabled[bufnr] ~= nil +end + --- Display diagnostics for the given namespace and buffer. --- ---@param namespace number|nil Diagnostic namespace. When omitted, show @@ -1162,7 +1170,7 @@ function M.show(namespace, bufnr, diagnostics, opts) return end - if is_disabled(namespace, bufnr) then + if M.is_disabled(bufnr, namespace) then return end diff --git a/test/functional/lua/diagnostic_spec.lua b/test/functional/lua/diagnostic_spec.lua index 946994fd97..d364986ad7 100644 --- a/test/functional/lua/diagnostic_spec.lua +++ b/test/functional/lua/diagnostic_spec.lua @@ -2124,5 +2124,31 @@ end) return vim.g.diagnostic_autocmd_triggered == diagnostic_bufnr ]]) end) + + it("checks if diagnostics are disabled in a buffer", function() + eq({true, true, true , true}, exec_lua [[ + vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, { + make_error('Diagnostic #1', 1, 1, 1, 1), + }) + vim.api.nvim_set_current_buf(diagnostic_bufnr) + vim.diagnostic.disable() + return { + vim.diagnostic.is_disabled(), + vim.diagnostic.is_disabled(diagnostic_bufnr), + vim.diagnostic.is_disabled(diagnostic_bufnr, diagnostic_ns), + vim.diagnostic.is_disabled(_, diagnostic_ns), + } + ]]) + + eq({false, false, false , false}, exec_lua [[ + vim.diagnostic.enable() + return { + vim.diagnostic.is_disabled(), + vim.diagnostic.is_disabled(diagnostic_bufnr), + vim.diagnostic.is_disabled(diagnostic_bufnr, diagnostic_ns), + vim.diagnostic.is_disabled(_, diagnostic_ns), + } + ]]) + end) end) end) |