[fish] Fix for file/dir names containing newlines

CTRL-T/ALT-C now works correctly when selecting files or directories
that contain newlines in their names. When external commands defined by
$FZF_CTRL_T_COMMAND/$FZF_ALT_C_COMMAND are used (for example the fd
command with -0 switch), the --read0 option must also be set through
$FZF_CTRL_T_OPTS/$FZF_ALT_C_OPTS.
This commit is contained in:
bitraid 2025-02-27 12:36:57 +02:00 committed by Junegunn Choi
parent af8fe918d8
commit 1a8f633611

View File

@ -96,12 +96,12 @@ function fzf_key_bindings
set -lx FZF_DEFAULT_OPTS (__fzf_defaults \ set -lx FZF_DEFAULT_OPTS (__fzf_defaults \
"--reverse --walker=file,dir,follow,hidden --scheme=path --walker-root=$dir" \ "--reverse --walker=file,dir,follow,hidden --scheme=path --walker-root=$dir" \
"$FZF_CTRL_T_OPTS --multi") "$FZF_CTRL_T_OPTS --multi --print0")
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
if set -l result (eval (__fzfcmd) --query=$fzf_query) if set -l result (eval (__fzfcmd) --query=$fzf_query | string split0)
# Remove last token from commandline. # Remove last token from commandline.
commandline -t '' commandline -t ''
for i in $result for i in $result
@ -155,12 +155,12 @@ function fzf_key_bindings
set -lx FZF_DEFAULT_OPTS (__fzf_defaults \ set -lx FZF_DEFAULT_OPTS (__fzf_defaults \
"--reverse --walker=dir,follow,hidden --scheme=path --walker-root=$dir" \ "--reverse --walker=dir,follow,hidden --scheme=path --walker-root=$dir" \
"$FZF_ALT_C_OPTS --no-multi") "$FZF_ALT_C_OPTS --no-multi --print0")
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"
if set -l result (eval (__fzfcmd) --query=$fzf_query) if set -l result (eval (__fzfcmd) --query=$fzf_query | string split0)
cd -- $result cd -- $result
commandline -rt -- $prefix commandline -rt -- $prefix
end end