|
|
|
@ -628,32 +628,54 @@ require('lazy').setup({
|
|
|
|
|
|
|
|
|
|
-- Diagnostic Config
|
|
|
|
|
-- See :help vim.diagnostic.Opts
|
|
|
|
|
vim.diagnostic.config {
|
|
|
|
|
severity_sort = true,
|
|
|
|
|
float = { border = 'rounded', source = 'if_many' },
|
|
|
|
|
underline = { severity = vim.diagnostic.severity.ERROR },
|
|
|
|
|
signs = vim.g.have_nerd_font and {
|
|
|
|
|
text = {
|
|
|
|
|
[vim.diagnostic.severity.ERROR] = ' ',
|
|
|
|
|
[vim.diagnostic.severity.WARN] = ' ',
|
|
|
|
|
[vim.diagnostic.severity.INFO] = ' ',
|
|
|
|
|
[vim.diagnostic.severity.HINT] = ' ',
|
|
|
|
|
},
|
|
|
|
|
} or {},
|
|
|
|
|
virtual_text = {
|
|
|
|
|
source = 'if_many',
|
|
|
|
|
spacing = 2,
|
|
|
|
|
format = function(diagnostic)
|
|
|
|
|
local diagnostic_message = {
|
|
|
|
|
[vim.diagnostic.severity.ERROR] = diagnostic.message,
|
|
|
|
|
[vim.diagnostic.severity.WARN] = diagnostic.message,
|
|
|
|
|
[vim.diagnostic.severity.INFO] = diagnostic.message,
|
|
|
|
|
[vim.diagnostic.severity.HINT] = diagnostic.message,
|
|
|
|
|
}
|
|
|
|
|
return diagnostic_message[diagnostic.severity]
|
|
|
|
|
end,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
-- Diagnostic configuration similar to VS Code's Error Lens.
|
|
|
|
|
-- In insert mode, diagnostics are displayed as inline virtual text.
|
|
|
|
|
-- In normal mode, diagnostics are shown as virtual lines below the affected lines.
|
|
|
|
|
|
|
|
|
|
local function set_virtual_text(enable)
|
|
|
|
|
local diagnostic_icons = {
|
|
|
|
|
[vim.diagnostic.severity.ERROR] = ' ',
|
|
|
|
|
[vim.diagnostic.severity.WARN] = ' ',
|
|
|
|
|
[vim.diagnostic.severity.INFO] = ' ',
|
|
|
|
|
[vim.diagnostic.severity.HINT] = ' ',
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vim.diagnostic.config {
|
|
|
|
|
update_in_insert = true, -- error messages in insert mode
|
|
|
|
|
severity_sort = true,
|
|
|
|
|
float = { border = 'rounded', source = 'if_many' },
|
|
|
|
|
underline = { severity = vim.diagnostic.severity.ERROR },
|
|
|
|
|
signs = vim.g.have_nerd_font and {
|
|
|
|
|
text = diagnostic_icons,
|
|
|
|
|
} or {},
|
|
|
|
|
|
|
|
|
|
virtual_lines = not enable and {
|
|
|
|
|
format = function(diagnostic)
|
|
|
|
|
return (diagnostic_icons[diagnostic.severity] or '') .. diagnostic.message
|
|
|
|
|
end,
|
|
|
|
|
} or false,
|
|
|
|
|
|
|
|
|
|
virtual_text = enable and {
|
|
|
|
|
source = 'if_many',
|
|
|
|
|
spacing = 2,
|
|
|
|
|
format = function(diagnostic)
|
|
|
|
|
return (diagnostic_icons[diagnostic.severity] or '') .. diagnostic.message
|
|
|
|
|
end,
|
|
|
|
|
} or false,
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
vim.api.nvim_create_autocmd('InsertEnter', {
|
|
|
|
|
callback = function()
|
|
|
|
|
set_virtual_text(true)
|
|
|
|
|
end,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
vim.api.nvim_create_autocmd('InsertLeave', {
|
|
|
|
|
callback = function()
|
|
|
|
|
set_virtual_text(false)
|
|
|
|
|
end,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- LSP servers and clients are able to communicate to each other what features they support.
|
|
|
|
|
-- By default, Neovim doesn't support everything that is in the LSP specification.
|
|
|
|
|