styles.lua 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. local M = {}
  2. local components = require "core.lualine.components"
  3. local styles = {
  4. lvim = nil,
  5. default = nil,
  6. none = nil,
  7. }
  8. styles.none = {
  9. style = "none",
  10. options = {
  11. icons_enabled = true,
  12. component_separators = "",
  13. section_separators = "",
  14. disabled_filetypes = {},
  15. },
  16. sections = {
  17. lualine_a = {},
  18. lualine_b = {},
  19. lualine_c = {},
  20. lualine_x = {},
  21. lualine_y = {},
  22. lualine_z = {},
  23. },
  24. inactive_sections = {
  25. lualine_a = {},
  26. lualine_b = {},
  27. lualine_c = {},
  28. lualine_x = {},
  29. lualine_y = {},
  30. lualine_z = {},
  31. },
  32. tabline = {},
  33. extensions = {},
  34. }
  35. styles.default = {
  36. style = "default",
  37. options = {
  38. icons_enabled = true,
  39. component_separators = { "", "" },
  40. section_separators = { "", "" },
  41. disabled_filetypes = {},
  42. },
  43. sections = {
  44. lualine_a = { "mode" },
  45. lualine_b = { "branch" },
  46. lualine_c = { "filename" },
  47. lualine_x = { "encoding", "fileformat", "filetype" },
  48. lualine_y = { "progress" },
  49. lualine_z = { "location" },
  50. },
  51. inactive_sections = {
  52. lualine_a = {},
  53. lualine_b = {},
  54. lualine_c = { "filename" },
  55. lualine_x = { "location" },
  56. lualine_y = {},
  57. lualine_z = {},
  58. },
  59. tabline = {},
  60. extensions = {},
  61. }
  62. styles.lvim = {
  63. style = "lvim",
  64. options = {
  65. icons_enabled = true,
  66. component_separators = "",
  67. section_separators = "",
  68. disabled_filetypes = { "dashboard", "" },
  69. },
  70. sections = {
  71. lualine_a = {
  72. components.vi_mode,
  73. },
  74. lualine_b = {
  75. components.branch,
  76. },
  77. lualine_c = {
  78. components.diff,
  79. components.python_env,
  80. },
  81. lualine_x = {
  82. components.diagnostics,
  83. components.treesitter,
  84. components.lsp,
  85. -- components.location,
  86. -- components.progress,
  87. -- components.spaces,
  88. -- components.encoding,
  89. components.filetype,
  90. },
  91. lualine_y = {
  92. -- components.filetype,
  93. },
  94. lualine_z = {
  95. components.scrollbar,
  96. },
  97. },
  98. inactive_sections = {
  99. lualine_a = {
  100. "filename",
  101. },
  102. lualine_b = {},
  103. lualine_c = {},
  104. lualine_x = {},
  105. lualine_y = {},
  106. lualine_z = {},
  107. },
  108. tabline = {},
  109. extensions = { "nvim-tree" },
  110. }
  111. function M.get_style(style)
  112. local style_keys = vim.tbl_keys(styles)
  113. if not vim.tbl_contains(style_keys, style) then
  114. local Log = require "core.log"
  115. local logger = Log:get_default()
  116. logger.error(
  117. "Invalid lualine style",
  118. string.format('"%s"', style),
  119. "options are: ",
  120. string.format('"%s"', table.concat(style_keys, '", "'))
  121. )
  122. logger.info '"lvim" style is applied.'
  123. style = "lvim"
  124. end
  125. return vim.deepcopy(styles[style])
  126. end
  127. function M.update()
  128. local config = lvim.builtin.lualine
  129. local style = M.get_style(config.style)
  130. lvim.builtin.lualine = {
  131. active = true,
  132. style = style.style,
  133. options = {
  134. icons_enabled = config.options.icons_enabled or style.options.icons_enabled,
  135. component_separators = config.options.component_separators or style.options.component_separators,
  136. section_separators = config.options.section_separators or style.options.section_separators,
  137. theme = config.options.theme or lvim.colorscheme or "auto",
  138. disabled_filetypes = config.options.disabled_filetypes or style.options.disabled_filetypes,
  139. },
  140. sections = {
  141. lualine_a = config.sections.lualine_a or style.sections.lualine_a,
  142. lualine_b = config.sections.lualine_b or style.sections.lualine_b,
  143. lualine_c = config.sections.lualine_c or style.sections.lualine_c,
  144. lualine_x = config.sections.lualine_x or style.sections.lualine_x,
  145. lualine_y = config.sections.lualine_y or style.sections.lualine_y,
  146. lualine_z = config.sections.lualine_z or style.sections.lualine_z,
  147. },
  148. inactive_sections = {
  149. lualine_a = config.inactive_sections.lualine_a or style.inactive_sections.lualine_a,
  150. lualine_b = config.inactive_sections.lualine_b or style.inactive_sections.lualine_b,
  151. lualine_c = config.inactive_sections.lualine_c or style.inactive_sections.lualine_c,
  152. lualine_x = config.inactive_sections.lualine_x or style.inactive_sections.lualine_x,
  153. lualine_y = config.inactive_sections.lualine_y or style.inactive_sections.lualine_y,
  154. lualine_z = config.inactive_sections.lualine_z or style.inactive_sections.lualine_z,
  155. },
  156. tabline = config.tabline or style.tabline,
  157. extensions = config.extensions or style.extensions,
  158. on_config_done = config.on_config_done,
  159. }
  160. end
  161. return M