diff --git a/internal/tui/turn_viewport.go b/internal/tui/turn_viewport.go index 3c18f1c..7dd7b56 100644 --- a/internal/tui/turn_viewport.go +++ b/internal/tui/turn_viewport.go @@ -236,6 +236,11 @@ func (m turnViewportModel) updateKey(msg tea.KeyMsg) (tea.Model, tea.Cmd) { m.cursor = 0 case tea.KeyEnd: m.cursor = len(m.text) + case tea.KeySpace: + m.text = append(m.text, 0) + copy(m.text[m.cursor+1:], m.text[m.cursor:]) + m.text[m.cursor] = ' ' + m.cursor++ case tea.KeyRunes: if msg.Alt && len(msg.Runes) == 1 { switch msg.Runes[0] { diff --git a/internal/tui/turn_viewport_test.go b/internal/tui/turn_viewport_test.go index 0035559..0c6f421 100644 --- a/internal/tui/turn_viewport_test.go +++ b/internal/tui/turn_viewport_test.go @@ -93,6 +93,18 @@ func TestTurnViewportEditingMatchesMainInput(t *testing.T) { } } +func TestTurnViewportInsertsSpaceKey(t *testing.T) { + m := newTurnViewportModel("qmax > ", nil, nil) + m.text = []rune("hello") + m.cursor = len(m.text) + m, _ = updateTurnViewport(t, m, tea.KeyMsg{Type: tea.KeySpace}) + m, _ = updateTurnViewport(t, m, tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune("world")}) + + if got, want := string(m.text), "hello world"; got != want { + t.Fatalf("text = %q, want %q (space key was dropped)", got, want) + } +} + func TestTurnViewportPreservesDraftWhenTurnFinishes(t *testing.T) { m := newTurnViewportModel("qmax > ", nil, nil) m, _ = updateTurnViewport(t, m, tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune("follow up")})