summaryrefslogtreecommitdiff
path: root/completions/patch
diff options
context:
space:
mode:
Diffstat (limited to 'completions/patch')
-rw-r--r--completions/patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/completions/patch b/completions/patch
new file mode 100644
index 00000000..e8da15a9
--- /dev/null
+++ b/completions/patch
@@ -0,0 +1,70 @@
+# patch(1) completion -*- shell-script -*-
+
+_patch()
+{
+ local cur prev words cword split
+ _init_completion -s || return
+
+ case $prev in
+ -p|--strip|-D|--ifdef|-B|--prefix|-Y|--basename-prefix|-z|--suffix|\
+ -g|--get)
+ return
+ ;;
+ -F|--fuzz)
+ COMPREPLY=( $( compgen -W '{0..3}' -- "$cur" ) )
+ return
+ ;;
+ -i|--input)
+ _filedir '@(?(d)patch|dif?(f))'
+ return
+ ;;
+ -o|--output|-r|--reject-file)
+ [[ ! $cur || $cur == - ]] && COMPREPLY=( - )
+ _filedir
+ return
+ ;;
+ --quoting-style)
+ COMPREPLY=( $( compgen -W 'literal shell shell-always c escape' \
+ -- "$cur" ) )
+ return
+ ;;
+ -V|--version-control)
+ COMPREPLY=( $( compgen -W 'simple numbered existing' -- "$cur" ) )
+ return
+ ;;
+ -d|--directory)
+ _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: ts=4 sw=4 et filetype=sh