[2025-04-25] Updates to nvim config, mainly statusline stuff

This commit is contained in:
Andrew Conlin 2025-04-25 09:10:08 +01:00
parent 628475c242
commit f8c9b525ca
6 changed files with 91 additions and 28 deletions

View file

@ -8,7 +8,7 @@ M.modeMap = {
GetMode = function()
local m = vim.api.nvim_get_mode().mode
if M.modeMap[m] ~= nil then
return M.modeMap[m] .. " "
return Highlight(" "..M.modeMap[m].." ","StatusLineMode")
else
return ""
end
@ -24,46 +24,85 @@ GetTime = function()
end
GetLSP = function()
local clients = vim.lsp.get_clients()
local clients = vim.lsp.get_clients({bufnr = 0})
if next(clients) ~= nil then
local name = string.format('%s',clients[1].name)
local root = clients[1].root_dir
if name == 'matlab_ls' and root ~= nil then
local sandbox = root:match(".+/([^/]+)$")
--local handle = io.popen('p4 opened | grep tnrCRCDecode | sed \'s/^[^#]*//g\'')
--local result = handle:read("*a")
return string.format('| %s -> %s ',name,sandbox)
return string.format(' {◉%s} [%s] ',name,sandbox)
else
return "| " .. name .. " "
return string.format(' {◉%s} ',name)
end
else
return ''
return ' {◉} '
end
end
M.diagMap = {
err = vim.diagnostic.severity.ERROR,
warn = vim.diagnostic.severity.WARNING,
info = vim.diagnostic.severity.INFORMATION,
hint = vim.diagnostic.severity.HINT
}
M.diagSymMap = {
err = "",
warn = "",
info = "",
hint = ""
}
GetDiag = function(type)
return string.format("%s%d ",M.diagSymMap[type],#vim.diagnostic.get(0,{severity=M.diagMap[type]}))
end
GetGitStatus = function()
local signs = vim.b.gitsigns_status_dict or {head = '', added = 0, changed = 0, removed = 0}
local inRepo = signs.head ~= ''
return inRepo and string.format(
'| %s: +%s ~%s -%s ',
signs.head, signs.added, signs.changed, signs.removed
) or ''
'%s%s%s%s',
Highlight(" {↣"..signs.head.."}","StatusLineGit"),
Highlight(" +"..signs.added,"StatusLineGitAdd"),
Highlight(" ~"..signs.changed,"StatusLineGitChange"),
Highlight(" -"..signs.removed.." ","StatusLineGitDelete")
) or string.format(
'%s%s%s%s',
Highlight(" {↣}","StatusLineGit"),
Highlight(" +0","StatusLineGitAdd"),
Highlight(" ~0","StatusLineGitChange"),
Highlight(" -0 ","StatusLineGitDelete")
)
end
Highlight = function(inp,hi)
return "%#" .. hi .. "#" .. inp .. "%*"
end
function M.statusline()
local sline = " "
sline = sline .. GetMode() .. GetGitStatus() .. GetLSP() .. "%=" .. GetDate() .. " | " .. GetTime() .. " "
local sline = ""
sline = sline .. GetMode()
.. Highlight(" %<%f ","StatusLineFile") .. " %y%m%r%="
.. "%-5.(%l:%c%V%) %p%% "
.. GetGitStatus()
.. Highlight(GetLSP(),"StatusLineLSP")
.. Highlight(GetDiag("err"),"StatusLineDiagnosticError")
.. Highlight(GetDiag("warn"),"StatusLineDiagnosticWarn")
.. Highlight(GetDiag("info"),"StatusLineDiagnosticInfo")
.. Highlight(GetDiag("hint"),"StatusLineDiagnosticHint")
.. " "
return sline
end
function M.winbar()
return "%< %f %y%h%m%r%=%-5.(L%l C%c%V%) %P "
return "%< %f %y%h%m%r%=" .. GetTime()
end
local timer = vim.uv.new_timer()
timer:start(0, 10000, vim.schedule_wrap(function()
vim.cmd("let &stl=&stl")
end))
--local timer = vim.uv.new_timer()
--timer:start(0, 5000, vim.schedule_wrap(function()
-- vim.cmd("let &stl=&stl")
--end))
return M