Skip to content

Commit c996f81

Browse files
committed
feat(nvim): add keymap to diff file vs default branch
1 parent 66f7cdc commit c996f81

1 file changed

Lines changed: 14 additions & 4 deletions

File tree

lua/plugins/fugitive.lua

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,25 @@ return {
2424
vim.fn.search(pattern, "w")
2525
end
2626

27-
local function git_diff_tab()
27+
local function open_gdiff_tab(ref)
2828
vim.cmd("tabedit %")
29-
vim.cmd("Gdiff")
29+
vim.cmd("Gdiff" .. (ref and " " .. ref or ""))
3030
for i = 1, vim.fn.winnr("$") do
3131
vim.api.nvim_win_call(vim.fn.win_getid(i), function()
3232
vim.keymap.set("n", "q", ":tabclose<CR>", { buffer = true, silent = true })
3333
end)
3434
end
3535
end
3636

37+
local function git_diff_default_branch()
38+
local ref = T.git.default_branch()
39+
if not ref then
40+
vim.notify("Could not determine default branch", vim.log.levels.WARN)
41+
return
42+
end
43+
open_gdiff_tab(ref)
44+
end
45+
3746
local function show_range_history()
3847
local start_line = vim.fn.line("v")
3948
local end_line = vim.fn.line(".")
@@ -45,8 +54,9 @@ return {
4554
end
4655

4756
return {
48-
{ "<leader>hd", git_diff_tab, desc = "Git: Gdiff" },
49-
{ "<leader>h%", git_diff_file, desc = "Git: Diff file" },
57+
{ "<leader>hd", open_gdiff_tab, desc = "Git: Gdiff" },
58+
{ "<leader>hb", git_diff_default_branch, desc = "Git: Diff file vs default branch" },
59+
{ "<leader>h%", git_diff_file, desc = "Git: Diff file vs HEAD" },
5060
{ "<leader>hH", git_status, desc = "Git: Status" },
5161
{ "<leader>hl", show_range_history, mode = "v", desc = "Git: Show range history" },
5262
}

0 commit comments

Comments
 (0)