nvim/lua/lsp/diagnostics/init.lua
2025-03-05 09:36:07 -05:00

64 lines
1.9 KiB
Lua

local u = require('utils')
local icons = require('utils.icons')
local config = require('config')
local function format_diagnostic(diagnostic)
local icon = icons.error
if diagnostic.severity == vim.diagnostic.severity.WARN then
icon = icons.warn
elseif diagnostic.severity == vim.diagnostic.severity.INFO then
icon = icons.info
elseif diagnostic.severity == vim.diagnostic.severity.HINT then
icon = icons.hint
end
local message = string.format('%s %s', icon, diagnostic.message)
if diagnostic.code and diagnostic.source then
message = string.format('%s [%s][%s] %s', icon, diagnostic.source, diagnostic.code, diagnostic.message)
elseif diagnostic.code or diagnostic.source then
message = string.format('%s [%s] %s', icon, diagnostic.code or diagnostic.source, diagnostic.message)
end
return message .. ' '
end
local diagnostic_config = u.merge({
underline = true,
update_in_insert = false,
severity_sort = true,
signs = {
text = {
[vim.diagnostic.severity.ERROR] = icons.error .. ' ',
[vim.diagnostic.severity.HINT] = icons.hint .. ' ',
[vim.diagnostic.severity.INFO] = icons.info .. ' ',
[vim.diagnostic.severity.WARN] = icons.warn .. ' ',
},
numhl = {
[vim.diagnostic.severity.ERROR] = 'ErrorMsg',
[vim.diagnostic.severity.HINT] = 'DiagnosticsSignHint',
[vim.diagnostic.severity.INFO] = 'DiagnosticsSignInfo',
[vim.diagnostic.severity.WARN] = 'WarningMsg',
},
},
float = {
border = config.border,
focusable = false,
header = { icons.debug .. ' Diagnostics:', 'DiagnosticInfo' },
scope = 'line',
suffix = '',
source = false,
format = format_diagnostic,
},
virtual_text = {
prefix = '',
spacing = 2,
source = false,
severity = {
min = vim.diagnostic.severity.HINT,
},
format = format_diagnostic,
},
}, config.diagnostic or {})
-- set up diagnostics
vim.diagnostic.config(diagnostic_config)