junegunn/fzf · error
number of fields to freeze must be a non-negative integer
Error message
number of fields to freeze must be a non-negative integer
What it means
fzf validates that --freeze-left and --freeze-right (number of columns frozen at each edge when horizontal scrolling with --no-hscroll disabled) are zero or positive. Negative counts are rejected at options.go:3529.
Source
Thrown at src/options.go:3529
if opts.HscrollOff < 0 {
return errors.New("hscroll offset must be a non-negative integer")
}
if opts.ScrollOff < 0 {
return errors.New("scroll offset must be a non-negative integer")
}
if opts.Tabstop < 1 {
return errors.New("tab stop must be a positive integer")
}
if len(opts.JumpLabels) == 0 {
return errors.New("empty jump labels")
}
if opts.FreezeLeft < 0 || opts.FreezeRight < 0 {
return errors.New("number of fields to freeze must be a non-negative integer")
}
if validateJumpLabels {
for _, r := range opts.JumpLabels {
if r < 32 || r > 126 {
return errors.New("non-ascii jump labels are not allowed")
}
}
}
return err
}
func applyPreset(opts *Options, preset string) error {
// Reset to the platform default
defaultBorderShape = tui.DefaultBorderShape
switch strings.ToLower(preset) {
case "default":View on GitHub (pinned to bd4efa277b)
Solutions
- Use 0 or a positive count
- Clamp computed values to max(0, n)
- Remember the default (0) means nothing is frozen
Example fix
# before fzf --freeze-left=-1 # after fzf --freeze-left=1
Defensive patterns
Strategy: validation
Validate before calling
// Shell: clamp freeze counts fl=$(( fl > 0 ? fl : 0 )); fr=$(( fr > 0 ? fr : 0 )) exec fzf --freeze-left="$fl" --freeze-right="$fr"
Prevention
- Clamp computed freeze counts to 0
- 0 is the default and means nothing frozen
- Guard field-count arithmetic against empty input
When it happens
Trigger: Passing --freeze-left=-1 or --freeze-right=-2, or a computed negative field count (e.g. freezing n-1 fields when n is 0). Either opts.FreezeLeft < 0 or opts.FreezeRight < 0 triggers the error.
Common situations: Shell arithmetic on field counts from malformed input; typos with leading dashes; expecting negative to mean 'freeze from the other side'.
Related errors
- unknown action: ${spec}
- invalid layout (expected: default / reverse / reverse-list)
- invalid info style (expected: default|right|hidden|inline[-r
- history max must be a positive integer
- number of items to keep must be a positive integer
AI-assisted analysis of junegunn/fzf@bd4efa277b (2026-08-15).
Data as JSON: /api/errors/ba46cfb8cb0fd31c.
Report an issue: GitHub.