summaryrefslogtreecommitdiff
path: root/lua/bee/plugins/git.lua
diff options
context:
space:
mode:
authorbeeb5k (Vivek Tiwari) <beebeeb5k@gmail.com>2026-06-04 20:25:23 +0530
committerbeeb5k (Vivek Tiwari) <beebeeb5k@gmail.com>2026-06-04 20:25:23 +0530
commitbfe5ef76b95725451707f6061d5dfa5e3b024c61 (patch)
treee61fd46ffbb77e131edbc0ffe1019cef2d7662a9 /lua/bee/plugins/git.lua
parent3ab5bbeda2c86b62999b5a662374c38e3ef0c01b (diff)
Use better Plugins
- codediff - neogit - nvim-surround - hlchunk - fff.nvim - gitsigns
Diffstat (limited to 'lua/bee/plugins/git.lua')
-rw-r--r--lua/bee/plugins/git.lua99
1 files changed, 99 insertions, 0 deletions
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
@@ -37,6 +37,25 @@ return {
end,
},
{
+ "neogit",
+ auto_enable = true,
+ keys = { { "<leader>gg", "<CMD>Neogit<CR>", 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,
event = "DeferredUIEnter",
@@ -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 "<Ignore>"
+ 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 "<Ignore>"
+ end, { expr = true, desc = "Jump to previous hunk" })
+
+ -- Actions
+ -- visual mode
+ map("v", "<leader>hs", function()
+ gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
+ end, { desc = "stage git hunk" })
+ map("v", "<leader>hr", function()
+ gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
+ end, { desc = "reset git hunk" })
+ -- normal mode
+ map("n", "<leader>gs", gs.stage_hunk, { desc = "git stage hunk" })
+ map("n", "<leader>gr", gs.reset_hunk, { desc = "git reset hunk" })
+ map("n", "<leader>gS", gs.stage_buffer, { desc = "git Stage buffer" })
+ map("n", "<leader>gu", gs.undo_stage_hunk, { desc = "undo stage hunk" })
+ map("n", "<leader>gR", gs.reset_buffer, { desc = "git Reset buffer" })
+ map("n", "<leader>gp", gs.preview_hunk, { desc = "preview git hunk" })
+ map("n", "<leader>gb", function()
+ gs.blame_line({ full = false })
+ end, { desc = "git blame line" })
+ -- map('n', '<leader>gd', gs.diffthis, { desc = 'git diff against index' })
+ map("n", "<leader>gD", function()
+ gs.diffthis("~")
+ end, { desc = "git diff against last commit" })
+
+ -- Toggles
+ map("n", "<leader>gtb", gs.toggle_current_line_blame, { desc = "toggle git blame line" })
+ map("n", "<leader>gtd", gs.toggle_deleted, { desc = "toggle git show deleted" })
+
+ -- Text object
+ map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", { desc = "select git hunk" })
+ end,
+ })
+ -- vim.cmd([[hi GitSignsAdd guifg=#04de21]])
+ -- vim.cmd([[hi GitSignsChange guifg=#83fce6]])
+ -- vim.cmd([[hi GitSignsDelete guifg=#fa2525]])
+ end,
+ },
}