nvim: fancy ruler with diagnostics

This commit is contained in:
Daniel Lundin 2024-11-06 00:40:41 +01:00
parent 8b8a7cf04b
commit 4f8865c8ac
Signed by: dln
SSH key fingerprint: SHA256:dQy1Xj3UiqJYpKR5ggQ2bxgz4jCH8IF+k3AB8o0kmdI
2 changed files with 33 additions and 18 deletions

View file

@ -10,6 +10,7 @@
withRuby = false;
extraLuaConfig = lib.fileContents ./init.lua;
extraPackages = with pkgs; [
black
cue

View file

@ -8,18 +8,32 @@ vim.opt.laststatus = 0
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.ruler = true
vim.opt.rulerformat = "" -- FIXME: fancify!
vim.opt.rulerformat = "%36(%5l,%-6(%c%V%) %t%)%*"
vim.opt.syntax = "on"
vim.opt.termguicolors = true
-- Ruler
function GetIndicators()
local bufnr = vim.api.nvim_get_current_buf()
local counts = vim.diagnostic.count(bufnr)
local errors = counts[vim.diagnostic.severity.ERROR] or 0
local warnings = counts[vim.diagnostic.severity.WARN] or 0
local warn_string = warnings > 0 and "%#DiagnosticWarn# " .. warnings .. " " or " "
local error_string = errors > 0 and "%#DiagnosticError# " .. errors .. " " or " "
return warn_string .. error_string
end
function GetRulerIcon()
local icon = vim.bo.modified and "" or ""
return "%#CustomRulerSeparator#%#CustomRulerIcon#" .. icon .. " "
end
vim.opt.rulerformat = "%40(%=%{%v:lua.GetIndicators()%}%#Label#│ %t %)"
-- Search
vim.opt.ignorecase = true
vim.opt.smartcase = true
-- Tab completion
-- vim.opt.wildmode="list:longest,full"
vim.opt.wildignore="*.swp,*.o,*.so,*.exe,*.dll"
vim.opt.wildignore = '*.swp,*.o,*.so,*.exe,*.dll'
-- Whitespaces
vim.opt.breakindent = true
@ -32,14 +46,14 @@ vim.opt.smartindent = true
vim.opt.tabstop = 2
vim.opt.wrap = false
vim.opt.list = true
vim.opt.listchars="tab:»·,trail:·"
im.opt.listchars = "tab:»·,trail:·"
-- Folds
vim.opt.foldenable = false
vim.opt.foldtext = "v:lua.vim.treesitter.foldtext()"
vim.opt.foldmethod = "expr"
vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
qqq
--
vim.o.autochdir = true
@ -61,29 +75,29 @@ vim.o.grepprg = [[rg --glob "!.jj" --glob "!.git" --no-heading --vimgrep --follo
vim.opt.grepformat = vim.opt.grepformat ^ { "%f:%l:%c:%m" }
vim.fn.sign_define(
"DiagnosticSignError",
{ text = "", hl = "DiagnosticSignError", texthl = "DiagnosticSignError", culhl = "DiagnosticSignErrorLine" }
"DiagnosticSignError",
{ text = "", hl = "DiagnosticSignError", texthl = "DiagnosticSignError", culhl = "DiagnosticSignErrorLine" }
)
vim.fn.sign_define(
"DiagnosticSignWarn",
{ text = "", hl = "DiagnosticSignWarn", texthl = "DiagnosticSignWarn", culhl = "DiagnosticSignWarnLine" }
"DiagnosticSignWarn",
{ text = "", hl = "DiagnosticSignWarn", texthl = "DiagnosticSignWarn", culhl = "DiagnosticSignWarnLine" }
)
vim.fn.sign_define(
"DiagnosticSignInfo",
{ text = "", hl = "DiagnosticSignInfo", texthl = "DiagnosticSignInfo", culhl = "DiagnosticSignInfoLine" }
"DiagnosticSignInfo",
{ text = "", hl = "DiagnosticSignInfo", texthl = "DiagnosticSignInfo", culhl = "DiagnosticSignInfoLine" }
)
vim.fn.sign_define(
"DiagnosticSignHint",
{ text = "", hl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", culhl = "DiagnosticSignHintLine" }
"DiagnosticSignHint",
{ text = "", hl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", culhl = "DiagnosticSignHintLine" }
)
-- Make <Tab> work for snippets
vim.keymap.set({ "i", "s" }, "<Tab>", function()
if vim.snippet.active({ direction = 1 }) then
return "<cmd>lua vim.snippet.jump(1)<cr>"
else
return "<Tab>"
end
if vim.snippet.active({ direction = 1 }) then
return "<cmd>lua vim.snippet.jump(1)<cr>"
else
return "<Tab>"
end
end, { expr = true })
vim.keymap.set({ "n" }, "<c-/>", "gcc", { remap = true })