diff --git a/CHANGELOG.md b/CHANGELOG.md index 24a13b4..0f63415 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ CHANGELOG fzf --preview "printf '<< \e]8;;http://github.com/junegunn/fzf\e\\Link to \e[32mfz\e[0mf\e]8;;\e\\ >>'" ``` +- The default `--ellipsis` is now `··` instead of `..`. - [vim] A spec can have `exit` callback that is called with the exit status of fzf - This can be used to clean up temporary resources or restore the original state when fzf is closed without a selection - Fixed `--tmux bottom` when the status line is not at the bottom diff --git a/man/man1/fzf.1 b/man/man1/fzf.1 index c960891..811de48 100644 --- a/man/man1/fzf.1 +++ b/man/man1/fzf.1 @@ -526,7 +526,7 @@ lines that follow. Print header before the prompt line .TP .BI "\-\-ellipsis=" "STR" -Ellipsis to show when line is truncated (default: '..') +Ellipsis to show when line is truncated (default: '··') .SS Display .TP .B "\-\-ansi" diff --git a/src/options.go b/src/options.go index 0f903df..55030bd 100644 --- a/src/options.go +++ b/src/options.go @@ -103,7 +103,7 @@ Usage: fzf [options] --header=STR String to print as header --header-lines=N The first N lines of the input are treated as header --header-first Print header before the prompt line - --ellipsis=STR Ellipsis to show when line is truncated (default: '..') + --ellipsis=STR Ellipsis to show when line is truncated (default: '··') Display --ansi Enable processing of ANSI color codes @@ -472,7 +472,7 @@ type Options struct { Header []string HeaderLines int HeaderFirst bool - Ellipsis string + Ellipsis *string Scrollbar *string Margin [4]sizeSpec Padding [4]sizeSpec @@ -578,7 +578,7 @@ func defaultOptions() *Options { Header: make([]string, 0), HeaderLines: 0, HeaderFirst: false, - Ellipsis: "..", + Ellipsis: nil, Scrollbar: nil, Margin: defaultMargin(), Padding: defaultMargin(), @@ -2339,9 +2339,12 @@ func parseOptions(index *int, opts *Options, allArgs []string) error { case "--no-header-first": opts.HeaderFirst = false case "--ellipsis": - if opts.Ellipsis, err = nextString(allArgs, &i, "ellipsis string required"); err != nil { + str, err := nextString(allArgs, &i, "ellipsis string required") + if err != nil { return err } + str = firstLine(str) + opts.Ellipsis = &str case "--preview": if opts.Preview.command, err = nextString(allArgs, &i, "preview command required"); err != nil { return err @@ -2623,7 +2626,8 @@ func parseOptions(index *int, opts *Options, allArgs []string) error { return err } } else if match, value := optString(arg, "--ellipsis="); match { - opts.Ellipsis = value + str := firstLine(value) + opts.Ellipsis = &str } else if match, value := optString(arg, "--preview="); match { opts.Preview.command = value } else if match, value := optString(arg, "--preview-window="); match { diff --git a/src/terminal.go b/src/terminal.go index 3993bce..388548d 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -827,7 +827,6 @@ func NewTerminal(opts *Options, eventBox *util.EventBox, executor *util.Executor headerLines: opts.HeaderLines, header: []string{}, header0: opts.Header, - ellipsis: opts.Ellipsis, ansi: opts.Ansi, tabstop: opts.Tabstop, hasStartActions: false, @@ -884,6 +883,15 @@ func NewTerminal(opts *Options, eventBox *util.EventBox, executor *util.Executor } t.separator, t.separatorLen = t.ansiLabelPrinter(bar, &tui.ColSeparator, true) } + + if opts.Ellipsis != nil { + t.ellipsis = *opts.Ellipsis + } else if t.unicode { + t.ellipsis = "··" + } else { + t.ellipsis = ".." + } + if t.unicode { t.wrapSign = "↳ " t.borderWidth = uniseg.StringWidth("│") diff --git a/test/test_go.rb b/test/test_go.rb index 3b5eb4e..13b96d8 100755 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -1443,7 +1443,7 @@ class TestGoFZF < TestBase [0, 3, 6].each do |off| tmux.prepare tmux.send_keys "#{FZF} --hscroll-off=#{off} -q 0 < #{tempname}", :Enter - tmux.until { |lines| assert lines[-3]&.end_with?((0..off).to_a.join + '..') } + tmux.until { |lines| assert lines[-3]&.end_with?((0..off).to_a.join + '··') } tmux.send_keys '9' tmux.until { |lines| assert lines[-3]&.end_with?('789') } tmux.send_keys :Enter