function __fish_print_user_ids if command -sq getent for line in (getent passwd) set -l v (string split : -- $line) printf "%s\t%s\n" $v[3] $v[1] end end end function __fish_print_group_ids if command -sq getent for line in (getent group) set -l v (string split : -- $line) printf "%s\t%s\n" $v[3] $v[1] end end end function __fish_complete_mount_opts set -l fish_mount_opts \ async\t'Use asynchronous I/O' \ atime\t'Update time on each access' \ noatime\t'Do not update time on each access' \ auto\t'Mounted with' \ noauto\t'Not mounted by -a' \ defaults\t'Use default options' \ dev\t'Interpret character/block special devices' \ nodev\t'Do not interpret character/block special devices' \ diratime\t'Update directory inode access time' \ nodiratime\t'Don\'t update directory inode access time' \ dirsync\t'Use synchronous directory operations' \ exec\t'Permit executables' \ noexec\t'Do not permit executables' \ group\t'Any user within device group may mount' \ iversion\t'Increment i_version field on inode modification' \ noiversion\t'Don\'t increment i_version field on inode modification' \ mand\t'Allow mandatory locks' \ nomand\t'Don\'t allow mandatory locks' \ _netdev\t'Filesystem uses network' \ nofail\t'Don\'t report errors' \ relatime\t'Update inode access times' \ norelatime\t'Don\'t update inode access times' \ strictatime \ nostrictatime \ lazytime \ nolazytime \ suid\t'Allow suid bits' \ nosuid\t'Ignore suid bits' \ silent \ loud \ owner \ remount\t'Remount read-only filesystem' \ ro\t'Mount read-only' \ rw\t'Mount read-write' \ sync\t'Use synchronous I/O' \ user\t'Any user may mount' \ nouser\t'Only root may mount' \ users\t'Any user may mount and unmount' \ protect \ usemp \ verbose \ {grp,no,usr,}quota \ autodefrag \ compress \ compress-force \ degraded \ discard \ enospc_debug \ flushoncommit \ inode_cache \ context=\t'Set SELinux context' \ uid= \ gid= \ ownmask= \ othmask= \ setuid= \ setgid= \ mode= \ prefix= \ volume= \ reserved= \ root= \ bs= \ alloc_start= \ check_int{,_data,_print,_mask}= \ commit= \ compress= \ compress-force= \ device= \ fatal_errors= \ max_inline= \ metadata_ratio= \ noacl \ nobarrier \ nodatacow \ nodatasum \ notreelog \ recovery \ rescan_uuid_tree \ skip_balance \ nospace_cache \ clear_cache \ ssd \ nossd \ ssd_spread \ subvol= \ subvolrootid= \ thread_pool= \ user_subvol_rm_allowed \ acl \ noacl \ bsddf \ minixdf \ check=none \ nocheck \ debug \ errors={continue,remount-ro,panic} \ grpid \ bsdgroups \ bsdgroups \ bsdgroups \ nouid32 \ grpquota \ grpquota \ resgid= \ resuid= \ sb= \ {user,nouser}_xattr \ journal={update,unum} \ journal{_dev,_path}= \ norecovery \ noload \ data={journal,ordered,writeback} \ data_err={ignore,abort} \ barrier={0,1} \ user_xattr \ acl \ set -l token (commandline -tc | string replace -r '^-o' -- '') set -l args (string split , -- $token) if test (count $args) -ne 0 set -l last_arg $args[-1] set -e args[-1] switch (string replace -r '=.*' '=' -- $last_arg) case uid= set -a fish_mount_opts uid=(__fish_print_user_ids) case gid= set -a fish_mount_opts gid=(__fish_print_group_ids) case setuid= set -a fish_mount_opts setuid=(__fish_print_user_ids) case setgid= set -a fish_mount_opts setgid=(__fish_print_group_ids) end end set -l prefix '' if set -q args[1] set prefix (string join , -- $args), end printf '%s\n' $prefix$fish_mount_opts end