aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua52
1 files changed, 29 insertions, 23 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua b/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua
index 4b73f2c..19d9049 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua
@@ -1,7 +1,7 @@
local utils = require("tobyvin.utils")
local M = {}
-M.with_selection = function(callback)
+M.with_range = function(callback)
return function()
callback(utils.buffer.get_visual_range())
end
@@ -11,30 +11,36 @@ M.show_blameline = function()
require("gitsigns").blame_line({ full = true })
end
+M.toggle_blameline = function()
+ require("gitsigns").toggle_current_line_blame()
+end
+
M.on_attach = function(bufnr)
local gitsigns = require("gitsigns")
- local nmap = utils.keymap.group("n", "<leader>g", { desc = "Git", buffer = bufnr })
- nmap("b", gitsigns.blame_line, { desc = "Show blame" })
- nmap("B", M.show_blameline, { desc = "Show blame" })
- nmap("<C-b>", gitsigns.toggle_current_line_blame, { desc = "Toggle blame line" })
- nmap("j", gitsigns.next_hunk, { desc = "Next Hunk" })
- nmap("k", gitsigns.prev_hunk, { desc = "Prev Hunk" })
-
- nmap("p", gitsigns.preview_hunk, { desc = "Preview Hunk" })
- nmap("r", gitsigns.reset_hunk, { desc = "Reset Hunk" })
- nmap("s", gitsigns.stage_hunk, { desc = "Stage Hunk" })
- nmap("u", gitsigns.undo_stage_hunk, { desc = "Undo Stage Hunk" })
-
- -- nmap("P", gitsigns.preview_buffer, { desc = "Preview Buffer" })
- nmap("R", gitsigns.reset_buffer, { desc = "Reset Buffer" })
- nmap("S", gitsigns.stage_buffer, { desc = "Stage Buffer" })
- nmap("U", gitsigns.reset_buffer_index, { desc = "Undo Stage Buffer" })
-
- local vmap = utils.keymap.group("v", "<leader>g", { desc = "Git", buffer = bufnr })
- vmap("p", M.with_selection(gitsigns.preview_hunk), { desc = "Preview Hunk" })
- vmap("r", M.with_selection(gitsigns.reset_hunk), { desc = "Reset Hunk" })
- vmap("s", M.with_selection(gitsigns.stage_hunk), { desc = "Stage Hunk" })
- vmap("u", M.with_selection(gitsigns.undo_stage_hunk), { desc = "Undo Stage Hunk" })
+ utils.keymap.group("n", "<leader>g", { desc = "Git", buffer = bufnr })
+ vim.keymap.set("n", "<leader>gb", gitsigns.blame_line, { desc = "Show blame", buffer = bufnr })
+ vim.keymap.set("n", "<leader>gB", M.show_blameline, { desc = "Show blame", buffer = bufnr })
+ vim.keymap.set("n", "<leader>g<C-b>", M.toggle_blameline, { desc = "Toggle blame", buffer = bufnr })
+ vim.keymap.set("n", "<leader>gj", gitsigns.next_hunk, { desc = "Next Hunk", buffer = bufnr })
+ vim.keymap.set("n", "<leader>gk", gitsigns.prev_hunk, { desc = "Prev Hunk", buffer = bufnr })
+
+ vim.keymap.set("n", "<leader>gp", gitsigns.preview_hunk, { desc = "Preview Hunk", buffer = bufnr })
+ vim.keymap.set("n", "<leader>gr", gitsigns.reset_hunk, { desc = "Reset Hunk", buffer = bufnr })
+ vim.keymap.set("n", "<leader>gs", gitsigns.stage_hunk, { desc = "Stage Hunk", buffer = bufnr })
+ vim.keymap.set("n", "<leader>gu", gitsigns.undo_stage_hunk, { desc = "Undo Stage Hunk", buffer = bufnr })
+
+ -- vim.keymap.set("n", "<leader>gP", gitsigns.preview_buffer, { desc = "Preview Buffer", buffer = bufnr })
+ vim.keymap.set("n", "<leader>gR", gitsigns.reset_buffer, { desc = "Reset Buffer", buffer = bufnr })
+ vim.keymap.set("n", "<leader>gS", gitsigns.stage_buffer, { desc = "Stage Buffer", buffer = bufnr })
+ vim.keymap.set("n", "<leader>gU", gitsigns.reset_buffer_index, { desc = "Undo Stage Buffer", buffer = bufnr })
+
+ utils.keymap.group("v", "<leader>g", { desc = "Git", buffer = bufnr })
+ vim.keymap.set("v", "<leader>gp", M.with_range(gitsigns.preview_hunk), { desc = "Preview Hunk", buffer = bufnr })
+ vim.keymap.set("v", "<leader>gr", M.with_range(gitsigns.reset_hunk), { desc = "Reset Hunk", buffer = bufnr })
+ vim.keymap.set("v", "<leader>gs", M.with_range(gitsigns.stage_hunk), { desc = "Stage Hunk", buffer = bufnr })
+ vim.keymap.set("v", "<leader>gu", M.with_range(gitsigns.undo_stage_hunk), { desc = "Unstage Hunk", buffer = bufnr })
+
+ vim.api.nvim_exec_autocmds("User", { pattern = "GitAttach", data = { buf = bufnr } })
end
M.setup = function()