_lsd() { local i cur prev opts cmds COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" cmd="" opts="" for i in ${COMP_WORDS[@]} do case "${i}" in lsd) cmd="lsd" ;; *) ;; esac done case "${cmd}" in lsd) opts=" -a -A -F -l -1 -R -h -d -t -S -r -V --all --almost-all --classify --long --oneline --recursive --human-readable --tree --directory-only --total-size --timesort --sizesort --reverse --classic --no-symlink --help --version --color --icon --icon-theme --depth --size --date --group-dirs --blocks ... " if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 fi case "${prev}" in --color) COMPREPLY=($(compgen -W "always auto never" -- ${cur})) return 0 ;; --icon) COMPREPLY=($(compgen -W "always auto never" -- ${cur})) return 0 ;; --icon-theme) COMPREPLY=($(compgen -W "fancy unicode" -- ${cur})) return 0 ;; --depth) COMPREPLY=($(compgen -f ${cur})) return 0 ;; --size) COMPREPLY=($(compgen -W "default short bytes" -- ${cur})) return 0 ;; --date) COMPREPLY=($(compgen -W "date relative" -- ${cur})) return 0 ;; --group-dirs) COMPREPLY=($(compgen -W "none first last" -- ${cur})) return 0 ;; --blocks) COMPREPLY=($(compgen -W "permission user group size date name" -- ${cur})) return 0 ;; *) COMPREPLY=() ;; esac COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; esac } complete -F _lsd -o bashdefault -o default lsd