90 lines
3.3 KiB
Lua
90 lines
3.3 KiB
Lua
-- Git workflow enhancements: diffview, git-blame, and Octo keymaps
|
|
return {
|
|
-- Diffview: Side-by-side diffs and file history
|
|
{
|
|
"sindrets/diffview.nvim",
|
|
cmd = { "DiffviewOpen", "DiffviewClose", "DiffviewFileHistory", "DiffviewToggleFiles" },
|
|
keys = {
|
|
{ "<leader>gG", "<cmd>DiffviewOpen<cr>", desc = "Diffview: Open" },
|
|
{ "<leader>gD", "<cmd>DiffviewClose<cr>", desc = "Diffview: Close" },
|
|
{ "<leader>gf", "<cmd>DiffviewFileHistory %<cr>", desc = "Diffview: File History" },
|
|
{ "<leader>gF", "<cmd>DiffviewFileHistory<cr>", desc = "Diffview: Branch History" },
|
|
{ "<leader>gm", "<cmd>DiffviewOpen origin/main...HEAD<cr>", desc = "Diffview: Compare to main" },
|
|
{ "<leader>gM", "<cmd>DiffviewOpen origin/master...HEAD<cr>", desc = "Diffview: Compare to master" },
|
|
},
|
|
opts = {
|
|
enhanced_diff_hl = true,
|
|
view = {
|
|
default = {
|
|
layout = "diff2_horizontal",
|
|
},
|
|
merge_tool = {
|
|
layout = "diff3_mixed",
|
|
},
|
|
file_history = {
|
|
layout = "diff2_horizontal",
|
|
},
|
|
},
|
|
file_panel = {
|
|
win_config = {
|
|
position = "left",
|
|
width = 35,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
-- Git blame: Inline blame annotations
|
|
{
|
|
"f-person/git-blame.nvim",
|
|
event = "BufRead",
|
|
opts = {
|
|
enabled = false, -- Disabled by default, toggle with <leader>gB
|
|
date_format = "%r", -- relative time
|
|
message_when_not_committed = "Not committed yet",
|
|
virtual_text_column = 80,
|
|
},
|
|
keys = {
|
|
{ "<leader>gB", "<cmd>GitBlameToggle<cr>", desc = "Toggle Git Blame" },
|
|
{ "<leader>go", "<cmd>GitBlameOpenCommitURL<cr>", desc = "Open Commit in Browser" },
|
|
{ "<leader>gy", "<cmd>GitBlameCopyCommitURL<cr>", desc = "Copy Commit URL" },
|
|
},
|
|
},
|
|
|
|
-- Octo.nvim keymaps (plugin already installed via lazyvim.plugins.extras.util.octo)
|
|
{
|
|
"pwntester/octo.nvim",
|
|
keys = {
|
|
-- PR operations
|
|
{ "<leader>gpl", "<cmd>Octo pr list<cr>", desc = "List PRs" },
|
|
{ "<leader>gpc", "<cmd>Octo pr create<cr>", desc = "Create PR" },
|
|
{ "<leader>gpo", "<cmd>Octo pr checkout<cr>", desc = "Checkout PR" },
|
|
{ "<leader>gpb", "<cmd>Octo pr browser<cr>", desc = "Open PR in Browser" },
|
|
{ "<leader>gpr", "<cmd>Octo pr ready<cr>", desc = "Mark PR Ready" },
|
|
{ "<leader>gpd", "<cmd>Octo pr diff<cr>", desc = "Show PR Diff" },
|
|
{ "<leader>gpm", "<cmd>Octo pr merge<cr>", desc = "Merge PR" },
|
|
-- Issue operations
|
|
{ "<leader>gil", "<cmd>Octo issue list<cr>", desc = "List Issues" },
|
|
{ "<leader>gic", "<cmd>Octo issue create<cr>", desc = "Create Issue" },
|
|
{ "<leader>gib", "<cmd>Octo issue browser<cr>", desc = "Open Issue in Browser" },
|
|
-- Review operations
|
|
{ "<leader>grs", "<cmd>Octo review start<cr>", desc = "Start Review" },
|
|
{ "<leader>grr", "<cmd>Octo review resume<cr>", desc = "Resume Review" },
|
|
{ "<leader>grc", "<cmd>Octo review submit<cr>", desc = "Submit Review" },
|
|
{ "<leader>grd", "<cmd>Octo review discard<cr>", desc = "Discard Review" },
|
|
},
|
|
},
|
|
|
|
-- Which-key group labels for git
|
|
{
|
|
"folke/which-key.nvim",
|
|
opts = {
|
|
spec = {
|
|
{ "<leader>gp", group = "pull requests" },
|
|
{ "<leader>gi", group = "issues" },
|
|
{ "<leader>gr", group = "review" },
|
|
},
|
|
},
|
|
},
|
|
}
|