@@ -28,6 +28,8 @@ const (
2828 keyQuit = "q"
2929 keyCtrlC = "ctrl+c"
3030 keyCtrlS = "ctrl+s"
31+ keyCtrlD = "ctrl+d"
32+ keyCtrlU = "ctrl+u"
3133 keyNextConflict = "n"
3234 keyPrevConflict = "p"
3335 keySelectOurs = "h"
@@ -71,6 +73,7 @@ var resolverKeyHelp = []keyHelpEntry{
7173 {key : "gg/G" , description : "top/bottom" },
7274 {key : "zz" , description : "recenter hunk" },
7375 {key : "j/k/up/down" , description : "scroll" },
76+ {key : "ctrl+u/ctrl+d" , description : "half-page" },
7477 {key : "H/L/left/right" , description : "scroll" },
7578 {key : "h" , description : "ours" },
7679 {key : "l" , description : "theirs" },
@@ -99,6 +102,8 @@ var resolverKeyActions = map[string]keyAction{
99102 keyScrollDown : (* model ).handleScrollDown ,
100103 keyScrollUp : (* model ).handleScrollUp ,
101104 keyArrowLeft : (* model ).handleScrollLeft ,
105+ keyCtrlU : (* model ).handleHalfPageUp ,
106+ keyCtrlD : (* model ).handleHalfPageDown ,
102107 keyArrowRight : (* model ).handleScrollRight ,
103108 keyArrowDown : (* model ).handleScrollDown ,
104109 keyArrowUp : (* model ).handleScrollUp ,
@@ -873,6 +878,16 @@ func (m *model) handleScrollUp() (tea.Cmd, error) {
873878 return nil , nil
874879}
875880
881+ func (m * model ) handleHalfPageDown () (tea.Cmd , error ) {
882+ m .scrollVertical (m .halfPageScrollDelta ())
883+ return nil , nil
884+ }
885+
886+ func (m * model ) handleHalfPageUp () (tea.Cmd , error ) {
887+ m .scrollVertical (- m .halfPageScrollDelta ())
888+ return nil , nil
889+ }
890+
876891func (m * model ) handleApplyOurs () (tea.Cmd , error ) {
877892 if err := m .applyResolution (markers .ResolutionOurs ); err != nil {
878893 return nil , fmt .Errorf ("failed to apply ours: %w" , err )
@@ -1114,6 +1129,15 @@ func (m *model) scrollHorizontal(delta int) {
11141129 apply (& m .viewportTheirs )
11151130}
11161131
1132+ func (m * model ) halfPageScrollDelta () int {
1133+ height := max (m .viewportOurs .Height , m .viewportResult .Height )
1134+ delta := height / 2
1135+ if delta < 1 {
1136+ return 1
1137+ }
1138+ return delta
1139+ }
1140+
11171141func (m * model ) scrollVertical (delta int ) {
11181142 apply := func (viewportModel * viewport.Model ) {
11191143 if delta < 0 {
0 commit comments