mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2025-02-08 15:08:30 +00:00
[fish] Allow setting multi-select and list reload for history (#4179)
* [fish] Drop support for versions older than 3.0b1 * [fish] Use `set` instead of `read` for `$result` This effectively makes CTRL-R non-blocking (the previous attempt was unsuccessful). * [fish] Allow FZF_CTRL_R_OPTS to set multi-select
This commit is contained in:
parent
c1875af70b
commit
5a32634b74
@ -31,13 +31,14 @@ function fzf_key_bindings
|
|||||||
set -lx dir $commandline[1]
|
set -lx dir $commandline[1]
|
||||||
set -l fzf_query $commandline[2]
|
set -l fzf_query $commandline[2]
|
||||||
set -l prefix $commandline[3]
|
set -l prefix $commandline[3]
|
||||||
|
set -l result
|
||||||
|
|
||||||
test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
|
test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
|
||||||
begin
|
begin
|
||||||
set -lx FZF_DEFAULT_OPTS (__fzf_defaults "--reverse --walker=file,dir,follow,hidden --scheme=path --walker-root=$dir" "$FZF_CTRL_T_OPTS")
|
set -lx FZF_DEFAULT_OPTS (__fzf_defaults "--reverse --walker=file,dir,follow,hidden --scheme=path --walker-root=$dir" "$FZF_CTRL_T_OPTS")
|
||||||
set -lx FZF_DEFAULT_COMMAND "$FZF_CTRL_T_COMMAND"
|
set -lx FZF_DEFAULT_COMMAND "$FZF_CTRL_T_COMMAND"
|
||||||
set -lx FZF_DEFAULT_OPTS_FILE ''
|
set -lx FZF_DEFAULT_OPTS_FILE ''
|
||||||
eval (__fzfcmd) -m --query=$fzf_query | while read -l r; set -a result $r; end
|
set result (eval (__fzfcmd) -m --query=$fzf_query)
|
||||||
end
|
end
|
||||||
if test -z "$result"
|
if test -z "$result"
|
||||||
commandline -f repaint
|
commandline -f repaint
|
||||||
@ -57,35 +58,26 @@ function fzf_key_bindings
|
|||||||
function fzf-history-widget -d "Show command history"
|
function fzf-history-widget -d "Show command history"
|
||||||
test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
|
test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
|
||||||
begin
|
begin
|
||||||
set -l FISH_MAJOR (string split -- '.' $version)[1]
|
|
||||||
set -l FISH_MINOR (string split -- '.' $version)[2]
|
|
||||||
|
|
||||||
# merge history from other sessions before searching
|
# merge history from other sessions before searching
|
||||||
test -z "$fish_private_mode"; and builtin history merge
|
test -z "$fish_private_mode"; and builtin history merge
|
||||||
|
|
||||||
# history's -z flag is needed for multi-line support.
|
set -lx FZF_DEFAULT_OPTS (__fzf_defaults "" "-n2..,.. --scheme=history --bind=ctrl-r:toggle-sort --wrap-sign '"\t"↳ ' --highlight-line +m $FZF_CTRL_R_OPTS")
|
||||||
# history's -z flag was added in fish 2.4.0, so don't use it for versions
|
|
||||||
# before 2.4.0.
|
|
||||||
if test "$FISH_MAJOR" -gt 2 -o \( "$FISH_MAJOR" -eq 2 -a "$FISH_MINOR" -ge 4 \)
|
|
||||||
set -lx FZF_DEFAULT_OPTS (__fzf_defaults "" "-n2..,.. --scheme=history --bind=ctrl-r:toggle-sort --wrap-sign '"\t"↳ ' --highlight-line $FZF_CTRL_R_OPTS +m")
|
|
||||||
set -lx FZF_DEFAULT_OPTS_FILE ''
|
set -lx FZF_DEFAULT_OPTS_FILE ''
|
||||||
|
set -lx FZF_DEFAULT_COMMAND
|
||||||
|
string match -q -r -- '/fish$' $SHELL; or set -lx SHELL (type -p fish)
|
||||||
if type -q perl
|
if type -q perl
|
||||||
set -l fzf_command (__fzfcmd) --tac --read0 --print0 -q (commandline)
|
set -a FZF_DEFAULT_OPTS '--tac'
|
||||||
builtin history -z --reverse | command perl -0 -pe 's/^/$.\t/g; s/\n/\n\t/gm' | $fzf_command | string replace -r '^\d*\t' '' | read -lz result
|
set FZF_DEFAULT_COMMAND 'builtin history -z --reverse | command perl -0 -pe \'s/^/$.\t/g; s/\n/\n\t/gm\''
|
||||||
and commandline -- $result
|
|
||||||
else
|
else
|
||||||
set -l h (builtin history -z | string split0)
|
set FZF_DEFAULT_COMMAND \
|
||||||
set -l fzf_command (__fzfcmd) --read0 --print0 -q (commandline)
|
'set -l h (builtin history -z --reverse | string split0);' \
|
||||||
for i in (seq (count $h) -1 1)
|
'for i in (seq (count $h) -1 1);' \
|
||||||
string join0 -- $i\t(string replace -a -- \n \n\t $h[$i] | string collect)
|
'string join0 -- $i\t(string replace -a -- \n \n\t $h[$i] | string collect);' \
|
||||||
end | $fzf_command | string replace -r '^\d*\t' '' | read -lz result
|
'end'
|
||||||
and commandline -- $result
|
|
||||||
end
|
end
|
||||||
else
|
set -l result (eval "$FZF_DEFAULT_COMMAND | $(__fzfcmd) --read0 --print0 -q (commandline) --bind='enter:become:string replace -a -- \n\t \n {2..} | string collect'")
|
||||||
builtin history | eval (__fzfcmd) -q '(commandline)' | read -l result
|
|
||||||
and commandline -- $result
|
and commandline -- $result
|
||||||
end
|
end
|
||||||
end
|
|
||||||
commandline -f repaint
|
commandline -f repaint
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -100,7 +92,7 @@ function fzf_key_bindings
|
|||||||
set -lx FZF_DEFAULT_OPTS (__fzf_defaults "--reverse --walker=dir,follow,hidden --scheme=path --walker-root=$dir" "$FZF_ALT_C_OPTS")
|
set -lx FZF_DEFAULT_OPTS (__fzf_defaults "--reverse --walker=dir,follow,hidden --scheme=path --walker-root=$dir" "$FZF_ALT_C_OPTS")
|
||||||
set -lx FZF_DEFAULT_OPTS_FILE ''
|
set -lx FZF_DEFAULT_OPTS_FILE ''
|
||||||
set -lx FZF_DEFAULT_COMMAND "$FZF_ALT_C_COMMAND"
|
set -lx FZF_DEFAULT_COMMAND "$FZF_ALT_C_COMMAND"
|
||||||
eval (__fzfcmd) +m --query=$fzf_query | read -l result
|
set -l result (eval (__fzfcmd) +m --query=$fzf_query)
|
||||||
|
|
||||||
if test -n "$result"
|
if test -n "$result"
|
||||||
cd -- $result
|
cd -- $result
|
||||||
|
Loading…
x
Reference in New Issue
Block a user