{"record":{"id":"75225ede44f15831","repo":"junegunn/fzf","slug":"v-display-width-should-be-up-to-d","errorCode":null,"errorMessage":"%v display width should be up to %d","messagePattern":"(.+?) display width should be up to (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/options.go","lineNumber":3609,"sourceCode":"\t\topts.HeaderBorderShape = defaultBorderShape\n\t\topts.FooterBorderShape = defaultBorderShape\n\t\topts.Preview.border = defaultBorderShape\n\t\tif defaultBorderShape == tui.BorderLine {\n\t\t\topts.BorderShape = defaultBorderShape\n\t\t}\n\t\topts.Preview.info = true\n\t\topts.InfoStyle = infoInlineRight\n\t\topts.Theme.Gutter = tui.NewColorAttr()\n\t\topts.Separator = nil\n\t\topts.Scrollbar = nil\n\t\topts.CursorLine = true\n\t}\n\treturn nil\n}\n\nfunc validateSign(sign string, signOptName string, maxWidth int) error {\n\tif uniseg.StringWidth(sign) > maxWidth {\n\t\treturn fmt.Errorf(\"%v display width should be up to %d\", signOptName, maxWidth)\n\t}\n\treturn nil\n}\n\nfunc validateOptions(opts *Options) error {\n\tif opts.Pointer != nil {\n\t\tif err := validateSign(*opts.Pointer, \"pointer\", 2); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif opts.Marker != nil {\n\t\tif err := validateSign(*opts.Marker, \"marker\", 2); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif opts.Gutter != nil && uniseg.StringWidth(*opts.Gutter) != 1 ||","sourceCodeStart":3591,"sourceCodeEnd":3627,"githubUrl":"https://github.com/junegunn/fzf/blob/bd4efa277b49ef34ca4025bff9b1a288e1980eff/src/options.go#L3591-L3627","documentation":"validateOptions checks that the pointer and marker signs fit their allotted cells: the pointer gets 2 columns, the marker 2 as well. If the configured string's display width (uniseg.StringWidth, grapheme-aware) exceeds maxWidth, this error names the option and the limit.","triggerScenarios":"Setting --pointer or --marker to a string wider than 2 columns: e.g. '>>>' (3), a wide emoji plus an ASCII char (3), or any multi-emoji sequence totaling >2 columns.","commonSituations":"Theming fzf with emoji pointers ('🚀' alone is width 2 and fine, '🚀🚀' is 4 and fails); combining two characters where one is East-Asian-wide; scripts defaulting to a fancy prompt-like arrow.","solutions":["Use a sign of at most 2 display columns: --pointer='▶' (1) or --pointer='🚀' (2)","Remember limits: pointer ≤ 2 columns, marker ≤ 2 columns","If you need richer indicators, use --marker with preview labels instead of a wide glyph"],"exampleFix":"# before\nfzf --pointer='>>>'\n# after\nfzf --pointer='▶'","handlingStrategy":"validation","validationCode":"# Go helper: keep pointer/marker within 2 display columns\nfunc signOK(s string) bool { return uniseg.StringWidth(s) <= 2 }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Test custom glyphs interactively once before scripting them","Note wide (East Asian) characters and most emoji occupy 2 columns"],"tags":["fzf","options","pointer","marker","unicode"],"backgroundTag":null,"analyzedSha":"bd4efa277b49ef34ca4025bff9b1a288e1980eff","analyzedAt":"2026-08-15T06:11:46.983Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}