aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua/config/git.lua64
-rw-r--r--nvim-pack-lock.json4
2 files changed, 67 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
diff --git a/nvim-pack-lock.json b/nvim-pack-lock.json
index 38fd051..a92508e 100644
--- a/nvim-pack-lock.json
+++ b/nvim-pack-lock.json
@@ -25,6 +25,10 @@
"rev": "6cd7280adead7f586db6fccbd15d2cac7e2188b9",
"src": "https://github.com/rafamadriz/friendly-snippets"
},
+ "gitsigns.nvim": {
+ "rev": "25050e4ed39e628282831d4cbecb1850454ce915",
+ "src": "https://github.com/lewis6991/gitsigns.nvim"
+ },
"gruvbox.nvim": {
"rev": "154eb5ff5b96d0641307113fa385eaf0d36d9796",
"src": "https://github.com/ellisonleao/gruvbox.nvim"