return { { "kdheepak/lazygit.nvim", lazy = true, cmd = { "LazyGit", "LazyGitConfig", "LazyGitCurrentFile", "LazyGitFilter", "LazyGitFilterCurrentFile", }, dependencies = { "nvim-lua/plenary.nvim", -- Floating boarders }, keys = { { "lg", "LazyGit", desc = "LazyGit" } } }, { 'lewis6991/gitsigns.nvim', config = function() local gitsigns = require("gitsigns") local function on_attach(bufnr) local function map(mode, l, r, opts) opts = opts or {} opts.buffer = bufnr vim.keymap.set(mode, l, r, opts) end map('n', ']c', function() if vim.wo.diff then vim.cmd.normal({ ']c', bang = true }) else gitsigns.nav_hunk('next') end vim.cmd("normal! zz") -- center cursor end, { silent = true }) map('n', '[c', function() if vim.wo.diff then vim.cmd.normal({ '[c', bang = true }) else gitsigns.nav_hunk('prev') end vim.cmd("normal! zz") -- center cursor end, { silent = true }) -- 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', 'hR', gitsigns.reset_buffer) map('n', 'hp', gitsigns.preview_hunk) map('n', 'hi', gitsigns.preview_hunk_inline) map('n', 'hb', function() gitsigns.blame_line({ full = true }) end) map('n', 'hd', gitsigns.diffthis) map('n', 'hD', function() gitsigns.diffthis('~') end) map('n', 'hQ', function() gitsigns.setqflist('all') end) map('n', 'hq', gitsigns.setqflist) -- Toggles map('n', 'tb', gitsigns.toggle_current_line_blame) map('n', 'tw', gitsigns.toggle_word_diff) -- Text object map({ 'o', 'x' }, 'ih', gitsigns.select_hunk) end gitsigns.setup({ on_attach = on_attach }) end } }