From 6ed2f36928943efaddc9ba146b2ca414dfb4d7c1 Mon Sep 17 00:00:00 2001 From: aoife cassidy Date: Sat, 15 Mar 2025 09:12:52 +0200 Subject: [PATCH] commit autocomplete automatically on up/down --- app/settings.go | 6 ++++++ ui/autocomplete.go | 18 +++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/settings.go b/app/settings.go index d7da4ef..159f9e5 100644 --- a/app/settings.go +++ b/app/settings.go @@ -28,10 +28,16 @@ func (view *Settings) Event(state *ui.State, event vaxis.Event) (processed bool) case "Ctrl+c", "Ctrl+d": close(ui.Quit) case "Up": + if view.index == 3 { + view.inputs[2].Update(event) + } if view.index > 0 { view.index-- } case "Down": + if view.index == 3 { + view.inputs[2].Update(event) + } if view.index < 4 { view.index++ } diff --git a/ui/autocomplete.go b/ui/autocomplete.go index c70084a..efa5f6d 100644 --- a/ui/autocomplete.go +++ b/ui/autocomplete.go @@ -13,9 +13,7 @@ type Input struct { Placeholder string } -func (m *Input) Draw(win vaxis.Window) { - // figure out which thing to complete - rest := "" +func complete(m *Input) (rest string) { if m.model.String() != "" { for _, comp := range m.AutoComplete { if strings.HasPrefix(comp, m.model.String()) { @@ -26,11 +24,25 @@ func (m *Input) Draw(win vaxis.Window) { } else { rest = m.Placeholder } + return +} + +func (m *Input) Draw(win vaxis.Window) { + // figure out which thing to complete + rest := complete(m) m.model.Draw(win) win.New(len(m.model.String()), 0, win.Width, win.Height).Print(vaxis.Segment{Text: rest, Style: vaxis.Style{Foreground: vaxis.IndexColor(8)}}) } func (m *Input) Update(event vaxis.Event) { + if key, ok := event.(vaxis.Key); ok && key.EventType == vaxis.EventPress { + switch key.String() { + case "Up", "Down": + if m.model.String() != "" { + m.model.SetContent(m.model.String() + complete(m)) + } + } + } m.model.Update(event) }