mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	feat: per-plugin border styles
defaults to the value of globalStyle, can be overriden
This commit is contained in:
		
					parent
					
						
							
								0667f1f936
							
						
					
				
			
			
				commit
				
					
						cc1f1b2ed8
					
				
			
		
					 7 changed files with 59 additions and 11 deletions
				
			
		|  | @ -194,6 +194,7 @@ in { | ||||||
|       cmp.setup({ |       cmp.setup({ | ||||||
|         ${optionalString (config.vim.ui.borders.enable) '' |         ${optionalString (config.vim.ui.borders.enable) '' | ||||||
|         -- explicitly enabled by setting ui.borders.enable = true |         -- explicitly enabled by setting ui.borders.enable = true | ||||||
|  |         -- TODO: try to get nvim-cmp to follow global border style | ||||||
|         window = { |         window = { | ||||||
|           completion = cmp.config.window.bordered(), |           completion = cmp.config.window.bordered(), | ||||||
|           documentation = cmp.config.window.bordered(), |           documentation = cmp.config.window.bordered(), | ||||||
|  |  | ||||||
|  | @ -14,7 +14,14 @@ in { | ||||||
| 
 | 
 | ||||||
|     vim.luaConfigRC.lsp-signature = nvim.dag.entryAnywhere '' |     vim.luaConfigRC.lsp-signature = nvim.dag.entryAnywhere '' | ||||||
|       -- Enable lsp signature viewer |       -- Enable lsp signature viewer | ||||||
|       require("lsp_signature").setup() |       require("lsp_signature").setup({ | ||||||
|  |         ${optionalString (config.vim.ui.borders.plugins.lsp-signature.enable) '' | ||||||
|  |         bind = true, -- This is mandatory, otherwise border config won't get registered. | ||||||
|  |         handler_opts = { | ||||||
|  |           border = "${config.vim.ui.borders.plugins.lsp-signature.style}" | ||||||
|  |         } | ||||||
|  |       ''} | ||||||
|  |       }) | ||||||
|     ''; |     ''; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -19,7 +19,9 @@ in { | ||||||
| 
 | 
 | ||||||
|         ${ |         ${ | ||||||
|           # TODO: make border style configurable |           # TODO: make border style configurable | ||||||
|           optionalString (config.vim.ui.borders.enable) "require('lspconfig.ui.windows').default_options.border = 'single'" |           optionalString (config.vim.ui.borders.enable) '' | ||||||
|  |             require('lspconfig.ui.windows').default_options.border = '${config.vim.ui.borders.globalStyle}' | ||||||
|  |           '' | ||||||
|         } |         } | ||||||
|       ''; |       ''; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -40,7 +40,9 @@ in { | ||||||
|       -- Enable lspsaga |       -- Enable lspsaga | ||||||
|       local saga = require 'lspsaga' |       local saga = require 'lspsaga' | ||||||
|       saga.init_lsp_saga({ |       saga.init_lsp_saga({ | ||||||
|          border_style = 'single', |         ${optionalString (config.vim.ui.borders.plugins.lspsaga.enable) '' | ||||||
|  |         border_style = '${config.vim.ui.borders.plugins.lspsaga.style}', | ||||||
|  |       ''} | ||||||
|       }) |       }) | ||||||
|     ''; |     ''; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -27,7 +27,7 @@ in { | ||||||
|     vim.luaConfigRC.codewindow = nvim.dag.entryAnywhere '' |     vim.luaConfigRC.codewindow = nvim.dag.entryAnywhere '' | ||||||
|       local codewindow = require('codewindow') |       local codewindow = require('codewindow') | ||||||
|       codewindow.setup({ |       codewindow.setup({ | ||||||
|         exclude_filetypes = { 'NvimTree', 'orgagenda'}, |         exclude_filetypes = { 'NvimTree', 'orgagenda', 'Alpha'}, | ||||||
|       }) |       }) | ||||||
|     ''; |     ''; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -1,13 +1,43 @@ | ||||||
| {lib, ...}: let | { | ||||||
|   inherit (lib) mkEnableOption mkOption types; |   config, | ||||||
|  |   lib, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib) mkOption mkEnableOption types; | ||||||
|  | 
 | ||||||
|  |   cfg = config.vim.ui.borders; | ||||||
|  | 
 | ||||||
|  |   defaultStyles = ["none" "single" "double" "rounded"]; | ||||||
| in { | in { | ||||||
|   options.vim.ui.borders = { |   options.vim.ui.borders = { | ||||||
|     enable = mkOption { |     enable = mkEnableOption "visible borders for most windows"; | ||||||
|       type = types.bool; | 
 | ||||||
|       default = true; |     globalStyle = mkOption { | ||||||
|       description = "visible borders for most windows"; |       type = types.enum defaultStyles; | ||||||
|  |       default = "rounded"; | ||||||
|  |       description = '' | ||||||
|  |         global border style to use | ||||||
|  |       ''; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     # TODO: make per-plugin borders configurable |     # TODO: make per-plugin borders configurable | ||||||
|  |     plugins = let | ||||||
|  |       mkPluginStyleOption = name: { | ||||||
|  |         enable = mkEnableOption "whether to enable borders for the ${name} plugin" // {default = cfg.enable;}; | ||||||
|  | 
 | ||||||
|  |         style = mkOption { | ||||||
|  |           type = types.enum (defaultStyles ++ lib.optionals (name != "which-key") ["shadow"]); | ||||||
|  |           default = cfg.globalStyle; | ||||||
|  |           description = "border style to use for the ${name} plugin"; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  |     in { | ||||||
|  |       # despite not having it listed in example configuration, which-key does support the rounded type | ||||||
|  |       # additionall, it supports a "shadow" type that is similar to none but is of higher contrast | ||||||
|  |       which-key = mkPluginStyleOption "which-key"; | ||||||
|  |       lspsaga = mkPluginStyleOption "lspsaga"; | ||||||
|  |       nvim-cmp = mkPluginStyleOption "nvim-cmp"; | ||||||
|  |       lsp-signature = mkPluginStyleOption "lsp-signature"; | ||||||
|  |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -18,7 +18,13 @@ in { | ||||||
|           ["<leader>"] = "SPACE", |           ["<leader>"] = "SPACE", | ||||||
|           ["<cr>"] = "RETURN", |           ["<cr>"] = "RETURN", | ||||||
|           ["<tab>"] = "TAB", |           ["<tab>"] = "TAB", | ||||||
|         } |         }, | ||||||
|  | 
 | ||||||
|  |         ${lib.optionalString (config.vim.ui.borders.plugins.which-key.enable) '' | ||||||
|  |         window = { | ||||||
|  |           border = "${config.vim.ui.borders.plugins.which-key.style}", | ||||||
|  |         }, | ||||||
|  |       ''} | ||||||
|       }) |       }) | ||||||
| 
 | 
 | ||||||
|       wk.register({ |       wk.register({ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue