return { -- Fugitive: The gold standard for Git in Vim { "tpope/vim-fugitive", cmd = { "Git", "G", "Gread", "Gwrite", "Gdiffsplit", "Gvdiffsplit", "Gblame" }, keys = { { "gg", "Gitonly", desc = "Git status (fullscreen)" }, { "gc", "Git commit", desc = "Git commit" }, { "gp", "Git push", desc = "Git push" }, { "gl", "Git pull", desc = "Git pull" }, { "gb", "Git blame", desc = "Git blame" }, { "gd", "Gvdiffsplit", desc = "Git diff vertical" }, { "gr", "Gread", desc = "Git checkout file" }, { "gw", "Gwrite", desc = "Git add file" }, }, }, -- Gitsigns: Git info in the gutter { "lewis6991/gitsigns.nvim", event = { "BufReadPre", "BufNewFile" }, opts = { signs = { add = { text = "│" }, change = { text = "│" }, delete = { text = "_" }, topdelete = { text = "‾" }, changedelete = { text = "│" }, }, signs_staged = { add = { text = "┃" }, change = { text = "┃" }, delete = { text = "_" }, topdelete = { text = "‾" }, changedelete = { text = "┃" }, }, signs_staged_enable = true, signcolumn = true, numhl = false, linehl = false, -- disabled - let colorscheme handle word_diff = false, current_line_blame = false, current_line_blame_opts = { delay = 500, }, }, keys = { { "]g", "Gitsigns next_hunk", desc = "Next hunk" }, { "[g", "Gitsigns prev_hunk", desc = "Prev hunk" }, { "ghs", "Gitsigns stage_hunk", desc = "Stage hunk" }, { "ghr", "Gitsigns reset_hunk", desc = "Reset hunk" }, { "ghp", "Gitsigns preview_hunk", desc = "Preview hunk" }, { "gB", "Gitsigns toggle_current_line_blame", desc = "Toggle line blame" }, }, }, -- Snacks: GitHub integration (browse, issues, PRs) { "folke/snacks.nvim", lazy = false, opts = { gitbrowse = {}, }, keys = { { "go", function() Snacks.gitbrowse() end, desc = "Open in GitHub" }, }, }, -- Diffs.nvim: Better diff highlighting { "barrettruth/diffs.nvim", ft = { "git", "fugitive", "diff" }, config = function() vim.g.diffs = { hide_prefix = true, highlights = { gutter = true, }, } end, }, }