diff options
| -rw-r--r-- | lua/config/git.lua | 64 | ||||
| -rw-r--r-- | nvim-pack-lock.json | 4 |
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" |
