mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	plugins/git: add git-conflict-nvim (#637)
* plugins/git: add git-conflict-nvim; modularize * plugins/git: build git-conflict-nvim ourselves
This commit is contained in:
		
					parent
					
						
							
								e49228d642
							
						
					
				
			
			
				commit
				
					
						a86df770c1
					
				
			
		
					 6 changed files with 88 additions and 1 deletions
				
			
		|  | @ -4,6 +4,7 @@ in { | |||
|   imports = [ | ||||
|     ./gitsigns | ||||
|     ./vim-fugitive | ||||
|     ./git-conflict | ||||
|   ]; | ||||
| 
 | ||||
|   options.vim.git = { | ||||
|  | @ -13,6 +14,7 @@ in { | |||
|       Enabling this option will enable the following plugins: | ||||
|       * gitsigns | ||||
|       * vim-fugitive | ||||
|       * git-conflict | ||||
|     ''; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										40
									
								
								modules/plugins/git/git-conflict/config.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								modules/plugins/git/git-conflict/config.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | |||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib.modules) mkIf mkMerge; | ||||
|   inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding; | ||||
|   inherit (lib.nvim.dag) entryAnywhere; | ||||
|   inherit (lib.nvim.lua) toLuaObject; | ||||
| 
 | ||||
|   cfg = config.vim.git.git-conflict; | ||||
| 
 | ||||
|   self = import ./git-conflict.nix {inherit lib config;}; | ||||
|   gcMappingDefinitions = self.options.vim.git.git-conflict.mappings; | ||||
| 
 | ||||
|   gcMappings = addDescriptionsToMappings cfg.mappings gcMappingDefinitions; | ||||
| in { | ||||
|   config = mkIf cfg.enable (mkMerge [ | ||||
|     { | ||||
|       vim = { | ||||
|         startPlugins = ["git-conflict-nvim"]; | ||||
| 
 | ||||
|         maps = { | ||||
|           normal = mkMerge [ | ||||
|             (mkSetBinding gcMappings.ours "<Plug>(git-conflict-ours)") | ||||
|             (mkSetBinding gcMappings.theirs "<Plug>(git-conflict-theirs)") | ||||
|             (mkSetBinding gcMappings.both "<Plug>(git-conflict-both)") | ||||
|             (mkSetBinding gcMappings.none "<Plug>(git-conflict-none)") | ||||
|             (mkSetBinding gcMappings.prevConflict "<Plug>(git-conflict-prev-conflict)") | ||||
|             (mkSetBinding gcMappings.nextConflict "<Plug>(git-conflict-next-conflict)") | ||||
|           ]; | ||||
|         }; | ||||
| 
 | ||||
|         pluginRC.git-conflict = entryAnywhere '' | ||||
|           require('git-conflict').setup(${toLuaObject ({default_mappings = false;} // cfg.setupOpts)}) | ||||
|         ''; | ||||
|       }; | ||||
|     } | ||||
|   ]); | ||||
| } | ||||
							
								
								
									
										6
									
								
								modules/plugins/git/git-conflict/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								modules/plugins/git/git-conflict/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| { | ||||
|   imports = [ | ||||
|     ./config.nix | ||||
|     ./git-conflict.nix | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										23
									
								
								modules/plugins/git/git-conflict/git-conflict.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								modules/plugins/git/git-conflict/git-conflict.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | |||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib.options) mkEnableOption; | ||||
|   inherit (lib.nvim.binds) mkMappingOption; | ||||
|   inherit (lib.nvim.types) mkPluginSetupOption; | ||||
| in { | ||||
|   options.vim.git.git-conflict = { | ||||
|     enable = mkEnableOption "git-conflict" // {default = config.vim.git.enable;}; | ||||
|     setupOpts = mkPluginSetupOption "git-conflict" {}; | ||||
| 
 | ||||
|     mappings = { | ||||
|       ours = mkMappingOption "Choose Ours [Git-Conflict]" "co"; | ||||
|       theirs = mkMappingOption "Choose Theirs [Git-Conflict]" "ct"; | ||||
|       both = mkMappingOption "Choose Both [Git-Conflict]" "cb"; | ||||
|       none = mkMappingOption "Choose None [Git-Conflict]" "c0"; | ||||
|       prevConflict = mkMappingOption "Go to the previous Conflict [Git-Conflict]" "]x"; | ||||
|       nextConflict = mkMappingOption "Go to the next Conflict [Git-Conflict]" "[x"; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ben Mayer
				Ben Mayer