Remove immediate flickering on reload action

This commit is contained in:
Junegunn Choi
2019-12-05 22:25:43 +09:00
parent ef80bd401f
commit 394d8cfd18
2 changed files with 11 additions and 3 deletions

View File

@@ -224,10 +224,12 @@ func Run(opts *Options, revision string) {
// Event coordination
reading := true
clearCache := false
ticks := 0
var nextCommand *string
restart := func(command string) {
reading = true
clearCache = true
chunkList.Clear()
header = make([]string, 0, opts.HeaderLines)
go reader.restart(command)
@@ -250,11 +252,10 @@ func Run(opts *Options, revision string) {
switch evt {
case EvtReadNew, EvtReadFin:
clearCache := false
if evt == EvtReadFin && nextCommand != nil {
clearCache = true
restart(*nextCommand)
nextCommand = nil
break
} else {
reading = reading && evt == EvtReadNew
}
@@ -264,6 +265,7 @@ func Run(opts *Options, revision string) {
terminal.UpdateList(PassMerger(&snapshot, opts.Tac))
}
matcher.Reset(snapshot, input(), false, !reading, sort, clearCache)
clearCache = false
case EvtSearchNew:
var command *string
@@ -279,9 +281,11 @@ func Run(opts *Options, revision string) {
} else {
restart(*command)
}
break
}
snapshot, _ := chunkList.Snapshot()
matcher.Reset(snapshot, input(), true, !reading, sort, command != nil)
matcher.Reset(snapshot, input(), true, !reading, sort, clearCache)
clearCache = false
delay = false
case EvtSearchProgress: