diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2022-10-30 00:12:01 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2022-11-01 13:27:00 +0900 |
| commit | e61585f2f37c6b1ead971f448af8db26dff1502c (patch) | |
| tree | 4c8df98b88b9577da95e9300e345aaaa27517e6d /src/options.go | |
| parent | 0de1aacb0cea3a559e07b84e922eb2aea61b8c96 (diff) | |
| download | fzf-e61585f2f37c6b1ead971f448af8db26dff1502c.tar.gz | |
Add --border-label and --border-label-pos
Close #3022
Diffstat (limited to 'src/options.go')
| -rw-r--r-- | src/options.go | 180 |
1 files changed, 103 insertions, 77 deletions
diff --git a/src/options.go b/src/options.go index acf67281..80ca3e11 100644 --- a/src/options.go +++ b/src/options.go @@ -18,97 +18,101 @@ import ( const usage = `usage: fzf [options] Search - -x, --extended Extended-search mode - (enabled by default; +x or --no-extended to disable) - -e, --exact Enable Exact-match - -i Case-insensitive match (default: smart-case match) - +i Case-sensitive match - --scheme=SCHEME Scoring scheme [default|path|history] - --literal Do not normalize latin script letters before matching - -n, --nth=N[,..] Comma-separated list of field index expressions - for limiting search scope. Each can be a non-zero - integer or a range expression ([BEGIN]..[END]). - --with-nth=N[,..] Transform the presentation of each line using - field index expressions - -d, --delimiter=STR Field delimiter regex (default: AWK-style) - +s, --no-sort Do not sort the result - --tac Reverse the order of the input - --disabled Do not perform search - --tiebreak=CRI[,..] Comma-separated list of sort criteria to apply - when the scores are tied [length|chunk|begin|end|index] - (default: length) + -x, --extended Extended-search mode + (enabled by default; +x or --no-extended to disable) + -e, --exact Enable Exact-match + -i Case-insensitive match (default: smart-case match) + +i Case-sensitive match + --scheme=SCHEME Scoring scheme [default|path|history] + --literal Do not normalize latin script letters before matching + -n, --nth=N[,..] Comma-separated list of field index expressions + for limiting search scope. Each can be a non-zero + integer or a range expression ([BEGIN]..[END]). + --with-nth=N[,..] Transform the presentation of each line using + field index expressions + -d, --delimiter=STR Field delimiter regex (default: AWK-style) + +s, --no-sort Do not sort the result + --tac Reverse the order of the input + --disabled Do not perform search + --tiebreak=CRI[,..] Comma-separated list of sort criteria to apply + when the scores are tied [length|chunk|begin|end|index] + (default: length) Interface - -m, --multi[=MAX] Enable multi-select with tab/shift-tab - --no-mouse Disable mouse - --bind=KEYBINDS Custom key bindings. Refer to the man page. - --cycle Enable cyclic scroll - --keep-right Keep the right end of the line visible on overflow - --scroll-off=LINES Number of screen lines to keep above or below when - scrolling to the top or to the bottom (default: 0) - --no-hscroll Disable horizontal scroll - --hscroll-off=COLS Number of screen columns to keep to the right of the - highlighted substring (default: 10) - --filepath-word Make word-wise movements respect path separators - --jump-labels=CHARS Label characters for jump and jump-accept + -m, --multi[=MAX] Enable multi-select with tab/shift-tab + --no-mouse Disable mouse + --bind=KEYBINDS Custom key bindings. Refer to the man page. + --cycle Enable cyclic scroll + --keep-right Keep the right end of the line visible on overflow + --scroll-off=LINES Number of screen lines to keep above or below when + scrolling to the top or to the bottom (default: 0) + --no-hscroll Disable horizontal scroll + --hscroll-off=COLS Number of screen columns to keep to the right of the + highlighted substring (default: 10) + --filepath-word Make word-wise movements respect path separators + --jump-labels=CHARS Label characters for jump and jump-accept Layout - --height=[~]HEIGHT[%] Display fzf window below the cursor with the given - height instead of using fullscreen. - If prefixed with '~', fzf will determine the height - according to the input size. - --min-height=HEIGHT Minimum height when --height is given in percent - (default: 10) - --layout=LAYOUT Choose layout: [default|reverse|reverse-list] - --border[=STYLE] Draw border around the finder - [rounded|sharp|horizontal|vertical| - top|bottom|left|right|none] (default: rounded) - --margin=MARGIN Screen margin (TRBL | TB,RL | T,RL,B | T,R,B,L) - --padding=PADDING Padding inside border (TRBL | TB,RL | T,RL,B | T,R,B,L) - --info=STYLE Finder info style [default|inline|hidden] - --prompt=STR Input prompt (default: '> ') - --pointer=STR Pointer to the current line (default: '>') - --marker=STR Multi-select marker (default: '>') - --header=STR String to print as header - --header-lines=N The first N lines of the input are treated as header - --header-first Print header before the prompt line - --ellipsis=STR Ellipsis to show when line is truncated (default: '..') + --height=[~]HEIGHT[%] Display fzf window below the cursor with the given + height instead of using fullscreen. + If prefixed with '~', fzf will determine the height + according to the input size. + --min-height=HEIGHT Minimum height when --height is given in percent + (default: 10) + --layout=LAYOUT Choose layout: [default|reverse|reverse-list] + --border[=STYLE] Draw border around the finder + [rounded|sharp|horizontal|vertical| + top|bottom|left|right|none] (default: rounded) + --border-label=LABEL Label to print on the border + --border-label-pos=COL Position of the border label + [POSITIVE_INTEGER: columns from left| + NEGATIVE_INTEGER: columns from right] (default: 0) + --margin=MARGIN Screen margin (TRBL | TB,RL | T,RL,B | T,R,B,L) + --padding=PADDING Padding inside border (TRBL | TB,RL | T,RL,B | T,R,B,L) + --info=STYLE Finder info style [default|inline|hidden] + --prompt=STR Input prompt (default: '> ') + --pointer=STR Pointer to the current line (default: '>') + --marker=STR Multi-select marker (default: '>') + --header=STR String to print as header + --header-lines=N The first N lines of the input are treated as header + --header-first Print header before the prompt line + --ellipsis=STR Ellipsis to show when line is truncated (default: '..') Display - --ansi Enable processing of ANSI color codes - --tabstop=SPACES Number of spaces for a tab character (default: 8) - --color=COLSPEC Base scheme (dark|light|16|bw) and/or custom colors - --no-bold Do not use bold text + --ansi Enable processing of ANSI color codes + --tabstop=SPACES Number of spaces for a tab character (default: 8) + --color=COLSPEC Base scheme (dark|light|16|bw) and/or custom colors + --no-bold Do not use bold text History - --history=FILE History file - --history-size=N Maximum number of history entries (default: 1000) + --history=FILE History file + --history-size=N Maximum number of history entries (default: 1000) Preview - --preview=COMMAND Command to preview highlighted line ({}) - --preview-window=OPT Preview window layout (default: right:50%) - [up|down|left|right][,SIZE[%]] - [,[no]wrap][,[no]cycle][,[no]follow][,[no]hidden] - [,border-BORDER_OPT] - [,+SCROLL[OFFSETS][/DENOM]][,~HEADER_LINES] - [,default][,<SIZE_THRESHOLD(ALTERNATIVE_LAYOUT)] + --preview=COMMAND Command to preview highlighted line ({}) + --preview-window=OPT Preview window layout (default: right:50%) + [up|down|left|right][,SIZE[%]] + [,[no]wrap][,[no]cycle][,[no]follow][,[no]hidden] + [,border-BORDER_OPT] + [,+SCROLL[OFFSETS][/DENOM]][,~HEADER_LINES] + [,default][,<SIZE_THRESHOLD(ALTERNATIVE_LAYOUT)] Scripting - -q, --query=STR Start the finder with the given query - -1, --select-1 Automatically select the only match - -0, --exit-0 Exit immediately when there's no match - -f, --filter=STR Filter mode. Do not start interactive finder. - --print-query Print query as the first line - --expect=KEYS Comma-separated list of keys to complete fzf - --read0 Read input delimited by ASCII NUL characters - --print0 Print output delimited by ASCII NUL characters - --sync Synchronous search for multi-staged filtering - --version Display version information and exit + -q, --query=STR Start the finder with the given query + -1, --select-1 Automatically select the only match + -0, --exit-0 Exit immediately when there's no match + -f, --filter=STR Filter mode. Do not start interactive finder. + --print-query Print query as the first line + --expect=KEYS Comma-separated list of keys to complete fzf + --read0 Read input delimited by ASCII NUL characters + --print0 Print output delimited by ASCII NUL characters + --sync Synchronous search for multi-staged filtering + --version Display version information and exit Environment variables - FZF_DEFAULT_COMMAND Default command to use when input is tty - FZF_DEFAULT_OPTS Default options - (e.g. '--layout=reverse --inline-info') + FZF_DEFAULT_COMMAND Default command to use when input is tty + FZF_DEFAULT_OPTS Default options + (e.g. '--layout=reverse --inline-info') ` @@ -188,6 +192,13 @@ type previewOpts struct { alternative *previewOpts } +func parseLabelPosition(arg string) int { + if strings.ToLower(arg) == "center" { + return 0 + } + return atoi(arg) +} + func (a previewOpts) aboveOrBelow() bool { return a.size.size > 0 && (a.position == posUp || a.position == posDown) } @@ -258,6 +269,8 @@ type Options struct { Margin [4]sizeSpec Padding [4]sizeSpec BorderShape tui.BorderShape + Label string + LabelPos int Unicode bool Tabstop int ClearOnExit bool @@ -324,6 +337,8 @@ func defaultOptions() *Options { Padding: defaultMargin(), Unicode: true, Tabstop: 8, + Label: "", + LabelPos: 0, ClearOnExit: true, Version: false} } @@ -798,6 +813,8 @@ func parseTheme(defaultTheme *tui.ColorTheme, str string) *tui.ColorTheme { mergeAttr(&theme.CurrentMatch) case "border": mergeAttr(&theme.Border) + case "label": + mergeAttr(&theme.BorderLabel) case "prompt": mergeAttr(&theme.Prompt) case "spinner": @@ -1556,6 +1573,11 @@ func parseOptions(opts *Options, allArgs []string) { case "--border": hasArg, arg := optionalNextString(allArgs, &i) opts.BorderShape = parseBorder(arg, !hasArg) + case "--border-label": + opts.Label = nextString(allArgs, &i, "label required") + case "--border-label-pos": + pos := nextString(allArgs, &i, "label position required (positive or negative integer or 'center')") + opts.LabelPos = parseLabelPosition(pos) case "--no-unicode": opts.Unicode = false case "--unicode": @@ -1591,6 +1613,10 @@ func parseOptions(opts *Options, allArgs []string) { opts.Delimiter = delimiterRegexp(value) } else if match, value := optString(arg, "--border="); match { opts.BorderShape = parseBorder(value, false) + } else if match, value := optString(arg, "--border-label="); match { + opts.Label = value + } else if match, value := optString(arg, "--border-label-pos="); match { + opts.LabelPos = parseLabelPosition(value) } else if match, value := optString(arg, "--prompt="); match { opts.Prompt = value } else if match, value := optString(arg, "--pointer="); match { |
