feat: format diagnostic (#895)
This commit is contained in:
parent
5e6d3368f7
commit
c8e688a0ac
@ -1,12 +1,10 @@
|
|||||||
{%- if use_xml_format -%}
|
{%- if use_xml_format -%}
|
||||||
{%- if diagnostics -%}
|
{%- if diagnostics -%}
|
||||||
<diagnostic_field_description>
|
<diagnostic_field_description>
|
||||||
lnum: The starting line of the diagnostic (1-indexed)
|
content: The diagnostic content
|
||||||
end_lnum: The final line of the diagnostic (1-indexed)
|
start_line: The starting line of the diagnostic (1-indexed)
|
||||||
col: The starting column of the diagnostic (1-indexed)
|
end_line: The final line of the diagnostic (1-indexed)
|
||||||
end_col: The final column of the diagnostic (1-indexed)
|
|
||||||
severity: The severity of the diagnostic
|
severity: The severity of the diagnostic
|
||||||
message: The diagnostic text
|
|
||||||
source: The source of the diagnostic
|
source: The source of the diagnostic
|
||||||
</diagnostic_field_description>
|
</diagnostic_field_description>
|
||||||
<diagnostics>
|
<diagnostics>
|
||||||
@ -16,12 +14,10 @@ source: The source of the diagnostic
|
|||||||
{%- else -%}
|
{%- else -%}
|
||||||
{%- if diagnostics -%}
|
{%- if diagnostics -%}
|
||||||
DIAGNOSTIC_FIELD_DESCRIPTION:
|
DIAGNOSTIC_FIELD_DESCRIPTION:
|
||||||
lnum: The starting line of the diagnostic (1-indexed)
|
content: The diagnostic content
|
||||||
end_lnum: The final line of the diagnostic (1-indexed)
|
start_line: The starting line of the diagnostic (1-indexed)
|
||||||
col: The starting column of the diagnostic (1-indexed)
|
end_line: The final line of the diagnostic (1-indexed)
|
||||||
end_col: The final column of the diagnostic (1-indexed)
|
|
||||||
severity: The severity of the diagnostic
|
severity: The severity of the diagnostic
|
||||||
message: The diagnostic text
|
|
||||||
source: The source of the diagnostic
|
source: The source of the diagnostic
|
||||||
|
|
||||||
DIAGNOSTICS:
|
DIAGNOSTICS:
|
||||||
|
@ -772,20 +772,40 @@ function M.update_buffer_content(bufnr, new_lines)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local severity = {
|
||||||
|
[1] = "ERROR",
|
||||||
|
[2] = "WARNING",
|
||||||
|
[3] = "INFORMATION",
|
||||||
|
[4] = "HINT",
|
||||||
|
}
|
||||||
|
|
||||||
|
---@class AvanteDiagnostic
|
||||||
|
---@field content string
|
||||||
|
---@field start_line number
|
||||||
|
---@field end_line number
|
||||||
|
---@field severity string
|
||||||
|
---@field source string
|
||||||
|
|
||||||
---@param bufnr integer
|
---@param bufnr integer
|
||||||
---@return vim.Diagnostic[]
|
---@return AvanteDiagnostic[]
|
||||||
function M.get_diagnostics(bufnr)
|
function M.get_diagnostics(bufnr)
|
||||||
if bufnr == nil then bufnr = api.nvim_get_current_buf() end
|
if bufnr == nil then bufnr = api.nvim_get_current_buf() end
|
||||||
local diagnositcs = ---@type vim.Diagnostic[]
|
local diagnositcs = ---@type vim.Diagnostic[]
|
||||||
vim.diagnostic.get(bufnr, { severity = { vim.diagnostic.severity.ERROR, vim.diagnostic.severity.WARN } })
|
vim.diagnostic.get(
|
||||||
|
bufnr,
|
||||||
|
{ severity = { vim.diagnostic.severity.ERROR, vim.diagnostic.severity.WARN, vim.diagnostic.severity.HINT } }
|
||||||
|
)
|
||||||
return vim
|
return vim
|
||||||
.iter(diagnositcs)
|
.iter(diagnositcs)
|
||||||
:map(function(diagnostic)
|
:map(function(diagnostic)
|
||||||
diagnostic.lnum = diagnostic.lnum + 1
|
local d = {
|
||||||
diagnostic.end_lnum = diagnostic.end_lnum + 1
|
content = diagnostic.message,
|
||||||
diagnostic.col = diagnostic.col + 1
|
start_line = diagnostic.lnum + 1,
|
||||||
diagnostic.end_col = diagnostic.end_col + 1
|
end_line = diagnostic.end_lnum and diagnostic.end_lnum + 1 or diagnostic.lnum + 1,
|
||||||
return diagnostic
|
severity = severity[diagnostic.severity],
|
||||||
|
source = diagnostic.source,
|
||||||
|
}
|
||||||
|
return d
|
||||||
end)
|
end)
|
||||||
:totable()
|
:totable()
|
||||||
end
|
end
|
||||||
@ -796,7 +816,7 @@ function M.get_current_selection_diagnostics(bufnr, selection)
|
|||||||
local diagnostics = M.get_diagnostics(bufnr)
|
local diagnostics = M.get_diagnostics(bufnr)
|
||||||
local selection_diagnostics = {}
|
local selection_diagnostics = {}
|
||||||
for _, diagnostic in ipairs(diagnostics) do
|
for _, diagnostic in ipairs(diagnostics) do
|
||||||
if selection.range.start.lnum <= diagnostic.lnum and selection.range.finish.lnum >= diagnostic.end_lnum then
|
if selection.range.start.lnum <= diagnostic.start_line and selection.range.finish.lnum >= diagnostic.end_line then
|
||||||
table.insert(selection_diagnostics, diagnostic)
|
table.insert(selection_diagnostics, diagnostic)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user