local wk = require("which-key") require("gitsigns").setup { on_attach = function(bufnr) -- Navigation wk.register({ ["]c"] = { "&diff ? ']c' : 'Gitsigns next_hunk'", "Go to next git sign" }, ["[c"] = { "&diff ? '[c' : 'Gitsigns prev_hunk'", "Go to previous git sign" }, }, { mode = "n", buffer = bufnr }) -- Actions wk.register({ h = { name = "Git signs", s = { ":Gitsigns stage_hunk", "Stage hunk" }, r = { ":Gitsigns reset_hunk", "Reset hunk" }, S = { "Gitsigns stage_buffer", "Stage buffer" }, u = { "Gitsigns undo_stage_hunk", "Unstage hunk" }, R = { "Gitsigns reset_buffer", "Reset buffer" }, p = { "Gitsigns preview_hunk", "Preview hunk" }, b = { function() require"gitsigns".blame_line({ full = true }) end, "Blame line" }, d = { "Gitsigns diffthis", "Diff" }, D = { function() require"gitsigns".diffthis('~') end, "Diff" }, }, ht = { name = "Git sign toggles", b = { "Gitsigns toggle_current_line_blame", "Toggle current line" }, d = { "Gitsigns toggle_deleted", "Toggle deleted" }, }, }, { mode = "n", prefix = "", buffer = bufnr }) wk.register({ h = { name = "Git signs", s = { ":Gitsigns stage_hunk", "Stage hunk" }, r = { ":Gitsigns reset_hunk", "Reset hunk" }, }, }, { mode = "v", prefix = "", buffer = bufnr }) -- Text object wk.register({ ih = { ":Gitsigns select_hunk", "Select hunk", mode = "o" }, oh = { ":Gitsigns select_hunk", "Select hunk", mode = "x" }, }, { buffer = bufnr }) end }