From d1cea64a0ef38c84d2c315dbeed232ea75caa48e Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sat, 4 Apr 2026 10:13:19 +0900 Subject: [PATCH] Allow adaptive height with negative value Fix #4682 --- man/man1/fzf.1 | 10 ++++++---- src/options.go | 7 ++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/man/man1/fzf.1 b/man/man1/fzf.1 index 709e96fb..8a4e8fd9 100644 --- a/man/man1/fzf.1 +++ b/man/man1/fzf.1 @@ -384,7 +384,7 @@ Use black background .SS DISPLAY MODE .TP -.BI "\-\-height=" "[~]HEIGHT[%]" +.BI "\-\-height=" "[~][\-]HEIGHT[%]" Display fzf window below the cursor with the given height instead of using the full screen. @@ -394,17 +394,19 @@ height minus the given value. fzf \-\-height=\-1 When prefixed with \fB~\fR, fzf will automatically determine the height in the -range according to the input size. +range according to the input size. You can combine \fB~\fR with a negative +value. # Will not take up 100% of the screen seq 5 | fzf \-\-height=~100% + # Adapt to input size, up to terminal height minus 1 + seq 5 | fzf \-\-height=~\-1 + Adaptive height has the following limitations: .br * Cannot be used with top/bottom margin and padding given in percent size .br -* Negative value is not allowed -.br * It will not find the right size when there are multi-line items .TP diff --git a/src/options.go b/src/options.go index 0ab92f2d..2cf6d2a4 100644 --- a/src/options.go +++ b/src/options.go @@ -66,7 +66,7 @@ Usage: fzf [options] --no-bold Do not use bold text DISPLAY MODE - --height=[~]HEIGHT[%] Display fzf window below the cursor with the given + --height=[~][-]HEIGHT[%] Display fzf window below the cursor with the given height instead of using fullscreen. A negative value is calculated as the terminal height minus the given value. @@ -2222,9 +2222,6 @@ func parseHeight(str string, index int) (heightSpec, error) { str = str[1:] } if strings.HasPrefix(str, "-") { - if heightSpec.auto { - return heightSpec, errors.New("negative(-) height is not compatible with adaptive(~) height") - } heightSpec.inverse = true str = str[1:] } @@ -3152,7 +3149,7 @@ func parseOptions(index *int, opts *Options, allArgs []string) error { } opts.PreviewWrapSign = &str case "--height": - str, err := nextString("height required: [~]HEIGHT[%]") + str, err := nextString("height required: [~][-]HEIGHT[%]") if err != nil { return err }