vim.diagnostic.config({ signs = { text = { [vim.diagnostic.severity.ERROR] = '✗', [vim.diagnostic.severity.WARN] = '▷', [vim.diagnostic.severity.INFO] = 'ℹ', [vim.diagnostic.severity.HINT] = '🞶', }, linehl = { [vim.diagnostic.severity.ERROR] = 'Search', -- [vim.diagnostic.severity.WARN] = '', -- [vim.diagnostic.severity.INFO] = '', -- [vim.diagnostic.severity.HINT] = '', }, numhl = { [vim.diagnostic.severity.ERROR] = 'DiagnosticSignError', [vim.diagnostic.severity.WARN] = 'DiagnosticSignWarn', [vim.diagnostic.severity.INFO] = 'DiagnosticSignInfo', [vim.diagnostic.severity.HINT] = 'DiagnosticSignHint', }, }, underline = { severity = { min = vim.diagnostic.severity.HINT }, }, float = { severity = { min = vim.diagnostic.severity.HINT }, }, virtual_text = { severity = { min = vim.diagnostic.severity.HINT }, }, severity_sort = true, }) local commonhl = { undercurl = true, force = true } vim.api.nvim_set_hl(0, 'DiagnosticUnderlineError', commonhl) vim.api.nvim_set_hl(0, 'DiagnosticUnderlineWarn', commonhl) vim.api.nvim_set_hl(0, 'DiagnosticUnderlineInfo', commonhl) vim.api.nvim_set_hl(0, 'DiagnosticUnderlineHint', commonhl) vim.keymap.set('n', '[d', function() vim.diagnostic.goto_next() end, { desc = 'diagnostic: next' }) vim.keymap.set('n', ']d', function() vim.diagnostic.goto_prev() end, { desc = 'diagnostic: prev' }) vim.keymap.set('n', 'DD', vim.diagnostic.open_float, { desc = 'diagnostic: current line' }) vim.keymap.set('n', 'td', function() if not _G.diagnostic_hidden then -- vim.diagnostic.hide(nil, 0) vim.diagnostic.config({ virtual_text = false }) else -- vim.diagnostic.show(nil, 0) vim.diagnostic.config({ virtual_text = true }) end _G.diagnostic_hidden = not _G.diagnostic_hidden end, { desc = 'diagnostic: toggle' }) vim.keymap.set('n', 'tD', function() vim.diagnostic.enable(not vim.diagnostic.is_enabled()) end, { desc = 'diagnostic: toggle' })