My current neovim config

This commit is contained in:
2022-10-10 18:12:32 -07:00
commit ec3acd5976
7 changed files with 308 additions and 0 deletions
+147
View File
@@ -0,0 +1,147 @@
local modes = {
["n"] = "NORMAL",
["no"] = "NORMAL",
["v"] = "VISUAL",
["V"] = "VISUAL LINE",
[""] = "VISUAL BLOCK",
["s"] = "SELECT",
["S"] = "SELECT LINE",
[""] = "SELECT BLOCK",
["i"] = "INSERT",
["ic"] = "INSERT",
["R"] = "REPLACE",
["Rv"] = "VISUAL REPLACE",
["c"] = "COMMAND",
["cv"] = "VIM EX",
["ce"] = "EX",
["r"] = "PROMPT",
["rm"] = "MOAR",
["r?"] = "CONFIRM",
["!"] = "SHELL",
["t"] = "TERMINAL",
}
local function mode()
local current_mode = vim.api.nvim_get_mode().mode
return string.format(" %s ", modes[current_mode]):upper()
end
local function update_mode_colors()
local current_mode = vim.api.nvim_get_mode().mode
local mode_color = "%#StatusLineAccent#"
if current_mode == "n" then
mode_color = "%#StatuslineAccent#"
elseif current_mode == "i" or current_mode == "ic" then
mode_color = "%#Search#"
elseif current_mode == "v" or current_mode == "V" or current_mode == "" then
mode_color = "%#DiffText#"
elseif current_mode == "R" then
mode_color = "%#Visual#"
elseif current_mode == "c" then
mode_color = "%#Cursor#"
elseif current_mode == "t" then
mode_color = "%#FloatShadow#"
end
return mode_color
end
local function filepath()
local fpath = vim.fn.fnamemodify(vim.fn.expand "%", ":~:.:h")
if fpath == "" or fpath == "." then
return " "
end
return string.format(" %%<%s/", fpath)
end
local function filename()
local fname = vim.fn.expand "%:t"
-- wtf
if fname == "" then
return ""
end
return fname .. " "
end
local function lsp()
local count = {}
local levels = {
errors = "Error",
warnings = "Warn",
info = "Info",
hints = "Hint",
}
for k, level in pairs(levels) do
count[k] = vim.tbl_count(vim.diagnostic.get(0, {severity = level }))
end
local errors = ""
local warnings = ""
local hints = ""
local info = ""
if count["errors"] ~= 0 then
errors = " %#LspDiagnosticsSignError# " .. count["errors"]
end
if count["warnings"] ~= 0 then
warnings = " %#LspDiagnosticsSignHint# " .. count["warnings"]
end
if count["hints"] ~= 0 then
hints = " %#LspDiagnosticsSignHint# " .. count["hints"]
end
if count["info"] ~= 0 then
info = " %#LspDiagnosticsSignInformation# " .. count["info"]
end
return errors .. warnings .. hints .. info .. "%#Normal#"
end
local function filetype()
return string.format(" %s ", vim.bo.filetype):upper()
end
local function lineinfo()
if vim.bo.filetype == "alpha" then
return ""
end
return " %l:%c %P %"
end
Statusline = {}
Statusline.active = function()
return table.concat {
"%#Statusline#",
update_mode_colors(),
mode(),
"%#Statusline# ",
filepath(),
filename(),
"%#Normal#",
lsp(),
"%=%#StatusLineExtra#",
filetype(),
lineinfo(),
}
end
function Statusline.inactive()
return " %#Statusline#%F"
end
function Statusline.short()
return "%#StatusLineNC#  NvimTree"
end
vim.api.nvim_exec([[
augroup Statusline
au!
au WinEnter,BufEnter * setlocal statusline=%!v:lua.Statusline.active()
au WinLeave,BufLeave * setlocal statusline=%!v:lua.Statusline.inactive()
au WinEnter,BufEnter,FileType NvimTree setlocal statusline=%!v:lua.Statusline.short()
augroup END
]], false)