Add gitsigns recommended keymaps (#531)
* Import gitsigns README.md recommended keymaps (and apply stylua) the previously added visual mode for ]c [c is kept. * Add gitsigns keymap descriptions
This commit is contained in:
		
							parent
							
								
									12bd68e8b9
								
							
						
					
					
						commit
						f8c8b08bc1
					
				
							
								
								
									
										59
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										59
									
								
								init.lua
								
								
								
								
							|  | @ -126,11 +126,16 @@ require('lazy').setup({ | |||
|         changedelete = { text = '~' }, | ||||
|       }, | ||||
|       on_attach = function(bufnr) | ||||
|         vim.keymap.set('n', '<leader>hp', require('gitsigns').preview_hunk, { buffer = bufnr, desc = 'Preview git hunk' }) | ||||
| 
 | ||||
|         -- don't override the built-in and fugitive keymaps | ||||
|         local gs = package.loaded.gitsigns | ||||
|         vim.keymap.set({ 'n', 'v' }, ']c', function() | ||||
| 
 | ||||
|         local function map(mode, l, r, opts) | ||||
|           opts = opts or {} | ||||
|           opts.buffer = bufnr | ||||
|           vim.keymap.set(mode, l, r, opts) | ||||
|         end | ||||
| 
 | ||||
|         -- Navigation | ||||
|         map({ 'n', 'v' }, ']c', function() | ||||
|           if vim.wo.diff then | ||||
|             return ']c' | ||||
|           end | ||||
|  | @ -138,8 +143,9 @@ require('lazy').setup({ | |||
|             gs.next_hunk() | ||||
|           end) | ||||
|           return '<Ignore>' | ||||
|         end, { expr = true, buffer = bufnr, desc = 'Jump to next hunk' }) | ||||
|         vim.keymap.set({ 'n', 'v' }, '[c', function() | ||||
|         end, { expr = true, desc = 'Jump to next hunk' }) | ||||
| 
 | ||||
|         map({ 'n', 'v' }, '[c', function() | ||||
|           if vim.wo.diff then | ||||
|             return '[c' | ||||
|           end | ||||
|  | @ -147,7 +153,37 @@ require('lazy').setup({ | |||
|             gs.prev_hunk() | ||||
|           end) | ||||
|           return '<Ignore>' | ||||
|         end, { expr = true, buffer = bufnr, desc = 'Jump to previous hunk' }) | ||||
|         end, { expr = true, desc = 'Jump to previous hunk' }) | ||||
| 
 | ||||
|         -- Actions | ||||
|         -- visual mode | ||||
|         map('v', '<leader>hs', function() | ||||
|           gs.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } | ||||
|         end, { desc = 'stage git hunk' }) | ||||
|         map('v', '<leader>hr', function() | ||||
|           gs.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } | ||||
|         end, { desc = 'reset git hunk' }) | ||||
|         -- normal mode | ||||
|         map('n', '<leader>hs', gs.stage_hunk, { desc = 'git stage hunk' }) | ||||
|         map('n', '<leader>hr', gs.reset_hunk, { desc = 'git reset hunk' }) | ||||
|         map('n', '<leader>hS', gs.stage_buffer, { desc = 'git Stage buffer' }) | ||||
|         map('n', '<leader>hu', gs.undo_stage_hunk, { desc = 'undo stage hunk' }) | ||||
|         map('n', '<leader>hR', gs.reset_buffer, { desc = 'git Reset buffer' }) | ||||
|         map('n', '<leader>hp', gs.preview_hunk, { desc = 'preview git hunk' }) | ||||
|         map('n', '<leader>hb', function() | ||||
|           gs.blame_line { full = false } | ||||
|         end, { desc = 'git blame line' }) | ||||
|         map('n', '<leader>hd', gs.diffthis, { desc = 'git diff against index' }) | ||||
|         map('n', '<leader>hD', function() | ||||
|           gs.diffthis '~' | ||||
|         end, { desc = 'git diff against last commit' }) | ||||
| 
 | ||||
|         -- Toggles | ||||
|         map('n', '<leader>tb', gs.toggle_current_line_blame, { desc = 'toggle git blame line' }) | ||||
|         map('n', '<leader>td', gs.toggle_deleted, { desc = 'toggle git show deleted' }) | ||||
| 
 | ||||
|         -- Text object | ||||
|         map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', { desc = 'select git hunk' }) | ||||
|       end, | ||||
|     }, | ||||
|   }, | ||||
|  | @ -491,11 +527,18 @@ require('which-key').register { | |||
|   ['<leader>c'] = { name = '[C]ode', _ = 'which_key_ignore' }, | ||||
|   ['<leader>d'] = { name = '[D]ocument', _ = 'which_key_ignore' }, | ||||
|   ['<leader>g'] = { name = '[G]it', _ = 'which_key_ignore' }, | ||||
|   ['<leader>h'] = { name = 'More git', _ = 'which_key_ignore' }, | ||||
|   ['<leader>h'] = { name = 'Git [H]unk', _ = 'which_key_ignore' }, | ||||
|   ['<leader>r'] = { name = '[R]ename', _ = 'which_key_ignore' }, | ||||
|   ['<leader>s'] = { name = '[S]earch', _ = 'which_key_ignore' }, | ||||
|   ['<leader>t'] = { name = '[T]oggle', _ = 'which_key_ignore' }, | ||||
|   ['<leader>w'] = { name = '[W]orkspace', _ = 'which_key_ignore' }, | ||||
| } | ||||
| -- register which-key VISUAL mode | ||||
| -- required for visual <leader>hs (hunk stage) to work | ||||
| require('which-key').register({ | ||||
|   ['<leader>'] = { name = 'VISUAL <leader>' }, | ||||
|   ['<leader>h'] = { 'Git [H]unk' }, | ||||
| }, { mode = 'v' }) | ||||
| 
 | ||||
| -- mason-lspconfig requires that these setup functions are called in this order | ||||
| -- before setting up the servers. | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Damjan 9000
						Damjan 9000