From 7e1c0f39e76864ad0aa4d5c88d074b1055a617a6 Mon Sep 17 00:00:00 2001
From: Junegunn Choi <junegunn.c@gmail.com>
Date: Tue, 12 Nov 2019 00:10:24 +0900
Subject: [PATCH] 'reload' action should reset --header-lines

---
 src/core.go     | 13 ++++++++-----
 test/test_go.rb | 10 +++++-----
 2 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/core.go b/src/core.go
index c5ad235..087c7df 100644
--- a/src/core.go
+++ b/src/core.go
@@ -225,6 +225,12 @@ func Run(opts *Options, revision string) {
 	reading := true
 	ticks := 0
 	var nextCommand *string
+	restart := func(command string) {
+		reading = true
+		chunkList.Clear()
+		header = make([]string, 0, opts.HeaderLines)
+		go reader.restart(command)
+	}
 	eventBox.Watch(EvtReadNew)
 	for {
 		delay := true
@@ -245,9 +251,8 @@ func Run(opts *Options, revision string) {
 				case EvtReadNew, EvtReadFin:
 					clearCache := false
 					if evt == EvtReadFin && nextCommand != nil {
-						chunkList.Clear()
 						clearCache = true
-						go reader.restart(*nextCommand)
+						restart(*nextCommand)
 						nextCommand = nil
 					} else {
 						reading = reading && evt == EvtReadNew
@@ -271,9 +276,7 @@ func Run(opts *Options, revision string) {
 							reader.terminate()
 							nextCommand = command
 						} else {
-							reading = true
-							chunkList.Clear()
-							go reader.restart(*command)
+							restart(*command)
 						}
 					}
 					snapshot, _ := chunkList.Snapshot()
diff --git a/test/test_go.rb b/test/test_go.rb
index 1dbbf5c..a441e5e 100755
--- a/test/test_go.rb
+++ b/test/test_go.rb
@@ -1623,14 +1623,14 @@ class TestGoFZF < TestBase
   end
 
   def test_reload
-    tmux.send_keys %(seq 1000 | #{FZF} --bind 'change:reload(seq {q}),a:reload(seq 100),b:reload:seq 200'), :Enter
-    tmux.until { |lines| lines.match_count == 1000 }
+    tmux.send_keys %(seq 1000 | #{FZF} --bind 'change:reload(seq {q}),a:reload(seq 100),b:reload:seq 200' --header-lines 2), :Enter
+    tmux.until { |lines| lines.match_count == 998 }
     tmux.send_keys 'a'
-    tmux.until { |lines| lines.item_count == 100 && lines.match_count == 100 }
+    tmux.until { |lines| lines.item_count == 98 && lines.match_count == 98 }
     tmux.send_keys 'b'
-    tmux.until { |lines| lines.item_count == 200 && lines.match_count == 200 }
+    tmux.until { |lines| lines.item_count == 198 && lines.match_count == 198 }
     tmux.send_keys '555'
-    tmux.until { |lines| lines.item_count == 555 && lines.match_count == 1 }
+    tmux.until { |lines| lines.item_count == 553 && lines.match_count == 1 }
   end
 end