Releases: PatrickF1/fzf.fish
v10.3
v10.2
v10.1
Breaking change
Search Directory's and Search Variable's custom fzf opts variables (used to pass fzf options to specific commands) were renamed in v9.5
. Now the old, deprecated names have been completely removed (615ce65).
- Search Directory: if you use
fzf_dir_opts
, switch tofzf_directory_opts
- Search Variables: if you use
fzf_shell_vars_opts
, switch tofzf_variables_opts
Search History
- Slightly improve performance, add test and comments (82dd51e)
v10.0
Breaking change: fzf minimum version now 0.33, up from 0.27.2
In light of the last change below (#302), fzf minimum version had to be bumped. My apologies to all Ubuntu users who I didn't know are stuck on 0.29! If you are stuck on a version < 0.33, please freeze your fzf.fish version at v9.9.
[Search Git Log][Search Git Status] Integrate preview with diff highlighters (90a66b9)
If fzf_diff_highlighter is set, fzf.fish will pipe git diff-like output through its value. This enables integration with delta, diff-so-fancy, diff-highlighter, or https://github.com/walles/riff.
[Search History][Search Git Log] use fzf history scoring scheme (#302 - @t-nil )
The history scoring scheme is much better suited for ranking input in which chronological order is important. The previous scheme was commonly causing commands and commits from months ago to overtake those more recent. This issue is now mostly alleviated.
v9.9
[Search history] Make date time format configurable (#299, @tamirzb )
Enable configuring the format of command execution times in Search History through the new fzf_history_time_format variable. This is highly valuable for non-US users who may be accustomed to reading dates as day-month (rather than month-day as the default is), or for people who want to search through previous years of command history.
fzf_configure_bindings completions
- describe completions using their canonical name (be43ebf)
- don't suggest completions that were already seen (145e5cf)
[Search Processes] use ps binary unaliased (#298, @tamirzb )
We should use the ps binary unalised because
- there are 1.7k lines of
alias ps=
(source) on Github, and most these aliases will either cause the ps command to fail or to print redundant, hard-to-parse information - this is consistent with how fd is called unaliased from Search Directory
v9.8
Important: minimum fish version 3.2 -> 3.4 (c5e1707)
This is to make use of fish's set --function
feature (see below). Additionally, I would like to keep the minimum version recent to enable simplifying assumptions about the environments that fzf.fish needs works on and reduce complexity.
Feature updates
[Search Git Status] use box drawing chars for diff type header (#291)
Make the header box for Git staged/unstaged/merged/etc. look nicer.
Old
+--------+
| Staged |
+--------+
New
╭────────╮
│ Staged │
╰────────╯
Function scope all variables to reduce side effects (cab67cc)
Without passing -f (--function), set commands in functions will clobber same-name shell variables that were already set. For example, if you do 'set commands_selected 1' and then execute _fzf_search_history, commands_selected will change value.
I chose -f over -l or a combination of the two to emulate Python's variable scopes, in which all variables declared within a function are function scoped. This makes reasoning about variables easier and more intuitive.
v9.7
v9.6
Updates
Use search command name as fzf prompt (3666395)
When the search command outputs no results (e.g. Search Git Status in a clean git repo), or if the search command was triggered by accident, it can be especially helpful to describe what is being searched in the fzf prompt to help orient the user.
[Search Directory] simplify code by requiring fd 8.5.0 (#290)
Now that fd 8.5.0 has been out for a while, let's make it the required version and simplify our Search Directory code.
Between 8.3.0 (the previous minimum version) and 8.5.0, here are the relevant changes and their implications on Search Directory
- 8.4.0: Directories are now printed with an additional path separator at the end => we can remove the code that was appending a slash to directories to allow for quick cd because the trailing slash will always be there now. This also means we can remove an entire suite of tests around this feature.
- 8.5.0: No leading ./ prefix for non-interactive results => stop passing in
--strip-cwd-prefix
[Search Directory] Use fd or fdfind unaliased to resolve apparent hang (#282)
A cursory search through GitHub code for "alias fd fdfind" reveals hundreds of pieces of code that aliases fdfind to fd instead of using symlinks (in spite of fd's instructions to symlink instead). And that's just the code that's public! The problem with this is that fish functions buffer their output, so when fd is aliased, Search Directory does not pop open fzf until fd is done outputting files. If Search Directory is triggered in $HOME or some other large directory, then Search Directory appears to hang for several seconds.
We fix this by using the fd binary directly. Since presumably many of fzf.fish users on certain Linux distros have it installed as fdfind, we look for either binaries and use it.
[Search Git Log] never show GPG signature (#287)
When the user has log.showSignature = true
or the repo has showSignature = true
, git log will check the GPG signature of signed commits. If the user does not have the public key for a signed commit, when triggering Search Git Log, raw GPG errors leak into the fzf window. We fix this by always passing --no-show-signature
to the git log call.
v9.5
⚠️ Important update
Search Directory's and Search Variable's custom opts variables renamed! (096dc8f)
- If you use
fzf_dir_opts
, please rename it tofzf_directory_opts
- If you use
fzf_shell_vars_opts
, please rename it tofzf_variables_opts
The old names are deprecated and will no longer work in a future release.
fzf_configure_bindings updated
Doc updates (#270 , a8ef424, 3537559, 04160da, fa87497)
Not a feature change, but going forward all the search commands now have canonical names to so they can be referred to easily, succinctly, and most important unambiguously. e.g. instead of "the search history feature" or "search previously run commands", it is now called "Search History". I updated all the references to the search commands in the readme and Wiki. Besides that, I rewrote, reorganized, and redid the images in the readme.
This is also the reason why Search Directory and Search Variable's custom opts variables were renamed.
v9.4
Preview git status updates
Preview only changes since file renamed (#263)
Previously, the git diff preview for a renamed path shows the entire file as being added. A more useful diff is to view only the modifications made to the file content. To accomplish this, we need a special condition for renames to diff the current (post-rename) path with the original path.
In addition, this PR fixes git status previews for renamed paths, which was accidentally broken in 38896f2.
Cover all possible unmerged statuses (309975c)
In #262, my research showed that only 4 of the 7 unmerged statuses listed in git status' help were
possible. However, upon experimentation, I realized all 7 are possible. The three I left out are easily reproducible by merging two branches
that renamed the same file but to different names. In this commit, I add them back in.