@@ -255,6 +255,33 @@ require('lazy').setup({
255255 topdelete = { text = ' ‾' },
256256 changedelete = { text = ' ~' },
257257 },
258+ on_attach = function (bufnr )
259+ -- Include essential gitsigns keymaps, for more see gitsigns README:
260+ -- https://github.com/lewis6991/gitsigns.nvim
261+ local gs = package.loaded .gitsigns
262+ local function map (mode , l , r , opts )
263+ opts = opts or {}
264+ opts .buffer = bufnr
265+ vim .keymap .set (mode , l , r , opts )
266+ end
267+ -- Navigation
268+ map ({ ' n' , ' v' }, ' ]c' , gs .next_hunk , { desc = ' Jump to next git [c]hange' })
269+ map ({ ' n' , ' v' }, ' [c' , gs .prev_hunk , { desc = ' Jump to previous git [c]hange' })
270+ -- Actions
271+ map (' n' , ' <leader>hs' , gs .stage_hunk , { desc = ' git [s]tage hunk' })
272+ map (' n' , ' <leader>hr' , gs .reset_hunk , { desc = ' git [r]eset hunk' })
273+ map (' n' , ' <leader>hu' , gs .undo_stage_hunk , { desc = ' git [u]ndo stage hunk' })
274+ map (' n' , ' <leader>hp' , gs .preview_hunk , { desc = ' git [p]review hunk' })
275+ map (' n' , ' <leader>hb' , gs .blame_line , { desc = ' git [b]lame line' })
276+ map (' n' , ' <leader>hd' , gs .diffthis , { desc = ' git [d]iff against index' })
277+ -- Visual mode
278+ map (' v' , ' <leader>hs' , function ()
279+ gs .stage_hunk { vim .fn .line ' .' , vim .fn .line ' v' }
280+ end , { desc = ' stage git hunk' })
281+ map (' v' , ' <leader>hr' , function ()
282+ gs .reset_hunk { vim .fn .line ' .' , vim .fn .line ' v' }
283+ end , { desc = ' reset git hunk' })
284+ end ,
258285 },
259286 },
260287
@@ -286,7 +313,13 @@ require('lazy').setup({
286313 [' <leader>r' ] = { name = ' [R]ename' , _ = ' which_key_ignore' },
287314 [' <leader>s' ] = { name = ' [S]earch' , _ = ' which_key_ignore' },
288315 [' <leader>w' ] = { name = ' [W]orkspace' , _ = ' which_key_ignore' },
316+ [' <leader>h' ] = { name = ' Git [H]unk' , _ = ' which_key_ignore' },
317+ [' <leader>t' ] = { name = ' [T]oggle' , _ = ' which_key_ignore' },
289318 }
319+ -- visual mode
320+ require (' which-key' ).register ({
321+ [' <leader>h' ] = { ' Git [H]unk' },
322+ }, { mode = ' v' })
290323 end ,
291324 },
292325
0 commit comments