mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	Surround setupopts (#402)
* surround: fix keymaps * surround: make description multi-line
This commit is contained in:
		
					parent
					
						
							
								b637f921d5
							
						
					
				
			
			
				commit
				
					
						7a8b95cf7c
					
				
			
		
					 3 changed files with 28 additions and 105 deletions
				
			
		|  | @ -3,42 +3,29 @@ | |||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib.modules) mkIf mkMerge; | ||||
|   inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding; | ||||
|   inherit (lib.modules) mkIf; | ||||
|   inherit (lib.nvim.dag) entryAnywhere; | ||||
|   inherit (lib.nvim.lua) toLuaObject; | ||||
| 
 | ||||
|   cfg = config.vim.utility.surround; | ||||
|   self = import ./surround.nix {inherit lib config;}; | ||||
|   mappingDefinitions = self.options.vim.utility.surround.mappings; | ||||
|   mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; | ||||
| in { | ||||
|   config = mkIf cfg.enable { | ||||
|     vim = { | ||||
|       startPlugins = [ | ||||
|         "nvim-surround" | ||||
|       ]; | ||||
|       startPlugins = ["nvim-surround"]; | ||||
|       pluginRC.surround = entryAnywhere "require('nvim-surround').setup(${toLuaObject cfg.setupOpts})"; | ||||
| 
 | ||||
|       pluginRC.surround = entryAnywhere '' | ||||
|         require('nvim-surround').setup() | ||||
|       ''; | ||||
| 
 | ||||
|       maps = { | ||||
|         insert = mkMerge [ | ||||
|           (mkIf (mappings.insert != null) (mkSetBinding mappings.insert "<Plug>(nvim-surround-insert)")) | ||||
|           (mkIf (mappings.insertLine != null) (mkSetBinding mappings.insertLine "<Plug>(nvim-surround-insert-line)")) | ||||
|         ]; | ||||
|         normal = mkMerge [ | ||||
|           (mkIf (mappings.normal != null) (mkSetBinding mappings.normal "<Plug>(nvim-surround-normal)")) | ||||
|           (mkIf (mappings.normalCur != null) (mkSetBinding mappings.normalCur "<Plug>(nvim-surround-normal-cur)")) | ||||
|           (mkIf (mappings.normalLine != null) (mkSetBinding mappings.normalLine "<Plug>(nvim-surround-normal-line)")) | ||||
|           (mkIf (mappings.normalCurLine != null) (mkSetBinding mappings.normalCurLine "<Plug>(nvim-surround-normal-cur-line)")) | ||||
|           (mkIf (mappings.delete != null) (mkSetBinding mappings.delete "<Plug>(nvim-surround-delete)")) | ||||
|           (mkIf (mappings.change != null) (mkSetBinding mappings.change "<Plug>(nvim-surround-change)")) | ||||
|         ]; | ||||
|         visualOnly = mkMerge [ | ||||
|           (mkIf (mappings.visual != null) (mkSetBinding mappings.visual "<Plug>(nvim-surround-visual)")) | ||||
|           (mkIf (mappings.visualLine != null) (mkSetBinding mappings.visualLine "<Plug>(nvim-surround-visual-line)")) | ||||
|         ]; | ||||
|       utility.surround.setupOpts.keymaps = mkIf cfg.useVendoredKeybindings { | ||||
|         insert = "<C-g>z"; | ||||
|         insert_line = "<C-g>Z"; | ||||
|         normal = "gz"; | ||||
|         normal_cur = "gZ"; | ||||
|         normal_line = "gzz"; | ||||
|         normal_cur_line = "gZZ"; | ||||
|         visual = "gz"; | ||||
|         visual_line = "gZ"; | ||||
|         delete = "gzd"; | ||||
|         change = "gzr"; | ||||
|         change_line = "gZR"; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
|  |  | |||
|  | @ -1,90 +1,24 @@ | |||
| { | ||||
|   lib, | ||||
|   config, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib.modules) mkIf mkDefault; | ||||
| {lib, ...}: let | ||||
|   inherit (lib.options) mkOption; | ||||
|   inherit (lib.types) bool nullOr str; | ||||
|   inherit (lib.types) bool; | ||||
|   inherit (lib.nvim.types) mkPluginSetupOption; | ||||
| in { | ||||
|   options.vim.utility.surround = { | ||||
|     enable = mkOption { | ||||
|       type = bool; | ||||
|       default = false; | ||||
|       description = "nvim-surround: add/change/delete surrounding delimiter pairs with ease. Note that the default mappings deviate from upstreeam to avoid conflicts with nvim-leap."; | ||||
|       description = '' | ||||
|         nvim-surround: add/change/delete surrounding delimiter pairs with ease. | ||||
|         Note that the default mappings deviate from upstreeam to avoid conflicts | ||||
|         with nvim-leap. | ||||
|       ''; | ||||
|     }; | ||||
|     setupOpts = mkPluginSetupOption "nvim-surround" {}; | ||||
| 
 | ||||
|     useVendoredKeybindings = mkOption { | ||||
|       type = bool; | ||||
|       default = true; | ||||
|       description = "Use alternative set of keybindings that avoids conflicts with other popular plugins, e.g. nvim-leap"; | ||||
|     }; | ||||
|     mappings = { | ||||
|       insert = mkOption { | ||||
|         type = nullOr str; | ||||
|         default = "<C-g>z"; | ||||
|         description = "Add surround character around the cursor"; | ||||
|       }; | ||||
|       insertLine = mkOption { | ||||
|         type = nullOr str; | ||||
|         default = "<C-g>Z"; | ||||
|         description = "Add surround character around the cursor on new lines"; | ||||
|       }; | ||||
|       normal = mkOption { | ||||
|         type = nullOr str; | ||||
|         default = "gz"; | ||||
|         description = "Surround motion with character"; | ||||
|       }; | ||||
|       normalCur = mkOption { | ||||
|         type = nullOr str; | ||||
|         default = "gZ"; | ||||
|         description = "Surround motion with character on new lines"; | ||||
|       }; | ||||
|       normalLine = mkOption { | ||||
|         type = nullOr str; | ||||
|         default = "gzz"; | ||||
|         description = "Surround line with character"; | ||||
|       }; | ||||
|       normalCurLine = mkOption { | ||||
|         type = nullOr str; | ||||
|         default = "gZZ"; | ||||
|         description = "Surround line with character on new lines"; | ||||
|       }; | ||||
|       visual = mkOption { | ||||
|         type = nullOr str; | ||||
|         default = "gz"; | ||||
|         description = "Surround selection with character"; | ||||
|       }; | ||||
|       visualLine = mkOption { | ||||
|         type = nullOr str; | ||||
|         default = "gZ"; | ||||
|         description = "Surround selection with character on new lines"; | ||||
|       }; | ||||
|       delete = mkOption { | ||||
|         type = nullOr str; | ||||
|         default = "gzd"; | ||||
|         description = "Delete surrounding character"; | ||||
|       }; | ||||
|       change = mkOption { | ||||
|         type = nullOr str; | ||||
|         default = "gzr"; | ||||
|         description = "Change surrounding character"; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
|   config.vim.utility.surround = let | ||||
|     cfg = config.vim.utility.surround; | ||||
|   in { | ||||
|     mappings = mkIf (! cfg.useVendoredKeybindings) (mkDefault { | ||||
|       insert = null; | ||||
|       insertLine = null; | ||||
|       normal = null; | ||||
|       normalCur = null; | ||||
|       normalLine = null; | ||||
|       normalCurLine = null; | ||||
|       visual = null; | ||||
|       visualLine = null; | ||||
|       delete = null; | ||||
|       change = null; | ||||
|     }); | ||||
|   }; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 diniamo
				diniamo