about summary refs log tree commit diff
path: root/Completion/Unix/Command/_mount
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command/_mount')
-rw-r--r--Completion/Unix/Command/_mount16
1 files changed, 15 insertions, 1 deletions
diff --git a/Completion/Unix/Command/_mount b/Completion/Unix/Command/_mount
index 17bce8023..653d7d7c2 100644
--- a/Completion/Unix/Command/_mount
+++ b/Completion/Unix/Command/_mount
@@ -750,6 +750,17 @@ fsopt)
 devordir)
   local dev_tmp mp_tmp mline
 
+  if compset -P '*:'; then
+    _wanted exports expl 'exported path' compadd \
+	${${(f)"$(path+=( {/usr,}/sbin(N) ) _call_program exports \
+	showmount -e ${IPREFIX%:} 2>/dev/null)"}[2,-1]%% *} && ret=0
+    return ret
+  fi
+  if compset -S ':*'; then
+    _hosts -S '' && ret=0
+    return ret
+  fi
+
   case "$OSTYPE" in
   freebsd*)
     while read mline; do 
@@ -767,6 +778,7 @@ devordir)
     done < /etc/fstab
 
     _alternative \
+      'hosts:host:_hosts -S :' \
       'devices:device:compadd -a dev_tmp' \
       'directories:mount point:compadd -a mp_tmp' && ret=0
     ;;
@@ -774,7 +786,9 @@ devordir)
     if (( ${${(s.,.)opt_args[-o]}[(I)loop(|=*)]} )) ; then
       _wanted device-files expl 'loop device file' _files && ret=0
     else
-      _wanted files expl 'device or mount point' _files -g "*(-%,-/)" && ret=0
+      _alternative \
+        'hosts:host:_hosts -S :' \
+        'files:device or mount point:_files -g "*(-%b,-/)"' && ret=0
     fi
     ;;
   esac