m/fzf
1
0
mirror of https://github.com/junegunn/fzf.git synced 2025-11-15 23:03:47 -05:00

Introduce 'raw' mode

This commit is contained in:
Junegunn Choi
2025-09-28 20:59:20 +09:00
parent 760d1b7c58
commit f8521fa90e
11 changed files with 554 additions and 187 deletions

View File

@@ -98,6 +98,7 @@ Usage: fzf [options]
--wrap Enable line wrap
--wrap-sign=STR Indicator for wrapped lines
--no-multi-line Disable multi-line display of items when using --read0
--raw Enable raw mode (show non-matching items)
--track Track the current selection when the result is updated
--tac Reverse the order of the input
--gap[=N] Render empty lines between each item
@@ -111,6 +112,7 @@ Usage: fzf [options]
highlighted substring (default: 10)
--jump-labels=CHARS Label characters for jump mode
--gutter=CHAR Character used for the gutter column (default: '▌')
--gutter-raw=CHAR Character used for the gutter column in raw mode (default: '▖')
--pointer=STR Pointer to the current line (default: '▌' or '>')
--marker=STR Multi-select marker (default: '┃' or '>')
--marker-multi-line=STR Multi-select marker for multi-line entries;
@@ -562,6 +564,7 @@ type Options struct {
AcceptNth func(Delimiter) func([]Token, int32) string
Delimiter Delimiter
Sort int
Raw bool
Track trackOption
Tac bool
Tail int
@@ -593,6 +596,7 @@ type Options struct {
JumpLabels string
Prompt string
Gutter *string
GutterRaw *string
Pointer *string
Marker *string
MarkerMulti *[3]string
@@ -714,6 +718,7 @@ func defaultOptions() *Options {
JumpLabels: defaultJumpLabels,
Prompt: "> ",
Gutter: nil,
GutterRaw: nil,
Pointer: nil,
Marker: nil,
MarkerMulti: nil,
@@ -1442,6 +1447,8 @@ func parseTheme(defaultTheme *tui.ColorTheme, str string) (*tui.ColorTheme, erro
mergeAttr(&theme.SelectedBg)
case "nth":
mergeAttr(&theme.Nth)
case "hidden":
mergeAttr(&theme.Hidden)
case "gutter":
mergeAttr(&theme.Gutter)
case "hl":
@@ -1741,6 +1748,8 @@ func parseActionList(masked string, original string, prevActions []*action, putA
appendAction(actToggleMultiLine)
case "toggle-hscroll":
appendAction(actToggleHscroll)
case "toggle-raw":
appendAction(actToggleRaw)
case "show-header":
appendAction(actShowHeader)
case "hide-header":
@@ -1761,8 +1770,12 @@ func parseActionList(masked string, original string, prevActions []*action, putA
appendAction(actToggle)
case "down":
appendAction(actDown)
case "down-match":
appendAction(actDownMatch)
case "up":
appendAction(actUp)
case "up-match":
appendAction(actUpMatch)
case "first", "top":
appendAction(actFirst)
case "last":
@@ -1779,9 +1792,9 @@ func parseActionList(masked string, original string, prevActions []*action, putA
appendAction(actPrevHistory)
case "next-history":
appendAction(actNextHistory)
case "prev-selected":
case "up-selected", "prev-selected":
appendAction(actPrevSelected)
case "next-selected":
case "down-selected", "next-selected":
appendAction(actNextSelected)
case "show-preview":
appendAction(actShowPreview)
@@ -2682,6 +2695,10 @@ func parseOptions(index *int, opts *Options, allArgs []string) error {
}
case "+s", "--no-sort":
opts.Sort = 0
case "--raw":
opts.Raw = true
case "--no-raw":
opts.Raw = false
case "--track":
opts.Track = trackEnabled
case "--no-track":
@@ -2866,6 +2883,13 @@ func parseOptions(index *int, opts *Options, allArgs []string) error {
}
str = firstLine(str)
opts.Gutter = &str
case "--gutter-raw":
str, err := nextString("gutter character for raw mode required")
if err != nil {
return err
}
str = firstLine(str)
opts.GutterRaw = &str
case "--pointer":
str, err := nextString("pointer sign required")
if err != nil {
@@ -3390,6 +3414,12 @@ func validateOptions(opts *Options) error {
}
}
if opts.GutterRaw != nil {
if err := validateSign(*opts.GutterRaw, "gutter", 1); err != nil {
return err
}
}
if opts.Scrollbar != nil {
runes := []rune(*opts.Scrollbar)
if len(runes) > 2 {