From bfe5ef76b95725451707f6061d5dfa5e3b024c61 Mon Sep 17 00:00:00 2001 From: "beeb5k (Vivek Tiwari)" Date: Thu, 4 Jun 2026 20:25:23 +0530 Subject: Use better Plugins - codediff - neogit - nvim-surround - hlchunk - fff.nvim - gitsigns --- lua/bee/plugins/git.lua | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) (limited to 'lua/bee/plugins/git.lua') diff --git a/lua/bee/plugins/git.lua b/lua/bee/plugins/git.lua index 78be9b4..ed696cf 100644 --- a/lua/bee/plugins/git.lua +++ b/lua/bee/plugins/git.lua @@ -36,6 +36,25 @@ return { }) end, }, + { + "neogit", + auto_enable = true, + keys = { { "gg", "Neogit", desc = "Open git" } }, + cmd = { "Neogit" }, + after = function(_) + require("neogit").setup() + end, + }, + { + "codediff.nvim", + auto_enable = true, + dep_of = { "neogit" }, + cmd = "CodeDiff", + after = function() + require("codediff").setup() + end, + }, + { "mini.diff", auto_enable = true, @@ -59,4 +78,84 @@ return { }) end, }, + { + "gitsigns.nvim", + auto_enable = true, + event = "DeferredUIEnter", + after = function(_) + require("gitsigns").setup({ + -- See `:help gitsigns.txt` + signs = { + add = { text = "+" }, + change = { text = "~" }, + delete = { text = "_" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + }, + on_attach = function(bufnr) + local gs = package.loaded.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", "v" }, "]c", function() + if vim.wo.diff then + return "]c" + end + vim.schedule(function() + gs.next_hunk() + end) + return "" + end, { expr = true, desc = "Jump to next hunk" }) + + map({ "n", "v" }, "[c", function() + if vim.wo.diff then + return "[c" + end + vim.schedule(function() + gs.prev_hunk() + end) + return "" + end, { expr = true, desc = "Jump to previous hunk" }) + + -- Actions + -- visual mode + map("v", "hs", function() + gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) + end, { desc = "stage git hunk" }) + map("v", "hr", function() + gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) + end, { desc = "reset git hunk" }) + -- normal mode + map("n", "gs", gs.stage_hunk, { desc = "git stage hunk" }) + map("n", "gr", gs.reset_hunk, { desc = "git reset hunk" }) + map("n", "gS", gs.stage_buffer, { desc = "git Stage buffer" }) + map("n", "gu", gs.undo_stage_hunk, { desc = "undo stage hunk" }) + map("n", "gR", gs.reset_buffer, { desc = "git Reset buffer" }) + map("n", "gp", gs.preview_hunk, { desc = "preview git hunk" }) + map("n", "gb", function() + gs.blame_line({ full = false }) + end, { desc = "git blame line" }) + -- map('n', 'gd', gs.diffthis, { desc = 'git diff against index' }) + map("n", "gD", function() + gs.diffthis("~") + end, { desc = "git diff against last commit" }) + + -- Toggles + map("n", "gtb", gs.toggle_current_line_blame, { desc = "toggle git blame line" }) + map("n", "gtd", gs.toggle_deleted, { desc = "toggle git show deleted" }) + + -- Text object + map({ "o", "x" }, "ih", ":Gitsigns select_hunk", { desc = "select git hunk" }) + end, + }) + -- vim.cmd([[hi GitSignsAdd guifg=#04de21]]) + -- vim.cmd([[hi GitSignsChange guifg=#83fce6]]) + -- vim.cmd([[hi GitSignsDelete guifg=#fa2525]]) + end, + }, } -- cgit v1.3.1