67 lines
2.0 KiB
Diff
67 lines
2.0 KiB
Diff
This allows to use COMP_FILEDIR_FALLBACK=yes even if
|
|
local sub directories exists (boo#977336)
|
|
|
|
---
|
|
bash_completion | 35 ++++++++++++++++++-----------------
|
|
1 file changed, 18 insertions(+), 17 deletions(-)
|
|
|
|
--- bash_completion
|
|
+++ bash_completion 2016-04-27 12:00:15.278198877 +0000
|
|
@@ -558,38 +558,39 @@ _quote_readline_by_ref()
|
|
#
|
|
_filedir()
|
|
{
|
|
- local IFS=$'\n' xspec
|
|
+ local IFS=$'\n'
|
|
|
|
_tilde "$cur" || return 0
|
|
_dollar "$cur" || return 0
|
|
|
|
local -a toks
|
|
- local quoted x tmp
|
|
-
|
|
- _quote_readline_by_ref "$cur" quoted
|
|
- x=$( compgen -d -- "$cur" ) &&
|
|
- while read -r tmp; do
|
|
- toks+=( "$tmp" )
|
|
- done <<< "$x"
|
|
+ local x tmp
|
|
|
|
if [[ "$1" != -d ]]; then
|
|
+ local quoted
|
|
+ _quote_readline_by_ref "$cur" quoted
|
|
+
|
|
# Munge xspec to contain uppercase version too
|
|
# http://thread.gmane.org/gmane.comp.shells.bash.bugs/15294/focus=15306
|
|
- xspec=${1:+"!*.@($1|${1^^})"}
|
|
+ local xspec=${1:+"!*.@($1|${1^^})"}
|
|
x=$( compgen -f -X "$xspec" -- $quoted ) &&
|
|
while read -r tmp; do
|
|
toks+=( "$tmp" )
|
|
done <<< "$x"
|
|
- fi
|
|
|
|
- # If the filter failed to produce anything, try without it if configured to
|
|
- [[ -n ${COMP_FILEDIR_FALLBACK:-} && \
|
|
- -n "$1" && "$1" != -d && ${#toks[@]} -lt 1 ]] && \
|
|
- x=$( compgen -f -- $quoted ) &&
|
|
- while read -r tmp; do
|
|
- toks+=( "$tmp" )
|
|
- done <<< "$x"
|
|
+ # If the filter failed to produce anything, try without it if configured to
|
|
+ [[ -n ${COMP_FILEDIR_FALLBACK:-} && \
|
|
+ -n "$1" && "$1" != -d && ${#toks[@]} -lt 1 ]] && \
|
|
+ x=$( compgen -f -- $quoted ) &&
|
|
+ while read -r tmp; do
|
|
+ toks+=( "$tmp" )
|
|
+ done <<< "$x"
|
|
+ fi
|
|
|
|
+ x=$( compgen -d -- "$cur" ) &&
|
|
+ while read -r tmp; do
|
|
+ toks+=( "$tmp" )
|
|
+ done <<< "$x"
|
|
|
|
if [[ ${#toks[@]} -ne 0 ]]; then
|
|
# 2>/dev/null for direct invocation, e.g. in the _filedir unit test
|