about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--Completion/Debian/Command/_apt-move61
-rw-r--r--Completion/Debian/Command/_module-assistant56
-rw-r--r--Completion/Debian/Command/_uscan28
-rw-r--r--Completion/Debian/Command/_wajig311
-rw-r--r--Completion/Unix/Command/.distfiles13
-rw-r--r--Completion/Unix/Command/_cal50
-rw-r--r--Completion/Unix/Command/_ccal26
-rw-r--r--Completion/Unix/Command/_dhclient47
-rw-r--r--Completion/Unix/Command/_fortune24
-rw-r--r--Completion/Unix/Command/_mencal49
-rw-r--r--Completion/Unix/Command/_perforce10
-rw-r--r--Completion/Unix/Command/_pump42
-rw-r--r--Completion/Unix/Command/_surfraw24
-rw-r--r--Completion/X/Command/.distfiles4
15 files changed, 293 insertions, 461 deletions
diff --git a/ChangeLog b/ChangeLog
index 506a0b99e..a9b91570e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2005-08-01  Oliver Kiddle  <opk@zsh.org>
 
+        * unposted: Completion/Debian/Command/_apt-move,
+	Completion/Debian/Command/_module-assistant,
+	Completion/Debian/Command/_uscan, Completion/Debian/Command/_wajig,
+	Completion/Unix/Command/_cal, Completion/Unix/Command/_ccal,
+	Completion/Unix/Command/_dhclient, Completion/Unix/Command/_fortune,
+	Completion/Unix/Command/_mencal, Completion/Unix/Command/_perforce,
+	Completion/Unix/Command/_pump, Completion/Unix/Command/_surfraw:
+	various cleanups: fix indentation and capitalisation of descriptions
+
 	* 21393: Completion/Unix/Command/_kvno: add missing local declarations
 
 2005-08-01  Peter Stephenson  <pws@csr.com>
diff --git a/Completion/Debian/Command/_apt-move b/Completion/Debian/Command/_apt-move
index c7ca59099..a72378e6f 100644
--- a/Completion/Debian/Command/_apt-move
+++ b/Completion/Debian/Command/_apt-move
@@ -1,9 +1,10 @@
 #compdef apt-move
 
-local curcontext="$curcontext" state line ret=1
+local curcontext="$curcontext" state line cmds ret=1
 typeset -A opt_args
 
 _arguments -C \
+  '-a[process all packages]' \
   '-c[specify an alternative configuration file]' \
   '-d[override the DIST setting]' \
   '-f[override the MAXDELETE setting]' \
@@ -14,37 +15,39 @@ _arguments -C \
 
 case $state in
   cmds)
-    local -a cmds
-    cmds=('get:update your master files from local apt' \
-          'getlocal:alias of get' \
-          'fsck:fix broken repositories' \
-          'move:move cache files into mirror tree' \
-          'movefile:move files into the repository' \
-          'delete:delete obsolete packages' \
-          'packages:create new local Packages files' \
-          'update:alias for: get move delete packages' \
-          'local:alias for: move delete packages' \
-          'localupdate:alias for: getlocal move delete packages' \
-          'mirror:update your local mirror from remote rsync site' \
-          'sync:same as mirror, but only gets packages that you currently have installed on your system' \
-          'exclude:prints a list of all packages EXCLUDED from the mirror by the .exclude file' \
-          'listbin:prints lists of packages which can serve as the input to mirrorbin(mirror,sync,repo)' \
-          'listsrc:same as listbin, but lists source packages' \
-          'mirrorbin:same as mirror, but gets the packages specified on stdin' \
-          'mirrorsrc:same as mirrorbin, but gets source packages')
-      _describe -t commands 'apt-move command' cmds && ret=0
+    cmds=(
+      'get:update your master files from local apt'
+      'getlocal:alias of get'
+      'fsck:fix broken repositories'
+      'move:move cache files into mirror tree'
+      'movefile:move files into the repository'
+      'delete:delete obsolete packages'
+      'packages:create new local Packages files'
+      'update:alias for: get move delete packages'
+      'local:alias for: move delete packages'
+      'localupdate:alias for: getlocal move delete packages'
+      'mirror:update your local mirror from remote rsync site'
+      'sync:same as mirror, but only gets packages that you currently have installed on your system'
+      'exclude:prints a list of all packages EXCLUDED from the mirror by the .exclude file'
+      'listbin:prints lists of packages which can serve as the input to mirrorbin(mirror,sync,repo)'
+      'listsrc:same as listbin, but lists source packages'
+      'mirrorbin:same as mirror, but gets the packages specified on stdin'
+      'mirrorsrc:same as mirrorbin, but gets source packages'
+    )
+    _describe -t commands 'apt-move command' cmds && ret=0
   ;;
   args)
     case $line[1] in
-	  get|getlocal)
-	    # A directory or nothing
-		_files -/ && ret=0
-	  ;;
-	  movefile)
-	    # A .dsc or a .deb
-		_files -g "*.d(sc|eb)" && ret=0
-	  ;;
-	esac
+      get|getlocal)
+        _directories && ret=0
+      ;;
+      movefile)
+        _files -g "*.d(sc|eb)(-.)" && ret=0
+      ;;
+      listbin)
+        _wanted lists expl list compadd mirror sync repo
+      ;;
+    esac
   ;;
 esac
 
