return { 'lewis6991/gitsigns.nvim', cmd = 'Gitsigns', event = 'VeryLazy', config = function() require('gitsigns').setup() local function stage_visual_chunk() require('gitsigns').stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) end local function reset_visual_chunk() require('gitsigns').reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) end vim.keymap.set('n', 'gD', 'Gitsigns toggle_deleted', { desc = '[G]it [D]eleted' }) vim.keymap.set('n', 'hp', 'Gitsigns preview_hunk', { desc = '[H]unk [P]review' }) vim.keymap.set('n', 'hs', 'Gitsigns stage_hunk', { desc = '[H]unk [S]tage' }) vim.keymap.set('n', 'hr', 'Gitsigns reset_hunk', { desc = '[H]unk [R]eset' }) vim.keymap.set('v', 'hs', stage_visual_chunk, { desc = '[H]unk [S]tage' }) vim.keymap.set('v', 'hr', reset_visual_chunk, { desc = '[H]unk [S]tage' }) vim.keymap.set('n', 'hS', 'Gitsigns stage_buffer', { desc = '[S]tage Buffer' }) vim.keymap.set('n', 'hR', 'Gitsigns reset_buffer', { desc = '[R]eset Buffer' }) vim.keymap.set('n', 'hu', 'Gitsigns undo_stage_hunk', { desc = '[H]unk [U]ndo' }) vim.keymap.set( 'n', 'gB', 'Gitsigns toggle_current_line_blame', { desc = '[G]it [B]lame Line' } ) end, }