From 3248153d9f928710103073de0752145ffb95a631 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 11 Oct 2020 01:51:39 +0900 Subject: [PATCH] Add --preview-window=default for resetting the options --- CHANGELOG.md | 1 + man/man1/fzf.1 | 4 +++- src/options.go | 11 +++++++++-- src/options_test.go | 7 +++++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 729d8412..3d34665d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ CHANGELOG - `nocycle` - `nohidden` - `nowrap` + - `default` 0.23.0 ------ diff --git a/man/man1/fzf.1 b/man/man1/fzf.1 index d571542d..03103dcd 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][:[no]wrap][:[no]cycle][:[no]hidden][:+SCROLL[-OFFSET]]" +.BI "--preview-window=" "[POSITION][:SIZE[%]][:rounded|sharp|noborder][:[no]wrap][:[no]cycle][:[no]hidden][:+SCROLL[-OFFSET]][:default]" .RS .B POSITION: (default: right) @@ -411,6 +411,8 @@ for adjusting the base offset so that you can see the text above it. It should be given as a numeric integer (\fB-INTEGER\fR), or as a denominator form (\fB-/INTEGER\fR) for specifying a fraction of the preview window height. +\fBdefault\fR resets all options previously set to the default. + .RS e.g. \fB# Non-default scroll window positions and sizes diff --git a/src/options.go b/src/options.go index 51e5001c..ea6e420e 100644 --- a/src/options.go +++ b/src/options.go @@ -84,6 +84,7 @@ const usage = `usage: fzf [options] [:[no]wrap][:[no]cycle][:[no]hidden] [:rounded|sharp|noborder] [:+SCROLL[-OFFSET]] + [:default] Scripting -q, --query=STR Start the finder with the given query @@ -226,6 +227,10 @@ type Options struct { Version bool } +func defaultPreviewOpts(command string) previewOpts { + return previewOpts{command, posRight, sizeSpec{50, true}, "", false, false, false, tui.BorderRounded} +} + func defaultOptions() *Options { return &Options{ Fuzzy: true, @@ -265,7 +270,7 @@ func defaultOptions() *Options { ToggleSort: false, Expect: make(map[int]string), Keymap: make(map[int][]action), - Preview: previewOpts{"", posRight, sizeSpec{50, true}, "", false, false, false, tui.BorderRounded}, + Preview: defaultPreviewOpts(""), PrintQuery: false, ReadZero: false, Printer: func(str string) { fmt.Println(str) }, @@ -1001,6 +1006,8 @@ func parsePreviewWindow(opts *previewOpts, input string) { for _, token := range tokens { switch token { case "": + case "default": + *opts = defaultPreviewOpts(opts.command) case "hidden": opts.hidden = true case "nohidden": @@ -1278,7 +1285,7 @@ func parseOptions(opts *Options, allArgs []string) { opts.Preview.command = "" case "--preview-window": parsePreviewWindow(&opts.Preview, - nextString(allArgs, &i, "preview window layout required: [up|down|left|right][:SIZE[%]][:rounded|sharp|noborder][:wrap][:cycle][:hidden][:+SCROLL[-OFFSET]]")) + nextString(allArgs, &i, "preview window layout required: [up|down|left|right][:SIZE[%]][:rounded|sharp|noborder][:wrap][:cycle][:hidden][:+SCROLL[-OFFSET]][:default]")) case "--height": opts.Height = parseHeight(nextString(allArgs, &i, "height required: HEIGHT[%]")) case "--min-height": diff --git a/src/options_test.go b/src/options_test.go index aae8eedc..78207275 100644 --- a/src/options_test.go +++ b/src/options_test.go @@ -417,6 +417,13 @@ func TestPreviewOpts(t *testing.T) { opts.Preview.size.size == 15) { t.Error(opts.Preview) } + opts = optsFor("--preview=foo", "--preview-window=up", "--preview-window=default:70%") + if !(opts.Preview.command == "foo" && + opts.Preview.position == posRight && + opts.Preview.size.percent == true && + opts.Preview.size.size == 70) { + t.Error(opts.Preview) + } } func TestAdditiveExpect(t *testing.T) {