fix(diagnostic): vim.diagnostic.get(…,{lnum=…}) on multi-line diagnostic #28273

Problem:
vim.diagnostic.get(…,{lnum=…}) does not match multi-line diagnostics.

Solution: add end_lnum support.
This commit is contained in:
Raphael
2024-04-23 19:13:58 +08:00
committed by GitHub
parent ad76b050eb
commit a4fc3bb0e6
3 changed files with 11 additions and 7 deletions

View File

@@ -717,7 +717,7 @@ local function get_diagnostics(bufnr, opts, clamp)
---@param b integer
---@param d vim.Diagnostic
local function add(b, d)
if not opts.lnum or d.lnum == opts.lnum then
if not opts.lnum or (opts.lnum >= d.lnum and opts.lnum <= (d.end_lnum or d.lnum)) then
if clamp and api.nvim_buf_is_loaded(b) then
local line_count = buf_line_count[b] - 1
if
@@ -1140,7 +1140,7 @@ end
--- Limit diagnostics to one or more namespaces.
--- @field namespace? integer[]|integer
---
--- Limit diagnostics to the given line number.
--- Limit diagnostics to those spanning the specified line number.
--- @field lnum? integer
---
--- See |diagnostic-severity|.