1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
commit 6ffde95c7ea257ff60cb51a263a8d33f4bb0898b
Author: dmerge <25472575+dmerge@users.noreply.github.com>
Date: Fri Apr 20 22:14:08 2018 -0700
_filedir: Refactor to remove heredoc-dependent loop
diff --git a/bash_completion b/bash_completion
index 98d277bd..48fe5987 100644
--- a/bash_completion
+++ b/bash_completion
@@ -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
@@ -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
|