From 63feeb9f369fc6176e85c1c2d8fcc863caad1946 Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Tue, 10 Feb 2026 12:32:48 +0100 Subject: start new MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Robert Günzler --- .config/nvim/lua/config/diagnostics.lua | 65 +++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 .config/nvim/lua/config/diagnostics.lua (limited to '.config/nvim/lua/config/diagnostics.lua') diff --git a/.config/nvim/lua/config/diagnostics.lua b/.config/nvim/lua/config/diagnostics.lua new file mode 100644 index 0000000..6314b83 --- /dev/null +++ b/.config/nvim/lua/config/diagnostics.lua @@ -0,0 +1,65 @@ +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', + }, + }, + severity_sort = true, + underline = { + severity = { min = vim.diagnostic.severity.WARN }, + }, + float = false, + virtual_text = false, + virtual_lines = false, +}) + +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.jump({ count = 1, float = true }) +end, { desc = 'diagnostic: next' }) + +vim.keymap.set('n', ']d', function() + vim.diagnostic.jump({ count = -1, float = true }) +end, { desc = 'diagnostic: prev' }) + +vim.keymap.set('n', 'DD', vim.diagnostic.open_float, { desc = 'diagnostic: current line' }) + +vim.keymap.set('n', 'd', '', { desc = "diagnostics" }) +vim.keymap.set('n', 'dd', vim.diagnostic.open_float, { desc = 'diagnostic: current line' }) +vim.keymap.set('n', 'dv', function() + -- NOTE: this can be used to switch between multiple sets of diagnostics display + -- currently it only toggles virtual_text + local visible = vim.diagnostic.config().virtual_text + + if visible 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 +end, { desc = 'diagnostic: toggle visibility' }) + +vim.keymap.set('n', 'da', function() + vim.diagnostic.enable(not vim.diagnostic.is_enabled()) +end, { desc = 'diagnostic: toggle all' }) -- cgit 1.4.1