repositories / dotfiles
dotfiles
bugabingas dorkfiles
owned by admin
neovim/lua/bugabinga/diagnostic.lua
Rawlocal map = require 'std.map'
local auto = require 'std.auto'
local icon = require 'std.icon'
local diagnostic_icons = {
error = icon.error,
warn = icon.warn,
info = icon.info,
hint = icon.hint,
}
local display_name = {
'Error',
'Warning',
'Information',
'Hint',
}
local diagnostic = vim.diagnostic
local diagnostic_format = function(context)
return string.format('%s: %s', display_name[context.severity], context.message)
end
local prefix_format = function(context, index, total)
local severity_name = diagnostic.severity[context.severity]
return string.format('%s/%s %s %s ', index, total, context.source, diagnostic_icons[severity_name]),
'DiagnosticVirtualText' .. display_name[context.severity]
end
-- ERROR-only visibility: only errors render inline (underline/sign/virtual text);
-- WARN/HINT stay hidden but remain available via H (float) and <leader>HH (quickfix)
local error_only = { min = diagnostic.severity.ERROR }
diagnostic.config {
underline = { severity = error_only },
virtual_text = {
severity = error_only,
source = false,
spacing = 2,
prefix = '⦿ ',
format = diagnostic_format,
},
float = {
focusable = false,
style = 'minimal',
source = 'if_many',
header = 'Diagnostic',
prefix = prefix_format,
},
update_in_insert = false,
signs = {
severity = error_only,
text = {
[vim.diagnostic.severity.ERROR] = diagnostic_icons.error,
[vim.diagnostic.severity.WARN] = diagnostic_icons.warn,
[vim.diagnostic.severity.INFO] = diagnostic_icons.info,
[vim.diagnostic.severity.HINT] = diagnostic_icons.hint,
}
},
severity_sort = true,
}
map.normal {
description = 'Toggle diagnostics',
category = 'diagnostic',
keys = '<leader>td',
command = function()
if not diagnostic.is_enabled() then
diagnostic.enable()
vim.notify 'Enabling Diagnostics'
else
diagnostic.enable(false)
vim.notify 'Disabling Diagnostics'
end
end,
}
map.normal {
description = 'Show diagnostics under cursor',
category = 'diagnostic',
keys = 'H',
command = diagnostic.open_float,
}
map.normal {
description = 'Open diagnostics in quickfix list.',
category = 'diagnostic',
keys = 'HH',
command = diagnostic.setqflist,
}