Big cleanup for a big commit.

This commit is contained in:
2026-07-15 13:42:14 +02:00
parent 7b642b5868
commit 0b82564494
19 changed files with 556 additions and 753 deletions
+188
View File
@@ -0,0 +1,188 @@
local M = {}
local config = {
bg = "#202020",
fg = "#ffffff",
separator = "",
}
local mode_names = {
["n"] = "NORMAL",
["no"] = "NORMAL",
["nov"] = "NORMAL",
["noV"] = "NORMAL",
["no\22"] = "NORMAL",
["niI"] = "NORMAL",
["niR"] = "NORMAL",
["niV"] = "NORMAL",
["i"] = "INSERT",
["ic"] = "INSERT",
["ix"] = "INSERT",
["v"] = "VISUAL",
["V"] = "V-LINE",
["\22"] = "V-BLOCK",
["s"] = "SELECT",
["S"] = "S-LINE",
["\19"] = "S-BLOCK",
["R"] = "REPLACE",
["Rc"] = "REPLACE",
["Rv"] = "V-REPLACE",
["c"] = "COMMAND",
["cv"] = "COMMAND",
["ce"] = "COMMAND",
["r"] = "PROMPT",
["rm"] = "MORE",
["r?"] = "CONFIRM",
["!"] = "SHELL",
["t"] = "TERMINAL",
}
local function mode()
return mode_names[vim.fn.mode()] or "UNKNOWN"
end
local function filename()
local name = vim.fn.expand("%:t")
if name == "" then
return "[No Name]"
end
return name
end
local function git_branch()
local branch = vim.b.gitsigns_head
if branch and branch ~= "" then
return "" .. branch
end
return ""
end
local function filetype()
if vim.bo.filetype == "" then
return "text"
end
return vim.bo.filetype
end
local function active_lsp()
local clients = vim.lsp.get_clients({
bufnr = 0,
})
if #clients == 0 then
return "-"
end
local names = {}
for _, client in ipairs(clients) do
table.insert(names, client.name)
end
return table.concat(names, ",")
end
local function diagnostics()
local errors = #vim.diagnostic.get(0, {
severity = vim.diagnostic.severity.ERROR,
})
if errors > 0 then
return "%#StatusError#●%*"
end
local warnings = #vim.diagnostic.get(0, {
severity = vim.diagnostic.severity.WARN,
})
if warnings > 0 then
return "%#StatusWarn#●%*"
end
return "%#StatusNormal#●%*"
end
local function position()
return string.format("%d:%d", vim.fn.line("."), vim.fn.col("."))
end
local function build()
local left = table.concat({
" ",
mode(),
config.separator,
diagnostics(),
config.separator,
filename(),
})
local right = {}
local branch = git_branch()
if branch ~= "" then
table.insert(right, branch)
end
table.insert(right, filetype())
table.insert(right, active_lsp())
table.insert(right, position())
return left
.. "%="
.. " "
.. table.concat(right, config.separator)
.. " "
end
function M.setup(opts)
config = vim.tbl_extend("force", config, opts or {})
vim.api.nvim_set_hl(0, "StatusLine", {
fg = config.fg,
bg = config.bg,
})
vim.api.nvim_set_hl(0, "StatusLineNC", {
fg = config.fg,
bg = config.bg,
})
vim.api.nvim_set_hl(0, "StatusNormal", {
fg = "#808080",
bg = config.bg,
})
vim.api.nvim_set_hl(0, "StatusLsp", {
fg = "#61afef",
bg = config.bg,
})
vim.api.nvim_set_hl(0, "StatusWarn", {
fg = "#e5c07b",
bg = config.bg,
})
vim.api.nvim_set_hl(0, "StatusError", {
fg = "#e06c75",
bg = config.bg,
})
_G.StatusBar = build
vim.o.statusline = "%!v:lua.StatusBar()"
end
return M