diff --git a/lua/avante/templates/_diagnostics.avanterules b/lua/avante/templates/_diagnostics.avanterules
index 23c3be3..5d14ea4 100644
--- a/lua/avante/templates/_diagnostics.avanterules
+++ b/lua/avante/templates/_diagnostics.avanterules
@@ -1,12 +1,10 @@
{%- if use_xml_format -%}
{%- if diagnostics -%}
-lnum: The starting line of the diagnostic (1-indexed)
-end_lnum: The final line of the diagnostic (1-indexed)
-col: The starting column of the diagnostic (1-indexed)
-end_col: The final column of the diagnostic (1-indexed)
+content: The diagnostic content
+start_line: The starting line of the diagnostic (1-indexed)
+end_line: The final line of the diagnostic (1-indexed)
severity: The severity of the diagnostic
-message: The diagnostic text
source: The source of the diagnostic
@@ -16,12 +14,10 @@ source: The source of the diagnostic
{%- else -%}
{%- if diagnostics -%}
DIAGNOSTIC_FIELD_DESCRIPTION:
-lnum: The starting line of the diagnostic (1-indexed)
-end_lnum: The final line of the diagnostic (1-indexed)
-col: The starting column of the diagnostic (1-indexed)
-end_col: The final column of the diagnostic (1-indexed)
+content: The diagnostic content
+start_line: The starting line of the diagnostic (1-indexed)
+end_line: The final line of the diagnostic (1-indexed)
severity: The severity of the diagnostic
-message: The diagnostic text
source: The source of the diagnostic
DIAGNOSTICS:
diff --git a/lua/avante/utils/init.lua b/lua/avante/utils/init.lua
index a848001..28ac2a2 100644
--- a/lua/avante/utils/init.lua
+++ b/lua/avante/utils/init.lua
@@ -772,20 +772,40 @@ function M.update_buffer_content(bufnr, new_lines)
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
----@return vim.Diagnostic[]
+---@return AvanteDiagnostic[]
function M.get_diagnostics(bufnr)
if bufnr == nil then bufnr = api.nvim_get_current_buf() end
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
.iter(diagnositcs)
:map(function(diagnostic)
- diagnostic.lnum = diagnostic.lnum + 1
- diagnostic.end_lnum = diagnostic.end_lnum + 1
- diagnostic.col = diagnostic.col + 1
- diagnostic.end_col = diagnostic.end_col + 1
- return diagnostic
+ local d = {
+ content = diagnostic.message,
+ start_line = diagnostic.lnum + 1,
+ end_line = diagnostic.end_lnum and diagnostic.end_lnum + 1 or diagnostic.lnum + 1,
+ severity = severity[diagnostic.severity],
+ source = diagnostic.source,
+ }
+ return d
end)
:totable()
end
@@ -796,7 +816,7 @@ function M.get_current_selection_diagnostics(bufnr, selection)
local diagnostics = M.get_diagnostics(bufnr)
local selection_diagnostics = {}
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)
end
end