From 52a5481b1acdf7695bbbc4cc6cd20e146ab9c5be Mon Sep 17 00:00:00 2001 From: Clint Adams Date: Sun, 9 Jan 2005 06:23:51 +0000 Subject: * 20654: completion for wajig, and dpkg/deb_packages improvements from Karl Chen. --- Completion/Debian/Type/_deb_packages | 50 ++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 5 deletions(-) (limited to 'Completion/Debian/Type') diff --git a/Completion/Debian/Type/_deb_packages b/Completion/Debian/Type/_deb_packages index 2486a7b0c..854570200 100644 --- a/Completion/Debian/Type/_deb_packages +++ b/Completion/Debian/Type/_deb_packages @@ -19,14 +19,54 @@ _deb_packages_update_installed () { if ( [[ ${+_deb_packages_cache_installed} -eq 0 ]] || _cache_invalid DEBS_installed ) && ! _retrieve_cache DEBS_installed; then - _deb_packages_cache_installed=( - ${${${(f)"$(dpkg --get-selections)"}:#*deinstall}%% *} - ) + _deb_packages_cache_installed=() + dpkg --get-selections | while read package state ; do + [[ $state = (install|hold) ]] && _deb_packages_cache_installed+=$package + done _store_cache DEBS_installed _deb_packages_cache_installed fi cachevar=_deb_packages_cache_installed } +_deb_packages_update_held () { + if ( [[ ${+_deb_packages_cache_held} -eq 0 ]] || + _cache_invalid DEBS_held ) && ! _retrieve_cache DEBS_held; + then + _deb_packages_cache_held=() + dpkg --get-selections | while read package state ; do + [[ $state = hold ]] && _deb_packages_cache_held+=$package + done + _store_cache DEBS_held _deb_packages_cache_held + fi + cachevar=_deb_packages_cache_held +} + +_deb_packages_update_deinstalled () { + if ( [[ ${+_deb_packages_cache_deinstalled} -eq 0 ]] || + _cache_invalid DEBS_deinstalled ) && ! _retrieve_cache DEBS_deinstalled; + then + _deb_packages_cache_deinstalled=() + dpkg --get-selections | while read package state ; do + [[ $state = deinstall ]] && _deb_packages_cache_deinstalled+=$package + done + _store_cache DEBS_deinstalled _deb_packages_cache_deinstalled + fi + cachevar=_deb_packages_cache_deinstalled +} + +_deb_packages_update_xinstalled () { + if ( [[ ${+_deb_packages_cache_xinstalled} -eq 0 ]] || + _cache_invalid DEBS_xinstalled ) && ! _retrieve_cache DEBS_xinstalled; + then + _deb_packages_cache_xinstalled=() + dpkg --get-selections | while read package state ; do + _deb_packages_cache_xinstalled+=$package + done + _store_cache DEBS_xinstalled _deb_packages_cache_xinstalled + fi + cachevar=_deb_packages_cache_xinstalled +} + _deb_packages_update_uninstalled () { _deb_packages_update_avail _deb_packages_update_installed @@ -46,14 +86,14 @@ _deb_packages () { zstyle ":completion:*:*:$service:*" cache-policy _debs_caching_policy fi - [[ "$command" = (installed|uninstalled|avail) ]] || { + [[ "$command" = (installed|deinstalled|xinstalled|held|uninstalled|avail) ]] || { _message "unknown command: $command" return } zstyle -s ":completion:${curcontext}:" packageset pkgset - [[ "$pkgset" = (installed|uninstalled|avail|available) ]] || { + [[ "$pkgset" = (installed|deinstalled|xinstalled|held|uninstalled|avail|available) ]] || { pkgset="$command" } -- cgit 1.4.1