feat: theme the statusline

This commit is contained in:
Dan Anglin 2022-03-26 17:17:28 +00:00
parent bd4056582f
commit e1ae8a414f
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638

View file

@ -33,36 +33,72 @@ function _G.format_mode(mode)
output = mode
end
return output
return string.upper(output)
end
local function setHighlight(str)
return string.format("%%#%s#", str)
end
function M.output()
local separator = ""
local mode = "%{%v:lua.format_mode(v:lua.vim.fn.mode())%} "
local open_file = separator .. "%r%t %m"
local buf_nr = "[%n]"
local palette = {
cyan = "#7dcfff",
blue = "#7aa2f7",
magenta = "#bb9af7",
black = "#414868",
bg = "#15161e",
none = "NONE",
}
local statuslineMode = "StatuslineMode"
local statuslineTransparent = "StatuslineTransparent"
local statuslineBlueText = "StatuslineBlueText"
local statuslineMagentaText = "StatuslineMagentaText"
local theme = {
[statuslineMode] = {fg = palette["black"], bg = palette["cyan"], bold = true},
[statuslineTransparent] = {bg = palette["none"]},
[statuslineBlueText] = {bg = palette["bg"], fg = palette["blue"], bold = true},
[statuslineMagentaText] = {bg = palette["bg"], fg = palette["magenta"], bold = true},
}
local ns = vim.api.nvim_create_namespace("statusline")
vim.api.nvim__set_hl_ns(ns)
for name, settings in pairs(theme) do
vim.api.nvim_set_hl(ns, name, settings)
end
local separator = ""
local mode = " %{%v:lua.format_mode(v:lua.vim.fn.mode())%} "
local open_file = "%r%t %m"
local buf_nr = "[%n] "
local right_align = "%="
local file_format = "%{&ff}"
local file_type = "%y "
local encoding = "%{''.(&fenc!=''?&fenc:&enc).''} "
local line_no = "line: %03l/%03L "
local percentage = "[%3p%%]"
local file_type = "%y "
local encoding = "%{''.(&fenc!=''?&fenc:&enc).''} "
local line_no = "line: %03l/%03L "
local percentage = "[%3p%%]"
return string.format(
"%s%s%s%s%s%s%s%s%s%s%s%s",
separator,
return table.concat{
setHighlight(statuslineMode),
mode,
setHighlight(statuslineBlueText),
separator,
open_file,
buf_nr,
setHighlight(statuslineTransparent),
right_align,
setHighlight(statuslineBlueText),
separator,
file_format,
file_type,
encoding,
setHighlight(statuslineMagentaText),
separator,
line_no,
percentage
)
}
end
return M