nvim/lua/core/diagnostics.lua
2024-10-24 17:23:17 -07:00

52 lines
1.4 KiB
Lua

function capitalize_head(str)
str = string.lower(str)
str = string.gsub(str, "^%l", string.upper)
return str
end
local signs = {
[vim.diagnostic.severity.ERROR] = "E",
[vim.diagnostic.severity.WARN] = "W",
[vim.diagnostic.severity.HINT] = "H",
[vim.diagnostic.severity.INFO] = "I"
}
vim.diagnostic.config({
underline = true,
update_in_insert = true,
severity_sort = true,
virtual_text = false,
signs = {
severity = { min = vim.diagnostic.severity.HINT },
text = signs,
priority = 4,
},
float = {
border = border_style,
title = { { 'lsp diagnostics', 'DiagnosticFloatTitleIcon' }, { 'Problems ', 'DiagnosticFloatTitle' } },
focusable = false,
scope = 'line',
source = 'if_many',
prefix = function(diag)
local level = vim.diagnostic.severity[diag.severity]
local prefix = string.format('%s ', signs[diag.severity])
return prefix, 'Diagnostic' .. level:gsub('^%l', string.upper)
end,
},
})
vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
group = vim.api.nvim_create_augroup("float_diagnostic", { clear = true }),
callback = function ()
vim.diagnostic.open_float()
end
})
for severity, icon in pairs(signs) do
local hl = "DiagnosticSign" .. capitalize_head(vim.diagnostic.severity[severity])
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
end