mirror of
https://github.com/neovim/neovim.git
synced 2024-12-23 20:55:18 -07:00
feat(diagnostic): add support for many namespaces filtering in GetOpts (#28045)
This commit is contained in:
parent
77458e613b
commit
fc6d713dd8
@ -371,7 +371,8 @@ Lua module: vim.diagnostic *diagnostic-api*
|
|||||||
A table with the following keys:
|
A table with the following keys:
|
||||||
|
|
||||||
Fields: ~
|
Fields: ~
|
||||||
• {namespace}? (`integer`) Limit diagnostics to the given namespace.
|
• {namespace}? (`integer[]|integer`) Limit diagnostics to one or more
|
||||||
|
namespaces.
|
||||||
• {lnum}? (`integer`) Limit diagnostics to the given line number.
|
• {lnum}? (`integer`) Limit diagnostics to the given line number.
|
||||||
• {severity}? (`vim.diagnostic.SeverityFilter`) See
|
• {severity}? (`vim.diagnostic.SeverityFilter`) See
|
||||||
|diagnostic-severity|.
|
|diagnostic-severity|.
|
||||||
|
@ -408,6 +408,9 @@ The following changes to existing APIs or features add new behavior.
|
|||||||
"virtual_text" table, which gives users more control over how diagnostic
|
"virtual_text" table, which gives users more control over how diagnostic
|
||||||
virtual text is displayed.
|
virtual text is displayed.
|
||||||
|
|
||||||
|
• |vim.diagnostic.get()| and |vim.diagnostic.count()| accept multiple
|
||||||
|
namespaces rather than just a single namespace.
|
||||||
|
|
||||||
• Extmarks now fully support multi-line ranges, and a single extmark can be
|
• Extmarks now fully support multi-line ranges, and a single extmark can be
|
||||||
used to highlight a range of arbitrary length. The |nvim_buf_set_extmark()|
|
used to highlight a range of arbitrary length. The |nvim_buf_set_extmark()|
|
||||||
API function already allowed you to define such ranges, but highlight regions
|
API function already allowed you to define such ranges, but highlight regions
|
||||||
|
@ -682,6 +682,13 @@ local function get_diagnostics(bufnr, opts, clamp)
|
|||||||
opts = opts or {}
|
opts = opts or {}
|
||||||
|
|
||||||
local namespace = opts.namespace
|
local namespace = opts.namespace
|
||||||
|
|
||||||
|
if type(namespace) == 'number' then
|
||||||
|
namespace = { namespace }
|
||||||
|
end
|
||||||
|
|
||||||
|
---@cast namespace integer[]
|
||||||
|
|
||||||
local diagnostics = {}
|
local diagnostics = {}
|
||||||
|
|
||||||
-- Memoized results of buf_line_count per bufnr
|
-- Memoized results of buf_line_count per bufnr
|
||||||
@ -742,11 +749,15 @@ local function get_diagnostics(bufnr, opts, clamp)
|
|||||||
end
|
end
|
||||||
elseif bufnr == nil then
|
elseif bufnr == nil then
|
||||||
for b, t in pairs(diagnostic_cache) do
|
for b, t in pairs(diagnostic_cache) do
|
||||||
add_all_diags(b, t[namespace] or {})
|
for _, iter_namespace in ipairs(namespace) do
|
||||||
|
add_all_diags(b, t[iter_namespace] or {})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
bufnr = get_bufnr(bufnr)
|
bufnr = get_bufnr(bufnr)
|
||||||
add_all_diags(bufnr, diagnostic_cache[bufnr][namespace] or {})
|
for _, iter_namespace in ipairs(namespace) do
|
||||||
|
add_all_diags(bufnr, diagnostic_cache[bufnr][iter_namespace] or {})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if opts.severity then
|
if opts.severity then
|
||||||
@ -785,7 +796,7 @@ end
|
|||||||
--- @param search_forward boolean
|
--- @param search_forward boolean
|
||||||
--- @param bufnr integer
|
--- @param bufnr integer
|
||||||
--- @param opts vim.diagnostic.GotoOpts
|
--- @param opts vim.diagnostic.GotoOpts
|
||||||
--- @param namespace integer
|
--- @param namespace integer[]|integer
|
||||||
--- @return vim.Diagnostic?
|
--- @return vim.Diagnostic?
|
||||||
local function next_diagnostic(position, search_forward, bufnr, opts, namespace)
|
local function next_diagnostic(position, search_forward, bufnr, opts, namespace)
|
||||||
position[1] = position[1] - 1
|
position[1] = position[1] - 1
|
||||||
@ -1115,8 +1126,8 @@ end
|
|||||||
--- A table with the following keys:
|
--- A table with the following keys:
|
||||||
--- @class vim.diagnostic.GetOpts
|
--- @class vim.diagnostic.GetOpts
|
||||||
---
|
---
|
||||||
--- Limit diagnostics to the given namespace.
|
--- Limit diagnostics to one or more namespaces.
|
||||||
--- @field namespace? integer
|
--- @field namespace? integer[]|integer
|
||||||
---
|
---
|
||||||
--- Limit diagnostics to the given line number.
|
--- Limit diagnostics to the given line number.
|
||||||
--- @field lnum? integer
|
--- @field lnum? integer
|
||||||
|
Loading…
Reference in New Issue
Block a user