diff --git a/Completion/Debian/Command/_module-assistant b/Completion/Debian/Command/_module-assistant
index 36b2eaba2..d75284954 100644
--- a/Completion/Debian/Command/_module-assistant
+++ b/Completion/Debian/Command/_module-assistant
@@ -3,35 +3,35 @@
 typeset -a _module_assistant_commands
 
 _module_assistant_commands=(
-    "update[synchronize version index files]"
-    "prepare[install required kernel headers package]"
-    "fakesource[install required kernel source package]"
-    "list[a print a list of details about available packages]"
-    "list-available[b print a list of details about available packages ]"
-    "la[c print a list of details about available packages  ]"
-    "list-installed[ print a list of details about installed packages ]"
-    "li[print a list of details about installed packages  ]"
-    "search[search for packages]"
-    "get[install specified source package]"
-    "build[build specified packages]"
-    "install[install specified packages]"
-    "auto-install[do all necessary steps to install specified packages]"
-    "clean[clear build directories of the kernel packages]"
-    "purge[clear cache and remove all binary packages of source package]"
+  'update[synchronize version index files]'
+  'prepare[install required kernel headers package]'
+  'fakesource[install required kernel source package]'
+  'list[a print a list of details about available packages]'
+  'list-available[b print a list of details about available packages]'
+  'la[c print a list of details about available packages]'
+  'list-installed[ print a list of details about installed packages]'
+  'li[print a list of details about installed packages]'
+  'search[search for packages]'
+  'get[install specified source package]'
+  'build[build specified packages]'
+  'install[install specified packages]'
+  'auto-install[do all necessary steps to install specified packages]'
+  'clean[clear build directories of the kernel packages]'
+  'purge[clear cache and remove all binary packages of source package]'
 )
 
 _arguments -A \
- '(-h --help)'{-h,--help}'[print help screen]' \
- '(-v --verbose)'{-v,--verbose}'[be verbose, show full paths, etc.]' \
- '(-q --quiet)'{-q,--quiet}'[the opposite of verbose]' \
- '(-n --no-rebuild)'{-n,--no-rebuild}'[do not rebuild when package exists]' \
- '(-i --ignore-failures)'{-i,--ignore-failures}'[do not stop on build failures]' \
- '(-s --apt-search)'{-s,--apt-search}'[search for installation candidates in the Debian archive]' \
- '(-f --force)'{-f,--force}'[force using new versions even when old ones exist]' \
- '(-u --userdir)'{-u,--userdir}'[specify a (writable) replacement directory for /var&/usr]:dir:_files -/' \
- '(-l --kvers-list)'{-l,--kvers-list}'[list of kernel versions to work on (default: current version)]:kernel version list:' \
- '(-k --kernel-dir)'{-k,--kernel-dir}'[list of kernel headers/source directories, comma separated]:list of dirs:_files -/' \
- '(-t --text-mode)'{-t,--text-mode}'[no progress bars]' \
- '1:list of commands:_values -s , subcommands "${_module_assistant_commands[@]}"' \
- '*:packages: compadd /usr/src/modass/var_cache_modass/*.avail_version(N:t:r) /var/cache/modass/*.avail_version(N:t:r)'
+  '(-h --help)'{-h,--help}'[print help screen]' \
+  '(-v --verbose)'{-v,--verbose}'[be verbose, show full paths, etc.]' \
+  '(-q --quiet)'{-q,--quiet}'[the opposite of verbose]' \
+  '(-n --no-rebuild)'{-n,--no-rebuild}'[do not rebuild when package exists]' \
+  '(-i --ignore-failures)'{-i,--ignore-failures}'[do not stop on build failures]' \
+  '(-s --apt-search)'{-s,--apt-search}'[search for installation candidates in the Debian archive]' \
+  '(-f --force)'{-f,--force}'[force using new versions even when old ones exist]' \
+  '(-u --userdir)'{-u,--userdir}'[specify a (writable) replacement directory for /var&/usr]:dir:_files -/' \
+  '(-l --kvers-list)'{-l,--kvers-list}'[list of kernel versions to work on (default: current version)]:kernel version list:' \
+  '(-k --kernel-dir)'{-k,--kernel-dir}'[list of kernel headers/source directories, comma separated]:list of dirs:_files -/' \
+  '(-t --text-mode)'{-t,--text-mode}'[no progress bars]' \
+  '1:list of commands:_values -s , subcommands "${_module_assistant_commands[@]}"' \
+  '*:packages: compadd /usr/src/modass/var_cache_modass/*.avail_version(N:t:r) /var/cache/modass/*.avail_version(N:t:r)'
 
diff --git a/Completion/Debian/Command/_uscan b/Completion/Debian/Command/_uscan
index fb8e3ff02..699d5c34c 100644
--- a/Completion/Debian/Command/_uscan
+++ b/Completion/Debian/Command/_uscan
@@ -1,17 +1,17 @@
 #compdef uscan
 
 _arguments \
-       '(--report --no-download --download)'{--report,--no-download}'[report but do not download]' \
-       '--debug[dump downloaded pages to stdout]' \
-       '(--report --no-download --download)--download[report and download]' \
-       '(--pasv --no-pasv)--pasv[force PASV mode for FTP]' \
-       '(--pasv --no-pasv)--no-pasv[do not use PASV mode for FTP]' \
-       '(--symlink --no-symlink)--symlink[make orig.tar.gz symlinks]' \
-       '(--symlink --no-symlink)--no-symlink[do not make orig.tar.gz symlinks]' \
-       '(--verbose --no-verbose)--verbose[give verbose output]' \
-       '(--verbose --no-verbose)--no-verbose[do not give verbose output]' \
-       '--check-dirname-level:level:((0\:never\ check\ the\ directory\ name 1\:only\ check\ directory\ name\ if\ we\ had\ to\ change\ directory 2\:always\ check\ the\ directory\ name))' \
-       '--check-dirname-regex:perlre:' \
-       '(--no-conf --noconf)'{--no-conf,--noconf}'[do not read any configuration files]' \
-       '--help[help]' \
-       '--version[version]'
+  '(--report --no-download --download)'{--report,--no-download}'[report but do not download]' \
+  '--debug[dump downloaded pages to stdout]' \
+  '(--report --no-download --download)--download[report and download]' \
+  '(--pasv --no-pasv)--pasv[force passive mode for ftp]' \
+  '(--pasv --no-pasv)--no-pasv[do not use passive mode for ftp]' \
+  '(--symlink --no-symlink)--symlink[make orig.tar.gz symlinks]' \
+  '(--symlink --no-symlink)--no-symlink[do not make orig.tar.gz symlinks]' \
+  '(--verbose --no-verbose)--verbose[give verbose output]' \
+  '(--verbose --no-verbose)--no-verbose[do not give verbose output]' \
+  '--check-dirname-level:level:((0\:never\ check\ the\ directory\ name 1\:only\ check\ directory\ name\ if\ we\ had\ to\ change\ directory 2\:always\ check\ the\ directory\ name))' \
+  '--check-dirname-regex:perl regex' \
+  '(--no-conf --noconf)'{--no-conf,--noconf}'[do not read any configuration files]' \
+  '--help[display help information]' \
+  '--version[display version information]'
diff --git a/Completion/Debian/Command/_wajig b/Completion/Debian/Command/_wajig
index 861c909e5..350eee658 100644
--- a/Completion/Debian/Command/_wajig
+++ b/Completion/Debian/Command/_wajig
@@ -1,248 +1,77 @@
 #compdef wajig
 
