Terminate previewer goroutine

pull/3769/head
Junegunn Choi 4 weeks ago
parent 31902b85af
commit 4027f9f193
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627

@ -3000,6 +3000,7 @@ func (t *Terminal) Loop() error {
if t.hasPreviewer() { if t.hasPreviewer() {
go func() { go func() {
var version int64 var version int64
stop := false
for { for {
var items []*Item var items []*Item
var commandTemplate string var commandTemplate string
@ -3009,6 +3010,9 @@ func (t *Terminal) Loop() error {
t.previewBox.Wait(func(events *util.Events) { t.previewBox.Wait(func(events *util.Events) {
for req, value := range *events { for req, value := range *events {
switch req { switch req {
case reqQuit:
stop = true
return
case reqPreviewEnqueue: case reqPreviewEnqueue:
request := value.(previewRequest) request := value.(previewRequest)
commandTemplate = request.template commandTemplate = request.template
@ -3020,6 +3024,9 @@ func (t *Terminal) Loop() error {
} }
events.Clear() events.Clear()
}) })
if stop {
return
}
version++ version++
// We don't display preview window if no match // We don't display preview window if no match
if items[0] != nil { if items[0] != nil {
@ -3174,6 +3181,9 @@ func (t *Terminal) Loop() error {
running := true running := true
code := ExitError code := ExitError
exit := func(getCode func() int) { exit := func(getCode func() int) {
if t.hasPreviewer() {
t.previewBox.Set(reqQuit, nil)
}
if t.listener != nil { if t.listener != nil {
t.listener.Close() t.listener.Close()
} }

Loading…
Cancel
Save