aboutsummaryrefslogtreecommitdiff
path: root/lua/config
diff options
context:
space:
mode:
Diffstat (limited to 'lua/config')
-rw-r--r--lua/config/git.lua64
1 files changed, 63 insertions, 1 deletions
diff --git a/lua/config/git.lua b/lua/config/git.lua
index 41b4f5a..eaaa57e 100644
--- a/lua/config/git.lua
+++ b/lua/config/git.lua
@@ -1,5 +1,67 @@
vim.pack.add({
- "https://github.com/tpope/vim-fugitive",
+ "https://github.com/lewis6991/gitsigns.nvim",
+})
+
+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
+
+ 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)
+
+ map("n", "<leader>hs", gitsigns.stage_hunk)
+ map("n", "<leader>hr", gitsigns.reset_hunk)
+
+ map("v", "<leader>hs", function()
+ gitsigns.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
+ end)
+
+ map("v", "<leader>hr", function()
+ gitsigns.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
+ end)
+
+ map("n", "<leader>hS", gitsigns.stage_buffer)
+ map("n", "<leader>hR", gitsigns.reset_buffer)
+ map("n", "<leader>hp", gitsigns.preview_hunk)
+ map("n", "<leader>hi", gitsigns.preview_hunk_inline)
+
+ map("n", "<leader>hb", function()
+ gitsigns.blame_line({ full = true })
+ end)
+
+ map("n", "<leader>hd", gitsigns.diffthis)
+
+ map("n", "<leader>hD", function()
+ gitsigns.diffthis("~")
+ end)
+
+ map("n", "<leader>hQ", function()
+ gitsigns.setqflist("all")
+ end)
+ map("n", "<leader>hq", gitsigns.setqflist)
+
+ map("n", "<leader>tb", gitsigns.toggle_current_line_blame)
+ map("n", "<leader>tw", gitsigns.toggle_word_diff)
+ end,
})
local lazygit_buf = nil