#compdef sshfs local curcontext="$curcontext" state state_descr line typeset -A opt_args integer ret=1 # TODO: in the "user@host" argument, the "user@" part should be optional _arguments -C -S : \ '(-)'{-h,--help}'[display help information]' \ '(-)'{-V,--version}'[display version information]' \ '-p[specify TCP port]:tcp port:_ports' \ '-C[enable compression]' \ '-F[specify ssh config file]:file:_files' \ '*-o[specify mount options]:options:->options' \ '(-d --debug -f)'{-d,--debug}'[enable debug output]' \ '-f[foreground]' \ '-s[disable multithreaded operation]' \ ':remote directory:_user_at_host -S:' \ ':mountpoint:_files -/' && ret=0 if [[ $state == options ]]; then # TODO complete ssh(1) options _values -s , "options to ssh, sshfs, mount, or FUSE" \ 'port:number' \ 'compression: :(yes no)' \ reconnect delay_connect sshfs_sync no_readahead sync_readdir \ sshfs_debug \ 'cache: :(yes no)' \ 'cache_timeout:timeout (seconds)' \ 'dir_cache:cache setting:(yes no)' \ 'dcache_max_size:size [10000]' \ 'dcache_timeout:timeout (seconds) [20]' \ dcache_{stat,dir,link}_timeout:'timeout (seconds)' \ 'dcache_clean_interval:interval [60]' \ 'dcache_min_clean_interval:interval [5]' \ 'workaround:workaround:(none all rename renamexdev delaysrv truncate nobuflimit fstat createmode)' \ 'idmap:user/group mapping:(none user file)' \ uidfile:file:_files \ gidfile:file:_files \ 'nomap:type:(ignore error)' \ 'ssh_command:ssh command:_command_names' \ 'ssh_protocol:version:(1 2)' \ sftp_server:path:_files \ directport:port:_ports \ slave disable_hardlink transform_symlinks follow_symlinks no_check_root password_stdin \ debug \ allow_other allow_root auto_unmount nonempty default_permissions \ fsname:filesystem\ name \ subtype:filesystem\ type \ large_read \ max_read:max\ size \ hard_remove use_ino readdir_ino direct_io kernel_cache auto_cache noauto_cache \ 'umask:permissions' \ 'uid:owner' 'gid:group' \ 'entry_timeout:timeout (seconds) [1]' \ 'negative_timeout:timeout (seconds) [0]' \ 'attr_timeout:timeout (seconds) [1]' \ 'ac_attr_timeout:timeout (seconds) [= attr_timeout]' \ noforget \ 'remember:time (seconds)' \ nopath intr \ 'intr_signal:signal [10]' \ modules:module \ max_write:size \ max_readahead:readahead \ max_background:number \ congestion_threshold:threshold \ async_read sync_read atomic_o_trunc big_writes no_remote_lock no_remote_flock \ no_remote_posix_lock splice_write splice_move splice_read \ from_code:charset to_code:charset subdir:_directories rellinks norellinks && ret=0 fi return ret