diff options
Diffstat (limited to 'lua/core/lualine/styles.lua')
-rw-r--r-- | lua/core/lualine/styles.lua | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/lua/core/lualine/styles.lua b/lua/core/lualine/styles.lua new file mode 100644 index 00000000..e35f66fe --- /dev/null +++ b/lua/core/lualine/styles.lua @@ -0,0 +1,170 @@ +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 |