summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVille Skyttä <ville.skytta@iki.fi>2013-03-24 22:59:29 +0200
committerVille Skyttä <ville.skytta@iki.fi>2013-03-24 22:59:29 +0200
commit7afc97366f0a931cb98bd151c5971d4c4c926e59 (patch)
tree488d7797e4fe8521dc69811c8b20a493571cebf4
parentbeaba62b346bc588d1f9466f338f64073ad2716f (diff)
downloadbash-completion-7afc97366f0a931cb98bd151c5971d4c4c926e59.tar.gz
patch: New full featured completion.
-rw-r--r--bash_completion2
-rw-r--r--completions/Makefile.am1
-rw-r--r--completions/patch70
3 files changed, 72 insertions, 1 deletions
diff --git a/bash_completion b/bash_completion
index 41b4bc0d..069cee51 100644
--- a/bash_completion
+++ b/bash_completion
@@ -1794,7 +1794,7 @@ _longopt()
complete -F _longopt a2ps awk base64 bash bc bison cat colordiff cp csplit \
cut date df diff dir du enscript env expand fmt fold gperf \
grep grub head indent irb ld ldd less ln ls m4 md5sum mkdir mkfifo mknod \
- mv netstat nl nm objcopy objdump od paste patch pr ptx readelf rm rmdir \
+ mv netstat nl nm objcopy objdump od paste pr ptx readelf rm rmdir \
sed seq sha{,1,224,256,384,512}sum shar sort split strip sum tac tail tee \
texindex touch tr uname unexpand uniq units vdir wc who
diff --git a/completions/Makefile.am b/completions/Makefile.am
index c195fb5f..f312b3a9 100644
--- a/completions/Makefile.am
+++ b/completions/Makefile.am
@@ -238,6 +238,7 @@ bashcomp_DATA = a2x \
p4 \
pack200 \
passwd \
+ patch \
perl \
pgrep \
pidof \
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