--- /usr/share/zsh/4.2.5/functions/Completion/Debian/_deb_packages 2005-04-27 03:31:08.000000000 +0300 +++ _deb_packages 2005-10-16 20:21:31.000000000 +0300 @@ -6,10 +6,14 @@ if ( [[ ${+_deb_packages_cache_avail} -eq 0 ]] || _cache_invalid DEBS_avail ) && ! _retrieve_cache DEBS_avail; then + #_deb_packages_cache_avail=( + # ${(f)"$(apt-cache --generate pkgnames)"} + #) _deb_packages_cache_avail=( - ${(f)"$(apt-cache --generate pkgnames)"} + ${(f)"$(apt-cache dumpavail | \ + awk -v 'FS=Description: |Package: ' \ + '/^Package: / { package=$2 } /^Description: / { print package ":" $2 }')"} ) - _store_cache DEBS_avail _deb_packages_cache_avail fi cachevar=_deb_packages_cache_avail @@ -103,16 +107,20 @@ _deb_packages_update_$pkgset - _tags packages && compadd "$expl[@]" - "${(@P)cachevar}" + if [[ "$pkgset" == "avail" ]]; then + _tags packages && _describe '' ${cachevar} "$expl[@]" + else + _tags packages && compadd "$expl[@]" - "${(@P)cachevar}" + fi } - _debs_caching_policy () { +_debs_caching_policy () { # rebuild if cache is more than a week old - oldp=( "$1"(mw+1) ) - (( $#oldp )) && return 0 - - [[ /var/cache/apt/pkgcache.bin -nt "$1" || - /var/lib/dpkg/available -nt "$1" ]] - } + oldp=( "$1"(mw+1) ) + (( $#oldp )) && return 0 + + [[ /var/cache/apt/pkgcache.bin -nt "$1" + || /var/lib/dpkg/available -nt "$1" ]] +} _deb_packages "$@"