diff --git a/bash_completion b/bash_completion old mode 100644 new mode 100755 index e204296f..720355b3 --- a/bash_completion +++ b/bash_completion @@ -2085,7 +2085,7 @@ _rpm() elif [[ ${COMP_WORDS[1]} == -b* ]]; then _filedir 'spec' else - _filedir '@(tgz|tar.@(gz|bz2))' + _filedir '@(tgz|tar.@(gz|bz2|lzma))' fi ;; --re@(build|compile)) @@ -2097,7 +2097,7 @@ _rpm() fi ;; --tarbuild) - _filedir '@(tgz|tar.@(gz|bz2))' + _filedir '@(tgz|tar.@(gz|bz2|lzma))' ;; --@(re|add)sign) _filedir 'rpm' @@ -2902,9 +2902,9 @@ _tar() _filedir return 0 ;; - +([^IZzjy])f) - ext='t@(ar?(.@(Z|gz|bz?(2)))|gz|bz?(2))' - regex='t\(ar\(\.\(Z\|gz\|bz2\?\)\)\?\|gz\|bz2\?\)' + +([^IZzJjy])f) + ext='t@(ar?(.@(Z|gz|bz?(2)|lz?(ma)))|gz|bz?(2)|lz?(ma))' + regex='t\(ar\(\.\(Z\|gz\|bz2\?\|lzma\)\)\?\|gz\|bz2\?\|lzma\)' ;; *[Zz]*f) ext='t?(ar.)@(gz|Z)' @@ -2914,6 +2914,10 @@ _tar() ext='t?(ar.)bz?(2)' regex='t\(ar\.\)\?bz2\?' ;; + *[J]*f) + ext='t?(ar.)lz?(ma)' + regex='t\(ar\.\)\?lzma\?' + ;; *) _filedir return 0 @@ -7344,7 +7348,7 @@ _info() fi; done # strip suffix from info pages - COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2)} ) + COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2|lzma)} ) COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) ) return 0 diff --git a/contrib/lzma b/contrib/lzma new file mode 100644 index 00000000..1db97a7e --- /dev/null +++ b/contrib/lzma @@ -0,0 +1,39 @@ +# lzma(1) completion +# +have lzma && +_lzma() +{ + local cur prev xspec + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c -d -f -h -k -L -q -s \ + -v -V -z -1 -2 -3 -4 -5 -6 -7 -8 -9 \ + --help --decompress --compress --keep --force \ + --test --stdout --quiet --verbose --license \ + --version --small --fast --best --text' -- $cur ) ) + return 0 + fi + + local IFS=$'\t\n' + + xspec="*.lzma" + if [[ "$prev" == --* ]]; then + [[ "$prev" == --decompress || \ + "$prev" == --list || \ + "$prev" == --test ]] && xspec="!"$xspec + [[ "$prev" == --compress ]] && xspec= + elif [[ "$prev" == -* ]]; then + [[ "$prev" == -*[dt]* ]] && xspec="!"$xspec + [[ "$prev" == -*z* ]] && xspec= + fi + + _expand || return 0 + + COMPREPLY=( $( compgen -f -X "$xspec" -- $cur ) \ + $( compgen -d -- $cur ) ) +} && +complete -F _lzma $filenames lzma diff --git a/debian/changelog b/debian/changelog index 820f80f7..98035cee 100644 --- a/debian/changelog +++ b/debian/changelog @@ -66,6 +66,7 @@ bash-completion (200811xx) UNRELEASED; urgency=low * Improved getent completion (Ville Skyttä, Guillaume Rousse). * (Re)fix gzip and bzip2 options completion (Ville Skyttä). * Improved svn filename completion (RHBZ: #430059) (Ville Skyttä). + * Add lzma completion (Guillaume Rousse, Ville Skyttä). * Merge from Gentoo: - fix 'find' completion so that it properly completes on -?(i)whilename. Patch by Ciaran McCreesh.