Skip to content

Commit 2ffbfa1

Browse files
committed
Handle arrow keys
1 parent c70759f commit 2ffbfa1

File tree

3 files changed

+36
-4
lines changed

3 files changed

+36
-4
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,8 @@ Keybindings are vim-like by default.
214214

215215
- n / p: next and previous conflict
216216
- gg / G: jump to top / bottom
217-
- j / k: vertical scroll
218-
- H / L: horizontal scroll
217+
- j / k / up / down: vertical scroll
218+
- H / L / left / right: horizontal scroll
219219

220220
### Selection and apply
221221

internal/tui/tui.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ const (
3434
keyScrollRight = "L"
3535
keyScrollDown = "j"
3636
keyScrollUp = "k"
37+
keyArrowLeft = "left"
38+
keyArrowRight = "right"
39+
keyArrowDown = "down"
40+
keyArrowUp = "up"
3741
keyGoTop = "g"
3842
keyGoBottom = "G"
3943
keyApplyOurs = "o"
@@ -61,8 +65,8 @@ var resolverKeyHelp = []keyHelpEntry{
6165
{key: "n", description: "next"},
6266
{key: "p", description: "prev"},
6367
{key: "gg/G", description: "top/bottom"},
64-
{key: "j/k", description: "scroll"},
65-
{key: "H/L", description: "scroll"},
68+
{key: "j/k/up/down", description: "scroll"},
69+
{key: "H/L/left/right", description: "scroll"},
6670
{key: "h", description: "ours"},
6771
{key: "l", description: "theirs"},
6872
{key: "a/<space>", description: "accept"},
@@ -89,6 +93,10 @@ var resolverKeyActions = map[string]keyAction{
8993
keyScrollRight: (*model).handleScrollRight,
9094
keyScrollDown: (*model).handleScrollDown,
9195
keyScrollUp: (*model).handleScrollUp,
96+
keyArrowLeft: (*model).handleScrollLeft,
97+
keyArrowRight: (*model).handleScrollRight,
98+
keyArrowDown: (*model).handleScrollDown,
99+
keyArrowUp: (*model).handleScrollUp,
92100
keyApplyOurs: (*model).handleApplyOurs,
93101
keyApplyTheirs: (*model).handleApplyTheirs,
94102
keyApplyOursAll: (*model).handleApplyOursAll,

internal/tui/tui_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,18 @@ func TestUpdateScrollHorizontalKeys(t *testing.T) {
511511
if got := result.viewportOurs.View(); got != "01234" {
512512
t.Fatalf("View = %q, want 01234 after H", got)
513513
}
514+
515+
updated, _ = result.Update(tea.KeyMsg{Type: tea.KeyRight})
516+
result = updated.(model)
517+
if got := result.viewportOurs.View(); got != "45678" {
518+
t.Fatalf("View = %q, want 45678 after right", got)
519+
}
520+
521+
updated, _ = result.Update(tea.KeyMsg{Type: tea.KeyLeft})
522+
result = updated.(model)
523+
if got := result.viewportOurs.View(); got != "01234" {
524+
t.Fatalf("View = %q, want 01234 after left", got)
525+
}
514526
}
515527

516528
func TestUpdateKeySeqScroll(t *testing.T) {
@@ -597,6 +609,18 @@ func TestUpdateVerticalScrollKeys(t *testing.T) {
597609
if result.viewportOurs.YOffset != 0 {
598610
t.Fatalf("YOffset = %d, want 0 after k", result.viewportOurs.YOffset)
599611
}
612+
613+
updated, _ = result.Update(tea.KeyMsg{Type: tea.KeyDown})
614+
result = updated.(model)
615+
if result.viewportOurs.YOffset != 1 {
616+
t.Fatalf("YOffset = %d, want 1 after down", result.viewportOurs.YOffset)
617+
}
618+
619+
updated, _ = result.Update(tea.KeyMsg{Type: tea.KeyUp})
620+
result = updated.(model)
621+
if result.viewportOurs.YOffset != 0 {
622+
t.Fatalf("YOffset = %d, want 0 after up", result.viewportOurs.YOffset)
623+
}
600624
}
601625

602626
func TestUpdateWriteKey(t *testing.T) {

0 commit comments

Comments
 (0)