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