@@ -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