diff --git a/dot_config/nvim/lua/config/gitsigns.lua b/dot_config/nvim/lua/config/gitsigns.lua index 8e08eff..1967363 100644 --- a/dot_config/nvim/lua/config/gitsigns.lua +++ b/dot_config/nvim/lua/config/gitsigns.lua @@ -1,4 +1,48 @@ require("gitsigns").setup({ + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + + -- Navigation + Map("n", "]c", function() + if vim.wo.diff then + return "]c" + end + vim.schedule(function() + gs.next_hunk() + end) + return "" + end, { expr = true }) + + Map("n", "[c", function() + if vim.wo.diff then + return "[c" + end + vim.schedule(function() + gs.prev_hunk() + end) + return "" + end, { expr = true }) + + -- Actions + Map({ "n", "v" }, "hs", ":Gitsigns stage_hunk") + Map({ "n", "v" }, "hr", ":Gitsigns reset_hunk") + Map("n", "hS", gs.stage_buffer) + Map("n", "hu", gs.undo_stage_hunk) + Map("n", "hR", gs.reset_buffer) + Map("n", "hp", gs.preview_hunk) + Map("n", "hb", function() + gs.blame_line({ full = true }) + end) + Map("n", "tb", gs.toggle_current_line_blame) + Map("n", "hd", gs.diffthis) + Map("n", "hD", function() + gs.diffthis("~") + end) + Map("n", "td", gs.toggle_deleted) + + -- Text object + Map({ "o", "x" }, "ih", ":Gitsigns select_hunk") + end, signs = { add = { hl = "GitSignsAdd",