Skip to content

Commit

Permalink
_filedir: Refactor to remove heredoc-dependent loop
Browse files Browse the repository at this point in the history
  • Loading branch information
dmerge authored and scop committed Apr 22, 2018
1 parent cefd0da commit 6ffde95
Showing 1 changed file with 12 additions and 14 deletions.
26 changes: 12 additions & 14 deletions bash_completion
Original file line number Diff line number Diff line change
Expand Up @@ -553,12 +553,11 @@ _filedir()
_tilde "$cur" || return

local -a toks
local x tmp
local x reset

x=$( compgen -d -- "$cur" ) &&
while read -r tmp; do
toks+=( "$tmp" )
done <<< "$x"
reset=$(shopt -po noglob); set -o noglob
toks=( $( compgen -d -- "$cur" ) )
eval $reset

if [[ "$1" != -d ]]; then
local quoted
Expand All @@ -567,17 +566,16 @@ _filedir()
# Munge xspec to contain uppercase version too
# http://thread.gmane.org/gmane.comp.shells.bash.bugs/15294/focus=15306
local xspec=${1:+"!*.@($1|${1^^})"}
x=$( compgen -f -X "$xspec" -- $quoted ) &&
while read -r tmp; do
toks+=( "$tmp" )
done <<< "$x"
reset=$(shopt -po noglob); set -o noglob
toks+=( $( compgen -f -X "$xspec" -- $quoted ) )
eval $reset

# Try without filter if it failed to produce anything and configured to
[[ -n ${COMP_FILEDIR_FALLBACK:-} && -n "$1" && ${#toks[@]} -lt 1 ]] && \
x=$( compgen -f -- $quoted ) &&
while read -r tmp; do
toks+=( "$tmp" )
done <<< "$x"
[[ -n ${COMP_FILEDIR_FALLBACK:-} && -n "$1" && ${#toks[@]} -lt 1 ]] && {
reset=$(shopt -po noglob); set -o noglob
toks+=( $( compgen -f -- $quoted ) )
eval $reset
}
fi

if [[ ${#toks[@]} -ne 0 ]]; then
Expand Down

0 comments on commit 6ffde95

Please sign in to comment.