mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	Merge pull request #291 from NotAShelf/lualine-refactor
lualine: increase theme compatibility; fix component definitions
This commit is contained in:
		
				commit
				
					
						1fd4a2a1b8
					
				
			
		
					 3 changed files with 99 additions and 105 deletions
				
			
		|  | @ -35,3 +35,6 @@ Release notes for release 0.7 | ||||||
|   to nixpkgs. A pull request is currently open. |   to nixpkgs. A pull request is currently open. | ||||||
| 
 | 
 | ||||||
| - Remove vim-tidal and friends | - Remove vim-tidal and friends | ||||||
|  | 
 | ||||||
|  | - Cleaned up Lualine module to reduce theme dependency on Catppuccin, and fixed | ||||||
|  |   blending issues in component separators. | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ | ||||||
|   lib, |   lib, | ||||||
|   ... |   ... | ||||||
| }: let | }: let | ||||||
|  |   inherit (builtins) map; | ||||||
|   inherit (lib.modules) mkIf mkMerge; |   inherit (lib.modules) mkIf mkMerge; | ||||||
|   inherit (lib.trivial) boolToString; |   inherit (lib.trivial) boolToString; | ||||||
|   inherit (lib.nvim.dag) entryAnywhere; |   inherit (lib.nvim.dag) entryAnywhere; | ||||||
|  | @ -31,44 +32,46 @@ in { | ||||||
|       }; |       }; | ||||||
|     }) |     }) | ||||||
|     (mkIf cfg.enable { |     (mkIf cfg.enable { | ||||||
|       vim.startPlugins = [ |       vim = { | ||||||
|         "lualine" |         startPlugins = ["lualine"]; | ||||||
|       ]; |  | ||||||
| 
 | 
 | ||||||
|       vim.luaConfigRC.lualine = entryAnywhere '' |         luaConfigRC.lualine = entryAnywhere '' | ||||||
|         local lualine = require('lualine') |           local lualine = require('lualine') | ||||||
|         lualine.setup ${toLuaObject cfg.setupOpts} |           lualine.setup ${toLuaObject cfg.setupOpts} | ||||||
|       ''; |         ''; | ||||||
| 
 | 
 | ||||||
|       # this is for backwards-compatibility |         # this is for backwards-compatibility | ||||||
|       vim.statusline.lualine.setupOpts = { |         statusline.lualine.setupOpts = { | ||||||
|         options = { |           options = { | ||||||
|           icons_enabled = cfg.icons.enable; |             icons_enabled = cfg.icons.enable; | ||||||
|           theme = cfg.theme; |             theme = cfg.theme; | ||||||
|           component_separators = [cfg.componentSeparator.left cfg.componentSeparator.right]; |             component_separators = [cfg.componentSeparator.left cfg.componentSeparator.right]; | ||||||
|           section_separators = [cfg.sectionSeparator.left cfg.sectionSeparator.right]; |             section_separators = [cfg.sectionSeparator.left cfg.sectionSeparator.right]; | ||||||
|           globalstatus = cfg.globalStatus; |             globalstatus = cfg.globalStatus; | ||||||
|           refresh = cfg.refresh; |             refresh = cfg.refresh; | ||||||
|         }; |           }; | ||||||
| 
 | 
 | ||||||
|         sections = { |           sections = { | ||||||
|           lualine_a = builtins.map mkLuaInline (cfg.activeSection.a ++ cfg.extraActiveSection.a); |             lualine_a = map mkLuaInline (cfg.activeSection.a ++ cfg.extraActiveSection.a); | ||||||
|           lualine_b = builtins.map mkLuaInline (cfg.activeSection.b ++ cfg.extraActiveSection.b); |             lualine_b = map mkLuaInline (cfg.activeSection.b ++ cfg.extraActiveSection.b); | ||||||
|           lualine_c = builtins.map mkLuaInline (cfg.activeSection.c ++ cfg.extraActiveSection.c); |             lualine_c = map mkLuaInline (cfg.activeSection.c ++ cfg.extraActiveSection.c); | ||||||
|           lualine_x = builtins.map mkLuaInline (cfg.activeSection.x ++ cfg.extraActiveSection.x); |             lualine_x = map mkLuaInline (cfg.activeSection.x ++ cfg.extraActiveSection.x); | ||||||
|           lualine_y = builtins.map mkLuaInline (cfg.activeSection.y ++ cfg.extraActiveSection.y); |             lualine_y = map mkLuaInline (cfg.activeSection.y ++ cfg.extraActiveSection.y); | ||||||
|           lualine_z = builtins.map mkLuaInline (cfg.activeSection.z ++ cfg.extraActiveSection.z); |             lualine_z = map mkLuaInline (cfg.activeSection.z ++ cfg.extraActiveSection.z); | ||||||
|  |           }; | ||||||
|  | 
 | ||||||
|  |           inactive_sections = { | ||||||
|  |             lualine_a = map mkLuaInline (cfg.inactiveSection.a ++ cfg.extraInactiveSection.a); | ||||||
|  |             lualine_b = map mkLuaInline (cfg.inactiveSection.b ++ cfg.extraInactiveSection.b); | ||||||
|  |             lualine_c = map mkLuaInline (cfg.inactiveSection.c ++ cfg.extraInactiveSection.c); | ||||||
|  |             lualine_x = map mkLuaInline (cfg.inactiveSection.x ++ cfg.extraInactiveSection.x); | ||||||
|  |             lualine_y = map mkLuaInline (cfg.inactiveSection.y ++ cfg.extraInactiveSection.y); | ||||||
|  |             lualine_z = map mkLuaInline (cfg.inactiveSection.z ++ cfg.extraInactiveSection.z); | ||||||
|  |           }; | ||||||
|  | 
 | ||||||
|  |           # probably don't need this? | ||||||
|  |           tabline = []; | ||||||
|         }; |         }; | ||||||
|         inactive_sections = { |  | ||||||
|           lualine_a = builtins.map mkLuaInline (cfg.inactiveSection.a ++ cfg.extraInactiveSection.a); |  | ||||||
|           lualine_b = builtins.map mkLuaInline (cfg.inactiveSection.b ++ cfg.extraInactiveSection.b); |  | ||||||
|           lualine_c = builtins.map mkLuaInline (cfg.inactiveSection.c ++ cfg.extraInactiveSection.c); |  | ||||||
|           lualine_x = builtins.map mkLuaInline (cfg.inactiveSection.x ++ cfg.extraInactiveSection.x); |  | ||||||
|           lualine_y = builtins.map mkLuaInline (cfg.inactiveSection.y ++ cfg.extraInactiveSection.y); |  | ||||||
|           lualine_z = builtins.map mkLuaInline (cfg.inactiveSection.z ++ cfg.extraInactiveSection.z); |  | ||||||
|         }; |  | ||||||
|         # probably don't need this? |  | ||||||
|         tabline = []; |  | ||||||
|       }; |       }; | ||||||
|     }) |     }) | ||||||
|   ]; |   ]; | ||||||
|  |  | ||||||
|  | @ -10,19 +10,45 @@ | ||||||
|   inherit (lib.nvim.types) mkPluginSetupOption; |   inherit (lib.nvim.types) mkPluginSetupOption; | ||||||
| 
 | 
 | ||||||
