diff --git a/src/core.go b/src/core.go index 4ade0eb6..95c2361c 100644 --- a/src/core.go +++ b/src/core.go @@ -28,6 +28,10 @@ func sbytes(data string) []byte { // Run starts fzf func Run(opts *Options) (int, error) { + if err := postProcessOptions(opts); err != nil { + return ExitError, err + } + defer clearCaches() defer util.RunAtExitFuncs() diff --git a/src/options.go b/src/options.go index b69418aa..74f4f407 100644 --- a/src/options.go +++ b/src/options.go @@ -2458,6 +2458,8 @@ func validateSign(sign string, signOptName string) error { return nil } +// This function can have side-effects and alter some global states. +// So we run it on fzf.Run and not on ParseOptions. func postProcessOptions(opts *Options) error { if opts.Ambidouble { uniseg.EastAsianAmbiguousWidth = 2 @@ -2471,7 +2473,7 @@ func postProcessOptions(opts *Options) error { return err } - if !opts.Version && !tui.IsLightRendererSupported() && opts.Height.size > 0 { + if !tui.IsLightRendererSupported() && opts.Height.size > 0 { return errors.New("--height option is currently not supported on this platform") } @@ -2621,7 +2623,5 @@ func ParseOptions(useDefaults bool, args []string) (*Options, error) { return nil, errors.New("failed to start pprof profiles: " + err.Error()) } - err := postProcessOptions(opts) - - return opts, err + return opts, nil }