diff --git a/src/terminal.go b/src/terminal.go index d94e54e..6cc4612 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -1202,7 +1202,10 @@ func (t *Terminal) UpdateCount(cnt int, final bool, failedCommand *string) { } func (t *Terminal) changeHeader(header string) bool { - lines := strings.Split(strings.TrimSuffix(header, "\n"), "\n") + var lines []string + if len(header) > 0 { + lines = strings.Split(strings.TrimSuffix(header, "\n"), "\n") + } needFullRedraw := len(t.header0) != len(lines) t.header0 = lines return needFullRedraw @@ -4094,16 +4097,13 @@ func (t *Terminal) Loop() error { case actChangeQuery: t.input = []rune(a.a) t.cx = len(t.input) - case actTransformHeader: - header := t.executeCommand(a.a, false, true, true, false, "") - if t.changeHeader(header) { - req(reqFullRedraw) - } else { - req(reqHeader) + case actChangeHeader, actTransformHeader: + header := a.a + if a.t == actTransformHeader { + header = t.executeCommand(a.a, false, true, true, false, "") } - case actChangeHeader: - if t.changeHeader(a.a) { - req(reqFullRedraw) + if t.changeHeader(header) { + req(reqHeader, reqList, reqPrompt, reqInfo) } else { req(reqHeader) } diff --git a/test/test_go.rb b/test/test_go.rb index c6db562..3b5eb4e 100755 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -3358,11 +3358,13 @@ class TestGoFZF < TestBase end def test_start_on_reload - tmux.send_keys %(echo foo | #{FZF} --header Loading --header-lines 1 --bind 'start:reload:sleep 2; echo bar' --bind 'load:change-header:Loaded'), :Enter + tmux.send_keys %(echo foo | #{FZF} --header Loading --header-lines 1 --bind 'start:reload:sleep 2; echo bar' --bind 'load:change-header:Loaded' --bind space:change-header:), :Enter tmux.until(timeout: 1) { |lines| assert_includes lines[-3], 'Loading' } tmux.until(timeout: 1) { |lines| refute_includes lines[-4], 'foo' } tmux.until { |lines| assert_includes lines[-3], 'Loaded' } tmux.until { |lines| assert_includes lines[-4], 'bar' } + tmux.send_keys :Space + tmux.until { |lines| assert_includes lines[-3], 'bar' } end end