mirror of
https://github.com/junegunn/fzf.git
synced 2026-05-18 06:19:56 +08:00
Fix FZF_COMPLETION_{DIR,PATH}_OPTS ignored with custom compgen functions (#4679)
When users define custom _fzf_compgen_path or _fzf_compgen_dir functions, FZF_COMPLETION_PATH_OPTS and FZF_COMPLETION_DIR_OPTS were not applied because the options were only computed inside the walker fallback branch. Close #4592
This commit is contained in:
+1
-1
@@ -46,8 +46,8 @@ CHANGELOG
|
|||||||
(`SHIFT-DELETE`)
|
(`SHIFT-DELETE`)
|
||||||
- Added fish completion support (#4605) (@lalvarezt)
|
- Added fish completion support (#4605) (@lalvarezt)
|
||||||
- zsh: Handle multi-line history selection (#4595) (@LangLangBart)
|
- zsh: Handle multi-line history selection (#4595) (@LangLangBart)
|
||||||
- zsh: Fixed `_fzf_compgen_{path,dir}` to respect `FZF_COMPLETION_{PATH,DIR}_OPTS` (#4592) (@LangLangBart)
|
|
||||||
- Bug fixes
|
- Bug fixes
|
||||||
|
- Fixed `_fzf_compgen_{path,dir}` to respect `FZF_COMPLETION_{PATH,DIR}_OPTS` (#4592) (@shtse8, @LangLangBart)
|
||||||
- Fixed `--preview-window follow` not working correctly with wrapping (#3243, #4258)
|
- Fixed `--preview-window follow` not working correctly with wrapping (#3243, #4258)
|
||||||
- Fixed symlinks to directories being returned as files (#4676) (@skk64)
|
- Fixed symlinks to directories being returned as files (#4676) (@skk64)
|
||||||
- Fixed SIGHUP signal handling (#4668) (@LangLangBart)
|
- Fixed SIGHUP signal handling (#4668) (@LangLangBart)
|
||||||
|
|||||||
@@ -370,15 +370,18 @@ __fzf_generic_path_completion() {
|
|||||||
matches=$(
|
matches=$(
|
||||||
export FZF_DEFAULT_OPTS=$(__fzf_defaults "--reverse --scheme=path" "${FZF_COMPLETION_OPTS-} $2")
|
export FZF_DEFAULT_OPTS=$(__fzf_defaults "--reverse --scheme=path" "${FZF_COMPLETION_OPTS-} $2")
|
||||||
unset FZF_DEFAULT_COMMAND FZF_DEFAULT_OPTS_FILE
|
unset FZF_DEFAULT_COMMAND FZF_DEFAULT_OPTS_FILE
|
||||||
|
if [[ $1 =~ dir ]]; then
|
||||||
|
eval "rest=(${FZF_COMPLETION_DIR_OPTS-})"
|
||||||
|
else
|
||||||
|
eval "rest=(${FZF_COMPLETION_PATH_OPTS-})"
|
||||||
|
fi
|
||||||
if declare -F "$1" > /dev/null; then
|
if declare -F "$1" > /dev/null; then
|
||||||
eval "$1 $(printf %q "$dir")" | __fzf_comprun "$4" -q "$leftover"
|
eval "$1 $(printf %q "$dir")" | __fzf_comprun "$4" -q "$leftover" "${rest[@]}"
|
||||||
else
|
else
|
||||||
if [[ $1 =~ dir ]]; then
|
if [[ $1 =~ dir ]]; then
|
||||||
walker=dir,follow
|
walker=dir,follow
|
||||||
eval "rest=(${FZF_COMPLETION_DIR_OPTS-})"
|
|
||||||
else
|
else
|
||||||
walker=file,dir,follow,hidden
|
walker=file,dir,follow,hidden
|
||||||
eval "rest=(${FZF_COMPLETION_PATH_OPTS-})"
|
|
||||||
fi
|
fi
|
||||||
__fzf_comprun "$4" -q "$leftover" --walker "$walker" --walker-root="$dir" "${rest[@]}"
|
__fzf_comprun "$4" -q "$leftover" --walker "$walker" --walker-root="$dir" "${rest[@]}"
|
||||||
fi | while read -r item; do
|
fi | while read -r item; do
|
||||||
|
|||||||
@@ -174,15 +174,18 @@ __fzf_generic_path_completion() {
|
|||||||
export FZF_DEFAULT_OPTS
|
export FZF_DEFAULT_OPTS
|
||||||
FZF_DEFAULT_OPTS=$(__fzf_defaults "--reverse --scheme=path" "${FZF_COMPLETION_OPTS-}")
|
FZF_DEFAULT_OPTS=$(__fzf_defaults "--reverse --scheme=path" "${FZF_COMPLETION_OPTS-}")
|
||||||
unset FZF_DEFAULT_COMMAND FZF_DEFAULT_OPTS_FILE
|
unset FZF_DEFAULT_COMMAND FZF_DEFAULT_OPTS_FILE
|
||||||
|
if [[ $compgen =~ dir ]]; then
|
||||||
|
rest=${FZF_COMPLETION_DIR_OPTS-}
|
||||||
|
else
|
||||||
|
rest=${FZF_COMPLETION_PATH_OPTS-}
|
||||||
|
fi
|
||||||
if declare -f "$compgen" > /dev/null; then
|
if declare -f "$compgen" > /dev/null; then
|
||||||
eval "$compgen $(printf %q "$dir")" | __fzf_comprun "$cmd_word" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover"
|
eval "$compgen $(printf %q "$dir")" | __fzf_comprun "$cmd_word" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover" ${(Q)${(Z+n+)rest}}
|
||||||
else
|
else
|
||||||
if [[ $compgen =~ dir ]]; then
|
if [[ $compgen =~ dir ]]; then
|
||||||
walker=dir,follow
|
walker=dir,follow
|
||||||
rest=${FZF_COMPLETION_DIR_OPTS-}
|
|
||||||
else
|
else
|
||||||
walker=file,dir,follow,hidden
|
walker=file,dir,follow,hidden
|
||||||
rest=${FZF_COMPLETION_PATH_OPTS-}
|
|
||||||
fi
|
fi
|
||||||
__fzf_comprun "$cmd_word" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover" --walker "$walker" --walker-root="$dir" ${(Q)${(Z+n+)rest}} < /dev/tty
|
__fzf_comprun "$cmd_word" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover" --walker "$walker" --walker-root="$dir" ${(Q)${(Z+n+)rest}} < /dev/tty
|
||||||
fi | while read -r item; do
|
fi | while read -r item; do
|
||||||
@@ -204,12 +207,12 @@ __fzf_generic_path_completion() {
|
|||||||
|
|
||||||
_fzf_path_completion() {
|
_fzf_path_completion() {
|
||||||
__fzf_generic_path_completion "$1" "$2" _fzf_compgen_path \
|
__fzf_generic_path_completion "$1" "$2" _fzf_compgen_path \
|
||||||
"${FZF_COMPLETION_PATH_OPTS-} -m" "" " "
|
"-m" "" " "
|
||||||
}
|
}
|
||||||
|
|
||||||
_fzf_dir_completion() {
|
_fzf_dir_completion() {
|
||||||
__fzf_generic_path_completion "$1" "$2" _fzf_compgen_dir \
|
__fzf_generic_path_completion "$1" "$2" _fzf_compgen_dir \
|
||||||
"${FZF_COMPLETION_DIR_OPTS-}" "/" ""
|
"" "/" ""
|
||||||
}
|
}
|
||||||
|
|
||||||
_fzf_feed_fifo() {
|
_fzf_feed_fifo() {
|
||||||
|
|||||||
Reference in New Issue
Block a user