From 865144850da99307fa3345f78de792ddbb1bd260 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Fri, 9 Oct 2020 21:56:16 +0900 Subject: [PATCH] Add nowrap, nocycle, nohidden for --preview-window Close #2203 --- CHANGELOG.md | 7 ++++--- man/man1/fzf.1 | 14 +------------- src/options.go | 15 +++++++++------ src/options_test.go | 4 ++-- 4 files changed, 16 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8aae9e54..729d8412 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,10 @@ CHANGELOG 0.23.1 ------ -- Reset `hidden` flag and scroll offset of `--preview-window` if another - `--preview-window` is found. We should only keep style-related flags across - multiple `--preview-window` options. +- Added `--preview-window` options for disabling flags + - `nocycle` + - `nohidden` + - `nowrap` 0.23.0 ------ diff --git a/man/man1/fzf.1 b/man/man1/fzf.1 index 22171be3..d571542d 100644 --- a/man/man1/fzf.1 +++ b/man/man1/fzf.1 @@ -381,7 +381,7 @@ Preview window will be updated even when there is no match for the current query if any of the placeholder expressions evaluates to a non-empty string. .RE .TP -.BI "--preview-window=" "[POSITION][:SIZE[%]][:rounded|sharp|noborder][:wrap][:cycle][:hidden][:+SCROLL[-OFFSET]]" +.BI "--preview-window=" "[POSITION][:SIZE[%]][:rounded|sharp|noborder][:[no]wrap][:[no]cycle][:[no]hidden][:+SCROLL[-OFFSET]]" .RS .B POSITION: (default: right) @@ -430,18 +430,6 @@ e.g. .RE -You can write style-related flags across multiple \fB--preview-window\fR -options. But flags that are not style-related such as \fBhidden\fR and scroll -offset are only allowed in the last \fB--preview-window\fR. - -.RS -e.g. - export FZF_DEFAULT_OPTS='--preview-window sharp:cycle' - - # sharp + cycle + up + 50% - fzf --preview-window 'up' --preview-window '50%' --preview 'bat {}' -.RE - .SS Scripting .TP .BI "-q, --query=" "STR" diff --git a/src/options.go b/src/options.go index c7354b35..51e5001c 100644 --- a/src/options.go +++ b/src/options.go @@ -80,9 +80,10 @@ const usage = `usage: fzf [options] Preview --preview=COMMAND Command to preview highlighted line ({}) --preview-window=OPT Preview window layout (default: right:50%) - [up|down|left|right][:SIZE[%]][:wrap][:cycle][:hidden] - [:+SCROLL[-OFFSET]] + [up|down|left|right][:SIZE[%]] + [:[no]wrap][:[no]cycle][:[no]hidden] [:rounded|sharp|noborder] + [:+SCROLL[-OFFSET]] Scripting -q, --query=STR Start the finder with the given query @@ -994,10 +995,6 @@ func parseInfoStyle(str string) infoStyle { } func parsePreviewWindow(opts *previewOpts, input string) { - // We should reset flags that are not style-related. - opts.hidden = false - opts.scroll = "" - tokens := strings.Split(input, ":") sizeRegex := regexp.MustCompile("^[0-9]+%?$") offsetRegex := regexp.MustCompile("^\\+([0-9]+|{-?[0-9]+})(-[0-9]+|-/[1-9][0-9]*)?$") @@ -1006,10 +1003,16 @@ func parsePreviewWindow(opts *previewOpts, input string) { case "": case "hidden": opts.hidden = true + case "nohidden": + opts.hidden = false case "wrap": opts.wrap = true + case "nowrap": + opts.wrap = false case "cycle": opts.cycle = true + case "nocycle": + opts.cycle = false case "up", "top": opts.position = posUp case "down", "bottom": diff --git a/src/options_test.go b/src/options_test.go index 38873738..aae8eedc 100644 --- a/src/options_test.go +++ b/src/options_test.go @@ -399,11 +399,11 @@ func TestPreviewOpts(t *testing.T) { } opts = optsFor("--preview-window=up:15:wrap:hidden:+{1}-/2", "--preview-window=down", "--preview-window=cycle") if !(opts.Preview.command == "" && - opts.Preview.hidden == false && + opts.Preview.hidden == true && opts.Preview.wrap == true && opts.Preview.cycle == true && opts.Preview.position == posDown && - opts.Preview.scroll == "" && + opts.Preview.scroll == "{1}-/2" && opts.Preview.size.percent == false && opts.Preview.size.size == 15) { t.Error(opts.Preview.size.size)