LunarVim/lua/core/lualine/styles.lua

170 lines
4.5 KiB
Lua

local M = {}
local components = require "core.lualine.components"
local styles = {
lvim = nil,
default = nil,
none = nil,
}
styles.none = {
style = "none",
options = {
icons_enabled = true,
component_separators = "",
section_separators = "",
disabled_filetypes = {},
},
sections = {
lualine_a = {},
lualine_b = {},
lualine_c = {},
lualine_x = {},
lualine_y = {},
lualine_z = {},
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = {},
lualine_x = {},
lualine_y = {},
lualine_z = {},
},
tabline = {},
extensions = {},
}
styles.default = {
style = "default",
options = {
icons_enabled = true,
component_separators = { "", "" },
section_separators = { "", "" },
disabled_filetypes = {},
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch" },
lualine_c = { "filename" },
lualine_x = { "encoding", "fileformat", "filetype" },
lualine_y = { "progress" },
lualine_z = { "location" },
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { "filename" },
lualine_x = { "location" },
lualine_y = {},
lualine_z = {},
},
tabline = {},
extensions = {},
}
styles.lvim = {
style = "lvim",
options = {
icons_enabled = true,
component_separators = "",
section_separators = "",
disabled_filetypes = { "dashboard", "" },
},
sections = {
lualine_a = {
components.vi_mode,
},
lualine_b = {
components.branch,
},
lualine_c = {
components.diff,
components.python_env,
},
lualine_x = {
components.diagnostics,
components.treesitter,
components.lsp,
-- components.location,
-- components.progress,
-- components.spaces,
-- components.encoding,
components.filetype,
},
lualine_y = {
-- components.filetype,
},
lualine_z = {
components.scrollbar,
},
},
inactive_sections = {
lualine_a = {
"filename",
},
lualine_b = {},
lualine_c = {},
lualine_x = {},
lualine_y = {},
lualine_z = {},
},
tabline = {},
extensions = { "nvim-tree" },
}
function M.get_style(style)
local style_keys = vim.tbl_keys(styles)
if not vim.tbl_contains(style_keys, style) then
local Log = require "core.log"
local logger = Log:get_default()
logger.error(
"Invalid lualine style",
string.format('"%s"', style),
"options are: ",
string.format('"%s"', table.concat(style_keys, '", "'))
)
logger.info '"lvim" style is applied.'
style = "lvim"
end
return vim.deepcopy(styles[style])
end
function M.update()
local config = lvim.builtin.lualine
local style = M.get_style(config.style)
lvim.builtin.lualine = {
active = true,
style = style.style,
options = {
icons_enabled = config.options.icons_enabled or style.options.icons_enabled,
component_separators = config.options.component_separators or style.options.component_separators,
section_separators = config.options.section_separators or style.options.section_separators,
theme = config.options.theme or lvim.colorscheme or "auto",
disabled_filetypes = config.options.disabled_filetypes or style.options.disabled_filetypes,
},
sections = {
lualine_a = config.sections.lualine_a or style.sections.lualine_a,
lualine_b = config.sections.lualine_b or style.sections.lualine_b,
lualine_c = config.sections.lualine_c or style.sections.lualine_c,
lualine_x = config.sections.lualine_x or style.sections.lualine_x,
lualine_y = config.sections.lualine_y or style.sections.lualine_y,
lualine_z = config.sections.lualine_z or style.sections.lualine_z,
},
inactive_sections = {
lualine_a = config.inactive_sections.lualine_a or style.inactive_sections.lualine_a,
lualine_b = config.inactive_sections.lualine_b or style.inactive_sections.lualine_b,
lualine_c = config.inactive_sections.lualine_c or style.inactive_sections.lualine_c,
lualine_x = config.inactive_sections.lualine_x or style.inactive_sections.lualine_x,
lualine_y = config.inactive_sections.lualine_y or style.inactive_sections.lualine_y,
lualine_z = config.inactive_sections.lualine_z or style.inactive_sections.lualine_z,
},
tabline = config.tabline or style.tabline,
extensions = config.extensions or style.extensions,
on_config_done = config.on_config_done,
}
end
return M