feat(#1826): add diagnostics.diagnostic_opts: vim.diagnostic.Opts will override diagnostics.severity and diagnostics.icons (#3190)

* feat(#1826): allow using config from vim.diagnostic for icons + severity

* update help default options, add index

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
This commit is contained in:
Igor Lacerda 2025-08-25 00:22:05 -03:00 committed by GitHub
parent b70a741f5a
commit fefa335f1c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 28 additions and 6 deletions

View File

@ -545,6 +545,7 @@ Following is the default configuration. See |nvim-tree-opts| for details. >lua
warning = "",
error = "",
},
diagnostic_opts = false,
},
modified = {
enable = false,
@ -1329,6 +1330,10 @@ Icons for diagnostic severity.
error = ""
}
<
*nvim-tree.diagnostics.diagnostic_opts*
|vim.diagnostic.Opts| overrides |nvim-tree.diagnostics.severity| and
|nvim-tree.diagnostics.icons|
Type: `boolean`, Default: `false`
==============================================================================
5.9 OPTS: MODIFIED *nvim-tree-opts-modified*
@ -3175,6 +3180,7 @@ highlight group is not, hard linking as follows: >
|nvim-tree.actions.use_system_clipboard|
|nvim-tree.auto_reload_on_write|
|nvim-tree.diagnostics.debounce_delay|
|nvim-tree.diagnostics.diagnostic_opts|
|nvim-tree.diagnostics.enable|
|nvim-tree.diagnostics.icons|
|nvim-tree.diagnostics.severity|

View File

@ -420,6 +420,7 @@ local DEFAULT_OPTS = { -- BEGIN_DEFAULT_OPTS
warning = "",
error = "",
},
diagnostic_opts = false,
},
modified = {
enable = false,

View File

@ -231,7 +231,10 @@ end
function M.setup(opts)
M.enable = opts.diagnostics.enable
M.debounce_delay = opts.diagnostics.debounce_delay
M.severity = opts.diagnostics.severity
M.severity = opts.diagnostics.diagnostic_opts and {
min = vim.diagnostic.severity.HINT,
max = vim.diagnostic.severity.ERROR
} or opts.diagnostics.severity
if M.enable then
log.line("diagnostics", "setup")

View File

@ -47,11 +47,23 @@ function DiagnosticsDecorator:new(args)
self.highlight_range = self.explorer.opts.renderer.highlight_diagnostics or "none"
self.icon_placement = self.explorer.opts.renderer.icons.diagnostics_placement or "none"
local vim_diagnostic_icons = {}
if self.explorer.opts.diagnostics.diagnostic_opts then
local vim_diagnostic_config = vim.diagnostic.config() or {}
local signs = vim_diagnostic_config.signs or {}
if type(signs) == "function" then
signs = signs(0, 0)
end
vim_diagnostic_icons = (type(signs) == "table" and signs.text) or {}
end
if self.explorer.opts.renderer.icons.show.diagnostics then
self.diag_icons = {}
for name, sev in pairs(ICON_KEYS) do
self.diag_icons[sev] = {
str = self.explorer.opts.diagnostics.icons[name],
str = vim_diagnostic_icons[sev] or self.explorer.opts.diagnostics.icons[name],
hl = { HG_ICON[sev] },
}
self:define_sign(self.diag_icons[sev])