diff --git a/CHANGELOG.md b/CHANGELOG.md index eaba0288..14fc4948 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,8 +46,8 @@ CHANGELOG (`SHIFT-DELETE`) - Added fish completion support (#4605) (@lalvarezt) - 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 + - 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 symlinks to directories being returned as files (#4676) (@skk64) - Fixed SIGHUP signal handling (#4668) (@LangLangBart) diff --git a/shell/completion.bash b/shell/completion.bash index ca8d398b..5c4e61a6 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -370,15 +370,18 @@ __fzf_generic_path_completion() { matches=$( export FZF_DEFAULT_OPTS=$(__fzf_defaults "--reverse --scheme=path" "${FZF_COMPLETION_OPTS-} $2") 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 - eval "$1 $(printf %q "$dir")" | __fzf_comprun "$4" -q "$leftover" + eval "$1 $(printf %q "$dir")" | __fzf_comprun "$4" -q "$leftover" "${rest[@]}" else if [[ $1 =~ dir ]]; then walker=dir,follow - eval "rest=(${FZF_COMPLETION_DIR_OPTS-})" else walker=file,dir,follow,hidden - eval "rest=(${FZF_COMPLETION_PATH_OPTS-})" fi __fzf_comprun "$4" -q "$leftover" --walker "$walker" --walker-root="$dir" "${rest[@]}" fi | while read -r item; do diff --git a/shell/completion.zsh b/shell/completion.zsh index 29d218de..3059c913 100644 --- a/shell/completion.zsh +++ b/shell/completion.zsh @@ -174,15 +174,18 @@ __fzf_generic_path_completion() { export FZF_DEFAULT_OPTS FZF_DEFAULT_OPTS=$(__fzf_defaults "--reverse --scheme=path" "${FZF_COMPLETION_OPTS-}") 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 - 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 if [[ $compgen =~ dir ]]; then walker=dir,follow - rest=${FZF_COMPLETION_DIR_OPTS-} else walker=file,dir,follow,hidden - rest=${FZF_COMPLETION_PATH_OPTS-} fi __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 @@ -204,12 +207,12 @@ __fzf_generic_path_completion() { _fzf_path_completion() { __fzf_generic_path_completion "$1" "$2" _fzf_compgen_path \ - "${FZF_COMPLETION_PATH_OPTS-} -m" "" " " + "-m" "" " " } _fzf_dir_completion() { __fzf_generic_path_completion "$1" "$2" _fzf_compgen_dir \ - "${FZF_COMPLETION_DIR_OPTS-}" "/" "" + "" "/" "" } _fzf_feed_fifo() {