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

  1. Use 0 or a positive count
  2. Clamp computed values to max(0, n)
  3. 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

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


AI-assisted analysis of junegunn/fzf@bd4efa277b (2026-08-15). Data as JSON: /api/errors/ba46cfb8cb0fd31c. Report an issue: GitHub.