64 lines
2.6 KiB
Lua
64 lines
2.6 KiB
Lua
local gs = require "gitsigns"
|
|
|
|
gs.setup {
|
|
auto_attach = true,
|
|
attach_to_untracked = false, -- use keymap
|
|
max_file_length = 10000,
|
|
update_debounce = 500,
|
|
-- base = "@", -- index by default
|
|
-- worktrees = {}, -- TODO for dotfiles
|
|
numhl = true,
|
|
signcolumn = false,
|
|
current_line_blame = false,
|
|
sign_priority = 6,
|
|
|
|
diff_opts = {
|
|
internal = true, -- for linematch
|
|
linematch = true, -- align lines
|
|
algorithm = "histogram", -- myers, minimal, patience, histrogram
|
|
},
|
|
preview_config = { border = vim.g.border_bleed },
|
|
}
|
|
|
|
-- Normal
|
|
Lmap("hb", "Blame line", gs.blame_line)
|
|
Lmap("hB", "Blame full", W(gs.blame_line) { full = true })
|
|
Lmap("hs", "Stage hunk", gs.stage_hunk)
|
|
Lmap("hr", "Reset hunk", gs.reset_hunk)
|
|
Lmap("hS", "Stage buffer", gs.stage_buffer)
|
|
Lmap("hR", "Reset buffer", gs.reset_buffer)
|
|
Lmap("hu", "Undo stage hunk", gs.undo_stage_hunk) -- only in current session
|
|
Lmap("hp", "Preview hunk", gs.preview_hunk)
|
|
Lmap("hi", "Inline preview", gs.preview_hunk_inline)
|
|
Lmap("hl", "List hunks", gs.setloclist)
|
|
Lmap("hq", "Qlist all hunks", W(gs.setqflist) "attached")
|
|
Lmap("hQ", "Qlist ALL hunks", W(gs.setqflist) "all")
|
|
Lmap("hs", "x", "Stage region", function() gs.stage_hunk { vim.fn.line ".", vim.fn.line "v" } end)
|
|
Lmap("hr", "x", "Reset region", function() gs.reset_hunk { vim.fn.line ".", vim.fn.line "v" } end)
|
|
-- Toggle
|
|
Lmap("hts", "Signs", gs.toggle_signs)
|
|
Lmap("htn", "Number hl", gs.toggle_numhl)
|
|
Lmap("htl", "Line hl", gs.toggle_linehl)
|
|
Lmap("htd", "Deleted", gs.toggle_deleted)
|
|
Lmap("htw", "Word diff", gs.toggle_word_diff)
|
|
Lmap("htb", "Blame", gs.toggle_current_line_blame)
|
|
-- View file
|
|
Lmap("hvh", "HEAD", W(gs.show) "@")
|
|
Lmap("hvp", "HEAD~", W(gs.show) "~")
|
|
Lmap("hvs", "Staged", gs.show)
|
|
Lmap("hvH", "Diff HEAD", W(gs.diffthis, "@", { split = "belowright" }))
|
|
Lmap("hvP", "Diff HEAD~", W(gs.diffthis, "~", { split = "belowright" }))
|
|
Lmap("hvS", "Diff Staged", W(gs.diffthis, nil, { split = "belowright" }))
|
|
-- Control
|
|
Lmap("hca", "Attach", gs.attach)
|
|
Lmap("hcd", "Detach", gs.detach)
|
|
Lmap("hcD", "Detach all", gs.detach_all)
|
|
Lmap("hcr", "Refresh", gs.refresh)
|
|
Lmap("hcs", "Base->staged", gs.change_base)
|
|
Lmap("hcS", "Base->staged all", W(gs.change_base, nil, true))
|
|
Lmap("hch", "Base->HEAD", W(gs.change_base) "@")
|
|
Lmap("hcH", "Base->HEAD all", W(gs.change_base, "@", true))
|
|
-- Other
|
|
vim.keymap.set({"x", "o"}, "ih", gs.select_hunk, { desc = "Select hunk" })
|
|
MakePair("h", "hunk", gs.next_hunk, gs.prev_hunk)
|