about summary refs log tree commit diff
path: root/Completion/Debian/Type
diff options
context:
space:
mode:
authorClint Adams <clint@users.sourceforge.net>2005-01-09 06:23:51 +0000
committerClint Adams <clint@users.sourceforge.net>2005-01-09 06:23:51 +0000
commit52a5481b1acdf7695bbbc4cc6cd20e146ab9c5be (patch)
tree629b06e6e06e023ca0004e709ac6c7f8509649eb /Completion/Debian/Type
parent0470a378b6a36453443015a09a2ddb88d7113c3f (diff)
downloadzsh-52a5481b1acdf7695bbbc4cc6cd20e146ab9c5be.tar.gz
zsh-52a5481b1acdf7695bbbc4cc6cd20e146ab9c5be.tar.xz
zsh-52a5481b1acdf7695bbbc4cc6cd20e146ab9c5be.zip
* 20654: completion for wajig, and dpkg/deb_packages improvements from Karl Chen.
Diffstat (limited to 'Completion/Debian/Type')
-rw-r--r--Completion/Debian/Type/_deb_packages50
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"
   }