umount: Real fix for completion of relative paths.

This commit is contained in:
Igor Murzov 2011-12-04 05:34:25 +04:00
parent 7a1a3da08a
commit 54bcdff3cf

View File

@ -65,16 +65,27 @@ _linux_fstab()
fi fi
done done
# Add some relative paths to COMPREPLY # Add relative paths to COMPREPLY
if [[ $cur && $cur != /* ]]; then if [[ $cur && $cur != /* ]]; then
local i n=${#COMPREPLY[@]} local realcur
for (( i=0; i < $n; i++ )); do [[ $cur == */ ]] && # don't let readlink drop last / from path
if [[ "${COMPREPLY[i]}" == "$PWD"* ]]; then realcur="$( readlink -f "$cur." 2> /dev/null )/" ||
[[ $cur == ./* ]] && realcur=$( readlink -f "$cur" 2> /dev/null )
COMPREPLY+=( "./${COMPREPLY[i]##$PWD*(/)}" ) || if [[ $realcur ]]; then
COMPREPLY+=( "${COMPREPLY[i]##$PWD*(/)}" ) local dirrealcur= dircur= basecur
if [[ $cur == */* ]]; then
dirrealcur="${realcur%/*}/"
dircur="${cur%/*}/"
fi fi
done basecur=${cur#"$dircur"}
local i n=${#COMPREPLY[@]}
for (( i=0; i < $n; i++ )); do
[[ "${COMPREPLY[i]}" == "$realcur"* ]] &&
COMPREPLY+=( $( cd "$dircur" 2> /dev/null &&
compgen -f -d -P "$dircur" \
-X "!${COMPREPLY[i]##"$dirrealcur"}" -- "$basecur" ) )
done
fi
fi fi
_reply_compgen_array _reply_compgen_array