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 = '~' }, |         changedelete = { text = '~' }, | ||||||
|       }, |       }, | ||||||
|       on_attach = function(bufnr) |       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 |         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 |           if vim.wo.diff then | ||||||
|             return ']c' |             return ']c' | ||||||
|           end |           end | ||||||
|  | @ -138,8 +143,9 @@ require('lazy').setup({ | ||||||
|             gs.next_hunk() |             gs.next_hunk() | ||||||
|           end) |           end) | ||||||
|           return '<Ignore>' |           return '<Ignore>' | ||||||
|         end, { expr = true, buffer = bufnr, desc = 'Jump to next hunk' }) |         end, { expr = true, desc = 'Jump to next hunk' }) | ||||||
|         vim.keymap.set({ 'n', 'v' }, '[c', function() | 
 | ||||||
|  |         map({ 'n', 'v' }, '[c', function() | ||||||
|           if vim.wo.diff then |           if vim.wo.diff then | ||||||
|             return '[c' |             return '[c' | ||||||
|           end |           end | ||||||
|  | @ -147,7 +153,37 @@ require('lazy').setup({ | ||||||
|             gs.prev_hunk() |             gs.prev_hunk() | ||||||
|           end) |           end) | ||||||
|           return '<Ignore>' |           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, |       end, | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|  | @ -491,11 +527,18 @@ require('which-key').register { | ||||||
|   ['<leader>c'] = { name = '[C]ode', _ = 'which_key_ignore' }, |   ['<leader>c'] = { name = '[C]ode', _ = 'which_key_ignore' }, | ||||||
|   ['<leader>d'] = { name = '[D]ocument', _ = 'which_key_ignore' }, |   ['<leader>d'] = { name = '[D]ocument', _ = 'which_key_ignore' }, | ||||||
|   ['<leader>g'] = { name = '[G]it', _ = '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>r'] = { name = '[R]ename', _ = 'which_key_ignore' }, | ||||||
|   ['<leader>s'] = { name = '[S]earch', _ = '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' }, |   ['<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 | -- mason-lspconfig requires that these setup functions are called in this order | ||||||
| -- before setting up the servers. | -- before setting up the servers. | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Damjan 9000
						Damjan 9000