diff options
Diffstat (limited to 'Completion/Debian/Type/_deb_packages')
-rw-r--r-- | Completion/Debian/Type/_deb_packages | 50 |
1 files changed, 45 insertions, 5 deletions
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" } |