Improved flow
This commit is contained in:
89
lua/plugins/git.lua
Normal file
89
lua/plugins/git.lua
Normal file
@@ -0,0 +1,89 @@
|
||||
-- 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>gd", "<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" },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user