summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Linux/Command/_sshfs31
1 files changed, 28 insertions, 3 deletions
diff --git a/Completion/Linux/Command/_sshfs b/Completion/Linux/Command/_sshfs
index c6a8e102d..e6d137017 100644
--- a/Completion/Linux/Command/_sshfs
+++ b/Completion/Linux/Command/_sshfs
@@ -1,14 +1,39 @@
 #compdef sshfs
 
-_arguments \
+local context state state_descr line
+typeset -A opt_args
+local curcontext="$curcontext"
+integer ret=1
+
+_arguments -C \
   '-V[version]' \
   '-p:tcp port:' \
   '-C[compression]' \
-  '-o:options:_values -s , "sshfs or fuse or mount options" reconnect sshfs_sync no_readahead sshfs_debug cache=:cache\ setting:(yes no) cache_timeout=:seconds: cache_stat_timeout=:seconds: cache_dir_timeout=:seconds: cache_link_timeout=:seconds: ssh_command=:ssh\ command:_command_names directport=:port: SSHOPT=:ssh\ option: default_permissions allow_other allow_root kernel_cache large_read direct_io max_read=:size: hard_remove debug fs_name=:name: use_ino readdir_ino' \
+  '-o:options:->options' \
   '-d[debug]' \
   '-f[foreground]' \
   '-s[disable multithreaded operation]' \
   '-r[mount read-only]' \
   '-h[help]' \
   ':remote directory:_user_at_host -S:' \
-  ':mountpoint:_files -/'
+  ':mountpoint:_files -/' && ret=0
+
+if [[ $state == options ]]; then
+  _values -s , "sshfs or fuse or mount options" \
+    reconnect sshfs_sync no_readahead sshfs_debug \
+    'cache=:cache setting:(yes no)' \
+    cache_timeout=:seconds: \
+    cache_stat_timeout=:seconds: \
+    cache_dir_timeout=:seconds: \
+    cache_link_timeout=:seconds: \
+    'ssh_command=:ssh command:_command_names' \
+    directport=:port: \
+    'SSHOPT=:ssh option:' \
+    default_permissions allow_other allow_root kernel_cache large_read direct_io \
+    max_read=:size: \
+    hard_remove debug \
+    fs_name=:name: \
+    use_ino readdir_ino && ret=0
+fi
+
+return ret