diff options
Diffstat (limited to 'Completion')
-rw-r--r-- | Completion/Unix/Command/_mount | 44 | ||||
-rw-r--r-- | Completion/Unix/Type/_path_files | 10 |
2 files changed, 53 insertions, 1 deletions
diff --git a/Completion/Unix/Command/_mount b/Completion/Unix/Command/_mount index 0083fe9ad..5d0b9a0e6 100644 --- a/Completion/Unix/Command/_mount +++ b/Completion/Unix/Command/_mount @@ -1,5 +1,49 @@ #compdef mount umount +if [[ "$OSTYPE" == cygwin ]]; then + if [[ "$service" == mount ]] ; then + _arguments -s \ + - mount \ + '(-b -t --text)--binary[Unix line endings LF]' \ + '(--binary -t --text)-b[Unix line endings LF]' \ + '(-f)--force[be silent]' \ + '(--force)-f[be silent]' \ + '(-s -u --user)--system[system-wide mount point]' \ + '(--system -u --user)-s[system-wide mount point]' \ + '(-t -b --binary)--text[(default) DOS line endings CR-LF]' \ + '(--text -b --binary)-t[(default) DOS line endings CR-LF]' \ + '(-u -s --system)--user[(default)user private mount point]' \ + '(--user -s --system)-u[(default)user private mount point]' \ + '(-x -X --cygwin-executable)--executable[all files under mountpoint are executables]' \ + '(--executable -X --cygwin-executable)-x[all files under mountpoint are executables]' \ + '(-X -x --executable)--cygwin-executable[all files under mountpoint are cygwin executables]' \ + '(--cygwin-executable -x --executable)-X[all files under mountpoint are cygwin executables]' \ + ':Windows path:' \ + ':Unix path:_path_files -P/ -W "(/)" -/' \ + - control \ + '(-i -p --show-cygdrive-prefix -c --change-cygdrive-prefix)--import-old-mounts[import old mounts]' \ + '(--import-old-mounts -p --show-cygdrive-prefix -c --change-cygdrive-prefix)-i[import old mounts]' \ + '(-p -i --import-old-mounts -c --change-cygdrive-prefix)--show-cygdrive-prefix[show cygdrive prefix]' \ + '(--show-cygdrive-prefix -i --import-old-mounts -c --change-cygdrive-prefix)-p[show cygdrive prefix]' \ + '(-c -i --import-old-mounts -p --show-cygdrive-prefix)--change-cygdrive-prefix[cygdrive prefix]:cygdrive prefix (POSIX path):_files -P/ -W "(/)" -/' \ + '(--change-cygdrive-prefix -i --import-old-mounts -p --show-cygdrive-prefix)-c[cygdrive prefix]:cygdrive prefix (POSIX path):_files -P/ -W "(/)" -/' + + return + else + local line + local -a wpaths upaths + mount | while read -r line; do + [[ $line == ?:\ * ]] && continue + wpaths=($wpaths ${line%% on*}) + upaths=($upaths ${${line##*on }%% type*}) + done + _alternative \ + 'windowspath:WIndows path:compadd -a wpaths' \ + 'unixpath:Unix path:compadd -a upaths' + return + fi +fi + # This is table-driven: the tables for the values for the different # file system types are directly below. The tables describing the # arguments for the `mount' command for different operating systems diff --git a/Completion/Unix/Type/_path_files b/Completion/Unix/Type/_path_files index 0e1f9fe3f..1bf91caf2 100644 --- a/Completion/Unix/Type/_path_files +++ b/Completion/Unix/Type/_path_files @@ -268,7 +268,15 @@ else linepath= realpath= - if [[ "$pre[1]" = / ]]; then + if zstyle -s ":completion:${curcontext}:" preserve-prefix tmp1 && + [[ -n "$tmp1" && "$pre" = (#b)(${~tmp1})* ]]; then + + pre="$pre[${#match[1]}+1,-1]" + orig="$orig[${#match[1]}+1,-1]" + donepath="$match[1]" + prepaths=( '' ) + + elif [[ "$pre[1]" = / ]]; then # If it is a absolute path name, we remove the first slash and put it in # `donepath' meaning that we treat it as the path that was already handled. # Also, we don't use the paths from `-W'. |