diff options
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r-- | CHANGELOG.md | 90 |
1 files changed, 62 insertions, 28 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 3de28297..4f6d2602 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,41 +1,74 @@ CHANGELOG ========= -0.50.0 +0.52.0 ------ -- Search performance optimization. You can observe 50%+ improvement in some scenarios. +- Added `--highlight-line` to highlight the whole current line (à la `set cursorline` of Vim) +- Added color names for selected lines: `selected-fg`, `selected-bg`, and `selected-hl` ```sh - $ time wc < $DATA - 5520118 26862362 897487793 + fzf --border --multi --info inline-right --layout reverse --marker ▏ --pointer ▌ --prompt '▌ ' \ + --highlight-line --color gutter:-1,selected-bg:238,selected-fg:146,current-fg:189 + ``` +- Added `click-header` event that is triggered when the header section is clicked. When the event is triggered, `$FZF_CLICK_HEADER_COLUMN` and `$FZF_CLICK_HEADER_LINE` are set. + ```sh + fd --type f | + fzf --header $'[Files] [Directories]' --header-first \ + --bind 'click-header:transform: + (( FZF_CLICK_HEADER_COLUMN <= 7 )) && echo "reload(fd --type f)" + (( FZF_CLICK_HEADER_COLUMN >= 9 )) && echo "reload(fd --type d)" + ' + ``` +- Add `$FZF_COMPLETION_{DIR,PATH}_OPTS` for separately customizing the behavior of fuzzy completion + ```sh + # Set --walker options without 'follow' not to follow symbolic links + FZF_COMPLETION_PATH_OPTS="--walker=file,dir,hidden" + FZF_COMPLETION_DIR_OPTS="--walker=dir,hidden" + ``` +- Fixed Windows argument escaping +- Bug fixes and improvements +- The code was heavily refactored to allow using fzf as a library in Go programs. The API is still experimental and subject to change. + - https://gist.github.com/junegunn/193990b65be48a38aac6ac49d5669170 - real 0m1.320s - user 0m1.236s - sys 0m0.075s +0.51.0 +------ +- Added a new environment variable `$FZF_POS` exported to the child processes. It's the vertical position of the cursor in the list starting from 1. + ```sh + # Toggle selection to the top or to the bottom + seq 30 | fzf --multi --bind 'load:pos(10)' \ + --bind 'shift-up:transform:for _ in $(seq $FZF_POS $FZF_MATCH_COUNT); do echo -n +toggle+up; done' \ + --bind 'shift-down:transform:for _ in $(seq 1 $FZF_POS); do echo -n +toggle+down; done' + ``` +- Added `--with-shell` option to start child processes with a custom shell command and flags + ```sh + gem list | fzf --with-shell 'ruby -e' \ + --preview 'pp Gem::Specification.find_by_name({1})' \ + --bind 'ctrl-o:execute-silent: + spec = Gem::Specification.find_by_name({1}) + [spec.homepage, *spec.metadata.filter { _1.end_with?("uri") }.values].uniq.each do + system "open", _1 + end + ' + ``` +- Added `change-multi` action for dynamically changing `--multi` option + - `change-multi` - enable multi-select mode with no limit + - `change-multi(NUM)` - enable multi-select mode with a limit + - `change-multi(0)` - disable multi-select mode +- Windows improvements + - `become` action is now supported on Windows + - Unlike in *nix, this does not use `execve(2)`. Instead it spawns a new process and waits for it to finish, so the exact behavior may differ. + - Fixed argument escaping for Windows cmd.exe. No redundant escaping of backslashes. +- Bug fixes and improvements - $ time fzf --sync --bind load:abort < $DATA +0.50.0 +------ +- Search performance optimization. You can observe 50%+ improvement in some scenarios. + ``` + $ rg --line-number --no-heading --smart-case . > $DATA - real 0m0.479s - user 0m0.427s - sys 0m0.176s + $ wc < $DATA + 5520118 26862362 897487793 $ hyperfine -w 1 -L bin fzf-0.49.0,fzf-7ce6452,fzf-a5447b8,fzf '{bin} --filter "///" < $DATA | head -30' - - Benchmark 1: fzf-0.49.0 --filter "///" < $DATA | head -30 - Time (mean ± σ): 2.002 s ± 0.024 s [User: 14.447 s, System: 0.300 s] - Range (min … max): 1.964 s … 2.042 s 10 runs - - Benchmark 2: fzf-7ce6452 --filter "///" < $DATA | head -30 - Time (mean ± σ): 1.627 s ± 0.019 s [User: 10.828 s, System: 0.271 s] - Range (min … max): 1.596 s … 1.651 s 10 runs - - Benchmark 3: fzf-a5447b8 --filter "///" < $DATA | head -30 - Time (mean ± σ): 1.524 s ± 0.025 s [User: 9.818 s, System: 0.269 s] - Range (min … max): 1.478 s … 1.569 s 10 runs - - Benchmark 4: fzf --filter "///" < $DATA | head -30 - Time (mean ± σ): 1.318 s ± 0.025 s [User: 8.005 s, System: 0.262 s] - Range (min … max): 1.282 s … 1.366 s 10 runs - Summary fzf --filter "///" < $DATA | head -30 ran 1.16 ± 0.03 times faster than fzf-a5447b8 --filter "///" < $DATA | head -30 @@ -60,6 +93,7 @@ CHANGELOG ```sh fzf --bind 'space:jump,jump:accept,jump-cancel:transform:[[ $FZF_KEY =~ ctrl-c ]] && echo abort' ``` +- fzf can be built with profiling options. See [BUILD.md](BUILD.md) for more information. - Bug fixes 0.49.0 |