diff --git a/CHANGES b/CHANGES index 59131021..e226c032 100644 --- a/CHANGES +++ b/CHANGES @@ -94,6 +94,7 @@ bash-completion (1.x) * Associate .tsv with oocalc. * Add xmlwf completion. * Associate *.po with poedit, gtranslator, kbabel, and lokalize. + * Add xz, xzcat, xzdec, and unxz completion. [ Todd Zullinger ] * Make yum complete on filenames after install, deplist, update and upgrade diff --git a/Makefile.am b/Makefile.am index 3c808914..d9036329 100644 --- a/Makefile.am +++ b/Makefile.am @@ -140,6 +140,7 @@ bashcomp_DATA = contrib/ant \ contrib/xmlwf \ contrib/xmms \ contrib/xrandr \ + contrib/xz \ contrib/yp-tools \ contrib/yum diff --git a/bash_completion b/bash_completion index f1ccb202..f9736160 100644 --- a/bash_completion +++ b/bash_completion @@ -107,6 +107,7 @@ complete -f -X '!*.@(Z|gz|tgz|Gz|dz)' gunzip #complete -f -X '!*.@(Z|gz|tgz|Gz|dz)' zcmp zdiff zcat zegrep zfgrep zgrep zless zmore complete -f -X '!*.*' zcmp zdiff zcat zegrep zfgrep zgrep zless zmore complete -f -X '!*.Z' uncompress +complete -f -X '!*.xz' unxz xzcat complete -f -X '!*.@(gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX)' ee complete -f -X '!*.@(gif|jp?(e)g|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|GIF|JPG|JP?(E)G|TIF?(F)|PNG|P[BGP]M|BMP|X[BP]M|RLE|RGB|PCX|FITS|PM)' xv qiv complete -f -X '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))' gv ggv kghostview diff --git a/contrib/xz b/contrib/xz new file mode 100644 index 00000000..fb6089d6 --- /dev/null +++ b/contrib/xz @@ -0,0 +1,99 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh + +# xz(1) completion +# +have xz && +_xz() +{ + COMPREPLY=() + local cur=`_get_cword` + local prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-z --compress -d --decompress \ + -t --test -l --list -k --keep -f --force -c --stdout \ + -S --suffix --files --files0 -F --format -C --check \ + -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -M --memory --lzma1 \ + --lzma2 --x86 --powerpc --ia64 --arm --armthumb \ + --sparc --delta -q --quiet -v --verbose -h --help \ + -H --long-help -V --version' -- $cur ) ) + return 0 + fi + + local split=false + _split_longopt && split=true + + local xspec="*.xz" + + case "$prev" in + -@(!(-*)[dlt]*|-decompress|-list|-test)) + xspec="!"$xspec + ;; + --files|--files0) + _filedir + return 0 + ;; + -C|--check) + COMPREPLY=( $( compgen -W 'crc32 crc64 sha256' \ + -- $cur ) ) + return 0 + ;; + -F|--format) + COMPREPLY=( $( compgen -W 'auto xz lzma raw' -- $cur ) ) + return 0 + ;; + -M|--memory|-S|--suffix|--delta|--lzma1|--lzma2) + # argument required but no completions available + return 0 + ;; + -h|--help|-H|--long-help|-V|--version) + # all other arguments are noop with these + return 0 + ;; + esac + + $split && return 0 + + _expand || return 0 + + local IFS=$'\t\n' + COMPREPLY=( $( compgen -f -X "$xspec" -- $cur ) \ + $( compgen -d -- $cur ) ) +} && +complete -F _xz $filenames xz + +# xzdec(1) completion +# +have xzdec && +_xzdec() +{ + COMPREPLY=() + local cur=`_get_cword` + local prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-M --memory -h --help -V --version' \ + -- $cur ) ) + return 0 + fi + + local split=false + _split_longopt && split=true + + case "$prev" in + -M|--memory) + # argument required but no completions available + return 0 + ;; + -h|--help|-V|--version) + # all other arguments are noop with these + return 0 + ;; + esac + + $split && return 0 + + _filedir xz +} && +complete -F _xzdec $filenames xzdec