{"record":{"id":"10bf54d7ca1e6a67","repo":"junegunn/fzf","slug":"invalid-layout-expected-default-reverse-reve","errorCode":null,"errorMessage":"invalid layout (expected: default / reverse / reverse-list)","messagePattern":"invalid layout \\(expected: default / reverse / reverse-list\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/options.go","lineNumber":2287,"sourceCode":"\tsize, err := parseSize(str, 100, \"height\")\n\tif err != nil {\n\t\treturn heightSpec, err\n\t}\n\theightSpec.size = size.size\n\theightSpec.percent = size.percent\n\treturn heightSpec, nil\n}\n\nfunc parseLayout(str string) (layoutType, error) {\n\tswitch str {\n\tcase \"default\":\n\t\treturn layoutDefault, nil\n\tcase \"reverse\":\n\t\treturn layoutReverse, nil\n\tcase \"reverse-list\":\n\t\treturn layoutReverseList, nil\n\t}\n\treturn layoutDefault, errors.New(\"invalid layout (expected: default / reverse / reverse-list)\")\n}\n\nfunc parseInfoStyle(str string) (infoStyle, string, error) {\n\tswitch str {\n\tcase \"default\":\n\t\treturn infoDefault, \"\", nil\n\tcase \"right\":\n\t\treturn infoRight, \"\", nil\n\tcase \"inline\":\n\t\treturn infoInline, defaultInfoPrefix, nil\n\tcase \"inline-right\":\n\t\treturn infoInlineRight, \"\", nil\n\tcase \"hidden\":\n\t\treturn infoHidden, \"\", nil\n\t}\n\ttype infoSpec struct {\n\t\tname  string\n\t\tstyle infoStyle","sourceCodeStart":2269,"sourceCodeEnd":2305,"githubUrl":"https://github.com/junegunn/fzf/blob/bd4efa277b49ef34ca4025bff9b1a288e1980eff/src/options.go#L2269-L2305","documentation":"Thrown by parseLayout when --layout receives a string that is not one of the three accepted names: 'default', 'reverse', or 'reverse-list'. fzf deliberately rejects unknown layout names instead of silently falling back (the returned layout value is layoutDefault but the error still aborts parsing).","triggerScenarios":"`--layout reverse-list2`, `--layout=reverse-list` (fine) vs `--layout 'reverse list'` (space), `--layout ra` (abbreviation attempt).","commonSituations":"Muscle memory from other tools where 'column', 'inline', or abbreviations work; version skew — very old fzf only knew 'reverse' and scripts using 'reverse-list' on it; typos.","solutions":["Use exactly one of: default, reverse, reverse-list","Upgrade fzf if 'reverse-list' is rejected by an old binary","Check for typos and stray whitespace or '=' placement in the option string"],"exampleFix":"# before\nfzf --layout reverse-list2\n# after\nfzf --layout reverse-list","handlingStrategy":"type-guard","validationCode":"# bash\n[[ \"$LAYOUT\" =~ ^(default|reverse|reverse-list)$ ]] || LAYOUT=default\nfzf --layout \"$LAYOUT\"","typeGuard":"layout_ok() { case \"$1\" in default|reverse|reverse-list) return 0;; *) return 1;; esac; }","tryCatchPattern":null,"preventionTips":["Whitelist layout values in wrappers instead of forwarding raw user input","Check `fzf --man` after upgrades for new layout names"],"tags":["fzf","go","cli","layout","validation"],"backgroundTag":null,"analyzedSha":"bd4efa277b49ef34ca4025bff9b1a288e1980eff","analyzedAt":"2026-08-15T06:11:46.983Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}