mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2025-01-28 17:48:25 +00:00
parent
0e0b868342
commit
5ae60e2e80
15
CHANGELOG.md
15
CHANGELOG.md
@ -3,7 +3,16 @@ CHANGELOG
|
||||
|
||||
0.58.0
|
||||
------
|
||||
- Border and label for the list section
|
||||
|
||||
This version introduces three new border types, `--list-border`, `--input-border`, and `--header-border`, offering much greater flexibility for customizing the user interface.
|
||||
|
||||
Also, fzf now offers three "style presets" for easier customization, which can be activated using the `--style=[default|minimal|full]` option.
|
||||
|
||||
- Style presets (#4160)
|
||||
- `--style=full`
|
||||
- `--style=default`
|
||||
- `--style=minimal`
|
||||
- Border and label for the list section (#4148)
|
||||
- Options
|
||||
- `--list-border[=STYLE]`
|
||||
- `--list-label=LABEL`
|
||||
@ -16,7 +25,7 @@ CHANGELOG
|
||||
- Actions
|
||||
- `change-list-label`
|
||||
- `transform-list-label`
|
||||
- Border and label for the input section (prompt line and info line)
|
||||
- Border and label for the input section (prompt line and info line) (#4154)
|
||||
- Options
|
||||
- `--input-border[=STYLE]`
|
||||
- `--input-label=LABEL`
|
||||
@ -29,7 +38,7 @@ CHANGELOG
|
||||
- Actions
|
||||
- `change-input-label`
|
||||
- `transform-input-label`
|
||||
- Border and label for the header section
|
||||
- Border and label for the header section (#4159)
|
||||
- Options
|
||||
- `--header-border[=STYLE]`
|
||||
- `--header-label=LABEL`
|
||||
|
@ -67,6 +67,7 @@ Usage: fzf [options]
|
||||
--jump-labels=CHARS Label characters for jump mode
|
||||
|
||||
Layout
|
||||
--style=PRESET Apply a style preset [default|minimal|full]
|
||||
--height=[~]HEIGHT[%] Display fzf window below the cursor with the given
|
||||
height instead of using fullscreen.
|
||||
A negative value is calculated as the terminal height
|
||||
@ -2646,6 +2647,14 @@ func parseOptions(index *int, opts *Options, allArgs []string) error {
|
||||
if err := parseLabelPosition(&opts.PreviewLabel, pos); err != nil {
|
||||
return err
|
||||
}
|
||||
case "--style":
|
||||
preset, err := nextString(allArgs, &i, "preset name required: [default|minimal|full]")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := applyPreset(opts, preset); err != nil {
|
||||
return err
|
||||
}
|
||||
case "--no-unicode":
|
||||
opts.Unicode = false
|
||||
case "--unicode":
|
||||
@ -2742,6 +2751,10 @@ func parseOptions(index *int, opts *Options, allArgs []string) error {
|
||||
if opts.Tmux, err = parseTmuxOptions(value, index); err != nil {
|
||||
return err
|
||||
}
|
||||
} else if match, value := optString(arg, "--style="); match {
|
||||
if err := applyPreset(opts, value); err != nil {
|
||||
return err
|
||||
}
|
||||
} else if match, value := optString(arg, "--scheme="); match {
|
||||
opts.Scheme = strings.ToLower(value)
|
||||
} else if match, value := optString(arg, "-q", "--query="); match {
|
||||
@ -2990,6 +3003,48 @@ func parseOptions(index *int, opts *Options, allArgs []string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func applyPreset(opts *Options, preset string) error {
|
||||
switch strings.ToLower(preset) {
|
||||
case "default":
|
||||
opts.ListBorderShape = tui.BorderUndefined
|
||||
opts.InputBorderShape = tui.BorderUndefined
|
||||
opts.HeaderBorderShape = tui.BorderUndefined
|
||||
opts.Preview.border = tui.DefaultBorderShape
|
||||
opts.Preview.info = true
|
||||
opts.InfoStyle = infoDefault
|
||||
opts.Theme.Gutter = tui.NewColorAttr()
|
||||
opts.Separator = nil
|
||||
opts.Scrollbar = nil
|
||||
opts.CursorLine = false
|
||||
case "minimal":
|
||||
opts.ListBorderShape = tui.BorderUndefined
|
||||
opts.InputBorderShape = tui.BorderUndefined
|
||||
opts.HeaderBorderShape = tui.BorderUndefined
|
||||
opts.Preview.border = tui.BorderLine
|
||||
opts.Preview.info = false
|
||||
opts.InfoStyle = infoDefault
|
||||
opts.Theme.Gutter = tui.ColorAttr{Color: -1, Attr: 0}
|
||||
empty := ""
|
||||
opts.Separator = &empty
|
||||
opts.Scrollbar = &empty
|
||||
opts.CursorLine = false
|
||||
case "full":
|
||||
opts.ListBorderShape = tui.DefaultBorderShape
|
||||
opts.InputBorderShape = tui.DefaultBorderShape
|
||||
opts.HeaderBorderShape = tui.DefaultBorderShape
|
||||
opts.Preview.border = tui.DefaultBorderShape
|
||||
opts.Preview.info = true
|
||||
opts.InfoStyle = infoInlineRight
|
||||
opts.Theme.Gutter = tui.NewColorAttr()
|
||||
opts.Separator = nil
|
||||
opts.Scrollbar = nil
|
||||
opts.CursorLine = true
|
||||
default:
|
||||
return errors.New("unsupported style preset: " + preset)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateSign(sign string, signOptName string) error {
|
||||
if uniseg.StringWidth(sign) > 2 {
|
||||
return fmt.Errorf("%v display width should be up to 2", signOptName)
|
||||
|
Loading…
x
Reference in New Issue
Block a user