feat: add custom icons to language server diagnostics
This commit is contained in:
parent
e602c90efc
commit
3159d83be7
|
@ -0,0 +1,20 @@
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Icons
|
||||||
|
--
|
||||||
|
-- ..............................................
|
||||||
|
--
|
||||||
|
-- Author: Sven Vogel
|
||||||
|
-- Created: 08.11.2024
|
||||||
|
-- Edited: 08.11.2024
|
||||||
|
--
|
||||||
|
-- ==============================================
|
||||||
|
|
||||||
|
return {
|
||||||
|
diagnostics = {
|
||||||
|
error = "",
|
||||||
|
warn = "",
|
||||||
|
hint = "",
|
||||||
|
info = ""
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,6 +12,7 @@
|
||||||
-- ==============================================
|
-- ==============================================
|
||||||
|
|
||||||
ui = require 'config.ui'
|
ui = require 'config.ui'
|
||||||
|
icons = require 'config.icons'
|
||||||
|
|
||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
|
@ -29,8 +30,6 @@ return {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
},
|
},
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
virtual_text = true,
|
|
||||||
signs = true,
|
|
||||||
update_in_insert = false,
|
update_in_insert = false,
|
||||||
underline = true,
|
underline = true,
|
||||||
severity_sort = false,
|
severity_sort = false,
|
||||||
|
@ -38,9 +37,24 @@ return {
|
||||||
border = ui.border,
|
border = ui.border,
|
||||||
source = 'always',
|
source = 'always',
|
||||||
},
|
},
|
||||||
|
virtual_text = {
|
||||||
|
spacing = 4,
|
||||||
|
source = "if_many",
|
||||||
|
-- this will set set the prefix to a function that returns the diagnostics icon based on the severity
|
||||||
|
-- this only works on a recent 0.10.0 build. Will be set to "●" when not supported
|
||||||
|
prefix = "icons"
|
||||||
|
},
|
||||||
|
signs = {
|
||||||
|
text = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = icons.diagnostics.error,
|
||||||
|
[vim.diagnostic.severity.WARN] = icons.diagnostics.warn,
|
||||||
|
[vim.diagnostic.severity.HINT] = icons.diagnostics.hint,
|
||||||
|
[vim.diagnostic.severity.INFO] = icons.diagnostics.info
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
config = function(opts)
|
config = function(_, opts)
|
||||||
require("mason").setup()
|
require("mason").setup()
|
||||||
|
|
||||||
local handlers = {
|
local handlers = {
|
||||||
|
@ -57,6 +71,31 @@ return {
|
||||||
|
|
||||||
require("mason-lspconfig").setup({ handlers = handlers })
|
require("mason-lspconfig").setup({ handlers = handlers })
|
||||||
|
|
||||||
|
-- Setup diagnostic signs
|
||||||
|
--
|
||||||
|
-- Source: https://www.lazyvim.org/plugins/lsp#mason-lspconfignvim
|
||||||
|
-- ..............................................
|
||||||
|
|
||||||
|
-- diagnostics signs
|
||||||
|
if type(opts.diagnostics.signs) ~= "boolean" then
|
||||||
|
for severity, icon in pairs(opts.diagnostics.signs.text) do
|
||||||
|
local name = vim.diagnostic.severity[severity]:lower():gsub("^%l", string.upper)
|
||||||
|
name = "DiagnosticSign" .. name
|
||||||
|
vim.fn.sign_define(name, { text = icon, texthl = name, numhl = "" })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- diagnostic sign as prefix for virtual text
|
||||||
|
if type(opts.diagnostics.virtual_text) == "table" and opts.diagnostics.virtual_text.prefix == "icons" then
|
||||||
|
opts.diagnostics.virtual_text.prefix = vim.fn.has("nvim-0.10.0") == 0 and "●" or function(diagnostic)
|
||||||
|
for d, icon in pairs(icons.diagnostics) do
|
||||||
|
if diagnostic.severity == vim.diagnostic.severity[d:upper()] then
|
||||||
|
return icon
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Setup diagnostic user interface
|
-- Setup diagnostic user interface
|
||||||
--
|
--
|
||||||
-- Source: https://vonheikemen.github.io/devlog/tools/setup-nvim-lspconfig-plus-nvim-cmp
|
-- Source: https://vonheikemen.github.io/devlog/tools/setup-nvim-lspconfig-plus-nvim-cmp
|
||||||
|
|
Loading…
Reference in New Issue