# 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