mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 19:12:38 +00:00 
			
		
		
		
	treewide: standardize border type (#341)
* ui: allow custom listOf str border type * lib: extract shared borderType * remove TODO * allow ["|" "HighlightGroup"] for border char * docs: update rl notes --------- Co-authored-by: raf <raf@notashelf.dev>
This commit is contained in:
		
					parent
					
						
							
								b347757f8a
							
						
					
				
			
			
				commit
				
					
						b499151527
					
				
			
		
					 9 changed files with 29 additions and 23 deletions
				
			
		|  | @ -53,6 +53,7 @@ configuration formats. | ||||||
|   longer filtered and thus should be used instead. |   longer filtered and thus should be used instead. | ||||||
| - Add dap-go for better dap configurations | - Add dap-go for better dap configurations | ||||||
| - Make noice.nvim customizable | - Make noice.nvim customizable | ||||||
|  | - Standardize border style options and add custom borders | ||||||
| 
 | 
 | ||||||
| [rust-tools.nvim]: https://github.com/simrat39/rust-tools.nvim | [rust-tools.nvim]: https://github.com/simrat39/rust-tools.nvim | ||||||
| [rustaceanvim]: https://github.com/mrcjkb/rustaceanvim | [rustaceanvim]: https://github.com/mrcjkb/rustaceanvim | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ | ||||||
|   typesCustom = import ./custom.nix {inherit lib;}; |   typesCustom = import ./custom.nix {inherit lib;}; | ||||||
| in { | in { | ||||||
|   inherit (typesDag) dagOf; |   inherit (typesDag) dagOf; | ||||||
|   inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType; |   inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType; | ||||||
|   inherit (typesLanguage) diagnostics mkGrammarOption; |   inherit (typesLanguage) diagnostics mkGrammarOption; | ||||||
|   inherit (typesCustom) anythingConcatLists char; |   inherit (typesCustom) anythingConcatLists char; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -51,9 +51,13 @@ | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  | 
 | ||||||
|  |   borderPresets = ["none" "single" "double" "rounded" "solid" "shadow"]; | ||||||
| in { | in { | ||||||
|   inherit extraPluginType fromInputs pluginType; |   inherit extraPluginType fromInputs pluginType; | ||||||
| 
 | 
 | ||||||
|  |   borderType = either (enum borderPresets) (listOf (either str (listOf str))); | ||||||
|  | 
 | ||||||
|   pluginsOpt = { |   pluginsOpt = { | ||||||
|     description, |     description, | ||||||
|     example, |     example, | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ | ||||||
|   inherit (lib.strings) optionalString; |   inherit (lib.strings) optionalString; | ||||||
|   inherit (lib.attrsets) mapAttrs; |   inherit (lib.attrsets) mapAttrs; | ||||||
|   inherit (lib.nvim.dag) entryAfter; |   inherit (lib.nvim.dag) entryAfter; | ||||||
|  |   inherit (lib.nvim.lua) toLuaObject; | ||||||
| 
 | 
 | ||||||
|   cfg = config.vim.lsp; |   cfg = config.vim.lsp; | ||||||
| in { | in { | ||||||
|  | @ -22,7 +23,7 @@ in { | ||||||
| 
 | 
 | ||||||
|           ${ |           ${ | ||||||
|             optionalString config.vim.ui.borders.enable '' |             optionalString config.vim.ui.borders.enable '' | ||||||
|               require('lspconfig.ui.windows').default_options.border = '${config.vim.ui.borders.globalStyle}' |               require('lspconfig.ui.windows').default_options.border = ${toLuaObject config.vim.ui.borders.globalStyle} | ||||||
|             '' |             '' | ||||||
|           } |           } | ||||||
|         ''; |         ''; | ||||||
|  |  | ||||||
|  | @ -6,6 +6,7 @@ | ||||||
|   inherit (lib.modules) mkIf; |   inherit (lib.modules) mkIf; | ||||||
|   inherit (lib.nvim.dag) entryAnywhere; |   inherit (lib.nvim.dag) entryAnywhere; | ||||||
|   inherit (lib.nvim.binds) mkSetBinding addDescriptionsToMappings pushDownDefault; |   inherit (lib.nvim.binds) mkSetBinding addDescriptionsToMappings pushDownDefault; | ||||||
|  |   inherit (lib.nvim.lua) toLuaObject; | ||||||
| 
 | 
 | ||||||
|   cfg = config.vim.lsp; |   cfg = config.vim.lsp; | ||||||
| 
 | 
 | ||||||
|  | @ -25,7 +26,7 @@ in { | ||||||
| 
 | 
 | ||||||
|       pluginRC.code-action-menu = entryAnywhere '' |       pluginRC.code-action-menu = entryAnywhere '' | ||||||
|         -- border configuration |         -- border configuration | ||||||
|         vim.g.code_action_menu_window_border = '${config.vim.ui.borders.plugins.code-action-menu.style}' |         vim.g.code_action_menu_window_border = ${toLuaObject config.vim.ui.borders.plugins.code-action-menu.style} | ||||||
| 
 | 
 | ||||||
|         -- show individual sections of the code action menu |         -- show individual sections of the code action menu | ||||||
|         ${lib.optionalString cfg.nvimCodeActionMenu.show.details "vim.g.code_action_menu_show_details = true"} |         ${lib.optionalString cfg.nvimCodeActionMenu.show.details "vim.g.code_action_menu_show_details = true"} | ||||||
|  |  | ||||||
|  | @ -4,31 +4,34 @@ | ||||||
|   ... |   ... | ||||||
| }: let | }: let | ||||||
|   inherit (lib.options) mkOption mkEnableOption; |   inherit (lib.options) mkOption mkEnableOption; | ||||||
|   inherit (lib.lists) optionals; |   inherit (lib.nvim.types) borderType; | ||||||
|   inherit (lib.types) enum; |  | ||||||
| 
 | 
 | ||||||
|   cfg = config.vim.ui.borders; |   cfg = config.vim.ui.borders; | ||||||
| 
 |  | ||||||
|   defaultStyles = ["none" "single" "double" "rounded"]; |  | ||||||
| in { | in { | ||||||
|   options.vim.ui.borders = { |   options.vim.ui.borders = { | ||||||
|     enable = mkEnableOption "visible borders for most windows"; |     enable = mkEnableOption "visible borders for most windows"; | ||||||
| 
 | 
 | ||||||
|     globalStyle = mkOption { |     globalStyle = mkOption { | ||||||
|       type = enum defaultStyles; |       type = borderType; | ||||||
|       default = "rounded"; |       default = "rounded"; | ||||||
|       description = '' |       description = '' | ||||||
|         The global border style to use. |         The global border style to use. | ||||||
|  | 
 | ||||||
|  |         If a list is given, it should have a length of eight or any divisor of | ||||||
|  |         eight. The array will specify the eight chars building up the border in | ||||||
|  |         a clockwise fashion starting with the top-left corner. You can specify | ||||||
|  |         a different highlight group for each character by passing a | ||||||
|  |         [char, "YourHighlightGroup"] instead | ||||||
|       ''; |       ''; | ||||||
|  |       example = ["╔" "═" "╗" "║" "╝" "═" "╚" "║"]; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     # TODO: make per-plugin borders configurable |  | ||||||
|     plugins = let |     plugins = let | ||||||
|       mkPluginStyleOption = name: { |       mkPluginStyleOption = name: { | ||||||
|         enable = mkEnableOption "borders for the ${name} plugin" // {default = cfg.enable;}; |         enable = mkEnableOption "borders for the ${name} plugin" // {default = cfg.enable;}; | ||||||
| 
 | 
 | ||||||
|         style = mkOption { |         style = mkOption { | ||||||
|           type = enum (defaultStyles ++ optionals (name != "which-key") ["shadow"]); |           type = borderType; | ||||||
|           default = cfg.globalStyle; |           default = cfg.globalStyle; | ||||||
|           description = "The border style to use for the ${name} plugin"; |           description = "The border style to use for the ${name} plugin"; | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|  | @ -4,9 +4,9 @@ | ||||||
|   ... |   ... | ||||||
| }: let | }: let | ||||||
|   inherit (lib.options) mkOption mkEnableOption; |   inherit (lib.options) mkOption mkEnableOption; | ||||||
|   inherit (lib.types) nullOr listOf enum bool str int; |   inherit (lib.types) nullOr listOf enum bool str int either; | ||||||
|   inherit (lib.modules) mkRenamedOptionModule; |   inherit (lib.modules) mkRenamedOptionModule; | ||||||
|   inherit (lib.nvim.types) mkPluginSetupOption; |   inherit (lib.nvim.types) mkPluginSetupOption borderType; | ||||||
|   mkSimpleIconOption = default: |   mkSimpleIconOption = default: | ||||||
|     mkOption { |     mkOption { | ||||||
|       inherit default; |       inherit default; | ||||||
|  | @ -212,8 +212,7 @@ in { | ||||||
|           # position = {} |           # position = {} | ||||||
| 
 | 
 | ||||||
|           border = mkOption { |           border = mkOption { | ||||||
|             # TODO: let this type accept a custom string |             type = borderType; | ||||||
|             type = enum ["single" "rounded" "double" "solid" "none"]; |  | ||||||
|             default = config.vim.ui.borders.globalStyle; |             default = config.vim.ui.borders.globalStyle; | ||||||
|             description = "border style to use"; |             description = "border style to use"; | ||||||
|           }; |           }; | ||||||
|  | @ -236,8 +235,7 @@ in { | ||||||
|               */ |               */ | ||||||
| 
 | 
 | ||||||
|               border = mkOption { |               border = mkOption { | ||||||
|                 # TODO: let this type accept a custom string |                 type = borderType; | ||||||
|                 type = nullOr (enum ["single" "rounded" "double" "solid" "none"]); |  | ||||||
|                 default = config.vim.ui.borders.globalStyle; |                 default = config.vim.ui.borders.globalStyle; | ||||||
|                 description = "border style to use for the left section of Navbuddy UI"; |                 description = "border style to use for the left section of Navbuddy UI"; | ||||||
|               }; |               }; | ||||||
|  | @ -254,8 +252,7 @@ in { | ||||||
|               */ |               */ | ||||||
| 
 | 
 | ||||||
|               border = mkOption { |               border = mkOption { | ||||||
|                 # TODO: let this type accept a custom string |                 type = borderType; | ||||||
|                 type = nullOr (enum ["single" "rounded" "double" "solid" "none"]); |  | ||||||
|                 default = config.vim.ui.borders.globalStyle; |                 default = config.vim.ui.borders.globalStyle; | ||||||
|                 description = "border style to use for the middle section of Navbuddy UI"; |                 description = "border style to use for the middle section of Navbuddy UI"; | ||||||
|               }; |               }; | ||||||
|  | @ -265,8 +262,7 @@ in { | ||||||
|             # there is no size option for the right section, it fills the remaining space |             # there is no size option for the right section, it fills the remaining space | ||||||
|             right = { |             right = { | ||||||
|               border = mkOption { |               border = mkOption { | ||||||
|                 # TODO: let this type accept a custom string |                 type = borderType; | ||||||
|                 type = nullOr (enum ["single" "rounded" "double" "solid" "none"]); |  | ||||||
|                 default = config.vim.ui.borders.globalStyle; |                 default = config.vim.ui.borders.globalStyle; | ||||||
|                 description = "border style to use for the right section of Navbuddy UI"; |                 description = "border style to use for the right section of Navbuddy UI"; | ||||||
|               }; |               }; | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ in { | ||||||
| 
 | 
 | ||||||
|         ${optionalString config.vim.ui.borders.plugins.which-key.enable '' |         ${optionalString config.vim.ui.borders.plugins.which-key.enable '' | ||||||
|         window = { |         window = { | ||||||
|           border = "${config.vim.ui.borders.plugins.which-key.style}", |           border = ${toLuaObject config.vim.ui.borders.plugins.which-key.style}, | ||||||
|         }, |         }, | ||||||
|       ''} |       ''} | ||||||
|       }) |       }) | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
|   inherit (lib.options) mkEnableOption mkOption literalExpression; |   inherit (lib.options) mkEnableOption mkOption literalExpression; | ||||||
|   inherit (lib.strings) toUpper; |   inherit (lib.strings) toUpper; | ||||||
|   inherit (lib.types) int float bool str enum listOf attrsOf oneOf nullOr submodule; |   inherit (lib.types) int float bool str enum listOf attrsOf oneOf nullOr submodule; | ||||||
|   inherit (lib.nvim.types) mkPluginSetupOption luaInline; |   inherit (lib.nvim.types) mkPluginSetupOption luaInline borderType; | ||||||
|   inherit (lib.generators) mkLuaInline; |   inherit (lib.generators) mkLuaInline; | ||||||
| in { | in { | ||||||
|   imports = [ |   imports = [ | ||||||
|  | @ -453,7 +453,7 @@ in { | ||||||
|           }; |           }; | ||||||
|           border = mkOption { |           border = mkOption { | ||||||
|             description = "Border style of the notification window"; |             description = "Border style of the notification window"; | ||||||
|             type = enum ["none" "single" "double" "rounded" "solid" "shadow"]; |             type = borderType; | ||||||
|             default = |             default = | ||||||
|               if config.vim.ui.borders.enable |               if config.vim.ui.borders.enable | ||||||
|               then config.vim.ui.borders.globalStyle |               then config.vim.ui.borders.globalStyle | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ching Pei Yang
				Ching Pei Yang