# patch(1) completion -*- shell-script -*- _patch() { local cur prev words cword split _init_completion -s || return case $prev in --strip | --ifdef | --prefix | --basename-prefix | --suffix | --get | \ -!(-*)[pDBYzg]) return ;; --fuzz | -!(-*)F) COMPREPLY=($(compgen -W '{0..3}' -- "$cur")) return ;; --input | -!(-*)i) _filedir '@(?(d)patch|dif?(f))' return ;; --output | --reject-file | -!(-*)[or]) [[ ! $cur || $cur == - ]] && COMPREPLY=(-) _filedir return ;; --quoting-style) COMPREPLY=($(compgen -W 'literal shell shell-always c escape' \ -- "$cur")) return ;; --version-control | -!(-*)V) COMPREPLY=($(compgen -W 'simple numbered existing' -- "$cur")) return ;; --directory | -!(-*)d) _filedir -d return ;; --reject-format) COMPREPLY=($(compgen -W 'context unified' -- "$cur")) return ;; --read-only) COMPREPLY=($(compgen -W 'ignore warn fail' -- "$cur")) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi local args _count_args case $args in 1) _filedir ;; 2) _filedir '@(?(d)patch|dif?(f))' ;; esac } && complete -F _patch patch # ex: filetype=sh