Keep the spinner spinning even when the source stream is idle

This commit is contained in:
Junegunn Choi 2015-06-18 00:42:38 +09:00
parent fe4e452d68
commit d261c36cde

View File

@ -197,6 +197,7 @@ func NewTerminal(opts *Options, eventBox *util.EventBox) *Terminal {
printQuery: opts.PrintQuery, printQuery: opts.PrintQuery,
history: opts.History, history: opts.History,
cycle: opts.Cycle, cycle: opts.Cycle,
reading: true,
merger: EmptyMerger, merger: EmptyMerger,
selected: make(map[uint32]selectedItem), selected: make(map[uint32]selectedItem),
reqBox: util.NewEventBox(), reqBox: util.NewEventBox(),
@ -630,6 +631,20 @@ func (t *Terminal) Loop() {
t.reqBox.Set(reqRedraw, nil) t.reqBox.Set(reqRedraw, nil)
} }
}() }()
// Keep the spinner spinning
go func() {
for {
t.mutex.Lock()
reading := t.reading
t.mutex.Unlock()
if !reading {
break
}
time.Sleep(spinnerDuration)
t.reqBox.Set(reqInfo, nil)
}
}()
} }
exit := func(code int) { exit := func(code int) {