|   supported_themes = import ./supported_themes.nix; |   supported_themes = import ./supported_themes.nix; | ||||||
|   colorPuccin = |   builtin_themes = [ | ||||||
|     if config.vim.statusline.lualine.theme == "catppuccin" |     "auto" | ||||||
|     then "#181825" |     "16color" | ||||||
|     else "none"; |     "gruvbox" | ||||||
|  |     "ayu_dark" | ||||||
|  |     "ayu_light" | ||||||
|  |     "ayu_mirage" | ||||||
|  |     "codedark" | ||||||
|  |     "dracula" | ||||||
|  |     "everforest" | ||||||
|  |     "gruvbox" | ||||||
|  |     "gruvbox_light" | ||||||
|  |     "gruvbox_material" | ||||||
|  |     "horizon" | ||||||
|  |     "iceberg_dark" | ||||||
|  |     "iceberg_light" | ||||||
|  |     "jellybeans" | ||||||
|  |     "material" | ||||||
|  |     "modus_vivendi" | ||||||
|  |     "molokai" | ||||||
|  |     "nightfly" | ||||||
|  |     "nord" | ||||||
|  |     "oceanicnext" | ||||||
|  |     "onelight" | ||||||
|  |     "palenight" | ||||||
|  |     "papercolor_dark" | ||||||
|  |     "papercolor_light" | ||||||
|  |     "powerline" | ||||||
|  |     "seoul256" | ||||||
|  |     "solarized_dark" | ||||||
|  |     "tomorrow" | ||||||
|  |     "wombat" | ||||||
|  |   ]; | ||||||
| in { | in { | ||||||
|   options.vim.statusline.lualine = { |   options.vim.statusline.lualine = { | ||||||
|  |     enable = mkEnableOption "lualine statusline plugin"; | ||||||
|     setupOpts = mkPluginSetupOption "Lualine" {}; |     setupOpts = mkPluginSetupOption "Lualine" {}; | ||||||
| 
 | 
 | ||||||
|     enable = mkEnableOption "lualine statusline plugin"; |     icons.enable = mkEnableOption "icons for lualine" // {default = true;}; | ||||||
| 
 |  | ||||||
|     icons = { |  | ||||||
|       enable = mkEnableOption "icons for lualine" // {default = true;}; |  | ||||||
|     }; |  | ||||||
| 
 | 
 | ||||||
|     refresh = { |     refresh = { | ||||||
|       statusline = mkOption { |       statusline = mkOption { | ||||||
|  | @ -73,47 +99,15 @@ in { | ||||||
| 
 | 
 | ||||||
|     theme = let |     theme = let | ||||||
|       themeSupported = elem config.vim.theme.name supported_themes; |       themeSupported = elem config.vim.theme.name supported_themes; | ||||||
|  |       themesConcatted = builtin_themes ++ optional themeSupported config.vim.theme.name; | ||||||
|     in |     in | ||||||
|       mkOption { |       mkOption { | ||||||
|         description = "Theme for lualine"; |         type = enum themesConcatted; | ||||||
|         type = enum ([ |  | ||||||
|             "auto" |  | ||||||
|             "16color" |  | ||||||
|             "gruvbox" |  | ||||||
|             "ayu_dark" |  | ||||||
|             "ayu_light" |  | ||||||
|             "ayu_mirage" |  | ||||||
|             "codedark" |  | ||||||
|             "dracula" |  | ||||||
|             "everforest" |  | ||||||
|             "gruvbox" |  | ||||||
|             "gruvbox_light" |  | ||||||
|             "gruvbox_material" |  | ||||||
|             "horizon" |  | ||||||
|             "iceberg_dark" |  | ||||||
|             "iceberg_light" |  | ||||||
|             "jellybeans" |  | ||||||
|             "material" |  | ||||||
|             "modus_vivendi" |  | ||||||
|             "molokai" |  | ||||||
|             "nightfly" |  | ||||||
|             "nord" |  | ||||||
|             "oceanicnext" |  | ||||||
|             "onelight" |  | ||||||
|             "palenight" |  | ||||||
|             "papercolor_dark" |  | ||||||
|             "papercolor_light" |  | ||||||
|             "powerline" |  | ||||||
|             "seoul256" |  | ||||||
|             "solarized_dark" |  | ||||||
|             "tomorrow" |  | ||||||
|             "wombat" |  | ||||||
|           ] |  | ||||||
|           ++ optional themeSupported config.vim.theme.name); |  | ||||||
|         default = "auto"; |         default = "auto"; | ||||||
|         # TODO: xml generation error if the closing '' is on a new line. |         # TODO: xml generation error if the closing '' is on a new line. | ||||||
|         # issue: https://gitlab.com/rycee/nmd/-/issues/10 |         # issue: https://gitlab.com/rycee/nmd/-/issues/10 | ||||||
|         defaultText = ''`config.vim.theme.name` if theme supports lualine else "auto"''; |         defaultText = ''`config.vim.theme.name` if theme supports lualine else "auto"''; | ||||||
|  |         description = "Theme for lualine"; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|     sectionSeparator = { |     sectionSeparator = { | ||||||
|  | @ -171,15 +165,14 @@ in { | ||||||
|               "filetype", |               "filetype", | ||||||
|               colored = true, |               colored = true, | ||||||
|               icon_only = true, |               icon_only = true, | ||||||
|               icon = { align = 'left' }, |               icon = { align = 'left' } | ||||||
|               color = {bg='${colorPuccin}', fg='lavender'}, |  | ||||||
|             } |             } | ||||||
|           '' |           '' | ||||||
|           '' |           '' | ||||||
|             { |             { | ||||||
|               "filename", |               "filename", | ||||||
|               color = {bg='${colorPuccin}'}, |               symbols = {modified = ' ', readonly = ' '}, | ||||||
|               symbols = {modified = '', readonly = ''}, |               separator = {right = ''} | ||||||
|             } |             } | ||||||
|           '' |           '' | ||||||
|         ]; |         ]; | ||||||
|  | @ -200,13 +193,7 @@ in { | ||||||
|                 removed  = 'DiffDelete', -- Changes the diff's removed color you |                 removed  = 'DiffDelete', -- Changes the diff's removed color you | ||||||
|               }, |               }, | ||||||
|               symbols = {added = '+', modified = '~', removed = '-'}, -- Changes the diff symbols |               symbols = {added = '+', modified = '~', removed = '-'}, -- Changes the diff symbols | ||||||
|               color = { |               separator = {right = ''} | ||||||
|                 bg='${colorPuccin}', |  | ||||||
|                 fg='lavender' |  | ||||||
|               }, |  | ||||||
|               separator = { |  | ||||||
|                 right = '' |  | ||||||
|               }, |  | ||||||
|             } |             } | ||||||
|           '' |           '' | ||||||
|         ]; |         ]; | ||||||
|  | @ -251,10 +238,6 @@ in { | ||||||
|                 return msg |                 return msg | ||||||
|               end, |               end, | ||||||
|               icon = ' ', |               icon = ' ', | ||||||
|               color = {bg='${colorPuccin}', fg='lavender'}, |  | ||||||
|               separator = { |  | ||||||
|                 left = '', |  | ||||||
|               }, |  | ||||||
|             } |             } | ||||||
|           '' |           '' | ||||||
|           '' |           '' | ||||||
|  | @ -262,7 +245,6 @@ in { | ||||||
|               "diagnostics", |               "diagnostics", | ||||||
|               sources = {'nvim_lsp', 'nvim_diagnostic', 'coc'}, |               sources = {'nvim_lsp', 'nvim_diagnostic', 'coc'}, | ||||||
|               symbols = {error = '  ', warn = '  ', info = '  ', hint = ' '}, |               symbols = {error = '  ', warn = '  ', info = '  ', hint = ' '}, | ||||||
|               color = {bg='${colorPuccin}', fg='lavender'}, |  | ||||||
|               diagnostics_color = { |               diagnostics_color = { | ||||||
|                 color_error = { fg = 'red' }, |                 color_error = { fg = 'red' }, | ||||||
|                 color_warn = { fg = 'yellow' }, |                 color_warn = { fg = 'yellow' }, | ||||||
|  | @ -282,14 +264,16 @@ in { | ||||||
|               'searchcount', |               'searchcount', | ||||||
|               maxcount = 999, |               maxcount = 999, | ||||||
|               timeout = 120, |               timeout = 120, | ||||||
|               color = {bg='${colorPuccin}', fg='lavender'} | 
 | ||||||
|             } |             } | ||||||
|           '' |           '' | ||||||
|           '' |           '' | ||||||
|             { |             { | ||||||
|               "branch", |               "branch", | ||||||
|               icon = ' •', |               icon = ' •', | ||||||
|               color = {bg='${colorPuccin}', fg='lavender'}, |               separator = { | ||||||
|  |                 left = '', | ||||||
|  |               }, | ||||||
|             } |             } | ||||||
|           '' |           '' | ||||||
|         ]; |         ]; | ||||||
|  | @ -300,17 +284,10 @@ in { | ||||||
|         description = "active config for: | A | B | C       X | Y | (Z) |"; |         description = "active config for: | A | B | C       X | Y | (Z) |"; | ||||||
|         default = [ |         default = [ | ||||||
|           '' |           '' | ||||||
|             { |             {"progress"} | ||||||
|               "progress", |  | ||||||
|               separator = { |  | ||||||
|                 left = '', |  | ||||||
|               }, |  | ||||||
|             } |  | ||||||
|           '' |           '' | ||||||
|           '' |           '' | ||||||
|             { |             {"location"} | ||||||
|               "location", |  | ||||||
|             } |  | ||||||
|           '' |           '' | ||||||
|           '' |           '' | ||||||
|             { |             { | ||||||
|  | @ -326,32 +303,38 @@ in { | ||||||
|         ]; |         ]; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|  | 
 | ||||||
|     extraActiveSection = { |     extraActiveSection = { | ||||||
|       a = mkOption { |       a = mkOption { | ||||||
|         type = listOf str; |         type = listOf str; | ||||||
|         description = "Extra entries for activeSection.a"; |         description = "Extra entries for activeSection.a"; | ||||||
|         default = []; |         default = []; | ||||||
|       }; |       }; | ||||||
|  | 
 | ||||||
|       b = mkOption { |       b = mkOption { | ||||||
|         type = listOf str; |         type = listOf str; | ||||||
|         description = "Extra entries for activeSection.b"; |         description = "Extra entries for activeSection.b"; | ||||||
|         default = []; |         default = []; | ||||||
|       }; |       }; | ||||||
|  | 
 | ||||||
|       c = mkOption { |       c = mkOption { | ||||||
|         type = listOf str; |         type = listOf str; | ||||||
|         description = "Extra entries for activeSection.c"; |         description = "Extra entries for activeSection.c"; | ||||||
|         default = []; |         default = []; | ||||||
|       }; |       }; | ||||||
|  | 
 | ||||||
|       x = mkOption { |       x = mkOption { | ||||||
|         type = listOf str; |         type = listOf str; | ||||||
|         description = "Extra entries for activeSection.x"; |         description = "Extra entries for activeSection.x"; | ||||||
|         default = []; |         default = []; | ||||||
|       }; |       }; | ||||||
|  | 
 | ||||||
|       y = mkOption { |       y = mkOption { | ||||||
|         type = listOf str; |         type = listOf str; | ||||||
|         description = "Extra entries for activeSection.y"; |         description = "Extra entries for activeSection.y"; | ||||||
|         default = []; |         default = []; | ||||||
|       }; |       }; | ||||||
|  | 
 | ||||||
|       z = mkOption { |       z = mkOption { | ||||||
|         type = listOf str; |         type = listOf str; | ||||||
|         description = "Extra entries for activeSection.z"; |         description = "Extra entries for activeSection.z"; | ||||||
|  | @ -402,26 +385,31 @@ in { | ||||||
|         description = "Extra entries for inactiveSection.a"; |         description = "Extra entries for inactiveSection.a"; | ||||||
|         default = []; |         default = []; | ||||||
|       }; |       }; | ||||||
|  | 
 | ||||||
|       b = mkOption { |       b = mkOption { | ||||||
|         type = listOf str; |         type = listOf str; | ||||||
|         description = "Extra entries for inactiveSection.b"; |         description = "Extra entries for inactiveSection.b"; | ||||||
|         default = []; |         default = []; | ||||||
|       }; |       }; | ||||||
|  | 
 | ||||||
|       c = mkOption { |       c = mkOption { | ||||||
|         type = listOf str; |         type = listOf str; | ||||||
|         description = "Extra entries for inactiveSection.c"; |         description = "Extra entries for inactiveSection.c"; | ||||||
|         default = []; |         default = []; | ||||||
|       }; |       }; | ||||||
|  | 
 | ||||||
|       x = mkOption { |       x = mkOption { | ||||||
|         type = listOf str; |         type = listOf str; | ||||||
|         description = "Extra entries for inactiveSection.x"; |         description = "Extra entries for inactiveSection.x"; | ||||||
|         default = []; |         default = []; | ||||||
|       }; |       }; | ||||||
|  | 
 | ||||||
|       y = mkOption { |       y = mkOption { | ||||||
|         type = listOf str; |         type = listOf str; | ||||||
|         description = "Extra entries for inactiveSection.y"; |         description = "Extra entries for inactiveSection.y"; | ||||||
|         default = []; |         default = []; | ||||||
|       }; |       }; | ||||||
|  | 
 | ||||||
|       z = mkOption { |       z = mkOption { | ||||||
|         type = listOf str; |         type = listOf str; | ||||||
|         description = "Extra entries for inactiveSection.z"; |         description = "Extra entries for inactiveSection.z"; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 GitHub
					GitHub