-# $Id: _wajig,v 1.1 2005/01/09 06:23:58 clint Exp $
+local curcontext="$curcontext" state line cmds argno ret=1
 
-# quarl 2005-01-08 initial version
+_arguments -C -s \
+  '(- 1 *)'{-h,--help}'[print usage message]' \
+  '(- 1 *)--version[display version information]' \
+  '(-q --quiet)'{-q,--quiet}'[do everything quietly]' \
+  '(-s --simulate)'{-s,--simulate}"[trace but don't execute]" \
+  '(-t --teaching)'{-t,--teaching}'[trace the sequence of commands performed]' \
+  '(-v --verbose)'{-v,--verbose}'[increase (or set) the level of verbosity]' \
+  '1: :->cmds' \
+  '*: :->args' && ret=0
 
-# local curcontext="$curcontext" state line cmds ret=1
+case $state in
+  cmds)
+    cmds=( ${${(M)${(f)"$(wajig commands 2>/dev/null)"}:# [^-]*}/(#b) ([^ ]#) #(*)/$match[1]:$match[2]:l} )
 
-_wajig_commands=(
-    'addcdrom:add a CD-ROM to the list of available sources of packages'
-    'autoalts:mark the alternative to be auto set (using set priorities)'
-    'autoclean:remove superseded deb files from the download cache'
-    'autodownload:do an update followed by a download of all updated packages'
-    'autoinstall:perform an install without asking questions (non-interactive)'
-    'available:list versions of packages available for installation'
-    'bug:check reported bugs in package using the Debian Bug Tacker'
-    'build:retrieve/unpack sources and build .deb for the named packages'
-    'builddepend:retrieve packages required to build listed packages'
-    'changelog:retrieve latest changelog for the package'
-    'clean:remove all deb files from the download cache'
-    'commands:list all the JIG commands and one line descriptions for each'
-    'dailyupgrade:perform an update then a dist-upgrade'
-    'dependents:list of packages which depend/recommend/suggest the package'
-    'describe:one line description of packages (-v and -vv for more detail)'
-    'describenew:one line description of new packages'
-    'detail:provide a detailed description of package (describe -vv)'
-    'detailnew:provide a detailed description of new packages (describe -vv)'
-    'distupgrade:upgrade to new distribution (installed and new rqd packages)'
-    'docs:equivalent to help with -verbose=2'
-    'download:download package files ready for an install'
-    'filedownload:download packages listed in file ready for an install'
-    'fileinstall:install packages listed in a file'
-    'fileremove:remove packages listed in a file'
-    'findfile:search for a file within installed packages'
-    'findpkg:search for an unofficial Debian package at apt-get.org'
-    'fixconfigure:perform dpkg --configure -a (to fix interrupted configure)'
-    'fixinstall:perform apt-get -f install (to fix broken dependencies)'
-    'fixmissing:perform apt-get --fix-missing upgrade'
-    'force:install packages and ignore file overwrites and depends'
-    'help:print documentation (detail depends on --verbose)'
-    'hold:place listed packages on hold so they are not upgraded'
-    'init:initialise or reset the JIG archive files'
-    'install:install (or upgrade) one or more packages or .deb files'
-    'installr:install package and associated recommended packages'
-    'installrs:install package and recommended and suggested packages'
-    'installs:install package and associated suggested packages'
-    'install/dist:install packages from specified distribution'
-    'integrity:check the integrity of installed packages (through checksums)'
-    'large:list size of all large (>10MB) installed packages'
-    'lastupdate:identify when an update was last performed'
-    'list:list the status and description of installed packages'
-    'listall:list a one line description of every known package'
-    'listalts:list the objects that can have alternatives configured'
-    'listcache:list the contents of the download cache'
-    'listcommands:list all the JIG commands and one line descriptions for each'
-    'listdaemons:list the daemons that JIG can start/stop/restart'
-    'listfiles:list the files that are supplied by the named package'
-    'listhold:list those packages on hold'
-    'listinstalled:List packages (with optional argument substring) installed'
-    'listnames:list all known packages or those containing supplied string'
-    'listorphans:list libraries not required by any installed package'
-    'liststatus:same as list but only prints first two columns, not truncated'
-    'listwide:same as list but avoids truncating package names'
-    'localdist-upgrade:dist-upgrade using packages already downloaded'
-    'localupgrade:upgrade using packages already downloaded, but not any others'
-    'move:move packages in the download cache to a local Debian mirror'
-    'new:list packages that became available since last update'
-    'news:obtain the latest news about the package'
-    'newupgrades:list packages newly available for upgrading'
-    'nonfree:list installed packages that do not meet the DFSG'
-    'orphans:list libraries not required by any installed package'
-    'package:generate a .deb file for an installed package'
-    'policy:from preferences file show priorities/policy (available)'
-    'purge:remove one or more packages and configuration files'
-    'purgedepend:purge package and those it depend on and not required by others'
-    'purgeorphans:purge orphaned libraries (not required by installed packages)'
-    "readme:display the package's README file from /usr/share/doc"
-    'recdownload:download package and any it depends on'
-    'recommended:install package and associated recommended packages'
-    'reconfigure:reconfigure the named installed packages or run gkdebconf'
-    'reinstall:reinstall each of the named packages'
-    'reload:reload daemon configs, e.g., gdm, apache (see list-daemons)'
-    'remove:remove one or more packages (see also purge)'
-    'removedepend:remove package and its dependees not required by others'
-    'removeorphans Remove orphaned libraries (not required by installed packages)'
-    'repackage:generate a .deb file for an installed package'
-    'reset:initialise or reset the JIG archive files'
-    'restart:stop then start a daemon, e.g., gdm, apache (see list-daemons)'
-    'rpm2deb:convert a RedHat .rpm file to a Debian .deb file'
-    'rpminstall:install a RedHat .rpm package'
-    'rpmtodeb:convert a RedHat .rpm file to a Debian .deb file'
-    'search:search for packages containing listed words'
-    'searchapt:find local Debian archives suitable for sources.list'
-    'setup:configure the sources.list file which locates Debian archives'
-    'show:provide a detailed description of package [same as detail]'
-    'showdistupgrade:trace the steps that a dist-upgrade would perform'
-    'showinstall:trace the steps that an install would perform'
-    'showremove:trace the steps that a remove would perform'
-    'showupgrade:trace the steps that an upgrade would perform'
-    'sizes:print out the size (in K) of all, or listed, installed packages'
-    'snapshot:generates list of package=version for all installed packages'
-    'source:retrieve and unpack sources for the named packages'
-    'start:start a daemon, e.g., gdm, apache (see list-daemons)'
-    'status:show the version and available version of packages'
-    'statusmatch:show the version and available version of matching packages'
-    'statussearch:show the version and available version of matching packages'
-    'stop:stop a daemon, e.g., gdm, apache (see list-daemons)'
-    'suggested:install package and associated suggested packages'
-    'tasksel:run the Gnome task selector to install groups of packages'
-    'toupgrade:list packages with newer versions available for upgrading'
-    'unhold:remove listed packages from hold so they are again upgraded'
-    'unofficial:search for an unofficial Debian package at apt-get.org'
-    'update:update the list of down-loadable packages'
-    'updatealts:update default alternative for things like x-window-manager'
-    'upgrade:upgrade all of the installed packages or just those listed'
-    'whatis:a synonym for describe'
-    'whichpkg:find the package that supplies the given command or file'
-)
-
-_wajig_command() {
-    _describe -t commands 'aptitude command' _wajig_commands
-}
-
-_wajig_alternatives() {
-    _files -W /var/lib/dpkg/alternatives
-}
-
-_wajig_services() {
-    _files -W /etc/init.d
-}
-
-_wajig_subcommand() {
-    ((argno = CURRENT-2))
-    case ${words[2]:gs/-/} in
-        addcdrom) ;;
-        autoalts | autoalternatives) ((argno==1)) && _wajig_alternatives ;;
-        autoclean) ;;
-        autodownload) ;;
-        autoinstall) _deb_packages uninstalled ;;
-        available) _deb_packages available ;;
-        bug | bugs) ((argno==1)) && _deb_packages available ;;
-        build) _deb_packages available ;;
-        builddepend) _deb_packages available ;;
-        changelog) _deb_packages available ;;
-        clean) ;;
-        dailyupgrade) ;;
-        dependents) ((argno==1)) && _deb_packages available ;;
-        describe | whatis) _deb_packages available ;;
-        describenew) ;;
-        detail | details | show) _deb_packages available ;;
-        detailnew | newdetail) ;;
-        distupgrade) ;;
-        doc | docs) ;;
-        download) _deb_packages available ;;
-        filedownload | downloadfile) ((argno==1)) && _files ;;
-        fileinstall | installfile) ((argno==1)) && _files ;;
-        fileremove | removefile) ((argno==1)) && _files ;;
-        findfile) ((argno==1)) && _files ;;
-        findpkg | unofficial) ;; # no completion available
-        fixconfigure) ;;
-        fixinstall) ;;
-        fixmissing) ;;
-        force) _deb_packages uninstalled ;;
-        geturl) ((argno==1)) && _deb_packages available ;;
-        help) ;;
-        hold) _deb_packages installed ;;
-        init) ;;
-        install) _deb_packages uninstalled ; _files -g '*.deb' ;;
-        installr | recommended) _deb_packages uninstalled ;;
-        installrs) _deb_packages uninstalled ;;
-        installs | suggested) _deb_packages uninstalled ;;
-        install/*) _deb_packages uninstalled ;;
-        integrity) ;;
-        large) _deb_packages installed ;;
-        lastupdate) ;;
-        list | listwide) ;; # no completion available
-        listall) ;;
-        listalts | listalternatives) ;;
-        listcache) ;; # no completion available
-        listcommands | commands) ;;
-        listdaemons) ;;
-        listfiles) ((argno==1)) && _deb_packages installed ;;
-        listhold) ;;
-        listinstalled) ;; # no completion available
-        listnames) ;; # no completion available
-        listorphans | orphans) ;;
-        liststatus) ;; # no completion available
-        localdistupgrade) ;;
-        localupgrade) ;;
-        move) ;;
-        new) ;;
-        news) _deb_packages available ;;
-        newupgrades) ;;
-        nonfree) ;;
-        policy) _deb_packages available ;;
-        purge) _deb_packages xinstalled ;;
-        purgedepend) ((argno==1)) && _deb_packages xinstalled ;;
-        purgeorphans) ;;
-        readme) _deb_packages installed ;;
-        recdownload) _deb_packages available ;;
-        reconfigure) _deb_packages installed ;;
-        reinstall) _deb_packages installed ;;
-        reload) ((argno==1)) && _wajig_services ;;
-        remove) _deb_packages installed ;;
-        removedepend) _deb_packages installed ;;
-        removeorphans) ;;
-        repackage | package) ((argno==1)) && _deb_packages installed ;;
-        reset) ;;
-        restart)  ((argno==1)) && _wajig_services ;;
-        rpminstall) ((argno==1)) && _files -g '*.rpm' ;;
-        rpmtodeb | rpm2deb) ((argno==1)) && _files -g '*.rpm' ;;
-        search) ;; # no completions available
-        searchapt) compadd stable testing unstable ;;
-        setup | editsources) ;;
-        showdistupgrade) ;;
-        showinstall) _deb_packages uninstalled ;;
-        showremove) _deb_packages installed ;;
-        showupgrade) ;;
-        size | sizes) _deb_packages installed ;;
-        snapshot) ;;
-        source)  _deb_packages available ;;
-        start) ((argno==1)) && _wajig_services ;;
-        status) _deb_packages available ;;
-        statusmatch | satussearch) ;; # no completion available
-        stop) ((argno==1)) && _wajig_services ;;
-        tasksel) ;;
-        toupgrade) ;;
-        unhold) _deb_packages held ;;
-        update) ;;
-        updatealts) ((argno==1)) && _wajig_alternatives ;;
-        upgrade) _deb_packages installed ;;
-        whichpkg) _files ;;
+    _describe -t commands 'wajig command' cmds && ret=0
+  ;;
+  args)
+    (( argno = $#line-1 ))
+    case ${line[1]:gs/-/} in
+      autoalts|autoalternatives|updatealts)
+	((argno==1)) && _wanted alternatives expl alternative \
+	    _files -W /var/lib/dpkg/alternatives && ret=0
+      ;;
+      listfiles|repackage|package)
+	((argno==1)) || break
+      ;&
+      hold|large|readme|reconfigure|reinstall|remove|removedepend|showremove|size?|upgrade)
+	_wanted package expl 'package' _deb_packages installed && ret=0
+      ;;
+      purgedepend)
+	((argno==1)) && _wanted package expl 'package' _deb_packages xinstalled && ret=0
+      ;;
+      purge)
+	_wanted package expl 'package' _deb_packages xinstalled && ret=0
+      ;;
+      autoinstall|force|showinstall|installr|recommended|installrs|installs|suggested|install/*)
+	_wanted package expl 'package' _deb_packages uninstalled && ret=0
+      ;;
+      install)
+	_alternative \
+	  'packages:package:_deb_packages uninstalled' \
+	  'files:package file:_files -g "*.deb(-.)"' && ret=0
+      ;;
+      bug|bugs|dependents|geturl)
+	((argno==1)) || break
+      ;&
+      available|build|builddepend|changelog|describe|whatis|detail|details|show|news|policy|download|source|status|recdownload)
+	_wanted package expl 'package' _deb_packages available && ret=0
+      ;;
+      unhold)
+	_wanted package expl 'package' _deb_packages held && ret=0
+      ;;
+      filedownload|downloadfile|fileinstall|installfile|fileremove|removefile|indfile)
+	((argno==1)) && _files && ret=0
+      ;;
+      whichpkg)
+	_files
+      ;;
+      rpminstall|rpmtodeb|rpm2deb)
+	((argno==1)) && _files -g '*.rpm(-.)' && ret=0
+      ;;
+      searchapt)
+	_wanted distributions expl distribution \
+	    compadd stable testing unstable && ret=0
+      ;;
+      reload|restart|start|stop)
+	((argno==1)) && _services && ret=0
+      ;;
     esac
-}
-
-_wajig() {
-    _arguments -s \
-        '(- 1 *)'{-h,--help}'[print usage message]' \
-        '(- 1 *)--version[display version information]' \
-        '(-q --quiet)'{-q,--quiet}'[do everything quietly]' \
-        '(-s --simulate)'{-s,--simulate}"[trace but don't execute]" \
-        '(-t --teaching)'{-t,--teaching}'[trace the sequence of commands performed]' \
-        '(-v --verbose)'{-v,--verbose}'[increase (or set) the level of verbosity]' \
-        '1: :_wajig_command' \
-        '*: :_wajig_subcommand'
-}
+  ;;
+esac
 
-_wajig $@
+return ret
diff --git a/Completion/Unix/Command/.distfiles b/Completion/Unix/Command/.distfiles
index 8c9067fa9..39754cb67 100644
--- a/Completion/Unix/Command/.distfiles
+++ b/Completion/Unix/Command/.distfiles
@@ -6,16 +6,17 @@ _baz	        _bison          _bittorrent     _bogofilter     _bzip2
 _cal            _ccal           _cdcd           _cdrecord       _chkconfig
 _chmod          _chown          _compress       _configure      _cpio
 _cvs
-_darcs          _dd             _dict           _diff           _du
-_dvi            _ecasound       _elinks         _elm            _enscript
+_darcs          _dd             _dhclient       _dict           _diff
+_du             _dvi
+_ecasound       _elinks         _elm            _enscript
 _fakeroot       _fetchmail      _figlet         _find           _finger
 _flex           _fortune        _fsh            _fuser
 _gcc            _gdb            _getconf        _getent         _global
 _gnu_generic    _gpg            _gphoto2        _gprof          _grep
 _groff          _gs             _gzip
 _iconv          _ifconfig       _imagemagick    _init_d         _irssi
-_ispell         _java           _joe            _killall        _knock
-_kvno
+_ispell         _java           _joe
+_killall        _knock          _kvno
 _last           _less           _links          _loadkeys       _look
 _lp             _ls             _lsof           _lynx           _lzop
 _mail           _make           _man            _mencal         _mh
@@ -24,7 +25,7 @@ _mutt           _mysql_utils    _mysqldiff
 _ncftp          _netcat         _nice           _nmap           _nslookup
 _pack           _patch          _pbm            _perforce       _perl
 _perldoc        _php            _pine           _postfix        _prcs
-_printenv       _psutils        _python
+_printenv       _psutils        _pump           _python
 _raggle         _rake           _rar            _rcs            _renice
 _rlogin         _rsync          _rubber         _ruby
 _sablotron      _samba          _sccs           _screen         _sed
@@ -36,6 +37,6 @@ _tin            _tla
 _unace          _unexpand       _uniq           _user_admin
 _vim            _vorbis         _vux
 _w3m            _webbrowser     _wget           _whereis        _whois
-_wiggle         _xargs          _xmlsoft        _xscreensaver
+_wiggle         _xargs          _xmlsoft
 _yodl           _yp             _zcat           _zdump          _zip
 '
diff --git a/Completion/Unix/Command/_cal b/Completion/Unix/Command/_cal
index b8ebef5c9..82bb98b5f 100644
--- a/Completion/Unix/Command/_cal
+++ b/Completion/Unix/Command/_cal
@@ -1,32 +1,28 @@
 #compdef cal ncal
 
-local calargs ncalargs
-
-calargs=('-3[three in a row]'
-	'-m[Monday as first day of the week]')
-
-ncalargs=('-J[display Julian calendar]'
-	'-e[display date of western Easter]'
-	'-o[display date of orthodox Easter]'
-	'-p[assume as by ncal]'
-	'-s[country code]'
-	'-w[print number of the week below each column]')
+local args
 
 case $service in
-	(cal)
-_arguments \
-	"${calargs[@]}" \
-	'-j[display Julian days]' \
-	'-y[display a calendar for the current year]' \
-	'1:month:' \
-	'2:year:'
-	;;
-	(ncal)
-_arguments \
-	"${ncalargs[@]}" \
-	'-j[display Julian days]' \
-	'-y[display a calendar for the current year]' \
-	'1:month:' \
-	'2:year:'
-	;;
+  cal)
+    args=(
+      '-3[three in a row]'
+      '-m[Monday as first day of the week]'
+    )
+  ;;
+  ncal)
+    args=(
+      '-J[display Julian calendar]'
+      '-e[display date of western Easter]'
+      '-o[display date of orthodox Easter]'
+      '-p[assume as by ncal]'
+      '-s[country code]'
+      '-w[print number of the week below each column]'
+    )
+  ;;
 esac
+
+_arguments "${args[@]}" \
+  '-j[display Julian days]' \
+  '-y[display a calendar for the current year]' \
+  '::month' \
+  ':year'
diff --git a/Completion/Unix/Command/_ccal b/Completion/Unix/Command/_ccal
index 63eb6699f..f8e19e157 100644
--- a/Completion/Unix/Command/_ccal
+++ b/Completion/Unix/Command/_ccal
@@ -1,17 +1,17 @@
 #compdef ccal
 
 _arguments \
-        '-nodata[ignore appointment descriptions file]' \
-        '-data-file=[load appointments from file]:caldat file:_files' \
-        '-future[show only future appointments on current month]' \
-        '-today[show only today'"'"'s appointments on current month]' \
-        '-europe[European format (first day is Monday)]' \
-        '-american[North American format (first day is Sunday)]' \
-        '-maxappts=[display maximum of n appointments]:number of appointments:('{8..50}')' \
-        '-pause[pause for keystroke before exiting]' \
-        '-nocolor[inhibit use of colors]' \
-        '-color-file=[load color definitions from file]:calcol file:_files' \
-        '-8bit[display 8-bit ascii characters]' \
-        '1:month:(1 2 3 4 5 6 7 8 9 10 11 12 jan feb mar apr may jun jul aug sep oct nov dec)' \
-        '2:year:'
+  '-nodata[ignore appointment descriptions file]' \
+  '-data-file=[load appointments from file]:caldat file:_files' \
+  '-future[show only future appointments on current month]' \
+  "-today[show only today's appointments on current month]" \
+  '-europe[European format (first day is Monday)]' \
+  '-american[North American format (first day is Sunday)]' \
+  '-maxappts=[display maximum of n appointments]:number of appointments:('{8..50}')' \
+  '-pause[pause for keystroke before exiting]' \
+  '-nocolor[inhibit use of colors]' \
+  '-color-file=[load color definitions from file]:calcol file:_files' \
+  '-8bit[display 8-bit ascii characters]' \
+  '1:month:(1 2 3 4 5 6 7 8 9 10 11 12 jan feb mar apr may jun jul aug sep oct nov dec)' \
+  '2:year:'
 
diff --git a/Completion/Unix/Command/_dhclient b/Completion/Unix/Command/_dhclient
index 5208ea05b..dafe299d9 100644
--- a/Completion/Unix/Command/_dhclient
+++ b/Completion/Unix/Command/_dhclient
@@ -1,31 +1,28 @@
 #compdef dhclient dhclient3
 
-local _dhclient_common_args
-
-_dhclient_common_args=(
-      '-p[port to transmit to / listen on]:_ports'
-      '-d[force to run in foreground]'
-      ':interface:_net_interfaces'
-)
+local args
 
 if _pick_variant three=V3 two --help; then
-  _arguments \
-      '-q[quiet]' \
-      '-1[only try once to get a lease]' \
-      '-r[release the current lease]' \
-      '-lf[lease file]:lease file:_files' \
-      '-pf[pid file]:pid file:_files' \
-      '-cf[config file]:config file:_files' \
-      '-sf[script file]:script file:_files' \
-      '-e[env vars to pass to child processes]:env var key value pairs:' \
-      '-s[transmit to specific target instead of broadcast]:server:_hosts' \
-      '-g[force giaddr field]:relay:_hosts' \
-      '-n[do not configure any interfaces]' \
-      '-nw[daemonize immediately rather than wait for IP acquisition]' \
-      '-w[do not exit if there are no interfaces found to configure]' \
-      "$_dhclient_common_args[@]"
+  args=(
+    '-q[quiet]'
+    '-1[only try once to get a lease]'
+    '-r[release the current lease]'
+    '-lf[lease file]:lease file:_files'
+    '-pf[pid file]:pid file:_files'
+    '-cf[config file]:config file:_files'
+    '-sf[script file]:script file:_files'
+    '-e[env vars to pass to child processes]:env var key value pairs:'
+    '-s[transmit to specific target instead of broadcast]:server:_hosts'
+    '-g[force giaddr field]:relay:_hosts'
+    '-n[do not configure any interfaces]'
+    '-nw[daemonize immediately rather than wait for IP acquisition]'
+    '-w[do not exit if there are no interfaces found to configure]'
+  )
 else
-  _arguments \
-      '-e[Exit if configuration failed after a certain time]' \
-      "$_dhclient_common_args[@]"
+  args=( '-e[exit if configuration failed after a certain time]' )
 fi
+
+_arguments $args \
+  '-p[port to transmit to / listen on]:_ports' \
+  '-d[force to run in foreground]' \
+  ':interface:_net_interfaces'
diff --git a/Completion/Unix/Command/_fortune b/Completion/Unix/Command/_fortune
index fec07c436..c0eca56a3 100644
--- a/Completion/Unix/Command/_fortune
+++ b/Completion/Unix/Command/_fortune
@@ -1,15 +1,15 @@
 #compdef fortune
 
 _arguments \
-       '-a[choose from all lists of maxims, both offensive and not]' \
-       '-c[show the cookie file from which the fortune came]' \
-       '-e[consider all fortune files to be of equal size]' \
-       '-f[print out the list of files which would be searched]' \
-       '-l[long dictums only]' \
-       '-m[print all matches to regex]:BRE:' \
-       '-n[set longest length to be short]:length:' \
-       '-o[choose only from potentially offensive aphorisms]' \
-       '-s[short apothegms only]' \
-       '-i[ignore case for -m patterns]' \
-       '-w[wait before termination for a time based on msg length]' \
-       '*:databases:'
+  '-a[choose from all lists of maxims, both offensive and not]' \
+  '-c[show the cookie file from which the fortune came]' \
+  '-e[consider all fortune files to be of equal size]' \
+  '-f[print out the list of files which would be searched]' \
+  '-l[long dictums only]' \
+  '-m[print all matches to regex]:BRE' \
+  '-n[set longest length to be short]:length' \
+  '-o[choose only from potentially offensive aphorisms]' \
+  '-s[short apothegms only]' \
+  '-i[ignore case for -m patterns]' \
+  '-w[wait before termination for a time based on msg length]' \
+  '*:databases'
diff --git a/Completion/Unix/Command/_mencal b/Completion/Unix/Command/_mencal
index ef4e88380..224b4e5ba 100644
--- a/Completion/Unix/Command/_mencal
+++ b/Completion/Unix/Command/_mencal
@@ -1,30 +1,27 @@
 #compdef mencal
 
-_arguments \
-	'(--monday -m)'{-m,--monday}'[monday as first day of work]' \
-	'-1[current month]' \
-	'-3[previous, current, and next month]' \
-	'-y[all-year calendar]::year:' \
-	'(--quiet -q)'{-q,--quiet}'[no top information]' \
-	'(--nocolor -n)'{-n,--nocolor}'[noncolored output]' \
-	'(--icolor -i)'{-i,--icolor}'[intersection color]:color:(red green blue yellow violet cyan shiny bold)' \
-	'(--help -h)'{-h,--help}'[help]' \
-	'(--version -V)'{-V,--version}'[print version info]' \
-	'(--config -c)*'{-c,--config}'[config]:options:->option' && ret=0
+local curcontext="$curcontext" state line ret=1
 
-  while [[ -n "$state" ]]; do
-    lstate="$state"
-    state=''
+_arguments -C \
+  '(--monday -m)'{-m,--monday}'[monday as first day of work]' \
+  '-1[current month]' \
+  '-3[previous, current, and next month]' \
+  '-y[all-year calendar]::year:' \
+  '(--quiet -q)'{-q,--quiet}'[no top information]' \
+  '(--nocolor -n)'{-n,--nocolor}'[noncolored output]' \
+  '(--icolor -i)'{-i,--icolor}'[intersection color]:color:(red green blue yellow violet cyan shiny bold)' \
+  '(-)'{-h,--help}'[display help informaiton]' \
+  '(-)'{-V,--version}'[print version information]' \
+  \*{-c,--config}'[config]:options:->option' && ret=0
 
-    case "$lstate" in
-    (option)
-    _values -s , 'config option' \
-    	'(s start)'{s,start}'[start day]:' \
-	'(l length)'{l,length}'[period length]:' \
-	'(d duration)'{d,duration}'[menstruation duration]:' \
-	'(n name)'{n,name}'[name of subject]:' \
-	'(f file)'{f,file}'[filename]:_files' \
-	'(c color)'{c,color}'[color for menstruation days]:color:(red green blue yellow violet cyan shiny bold)'
-    ;;
-    esac
-  done
+if [[ $state = option ]]; do
+  _values -s , 'config option' \
+    '(s start)'{s,start}'[start day]:day' \
+    '(l length)'{l,length}'[period length]:length' \
+    '(d duration)'{d,duration}'[menstruation duration]:duration' \
+    '(n name)'{n,name}'[name of subject]:name' \
+    '(f file)'{f,file}'[filename]:file:_files' \
+    '(c color)'{c,color}'[color for menstruation days]:color:(red green blue yellow violet cyan shiny bold)' && ret=0
+fi
+
+return ret
diff --git a/Completion/Unix/Command/_perforce b/Completion/Unix/Command/_perforce
index 3d7de0cb1..49eb5faba 100644
--- a/Completion/Unix/Command/_perforce
+++ b/Completion/Unix/Command/_perforce
@@ -1410,10 +1410,10 @@ _perforce_cmd_attribute() {
   # If -f is present, search unopened files, else don't
   [[ ${words[(I)-f]} -eq 0 ]] && limit=" -to"
   _arguments -s : \
-    '-e[Value is in hex]' \
-    '-f[Set the attribute on a submitted file]' \
-    '-n[Set name of attribute]:attribute: ' \
-    '-v[Set value of attribute]:value: ' \
+    '-e[value is in hex]' \
+    '-f[set the attribute on a submitted file]' \
+    '-n[set name of attribute]:attribute: ' \
+    '-v[set value of attribute]:value: ' \
     "*::file:_perforce_files$limit"
 }
 
@@ -1653,7 +1653,7 @@ _perforce_cmd_fstat() {
   if [[ ${_perforce_cmd_list[(r)attribute:*]} != '' ]]; then
     # Unsupported feature, try not to show if not present
     Oattr=' a\:show\ attributes d\:attributes\ digest e\:attributes\ in\ hex'
-    Aattr='-A[Restrict attributes by pattern]:attribute pattern: '
+    Aattr='-A[restrict attributes by pattern]:attribute pattern: '
   fi
   _arguments -s : \
     '-c+[affected since change]:change:_perforce_changes -ts' \
diff --git a/Completion/Unix/Command/_pump b/Completion/Unix/Command/_pump
index 08da8d4a4..08ec026ed 100644
--- a/Completion/Unix/Command/_pump
+++ b/Completion/Unix/Command/_pump
@@ -1,24 +1,24 @@
 #compdef pump
 
 _arguments \
-      '(-c --config-file=)'{-c,--config-file=}'[Configuratio file to use]:Configuratio file to use:_files' \
-      '(-h --hostname=)'{-h,--hostname=}'[Hostname to request]:Hostname:_hosts' \
-      '(-i --interface=)'{-i,--interface=}'[Interface to configure]:Interface:_net_interfaces' \
-      '(-k --kill)'{-k,--kill}'[Kill daemon (and disable all interfaces)]' \
-      '(-l --lease=)'{-l,--lease=}'[Lease time to request (in hours)]' \
-      '(-L --leasesecs=)'{-L,--leasesecs=}'[Lease time to request (in seconds)]' \
-      '(-r --release)'{-r,--release}'[Release interface]:Interface:_net_interfaces' \
-      '(-R --renew)'{-R,--renew}'[Force immediate lease renewal]:Interface:_net_interfaces' \
-      '(-v --verbose)'{-v,--verbose}'[Log verbose debug info]' \
-      '(-s --status)'{-s,--status}'[Display interface status]:Interface:_net_interfaces' \
-      '(-d --no-dns)'{-d,--no-dns}"[Don't update resolv.conf]" \
-      '(-? --help)'{-?,--help}'[Display help message]' \
-      "--no-gateway[Don't set a gateway for this interface]" \
-      "--no-setup[Don't set up anything]" \
-      "--no-resolvconf[Don't set up resolvconf]" \
-      '--no-bootp[Ignore non-DHCP BOOTP responses]' \
-      '--lookup-hostname[Force lookup of hostname]' \
-      '--script=[Script to use]:Script to use:_files' \
-      "--win-client-ident[Set the client identifier to match Window's]" \
-      '--usage[Display brief usage message]' \
-      ':Interface:_net_interfaces'
+  '(-c --config-file=)'{-c,--config-file=}'[specify configuration file to use]:configuration file:_files' \
+  '(-h --hostname=)'{-h,--hostname=}'[specify hostname to request]:hostname:_hosts' \
+  '(-i --interface=)'{-i,--interface=}'[specify interface to configure]:interface:_net_interfaces' \
+  '(-k --kill)'{-k,--kill}'[kill daemon (and disable all interfaces)]' \
+  '(-l --lease=)'{-l,--lease=}'[specify lease time to request]:time (hours)' \
+  '(-L --leasesecs=)'{-L,--leasesecs=}'[specify seconds to request for]:time (seconds)]' \
+  '(-r --release)'{-r,--release}'[release interface]:interface:_net_interfaces' \
+  '(-R --renew)'{-R,--renew}'[force immediate lease renewal]:interface:_net_interfaces' \
+  '(-v --verbose)'{-v,--verbose}'[log verbose debug info]' \
+  '(-s --status)'{-s,--status}'[display interface status]:interface:_net_interfaces' \
+  '(-d --no-dns)'{-d,--no-dns}"[don't update resolv.conf]" \
+  '(- *)'{-?,--help}'[display help information]' \
+  "--no-gateway[don't set a gateway for this interface]" \
+  "--no-setup[don't set up anything]" \
+  "--no-resolvconf[don't set up resolvconf]" \
+  '--no-bootp[ignore non-DHCP BOOTP responses]' \
+  '--lookup-hostname[force lookup of hostname]' \
+  '--script=[specify script to use]:script:_files' \
+  "--win-client-ident[set the client identifier to match window's]" \
+  '--usage[display brief usage message]' \
+  ':interface:_net_interfaces'
diff --git a/Completion/Unix/Command/_surfraw b/Completion/Unix/Command/_surfraw
index 326504794..20c8349d0 100644
--- a/Completion/Unix/Command/_surfraw
+++ b/Completion/Unix/Command/_surfraw
@@ -1,15 +1,15 @@
 #compdef surfraw sr
 
 _arguments \
-   '-browser=[set browser]:browser:_command_names' \
-   '-elvi[list Surfraw mechanisms for conquering evil]' \
-   '-escape-url-args=[apply url escaping to arguments]:bool:(yes no)' \
-   '(-g -graphical)'{-g,-graphical}'[get some windowed sin]' \
-   '-p0rn=[yes, yes, harder, deeper, faster, oh baybe]:bool:(yes no)' \
-   '-help' \
-   '-quiet:bool:(yes no)' \
-   '-new[start in a new window]' \
-   '(-t -text)'{-t,-text}'[back to the yellow brick road]' \
-   '(-q -quote)'{-q,-quote}'[quote arguments with quote characters]' \
-   '-version[display Surfraw version]' \
-   ':elvi: compadd ${${(f)"$(surfraw -elvi)"}%%[[:space:]]##--*}'
+  '-browser=[set browser]:browser:_command_names' \
+  '-elvi[list Surfraw mechanisms for conquering evil]' \
+  '-escape-url-args=[apply url escaping to arguments]:bool:(yes no)' \
+  '(-g -graphical)'{-g,-graphical}'[get some windowed sin]' \
+  '-p0rn=[yes, yes, harder, deeper, faster, oh baybe]:bool:(yes no)' \
+  '-help' \
+  '-quiet:bool:(yes no)' \
+  '-new[start in a new window]' \
+  '(-t -text)'{-t,-text}'[back to the yellow brick road]' \
+  '(-q -quote)'{-q,-quote}'[quote arguments with quote characters]' \
+  '-version[display Surfraw version]' \
+  ':elvi: compadd ${${(f)"$(surfraw -elvi)"}%%[[:space:]]##--*}'
diff --git a/Completion/X/Command/.distfiles b/Completion/X/Command/.distfiles
index 679d85d50..998c70da3 100644
--- a/Completion/X/Command/.distfiles
+++ b/Completion/X/Command/.distfiles
@@ -5,6 +5,6 @@ _gnome-gv       _gqview         _gv             _kfmclient
 _mozilla        _mplayer        _nedit          _netscape
 _qiv            _urxvt          _vnc
 _x_utils        _xauth          _xdvi           _xfig           _xloadimage
-_xmodmap        _xpdf           _xset           _xterm          _xv
-_xwit
+_xmodmap        _xpdf           _xscreensaver   _xset           _xterm
+_xv             _xwit
 '