Reset preview window flags that are not style-related

Fix #2203
pull/2206/head
Junegunn Choi 4 years ago
parent dba14d2630
commit d9752a4c21
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627

@ -1,6 +1,12 @@
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.
0.23.0
------
- Support preview scroll offset relative to window height

@ -381,11 +381,21 @@ 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][:hidden][:+SCROLL[-OFFSET]]"
Determines the layout of the preview window. If the argument contains
.BI "--preview-window=" "[POSITION][:SIZE[%]][:rounded|sharp|noborder][:wrap][:cycle][:hidden][:+SCROLL[-OFFSET]]"
.RS
.B POSITION: (default: right)
\fBup
\fBdown
\fBleft
\fBright
.RE
\fRDetermines the layout of the preview window. If the argument contains
\fB:hidden\fR, the preview window will be hidden by default until
\fBtoggle-preview\fR action is triggered. Long lines are truncated by default.
Line wrap can be enabled with \fB:wrap\fR flag.
Line wrap can be enabled with \fB:wrap\fR flag. Cyclic scrolling is enabled
with \fB:cycle\fR flag.
If size is given as 0, preview window will not be visible, but fzf will still
execute the command in the background.
@ -401,14 +411,6 @@ 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.
.RS
.B POSITION: (default: right)
\fBup
\fBdown
\fBleft
\fBright
.RE
.RS
e.g.
\fB# Non-default scroll window positions and sizes
@ -427,6 +429,19 @@ e.g.
--preview-window +{2}-/2\fR
.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"

@ -994,6 +994,10 @@ 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]*)?$")

@ -387,21 +387,23 @@ func TestPreviewOpts(t *testing.T) {
opts.Preview.size.size == 50) {
t.Error()
}
opts = optsFor("--preview", "cat {}", "--preview-window=left:15:hidden:wrap")
opts = optsFor("--preview", "cat {}", "--preview-window=left:15:hidden:wrap:+{1}-/2")
if !(opts.Preview.command == "cat {}" &&
opts.Preview.hidden == true &&
opts.Preview.wrap == true &&
opts.Preview.position == posLeft &&
opts.Preview.scroll == "{1}-/2" &&
opts.Preview.size.percent == false &&
opts.Preview.size.size == 15) {
t.Error(opts.Preview)
}
opts = optsFor("--preview-window=up:15:wrap:hidden", "--preview-window=down", "--preview-window=cycle")
opts = optsFor("--preview-window=up:15:wrap:hidden:+{1}-/2", "--preview-window=down", "--preview-window=cycle")
if !(opts.Preview.command == "" &&
opts.Preview.hidden == true &&
opts.Preview.hidden == false &&
opts.Preview.wrap == true &&
opts.Preview.cycle == true &&
opts.Preview.position == posDown &&
opts.Preview.scroll == "" &&
opts.Preview.size.percent == false &&
opts.Preview.size.size == 15) {
t.Error(opts.Preview.size.size)

Loading…
Cancel
Save