0.49.0

junegunn/fzf0.49.0Apr 4, 2024by junegunn

Upgrading?

Release notes summary

Improved ingestion performance by 40% and introduced new environment variables for preview and border labels, along with refined tracking actions.

Key Highlights

  • Ingestion performance improved by around 40%.
  • `--info=hidden` and `--info=inline-right` no longer hide the horizontal separator by default.
  • Added `$FZF_PREVIEW_LABEL` and `$FZF_BORDER_LABEL` environment variables.
  • Renamed `track` action to `track-current` and added `untrack-current` and `toggle-track-current` actions.

New Features

  • $FZF_PREVIEW_LABEL
  • $FZF_BORDER_LABEL
  • track-current action
  • untrack-current action
  • toggle-track-current action

Full Release Notes

- Ingestion performance improved by around 40% (more or less depending on options)
  ```
  $ time wc data
   5513620 37997130 547840920 data
  
  real    0m0.822s
  user    0m0.764s
  sys     0m0.052s
  
  
  $ hyperfine -L bin fzf-0.48.1,fzf '{bin} --sync --bind load:accept < data'
  Benchmark 1: fzf-0.48.1 --sync --bind load:accept < data
    Time (mean ± σ):     440.3 ms ±   4.9 ms    [User: 501.8 ms, System: 117.0 ms]
    Range (min … max):   432.8 ms … 446.1 ms    10 runs
  
  Benchmark 2: fzf --sync --bind load:accept < data
    Time (mean ± σ):     303.3 ms ±   4.5 ms    [User: 320.1 ms, System: 108.6 ms]
    Range (min … max):   296.6 ms … 311.4 ms    10 runs
  
  Summary
    fzf --sync --bind load:accept < data ran
      1.45 ± 0.03 times faster than fzf-0.48.1 --sync --bind load:accept < data
  ```
- `--info=hidden` and `--info=inline-right` will no longer hide the horizontal separator by default. This gives you more flexibility in customizing the layout.
    ```sh
    fzf --border --info=inline-right
    fzf --border --info=inline-right --separator ═
    fzf --border --info=inline-right --no-separator
    fzf --border --info=hidden
    fzf --border --info=hidden --separator ━
    fzf --border --info=hidden --no-separator
    ```
    <img width="696" alt="DoomOne" src="https://github.com/junegunn/fzf/assets/700826/997ca04b-f185-4fb6-aef3-01e3f466f1f7">
- Added two environment variables exported to the child processes
    - `FZF_PREVIEW_LABEL`
    - `FZF_BORDER_LABEL`
    ```sh
    # Use the current value of $FZF_PREVIEW_LABEL to determine which actions to perform
    git ls-files |
      fzf --header 'Press CTRL-P to change preview mode' \
          --bind='ctrl-p:transform:[[ $FZF_PREVIEW_LABEL =~ cat ]] \
          && echo "change-preview(git log --color=always \{})+change-preview-label([[ log ]])" \
          || echo "change-preview(bat --color=always \{})+change-preview-label([[ cat ]])"'
    ```
- Renamed `track` action to `track-current` to highlight the difference between the global tracking state set by `--track` and a one-off tracking action
    - `track` is still available as an alias
- Added `untrack-current` and `toggle-track-current` actions
    - `*-current` actions are no-op when the global tracking state is set
- Bug fixes and minor improvements

Related Repositories