return { "lewis6991/gitsigns.nvim", config = function(bufnr) require("gitsigns").setup({ on_attach = function(bufnr) local gitsigns = require("gitsigns") local function map(mode, l, r, opts) opts = opts or {} opts.buffer = bufnr vim.keymap.set(mode, l, r, opts) end -- Navigation -- map('n', ']c', function() -- if vim.wo.diff then -- vim.cmd.normal({ ']c', bang = true }) -- else -- gitsigns.nav_hunk('next') -- end -- end) -- map('n', '[c', function() -- if vim.wo.diff then -- vim.cmd.normal({ '[c', bang = true }) -- else -- gitsigns.nav_hunk('prev') -- end -- end) -- -- Actions -- map('n', 'hs', gitsigns.stage_hunk) -- map('n', 'hr', gitsigns.reset_hunk) -- map('v', 'hs', function() gitsigns.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end) -- map('v', 'hr', function() gitsigns.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end) -- map('n', 'hS', gitsigns.stage_buffer) -- map('n', 'hu', gitsigns.undo_stage_hunk) -- map('n', 'hR', gitsigns.reset_buffer) map("n", "gp", gitsigns.preview_hunk, { desc = "Preview hunk" }) -- map('n', 'hb', function() gitsigns.blame_line { full = true } end) -- map('n', 'tb', gitsigns.toggle_current_line_blame) map("n", "gD", gitsigns.diffthis, { desc = "Diff this" }) -- map('n', 'hD', function() gitsigns.diffthis('~') end) -- map('n', 'td', gitsigns.toggle_deleted) -- -- Text object -- map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk') end, }) end, }