diff --git a/src/terminal.go b/src/terminal.go index a79d166f..094d3c91 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -1235,9 +1235,14 @@ func (t *Terminal) ansiLabelPrinter(str string, color *tui.ColorPair, fill bool) return nil, 0 } printFn := func(window tui.Window, limit int) { - if length > limit { - trimmedRunes, _ := t.trimRight(runes, limit) - window.CPrint(*color, string(trimmedRunes)) + ellipsis := []rune{} + ellipsisWidth := 0 + if !fill { + ellipsis, ellipsisWidth = util.Truncate(t.ellipsis, limit) + } + if length > limit-ellipsisWidth { + trimmedRunes, _ := t.trimRight(runes, limit-ellipsisWidth) + window.CPrint(*color, string(trimmedRunes)+string(ellipsis)) } else if fill { window.CPrint(*color, util.RepeatToFill(text, length, limit)) } else { diff --git a/test/test_layout.rb b/test/test_layout.rb index ed384712..8aa412d5 100644 --- a/test/test_layout.rb +++ b/test/test_layout.rb @@ -992,6 +992,36 @@ class TestLayout < TestInteractive tmux.until { assert_block(block, it) } end + def test_label_trunction + command = <<~CMD + seq 10 | #{FZF} --style full --border --header-lines=1 --preview ':' \\ + --border-label "#{'b' * 1000}" \\ + --preview-label "#{'p' * 1000}" \\ + --header-label "#{'h' * 1000}" \\ + --header-label "#{'h' * 1000}" \\ + --input-label "#{'i' * 1000}" \\ + --list-label "#{'l' * 1000}" + CMD + writelines(command.lines.map(&:chomp)) + tmux.send_keys("sh #{tempname}", :Enter) + tmux.until do |lines| + text = lines.join + assert_includes text, 'b··' + assert_includes text, 'l··p' + assert_includes text, 'p··' + assert_includes text, 'h··' + assert_includes text, 'i··' + end + end + + def test_separator_no_ellipsis + tmux.send_keys %(seq 10 | #{FZF} --separator "$(seq 1000 | tr '\\n' ' ')"), :Enter + tmux.until do |lines| + assert_equal 10, lines.match_count + refute_includes lines.join, '··' + end + end + def test_header_border_no_pointer_and_marker tmux.send_keys %(seq 10 | #{FZF} --header-lines 1 --header-border sharp --no-list-border --pointer '' --marker ''), :Enter block = <<~BLOCK