gio: Always include mounts in the results

Mounts are currently completed only if the prefix looks like scheme,
however, this doesn't work well if the mounts have also path component.
Let's always include them to fix this issue. The mounts are cached by the
volume monitors, so it should not significantly affect the performance.
This commit is contained in:
Ondrej Holy 2019-10-03 15:09:56 +02:00
parent 8bc52105ef
commit b3bf1e263e

View File

@ -47,17 +47,15 @@ __gio_location() {
dir=${cur%$(basename "$cur")} dir=${cur%$(basename "$cur")}
fi fi
# List mounts and volumes, just if dir is not specified, or looks like scheme # List volumes and mounts
local mounts=() local mounts=( )
if [[ $dir == "" ]] || [[ $dir =~ ":"$ && ! $dir =~ "/" ]]; then while IFS=$'\n' read mount; do
while IFS=$'\n' read mount; do # Do not care about local mounts
# Do not care about local mounts [[ "$mount" =~ ^"file:" ]] && continue
[[ "$mount" =~ ^"file:" ]] && continue
# Use only matching mounts # Use only matching mounts
[[ "$mount" =~ ^"$cur" && "$mount" != "$cur" ]] && mounts+=("$mount") [[ "$mount" =~ ^"$cur" && "$mount" != "$cur" ]] && mounts+=("$mount")
done < <(gio mount -li | sed -n -r 's/^ *(default_location|activation_root)=(.*)$/\2/p' | sort -u) done < <(gio mount -li | sed -n -r 's/^ *(default_location|activation_root)=(.*)$/\2/p' | sort -u)
fi
# Workaround to unescape dir name (e.g. "\ " -> " ") # Workaround to unescape dir name (e.g. "\ " -> " ")
declare -a tmp="( ${dir} )" declare -a tmp="( ${dir} )"