diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core.go | 11 | ||||
| -rw-r--r-- | src/terminal.go | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/core.go b/src/core.go index a4751a55..d4c06f9f 100644 --- a/src/core.go +++ b/src/core.go @@ -299,10 +299,12 @@ func Run(opts *Options, version string, revision string) { case EvtSearchNew: var command *string + var changed bool switch val := value.(type) { case searchRequest: sort = val.sort command = val.command + changed = val.changed if command != nil { useSnapshot = val.sync } @@ -314,10 +316,17 @@ func Run(opts *Options, version string, revision string) { } else { restart(*command) } + } + if !changed { break } if !useSnapshot { - snapshot, _ = chunkList.Snapshot() + newSnapshot, _ := chunkList.Snapshot() + // We want to avoid showing empty list when reload is triggered + // and the query string is changed at the same time i.e. command != nil && changed + if command == nil || len(newSnapshot) > 0 { + snapshot = newSnapshot + } } reset := !useSnapshot && clearCache() matcher.Reset(snapshot, input(reset), true, !reading, sort, reset) diff --git a/src/terminal.go b/src/terminal.go index 3dc2062f..b0771f16 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -408,6 +408,7 @@ type searchRequest struct { sort bool sync bool command *string + changed bool } type previewRequest struct { @@ -3622,7 +3623,7 @@ func (t *Terminal) Loop() { t.mutex.Unlock() // Must be unlocked before touching reqBox if changed || newCommand != nil { - t.eventBox.Set(EvtSearchNew, searchRequest{sort: t.sort, sync: reloadSync, command: newCommand}) + t.eventBox.Set(EvtSearchNew, searchRequest{sort: t.sort, sync: reloadSync, command: newCommand, changed: changed}) } for _, event := range events { t.reqBox.Set(event, nil) |
