From 5c6453b07ca921757c3451086d63939e84e1e2cf Mon Sep 17 00:00:00 2001 From: Maas Lalani Date: Sat, 30 Jul 2022 22:12:59 -0400 Subject: [PATCH] fix(choose): ctrl+c aborts with exit 130 --- choose/choose.go | 6 ++---- choose/command.go | 10 ++++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/choose/choose.go b/choose/choose.go index 3371685..825cab4 100644 --- a/choose/choose.go +++ b/choose/choose.go @@ -32,6 +32,7 @@ type model struct { limit int numSelected int paginator paginator.Model + aborted bool // styles cursorStyle lipgloss.Style @@ -71,11 +72,8 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.index = clamp(m.index-m.height, 0, len(m.items)-1) m.paginator.PrevPage() case "ctrl+c": + m.aborted = true m.quitting = true - // Ctrl+C should unselect all items - for i := range m.items { - m.items[i].selected = false - } return m, tea.Quit case " ", "x": if m.limit == 1 { diff --git a/choose/command.go b/choose/command.go index 14ba482..01654d6 100644 --- a/choose/command.go +++ b/choose/command.go @@ -9,6 +9,7 @@ import ( "github.com/alecthomas/kong" "github.com/charmbracelet/bubbles/paginator" tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/gum/internal/exit" "github.com/charmbracelet/gum/internal/stdin" "github.com/charmbracelet/gum/style" "github.com/charmbracelet/lipgloss" @@ -64,7 +65,7 @@ func (o Options) Run() error { pager.UseJKKeys = false pager.UsePgUpPgDownKeys = false - m, err := tea.NewProgram(model{ + tm, err := tea.NewProgram(model{ height: o.Height, cursor: o.Cursor, selectedPrefix: o.SelectedPrefix, @@ -78,9 +79,14 @@ func (o Options) Run() error { selectedItemStyle: o.SelectedItemStyle.ToLipgloss(), }, tea.WithOutput(os.Stderr)).StartReturningModel() + m := tm.(model) + if m.aborted { + return exit.ErrAborted + } + var s strings.Builder - for _, item := range m.(model).items { + for _, item := range m.items { if item.selected { s.WriteString(item.text) s.WriteRune('\n')