{"record":{"id":"a2e4cae79d8a3611","repo":"junegunn/fzf","slug":"header-border-inline-requires-header-lines-bor","errorCode":null,"errorMessage":"--header-border=inline requires --header-lines-border to be inline or unset","messagePattern":"--header-border=inline requires --header-lines-border to be inline or unset","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/options.go","lineNumber":3671,"sourceCode":"\t\t\t}\n\t\t}\n\t}\n\n\tif opts.Theme.Nth.IsColorDefined() {\n\t\treturn errors.New(\"only ANSI attributes are allowed for 'nth' (regular, bold, underline, reverse, dim, italic, strikethrough)\")\n\t}\n\n\tif opts.BorderShape == tui.BorderInline ||\n\t\topts.ListBorderShape == tui.BorderInline ||\n\t\topts.InputBorderShape == tui.BorderInline ||\n\t\topts.Preview.border == tui.BorderInline {\n\t\treturn errors.New(\"inline border is only supported for --header-border, --header-lines-border, and --footer-border\")\n\t}\n\tif opts.HeaderBorderShape == tui.BorderInline &&\n\t\topts.HeaderLinesShape != tui.BorderInline &&\n\t\topts.HeaderLinesShape != tui.BorderUndefined &&\n\t\topts.HeaderLinesShape != tui.BorderNone {\n\t\treturn errors.New(\"--header-border=inline requires --header-lines-border to be inline or unset\")\n\t}\n\n\treturn nil\n}\n\nfunc noSeparatorLine(style infoStyle, separator bool) bool {\n\tswitch style {\n\tcase infoInline:\n\t\treturn true\n\tcase infoHidden, infoInlineRight:\n\t\treturn !separator\n\t}\n\treturn false\n}\n\nfunc (opts *Options) useTmux() bool {\n\treturn opts.Tmux != nil && len(os.Getenv(\"TMUX\")) > 0 && opts.Tmux.index >= opts.Height.index\n}","sourceCodeStart":3653,"sourceCodeEnd":3689,"githubUrl":"https://github.com/junegunn/fzf/blob/bd4efa277b49ef34ca4025bff9b1a288e1980eff/src/options.go#L3653-L3689","documentation":"A header can contain both a fixed header (--header / --header-lines with --header-border=inline) and header lines taken from the input (--header-lines with --header-lines-border). Drawing an inline border under the fixed header while the header-lines border is a different visible shape would produce inconsistent stacked segments, so fzf requires --header-lines-border to be inline, unset, or none when --header-border=inline (options.go:3671).","triggerScenarios":"Combining --header-border=inline with --header-lines-border set to a different shape, e.g. --header-border=inline --header-lines-border=rounded. The condition fires when HeaderBorderShape is inline but HeaderLinesShape is not inline, undefined, or none.","commonSituations":"Theme configs that set every border option to a distinct shape; incremental migration to inline headers while old header-lines settings remain in shell rc files.","solutions":["Set --header-lines-border=inline as well","Or use --header-lines-border=none / leave it unset","Or change --header-border to a non-inline shape"],"exampleFix":"# before\nfzf --header-border=inline --header-lines-border=rounded\n# after\nfzf --header-border=inline --header-lines-border=inline","handlingStrategy":"validation","validationCode":"// Shell: keep the two inline borders consistent\nif [ \"$header_border\" = inline ] && [ \"$header_lines_border\" != inline ] \\\n   && [ -n \"$header_lines_border\" ] && [ \"$header_lines_border\" != none ]; then\n  header_lines_border=inline\nfi\nexec fzf --header-border=\"$header_border\" --header-lines-border=\"$header_lines_border\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["When using --header-border=inline, set --header-lines-border=inline too or leave it unset/none","Avoid per-option theme dicts that set every border independently","Keep header border configuration in one snippet so the two stay in sync"],"tags":["fzf","cli","border","header","validation"],"backgroundTag":null,"analyzedSha":"bd4efa277b49ef34ca4025bff9b1a288e1980eff","analyzedAt":"2026-08-15T06:11:46.983Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}