Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

PATCH: use singular form for completion group descriptions for consistency



When fixing one small thing in a completion function, it can be hard
to resist the temptation to clean up lots of other issues. Resulting
patches likely aren't easy to review. So I'll try the opposite tack for
a few particular issues that can be corrected across many functions. I
don't know if this is any easier for anyone else to digest? It is still
a patch touching many files but it mostly only does one thing.

The convention we generally use for the headings on completion match
groups is to use the singular form. I assume the original rationale is
that only one value gets completed (even if it forms one of a list). But
for the purposes of this patch, the rationale is consistency.

I was using grep to find plural descriptions so relied on most English
plurals ending in an s. I tried to avoid making other changes but have
corrected indentation, capitalised descriptions and fixed the tag where
tag and description were transposed (e.g. with _alternative). Also,
there were cases where the plural was indicative that a list was allowed
and _dir_list or _sequence could be used so I did correct that.

A common case that I didn't bother with is unused descriptions on
states, such as '*::args:->state'

Oliver

diff --git a/Completion/BSD/Command/_portmaster b/Completion/BSD/Command/_portmaster
index 48390c9ad..ee6fefc6e 100644
--- a/Completion/BSD/Command/_portmaster
+++ b/Completion/BSD/Command/_portmaster
@@ -8,11 +8,11 @@ _portmaster_ports() {
   local expl ret=1 _fbsd_ports _fbsd_cat
    _fbsd_cat=(${PORTSDIR:-/usr/ports}/[a-z]*(/:t))
    if [[ $PREFIX != */* ]] ; then
-     _wanted cat_packages expl 'category/ports' compadd -S '/' $_fbsd_cat
+     _wanted cat_packages expl 'category/port' compadd -S '/' $_fbsd_cat
    else
      compset -P '*/'
      _fbsd_ports=(${PORTSDIR:-/usr/ports}/$IPREFIX/*(/:t))
-     _wanted cat_packages expl 'category/ports' compadd $_fbsd_ports
+     _wanted cat_packages expl 'category/port' compadd $_fbsd_ports
    fi
   return ret
 }
@@ -77,7 +77,7 @@ _portmaster() {
       _arguments -s \
       $standalone_args \
       $common_args \
-      '*:packages and ports:_portmaster_pkgs_and_ports'
+        '*:package or port:_portmaster_pkgs_and_ports'
     else 
       case "$words[2]" in
 	--clean-distfiles|--clean-distfiles-all|--check-depends|--check-port-dbdir|--version|-help|-h)
@@ -86,14 +86,14 @@ _portmaster() {
 	*)
 	if (( $words[(I)-(e|r)] ));then
 	  _arguments -s \
-	  '*:packages:_portmaster_pkgs'
+            '*:package:_portmaster_pkgs'
 	elif (( kid=$words[(I)-o] ));then
 	  if (( CURRENT == $kid + 1 ));then
 	    _arguments -s \
-	    '*:ports replacing:_portmaster_ports'
+              '*:replacement port:_portmaster_ports'
 	  elif (( CURRENT == $kid + 2 )); then
 	    _arguments -s \
-	    '*:package to replace:_portmaster_pkgs'
+              '*:package to replace:_portmaster_pkgs'
 	  else 
 	    return 0
 	  fi
@@ -102,7 +102,7 @@ _portmaster() {
 	else
 	  _arguments -s \
 	  $common_args \
-	  '*:packages and ports:_portmaster_pkgs_and_ports'
+            '*:package or port:_portmaster_pkgs_and_ports'
 	fi
 	;;
       esac
diff --git a/Completion/BSD/Command/_sysrc b/Completion/BSD/Command/_sysrc
index f0c12a2be..892dac407 100644
--- a/Completion/BSD/Command/_sysrc
+++ b/Completion/BSD/Command/_sysrc
@@ -29,7 +29,7 @@ _sysrc() {
     '(- *)-h[print short usage message]' \
     '(- *)--help[print full usage message]' \
     '-i[ignore unknown variables]' \
-    '-j+[jail to operate within]:jails:_jails' \
+    '-j+[jail to operate within]:jail:_jails' \
     '-n[print only variable values]' \
     '-N[print only variable names]' \
     '-R+[specify an alternative root]:alternative root:_files -/' \
diff --git a/Completion/BSD/Command/_systat b/Completion/BSD/Command/_systat
index 7d837790a..03df07631 100644
--- a/Completion/BSD/Command/_systat
+++ b/Completion/BSD/Command/_systat
@@ -84,7 +84,7 @@ esac
 
 if (( $#screens )); then
   _arguments -M 'r:|.=* r:|=*' : $opts \
-    '1:systat(1) displays:(( ${pre}$^screens ))' \
+    '1:systat(1) display:(( ${pre}$^screens ))' \
     '2:refresh interval'
   return
 fi
diff --git a/Completion/Base/Widget/_bash_completions b/Completion/Base/Widget/_bash_completions
index 7abb654d4..feb721451 100644
--- a/Completion/Base/Widget/_bash_completions
+++ b/Completion/Base/Widget/_bash_completions
@@ -32,7 +32,7 @@ local key=$KEYS[-1] expl
 case $key in
   '!') _main_complete _command_names
        ;;
-  '$') _main_complete - parameters _wanted parameters expl 'exported parameters' \
+  '$') _main_complete - parameters _wanted parameters expl 'exported parameter' \
                                        _parameters -g '*export*'
        ;;
   '@') _main_complete _hosts
diff --git a/Completion/Base/Widget/_complete_tag b/Completion/Base/Widget/_complete_tag
index 5b50f1d85..397b8d901 100644
--- a/Completion/Base/Widget/_complete_tag
+++ b/Completion/Base/Widget/_complete_tag
@@ -50,13 +50,13 @@ if [[ -f $c_path$c_Tagsfile ]]; then
         -e '/^[a-zA-Z_].*/p' $c_path$c_Tagsfile))
 #  c_tags_array=($(perl -ne '/([a-zA-Z_0-9]+)[ \t:;,\(]*\x7f/ &&
 #                  print "$1\n"' $c_path$c_Tagsfile))
-  _main_complete - '' _wanted etags expl 'emacs tags' \
+  _main_complete - '' _wanted etags expl 'emacs tag' \
       compadd -a c_tags_array
 elif [[ -f $c_path$c_tagsfile ]]; then
   # tags doesn't have as much in, but the tag is easy to find.
   # we can use awk here.
   c_tags_array=($(awk '{ print $1 }' $c_path$c_tagsfile))
-  _main_complete - '' _wanted vtags expl 'vi tags' compadd -a c_tags_array
+  _main_complete - '' _wanted vtags expl 'vi tag' compadd -a c_tags_array
 else
   return 1
 fi
diff --git a/Completion/Darwin/Command/_defaults b/Completion/Darwin/Command/_defaults
index ca5d87e65..b05222af6 100644
--- a/Completion/Darwin/Command/_defaults
+++ b/Completion/Darwin/Command/_defaults
@@ -42,7 +42,7 @@ _defaults(){
       _arguments \
         "(1)-app:application:_mac_applications" \
         "(-app)1:domain:_defaults_domains" \
-        "2:keys:_defaults_keys"
+        "2:key:_defaults_keys"
       ;;
     write)
       _arguments \
diff --git a/Completion/Darwin/Command/_hdiutil b/Completion/Darwin/Command/_hdiutil
index 04e81e655..20e69cbc5 100644
--- a/Completion/Darwin/Command/_hdiutil
+++ b/Completion/Darwin/Command/_hdiutil
@@ -10,7 +10,7 @@ _hdiutil_disk() {
       disk_desc+=( "$disk_name:${${(M)REPLY%	*}#?}" )
     fi
   done
-  _describe -t devices disks disk_desc
+  _describe -t devices disk disk_desc
 }
 
 _hdiutil_device() {
@@ -143,7 +143,7 @@ _hdiutil(){
   _arguments -C '*:: :->subcmds'
 
   if (( CURRENT == 1 )); then
-    _describe -t commands "hdiutil subcommands" _1st_arguments
+    _describe -t commands "hdiutil subcommand" _1st_arguments
     return
   fi
 
diff --git a/Completion/Darwin/Command/_softwareupdate b/Completion/Darwin/Command/_softwareupdate
index 6db577b06..6054fd768 100644
--- a/Completion/Darwin/Command/_softwareupdate
+++ b/Completion/Darwin/Command/_softwareupdate
@@ -55,7 +55,7 @@ _softwareupdate() {
       ignored_subcmd=(add remove)
 
       if (( CURRENT == 1 )); then
-        _describe -t commands "subcommands" ignored_subcmd && return 0
+        _describe -t commands "subcommand" ignored_subcmd && return 0
       fi
       case $words[1] in
         add)
diff --git a/Completion/Debian/Command/_apt b/Completion/Debian/Command/_apt
index 4d60cd249..494d3bf82 100644
--- a/Completion/Debian/Command/_apt
+++ b/Completion/Debian/Command/_apt
@@ -531,7 +531,7 @@ _apt-cache () {
     --installed:bool \
     -- \
     /$'help\0'/ \| \
-    /$'add\0'/ /$'[^\0]#\0'/ ':files:index files:_files' \# \| \
+    /$'add\0'/ /$'[^\0]#\0'/ ':files:index file:_files' \# \| \
     /$'gencaches\0'/ \| \
     /$'showpkg\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \# \| \
     /$'showsrc\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \# \| \
diff --git a/Completion/Debian/Command/_axi-cache b/Completion/Debian/Command/_axi-cache
index bdefdd979..5fd4c38f8 100644
--- a/Completion/Debian/Command/_axi-cache
+++ b/Completion/Debian/Command/_axi-cache
@@ -10,7 +10,7 @@ _arguments \
   '*:args:->args' && return 0
 
 if (( CURRENT == 2 )); then
-  _wanted tag expl 'axi-cache commands' \
+  _wanted tag expl 'axi-cache command' \
     compadd help search more last show again info \
     rdetails depends madison policy showpkg showsrc
 else
diff --git a/Completion/Debian/Command/_lintian b/Completion/Debian/Command/_lintian
index 71e71ee3d..03491624f 100644
--- a/Completion/Debian/Command/_lintian
+++ b/Completion/Debian/Command/_lintian
@@ -8,8 +8,8 @@ case "$service" in
       '(-c -r -u -C -R -S -X --check --check-part --dont-check-part --remove --remove-lab --setup-lab --unpack)'{-S,--setup-lab}'[setup or update the laboratory]' \
       '(-c -r -u -C -R -S -X --check --check-part --dont-check-part --remove --remove-lab --setup-lab --unpack)'{-R,--remove-lab}'[remove the laboratory directory]' \
       '(-c -r -u -C -R -S -X --check --check-part --dont-check-part --remove --remove-lab --setup-lab --unpack)'{-c,--check}'[run all checks over the specified packages]' \
-      '(-c -r -u -C -R -S -X --check --check-part --dont-check-part --remove --remove-lab --setup-lab --unpack)'{-C,--check-part}'[run only the specified checks]:checks:_values -s , "lintian checks" binaries bin changelog-file chg conffiles cnf control-file dctrl control-files ctl copyright-file cpy cruft deb deb-format dfmt debconf dc debdiff dif debian-readme drm debhelper dh description des etcfiles etc fields fld files fil huge-usr-share hus infofiles info init.d ini manpages man md5sums md5 menus men menu-format mnf perl prl po-debconf pd scripts scr shared-libs shl spelling splr standards-version std' \
-      '(-c -r -u -C -R -S -X --check --check-part --dont-check-part --remove --remove-lab --setup-lab --unpack)'{-X,--dont-check-part}'[run only the specified checks]:checks:_values -s , "lintian checks" binaries bin changelog-file chg conffiles cnf control-file dctrl control-files ctl copyright-file cpy cruft deb deb-format dfmt debconf dc debdiff dif debian-readme drm debhelper dh description des etcfiles etc fields fld files fil huge-usr-share hus infofiles info init.d ini manpages man md5sums md5 menus men menu-format mnf perl prl po-debconf pd scripts scr shared-libs shl spelling splr standards-version std' \
+      '(-c -r -u -C -R -S -X --check --check-part --dont-check-part --remove --remove-lab --setup-lab --unpack)'{-C,--check-part}'[run only the specified checks]: :_values -s , "lintian check" binaries bin changelog-file chg conffiles cnf control-file dctrl control-files ctl copyright-file cpy cruft deb deb-format dfmt debconf dc debdiff dif debian-readme drm debhelper dh description des etcfiles etc fields fld files fil huge-usr-share hus infofiles info init.d ini manpages man md5sums md5 menus men menu-format mnf perl prl po-debconf pd scripts scr shared-libs shl spelling splr standards-version std' \
+      '(-c -r -u -C -R -S -X --check --check-part --dont-check-part --remove --remove-lab --setup-lab --unpack)'{-X,--dont-check-part}'[run only the specified checks]: :_values -s , "lintian check" binaries bin changelog-file chg conffiles cnf control-file dctrl control-files ctl copyright-file cpy cruft deb deb-format dfmt debconf dc debdiff dif debian-readme drm debhelper dh description des etcfiles etc fields fld files fil huge-usr-share hus infofiles info init.d ini manpages man md5sums md5 menus men menu-format mnf perl prl po-debconf pd scripts scr shared-libs shl spelling splr standards-version std' \
       '(-c -r -u -C -R -S -X --check --check-part --dont-check-part --remove --remove-lab --setup-lab --unpack)'{-u,--unpack}'[unpack up to unpack level]' \
       '(-c -r -u -C -R -S -X --check --check-part --dont-check-part --remove --remove-lab --setup-lab --unpack)'{-r,--remove}'[clean packages up to current unpack level]' \
       '(-h --help)'{-h,--help}'[help]' \
@@ -23,7 +23,7 @@ case "$service" in
       '(-o --no-override)'{-o,--no-override}'[do not use the overrides file]' \
       '--show-overrides[output tags that have been overridden]' \
       '--color:when:(never always auto)' \
-      '(-U --unpack-info)'{-U,--unpack-info}'[collect information]:info:_values -s , "collectibles" changelog-file copyright-file debfiles debian-readme diffstat doc-base-files file-info init.d md5sums menu-files objdump-info override-file scripts source-control-file' \
+      '(-U --unpack-info)'{-U,--unpack-info}'[collect information]:info:_values -s , "collectible" changelog-file copyright-file debfiles debian-readme diffstat doc-base-files file-info init.d md5sums menu-files objdump-info override-file scripts source-control-file' \
       '(-m --md5sums)'{-m,--md5sums}'[check md5sums when processing a .changes file]' \
       '--allow-root[override warning when run with superuser privileges]' \
       '--cfg:config file:_files' \
diff --git a/Completion/Debian/Command/_module-assistant b/Completion/Debian/Command/_module-assistant
index d75284954..b2c1e56ee 100644
--- a/Completion/Debian/Command/_module-assistant
+++ b/Completion/Debian/Command/_module-assistant
@@ -33,5 +33,5 @@ _arguments -A \
   '(-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)'
+  '*:package: compadd /usr/src/modass/var_cache_modass/*.avail_version(N:t:r) /var/cache/modass/*.avail_version(N:t:r)'
 
diff --git a/Completion/Linux/Command/_fusermount b/Completion/Linux/Command/_fusermount
index 02cb57237..41d3dec72 100644
--- a/Completion/Linux/Command/_fusermount
+++ b/Completion/Linux/Command/_fusermount
@@ -6,7 +6,7 @@ typeset -A opt_args
 _arguments \
   '-h[display help information]' \
   '-V[display version information]' \
-  '-o[specify mount options]:mount options:_fuse_values "mount options"' \
+  '-o[specify mount options]:mount option:_fuse_values "mount option"' \
   '-u[unmount a fuse mount]' \
   '-z[unmount lazily (work even when if the resource is still busy)]' \
   '-q[suppress nonessential output]' \
diff --git a/Completion/Linux/Command/_ipset b/Completion/Linux/Command/_ipset
index d05f13caf..061d16799 100644
--- a/Completion/Linux/Command/_ipset
+++ b/Completion/Linux/Command/_ipset
@@ -25,7 +25,7 @@ _set_types () {
 _ipsets () {
 	local -a vals
 	vals=( ${${(M)${(f)"$(_call_program ipsets ipset -L)"}%Name: *}#Name: } )
-	_describe -t ipsets "IP sets" vals
+	_describe -t ipsets "IP set" vals
 }
 _sets () {
 	_ipsets
@@ -118,7 +118,7 @@ _ips () {
 			if (( $ips )); then vals1+=$i; else bindings+=${i/ ->/:}; fi
 		done
 		_describe -t ips "IPs from $words[offset+3] set" vals1
-		_describe -t special_values "special values" vals2
+		_describe -t special_values "special value" vals2
 	fi
 }
 
diff --git a/Completion/Linux/Command/_mdadm b/Completion/Linux/Command/_mdadm
index b6dce7ccb..5b73ef4be 100644
--- a/Completion/Linux/Command/_mdadm
+++ b/Completion/Linux/Command/_mdadm
@@ -156,7 +156,7 @@ _mds () {
 	  return 1
 	fi
 	vals=( ${${${(M)${(f)"$(< $mdadm_conf)"}##ARRAY *}//ARRAY /}%%[[:blank:]]*} )
-	_describe -t mds "RAID devices" vals
+	_describe -t mds "RAID device" vals
 	_arguments \
 		"(-h --help)"{-h,--help}'[display a mode specific help message]'
 }
diff --git a/Completion/Linux/Command/_sysstat b/Completion/Linux/Command/_sysstat
index e091dd3ea..4de855b69 100644
--- a/Completion/Linux/Command/_sysstat
+++ b/Completion/Linux/Command/_sysstat
@@ -96,12 +96,12 @@ _sar() {
     '(--human -p)-h[make output easier to read: implies --human and -p]' \
     '(- 1 2)--help[display usage information]' \
     '--human[print sizes in human readable format]' \
-    '*-I[report statistics for interrupts]:interrupts: _values -s "," interrupts 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 SUM ALL XALL' \
+    '*-I[report statistics for interrupts]: : _values -s "," interrupt 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 SUM ALL XALL' \
     '-i[select records as close as possible to interval]:interval' \
     '--iface=-[specify network interfaces for which statistics are to be displayed]:network interface:_sequence _net_interfaces' \
     '-j[display persistent device names]:type:(ID LABEL PATH UUID)' \
-    '-m[report power management statistics]:keywords: _values -s "," keywords CPU FAN FREQ IN TEMP USB ALL' \
-    '-n[report network statistics]:keywords: _values -s "," keywords DEV EDEV NFS NFSD SOCK IP EIP ICMP EICMP TCP ETCP UDP SOCK6 IP6 EIP6 ICMP6 EICMP6 UDP6 FC SOFT ALL' \
+    '-m[report power management statistics]:keyword:_sequence compadd - CPU FAN FREQ IN TEMP USB ALL' \
+    '-n[report network statistics]:keyword:_sequence compadd - DEV EDEV NFS NFSD SOCK IP EIP ICMP EICMP TCP ETCP UDP SOCK6 IP6 EIP6 ICMP6 EICMP6 UDP6 FC SOFT ALL' \
     '-o[save readings to file in binary form]:file:_files' \
     '-P[report per-processor statistics]:processor: _values -s "," processors ALL' \
     '-p[pretty-print device names]' \
diff --git a/Completion/Linux/Type/_fuse_values b/Completion/Linux/Type/_fuse_values
index be830cb40..211eb5b35 100644
--- a/Completion/Linux/Type/_fuse_values
+++ b/Completion/Linux/Type/_fuse_values
@@ -47,7 +47,7 @@ fvals=(
 [[ -n $cvalsvar ]] && set -- "$@" ${(P)cvalsvar}
 
 if [[ $# -eq 0 ]]; then
-  set -- 'mount options' $fvals
+  set -- 'mount option' $fvals
 else
   set -- "$@" $fvals
 fi
diff --git a/Completion/Mandriva/Command/_urpmi b/Completion/Mandriva/Command/_urpmi
index d897f2c4b..9ab9e45b7 100644
--- a/Completion/Mandriva/Command/_urpmi
+++ b/Completion/Mandriva/Command/_urpmi
@@ -286,7 +286,7 @@ _urpmi() {
 	"($help --all --interactive  --name)--summary[print tag summary: summary]" \
 	"($help)--uniq[do not print identical lines]" \
 	"($help --all --interactive  --name)--url[print tag url: url]" \
-	"*:hdlist files:_files -g '*.cz(-.)'" \
+	"*:hdlist file:_files -g '*.cz(-.)'" \
       && ret=0
     ;;
   esac
diff --git a/Completion/Redhat/Command/_yum b/Completion/Redhat/Command/_yum
index a30aa579f..9425ba57c 100644
--- a/Completion/Redhat/Command/_yum
+++ b/Completion/Redhat/Command/_yum
@@ -167,7 +167,7 @@ _yumdb() {
 
       if [ "$cmd" = "help" ]; then
         if (( CURRENT == 2 )); then
-          _describe -t commands 'yum commands' _yum_cmds && ret=0
+          _describe -t commands 'yum command' _yum_cmds && ret=0
         else
           # help takes one argument
           _message 'no more arguments'
diff --git a/Completion/Solaris/Command/_coreadm b/Completion/Solaris/Command/_coreadm
index 7262e6423..655b48e63 100644
--- a/Completion/Solaris/Command/_coreadm
+++ b/Completion/Solaris/Command/_coreadm
@@ -40,6 +40,6 @@ _arguments -s \
   - set2 \
   '-p[PID-specific per-process core file name pattern]:' \
   '-P[PID-specific per-process core file content]:content:_values -s + "content" $content' \
-  '*:pids:_pids' \
+  '*:pid:_pids' \
   - set3 \
   '-u[update options from coreadm.conf]'
diff --git a/Completion/Solaris/Type/_svcs_fmri b/Completion/Solaris/Type/_svcs_fmri
index ffade6985..b090461c5 100644
--- a/Completion/Solaris/Type/_svcs_fmri
+++ b/Completion/Solaris/Type/_svcs_fmri
@@ -66,18 +66,18 @@ _svcs_fmri() {
 		# _wanted fmri expl "full or unambiguously abbreviated FMRIs" \
 		# 	_multi_parts -i / fmri_abbrevs
 
-		_wanted fmri expl "full or unambiguously abbreviated FMRIs" \
+		_wanted fmri expl "full or unambiguously abbreviated FMRI" \
 			compadd $fmri_abbrevs
 		;;
 
 	(-m)
-		_wanted fmri expl "milestone FMRIs" \
+		_wanted fmri expl "milestone FMRI" \
 			compadd $(svcs -H -o fmri svc:/milestone/\*) all
 		;;
 
 	(-r)
 		# TODO: need some way to pick out only restarters
-		_wanted fmri expl "restarter FMRIs" \
+		_wanted fmri expl "restarter FMRI" \
 			compadd master reset svc:/network/inetd:default
 		;;
 
diff --git a/Completion/Unix/Command/_ack b/Completion/Unix/Command/_ack
index e83a9330e..6dc3ab0d1 100644
--- a/Completion/Unix/Command/_ack
+++ b/Completion/Unix/Command/_ack
@@ -72,7 +72,7 @@ _arguments -C -s -S \
   '(1)-g[print files where the relative path + filename matches the given pattern]:pattern to match against filenames' \
   '--sort-files[sorts the found files lexically]' \
   '--show-types[print the file types that ack associates with each file]' \
-  '(--files-from -x)--files-from=[read the list of files to search from specified file]:files:_files' \
+  '(--files-from -x)--files-from=[read the list of files to search from specified file]:file:_files' \
   '(-x --files-from)-x[read the list of files to search from standard input]' \
   '*--ignore-dir'{,ectory}'=[ignore directory]:directory:_directories' \
   '*--noignore-dir'{,ectory}'=[remove directory from ignored list]:directory:_directories' \
@@ -86,7 +86,7 @@ _arguments -C -s -S \
   '*--type-'{add,set}'=[files with the given extensions are recognized as being of the given type]:type-def:->type-defs' \
   '*--type-del=[remove all filters associated with specified file type]: :->file-types' \
   '(--env)--noenv[ignore environment variables and global ackrc files]' '!(--noenv)--env)' \
-  '--ackrc=[specify an ackrc file to use]:files:_files' \
+  '--ackrc=[specify an ackrc file to use]:file:_files' \
   '--ignore-ack-defaults[ignore default definitions included with ack]' \
   "${ign}(- 1 *)--create-ackrc[output an ackrc based on customizations]" \
   "${ign}(- 1 *)"{-\?,--help}'[display usage information]' \
diff --git a/Completion/Unix/Command/_adb b/Completion/Unix/Command/_adb
index 75a447dfc..21cd68761 100644
--- a/Completion/Unix/Command/_adb
+++ b/Completion/Unix/Command/_adb
@@ -85,7 +85,7 @@ _adb() {
 	'-s[serial]: :_adb_device_serial' \
 	'(   -e)-d[device]' \
 	'(-d   )-e[emulator]' \
-	'1:options:_adb_options_handler' \
+	'1:option:_adb_options_handler' \
 	'*: : _default'
       
       return
@@ -141,7 +141,7 @@ _adb_dispatch_command () {
 	'(-d -e)-s[serial]: :_adb_device_serial' \
 	'(-s -e)-d[device]' \
 	'(-d -s)-e[emulator]' \
-	'*:options:_adb_options_handler'
+	'*:option:_adb_options_handler'
       ;;
   esac
 }
@@ -392,7 +392,7 @@ _adb_check_log_redirect () {
 
 (( $+functions[_adb_trace_opts] )) ||
 _adb_trace_opts() {
-  _values -s , 'adb trace options' \
+  _values -s , 'adb trace option' \
 	'(1 adb sockets packets rwx usb sync sysdeps transport jdwp)all' \
 	'(all adb sockets packets rwx usb sync sysdeps transport jdwp)1' \
 	'adb' \
@@ -418,7 +418,7 @@ _adb_device_serial() {
       devices[(i)${device%:*}:*]=$device
     fi
   done
-  _describe -t dev_serial 'available devices' devices
+  _describe -t dev_serial 'available device' devices
 }
 
 (( $+functions[_adb_logcat_filter_specification] )) ||
@@ -459,13 +459,13 @@ _adb_dispatch_logcat() {
 (( $+functions[_adb_options_handler] )) ||
 _adb_options_handler() {
   local expl
-  _wanted adb_options expl 'adb options' compadd "${ALL_ADB_COMMANDS[@]}"
+  _wanted adb_options expl 'adb option' compadd "${ALL_ADB_COMMANDS[@]}"
 }
 
 (( $+functions[_adb_shell_commands_handler] )) ||
 _adb_shell_commands_handler() {
   local expl
-  _wanted adb_shell_commands expl 'adb shell commands' compadd ls pm am mkdir rmdir rm cat 
+  _wanted adb_shell_commands expl 'adb shell command' compadd ls pm am mkdir rmdir rm cat
 }
 
 (( $+functions[_adb_device_available] )) ||
@@ -514,7 +514,7 @@ _adb_installed_packages() {
 _adb_users() {
   local -a users
   users=( ${${${(M)${(f)"$(adb shell pm list users)"}:#*UserInfo*}#*UserInfo\{}%:*} )
-  _describe -t users 'users' users
+  _describe -t users 'user' users
 }
 
 (( $+functions[_adb_cache_policy_single_command] )) ||
diff --git a/Completion/Unix/Command/_baz b/Completion/Unix/Command/_baz
index 6787f41e2..4dfcdf882 100644
--- a/Completion/Unix/Command/_baz
+++ b/Completion/Unix/Command/_baz
@@ -38,8 +38,8 @@ _baz_revisions () { _arch_namespace baz 4 "$argv[@]" }
 (( $+functions[_baz_local_revisions] )) ||
 _baz_local_revisions () {
   local expl1 expl2 tree_version=`$BAZ tree-version`
-  _description -V applied-patches expl1 "patches from this version"
-  _description -V other-patches expl2 "patches from other versions"
+  _description -V applied-patches expl1 "patch from this version"
+  _description -V other-patches expl2 "patch from other versions"
   compadd "$expl1[@]" `$BAZ logs`
   compadd "$expl2[@]" `$BAZ logs --full $($BAZ log-versions | grep -v $tree_version)`
   # This is incredibly slow.
@@ -82,7 +82,7 @@ _baz_limit () { #presently only does push-mirror style limits
 
     if [[ $PREFIX != *--* ]]; then
       _description -V categories expl "categories in $archive"
-      compadd -q -S -- "$expl[@]" `$BAZ categories $archive`
+      compadd -q -S -- "$expl[@]" `$BAZ category $archive`
     else
       _baz_namespace_branches 3
     fi
@@ -98,7 +98,7 @@ _baz_tree_or_rev () {
 _baz_libraries () {
   local libraries expl
   libraries=($(_call_program baz $BAZ my-revision-library))
-  _description -V libraries expl "revision libraries"
+  _description -V libraries expl "revision library"
   compadd "$expl[@]" -a libraries
 }
 
@@ -115,7 +115,7 @@ _baz_my_revision_library () {
 _baz_log_versions () {
   local logs expl
   logs=($(_call_program baz $BAZ log-versions))
-  _description -V versions expl "log versions"
+  _description -V versions expl "log version"
   compadd "$expl[@]" -a logs
 }
 
@@ -238,12 +238,12 @@ methods=(
 cmd_tagging_method=($cmd_id_tagging_method)
 
 local cmd_add cmd_add_id cmd_add_tag
-cmd_add=('*:files to add:_files')
+cmd_add=('*:file to add:_files')
 cmd_add_id=($cmd_add)
 cmd_add_tag=($cmd_add)
 
 local cmd_delete cmd_delete_id cmd_delete_tag
-cmd_delete=('*:files to delete:_files')
+cmd_delete=('*:file to delete:_files')
 cmd_delete_id=($cmd_delete)
 cmd_delete_tag=($cmd_delete)
 
@@ -272,7 +272,7 @@ cmd_changeset=(
   ':ORIG:_files -/'
   ':MOD:_files -/'
   ':DEST:_files -/'
-  '*:files:_files'
+  '*:file:_files'
 )
 cmd_mkpatch=("$cmd_changeset[@]")
 
@@ -288,7 +288,7 @@ local cmd_make_archive
 cmd_make_archive=('::name:' ':location:_files -/')
 
 local cmd_archive_setup
-cmd_archive_setup=('*:versions:_baz_branches --trailing-dashes')
+cmd_archive_setup=('*:version:_baz_branches --trailing-dashes')
 
 local cmd_make_category
 cmd_make_category=(':category:_baz_archives -S /')
@@ -304,7 +304,7 @@ cmd_import=('::version:_baz_versions')
 cmd_imprev=($cmd_import)
 
 local cmd_commit cmd_cmtrev
-cmd_commit=('*:files:_files')
+cmd_commit=('*:file:_files')
 cmd_cmtrev=($cmd_commit)
 
 local cmd_get cmd_getrev
@@ -573,7 +573,7 @@ _baz_main () {
     local -U cmds
     help=(${(f)"$($BAZ help)"})
     cmds=(${${${${(M)help:#* :*}/ #: #/:}%% ##}## #})
-    arguments=(':commands:(($cmds))')
+    arguments=(':command:(($cmds))')
   fi
   _arguments -S -A '-*' \
     {"${hide_short}(: -)-V",'(: -)--version'}'[display version]' \
diff --git a/Completion/Unix/Command/_bzr b/Completion/Unix/Command/_bzr
index 1b755b4ec..121c28166 100644
--- a/Completion/Unix/Command/_bzr
+++ b/Completion/Unix/Command/_bzr
@@ -65,7 +65,7 @@ case $cmd in
 	'--no-recurse[do not recurse into subdirectories]'
 	'(-q --quiet -v --verbose)'{--quiet,-q}'[be quiet]'
 	'(-v --verbose -q --quiet)'{--verbose,-v}'[display more information]'
-	'*:unknown files:_bzr_unknownFiles'
+	'*:unknown file:_bzr_unknownFiles'
 	)
     ;;
 
@@ -74,7 +74,7 @@ case $cmd in
 	'--all[show annotations on all lines]'
 	'--long[show date in annotations]'
 	'(-r --revision)'{--revision=,-r}'[the revision to show]:rev:'
-	'*:files:_bzr_versionedFiles'
+	'*:file:_bzr_versionedFiles'
 	)
     ;;
 
@@ -100,7 +100,7 @@ case $cmd in
 
 (rename|move|mv)
     if (( CURRENT == 2 )); then
-	args+=( '*:files:_bzr_versionedFiles' )
+	args+=( '*:file:_bzr_versionedFiles' )
     else
 	args=( '*:destination dir:_files -/' )
     fi
@@ -218,7 +218,7 @@ case $cmd in
 	'--unchanged[include unchanged files]'
 	'(-q --quiet -v --verbose)'{--quiet,-q}'[be quiet]'
 	'(-v --verbose -q --quiet)'{--verbose,-v}'[display more information]'
-	'*:modified files:_bzr_modifiedFiles'
+	'*:modified file:_bzr_modifiedFiles'
 	)
     ;;
 
@@ -229,7 +229,7 @@ case $cmd in
 	'--all[shelve all changes]'
 	'(-q --quiet)'{--quiet,-q}'[be quiet]'
 	'(-v --verbose)'{--verbose,-v}'[display more information]'
-	'*:modified files:_bzr_modifiedFiles'
+	'*:modified file:_bzr_modifiedFiles'
 	)
     ;;
 
@@ -279,7 +279,7 @@ case $cmd in
 	'(-r --revision)'{--revision=,-r}'[revision]:revision:'
 	'--diff-options=[options to pass to gdiff]:diff options:'
 	'(-p --prefix)'{--prefix,-p}'[set prefix added to old and new filenames]'
-	'*:files:_files'
+	'*:file:_files'
 	)
     ;;
 
@@ -376,7 +376,7 @@ case $cmd in
     args+=(
 	'--all[show annotations on all lines]'
 	"--plain[don't highlight annotation lines]"
-	'*:files:_bzr_versionedFiles'
+	'*:file:_bzr_versionedFiles'
 	)
     ;;
 
diff --git a/Completion/Unix/Command/_ctags b/Completion/Unix/Command/_ctags
index 3c80ba1c5..e2b28011b 100644
--- a/Completion/Unix/Command/_ctags
+++ b/Completion/Unix/Command/_ctags
@@ -147,7 +147,7 @@ if [ "$_ctags_type" = "universal" ]; then
     "--roles--[enable/disable tag roles for kinds of <lang>]:language:->languagedot"
     "--sort=-[should tags be sorted]:argument:(yes no foldcase)"
     "--tag-relative=-[should paths be relative to location of tag file]:argument:(yes no always never)"
-    "--totals=-[print stats about input and tag files]:arguments:(yes no extra)"
+    "--totals=-[print stats about input and tag files]:argument:(yes no extra)"
     "(--verbose -V)--verbose=-[enable verbose messages describing actions]:bool:(yes no)"
     "(--verbose -V)-V[enable verbose messages describing actions]"
     "--version[print version]"
@@ -196,7 +196,7 @@ elif [ "$_ctags_type" = "exuberant" ]; then
     "--regex--[define regex for locating tags in specific lang]:language:->language"
     "--sort=-[should tags be sorted]:argument:(yes no foldcase)"
     "--tag-relative=-[should paths be relative to location of tag file]:argument:(yes no)"
-    "--totals=-[print stats about input and tag files]:arguments:(yes no)"
+    "--totals=-[print stats about input and tag files]:argument:(yes no)"
     "(--verbose -V)--verbose=-[enable verbose messages describing actions]:bool:(yes no)"
     "(--verbose -V)-V[enable verbose messages describing actions]"
     "--version[print version]"
diff --git a/Completion/Unix/Command/_cvs b/Completion/Unix/Command/_cvs
index cba3eb773..4dc5b6c60 100644
--- a/Completion/Unix/Command/_cvs
+++ b/Completion/Unix/Command/_cvs
@@ -371,10 +371,10 @@ _cvs_log() {
     '-R[print the name of RCS file in the repository]' \
     '-N[don'\''t list tags]' \
     '(-h)-t[header with descriptive text]' \
-    '-d+[specify dates]:dates' \
+    '-d+[specify dates]:date range' \
     '-r-[specify revisions]:revisions' \
-    '-s+[specify states]:states:(Exp Stab Rel dead)' \
-    '-w-[specify logins]:logins' \
+    '-s+[specify states]:state:_sequence compadd - Exp Stab Rel dead' \
+    '-w-[specify logins]:login list' \
     '*:file:_cvs_files'
 }
 
@@ -388,10 +388,10 @@ _cvs_rlog() {
     '(-l)-R[recursive]' \
     '-N[don'\''t list tags]' \
     '(-h)-t[header with descriptive text]' \
-    '-d+[specify dates]:dates' \
+    '-d+[specify dates]:date range' \
     '-r-[specify revisions]:revisions' \
-    '-s+[specify states]:states:(Exp Stab Rel dead)' \
-    '-w-[specify logins]:logins' \
+    '-s+[specify states]:state:_sequence compadd - Exp Stab Rel dead' \
+    '-w-[specify logins]:login list' \
     '*:file:_cvs_modules'
 }
 
diff --git a/Completion/Unix/Command/_ecasound b/Completion/Unix/Command/_ecasound
index a39e426db..5fd9055a7 100644
--- a/Completion/Unix/Command/_ecasound
+++ b/Completion/Unix/Command/_ecasound
@@ -102,9 +102,9 @@ case $state in
     elif compset -P '*,*,'; then
       _message 'sampling rate'
     elif compset -P '*,'; then
-      _message 'channels'
+      _message 'channel'
     else
-      _values 'sampling parameters' \
+      _values 'sampling parameter' \
         'u8[unsigned 8-bit]' \
 	's16_le[signed 16-bit little endian]' \
 	's16_be[signed 16-bit big endian]' \
diff --git a/Completion/Unix/Command/_fetchmail b/Completion/Unix/Command/_fetchmail
index 31a92d984..bc5a39688 100644
--- a/Completion/Unix/Command/_fetchmail
+++ b/Completion/Unix/Command/_fetchmail
@@ -4,7 +4,7 @@ _arguments -S \
   {--bsmtp,'(--logfile)-L','(-L)--logfile','(--fetchmailrc)-f','(-f)--fetchmailrc','(--idfile)-i','(-i)--idfile'}':file:_files' \
   {--plugin,--plugout,'(--mda)-m','(-m)--mda'}':command:_command_names -e' \
   {'(--username)-u','(-u)--username'}:user:_users \
-  '--auth:authentication types:(password kerberos kerberos_v5)' \
+  '--auth:authentication type:(password kerberos kerberos_v5)' \
   {'(--protocol)-p','(-p)--protocol'}:protocol:'(auto pop2 pop3 apop rpop kpop sdps imap imap-k4 imap-gss etrn)' \
   {'(--port)-P','(-P)--port'}':port number' \
   '*:mail server:_hosts' \
diff --git a/Completion/Unix/Command/_ffmpeg b/Completion/Unix/Command/_ffmpeg
index c0b229f35..1329939cd 100644
--- a/Completion/Unix/Command/_ffmpeg
+++ b/Completion/Unix/Command/_ffmpeg
@@ -6,7 +6,7 @@ typeset -A opt_args
 (( $+functions[_ffmpeg_presets] )) || _ffmpeg_presets() {
     local presets
     presets=(~/.ffmpeg/*.ffpreset(:t:r) "$FFMPEG_DATADIR"/*.ffpreset(:t:r))
-    _wanted ffmpeg-presets expl 'select preset' compadd -a presets
+    _wanted ffmpeg-presets expl 'preset' compadd -a presets
 }
 
 (( $+functions[_ffmpeg_acodecs] )) || _ffmpeg_acodecs() {
@@ -49,7 +49,7 @@ typeset -A _ffmpeg_flags
 
 (( $+functions[_ffmpeg_flag_options] )) || _ffmpeg_flag_options() {
     local expl
-    _wanted options expl 'select flags' compadd -S '' -- {-,+}${^flag_options}
+    _wanted options expl 'flag' compadd -S '' -- {-,+}${^flag_options}
 }
 
 (( $+functions[_ffmpeg_more_flag_options] )) || _ffmpeg_more_flag_options() {
@@ -177,7 +177,7 @@ _arguments -C -S \
     && return
 
 [[ "$state" == "vfilters" ]] &&
-    _values -s , -S = 'video filters' \
+    _values -s , -S = 'video filter' \
     'aspect:set aspect ratio (rational number X\:Y or decimal number):' \
     'crop:crop input video (x\:y\:width\:height):' \
     'format: :_sequence -s : _ffmpeg_pix_fmts' \
diff --git a/Completion/Unix/Command/_find b/Completion/Unix/Command/_find
index 916fcf2e6..8ff60baf2 100644
--- a/Completion/Unix/Command/_find
+++ b/Completion/Unix/Command/_find
@@ -89,7 +89,7 @@ case $variant in
       '-X[warn if filename contains characters special to xargs]'
       '-f[specify file hierarchy to traverse]:path:_directories'
       "-x[don't span filesystems]"
-      '*-flags:flags:_chflags'
+      '*-flags:flag:_chflags'
     )
   ;|
   freebsd*|dragonfly*) args+=( '*-sparse' ) ;|
diff --git a/Completion/Unix/Command/_fuser b/Completion/Unix/Command/_fuser
index f497729fc..05de1c529 100644
--- a/Completion/Unix/Command/_fuser
+++ b/Completion/Unix/Command/_fuser
@@ -50,7 +50,7 @@ case $variant in
     )
     argf=( '*:name: _alternative "files:file:_files" "services:service:_fuser_services"' )
     [[ -prefix -  && -z ${${words[1,CURRENT-1]}[(r)-[A-Z][A-Z]*]} ]] &&
-        argf[1]+=' "signal:signals:_signals -P-"'
+        argf[1]+=' "signals:signal:_signals -P-"'
   ;;
   freebsd*|openbsd*|solaris2.<9->)
     args+=(
diff --git a/Completion/Unix/Command/_gem b/Completion/Unix/Command/_gem
index b35a5c358..53adfb89c 100644
--- a/Completion/Unix/Command/_gem
+++ b/Completion/Unix/Command/_gem
@@ -46,7 +46,7 @@ if [[ $state = command ]]; then
         'gem_dependencies:gem dependencies file guide'
         'platforms:show information about platforms'
       )
-      _describe -t topics 'help topics' helptopics -- && ret=0
+      _describe -t topics 'help topic' helptopics -- && ret=0
     ;&
     subcommands)
       cmds=( ${${${(M)${(f)"$(_call_program commands gem help commands)"}:#    [^ ]*}## #}/ ##/:} )
diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 0267acfa8..d27b43098 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -76,8 +76,8 @@ _git-add () {
       declare -a ignored_files_alternatives
       if [[ -n ${opt_args[(I)-f|--force]} ]]; then
         ignored_files_alternatives=(
-          'ignored-modified-files:ignored modified files:__git_ignore_line_inside_arguments __git_modified_files --ignored'
-          'ignored-other-files:ignored other files:__git_ignore_line_inside_arguments __git_other_files --ignored')
+          'ignored-modified-files:ignored modified file:__git_ignore_line_inside_arguments __git_modified_files --ignored'
+          'ignored-other-files:ignored other file:__git_ignore_line_inside_arguments __git_other_files --ignored')
       fi
 
       _alternative \
@@ -330,7 +330,7 @@ _git-branch () {
     "($l $m $d -f --force)"{-f,--force}'[force the creation of a new branch]' \
     "($l $m $d -t --track)"{-t,--track}'[setup configuration so that pull merges from the start point]' \
     "($l $m $d)--no-track[override the branch.autosetupmerge configuration variable]" \
-    "($l $m $d -u --set-upstream --set-upstream-to --unset-upstream)"{-u+,--set-upstream-to=}'[set up configuration so that pull merges]:remote-branches:__git_remote_branch_names' \
+    "($l $m $d -u --set-upstream --set-upstream-to --unset-upstream)"{-u+,--set-upstream-to=}'[set up configuration so that pull merges]:remote branch:__git_remote_branch_names' \
     "($l $m $d -u --set-upstream --set-upstream-to --unset-upstream)--unset-upstream[remove upstream configuration]" \
     "($l $m $d)*--contains=[only list branches that contain the specified commit]: :__git_committishs" \
     "($l $m $d)*--no-contains=[only list branches that don't contain the specified commit]: :__git_committishs" \
@@ -3138,7 +3138,7 @@ __git_config_option-or-value () {
             ;;
           (*.)
             local -a existing_subsections=( ${${${(M)git_present_options:#${IPREFIX}*.*}#${IPREFIX}}%.*} )
-            _describe -t existing-subsections "existing subsections" existing_subsections -S . && ret=0
+            _describe -t existing-subsections "existing subsection" existing_subsections -S . && ret=0
             ;;
         esac
       else
@@ -4070,7 +4070,7 @@ _git-help () {
     '(-a --all -g --guides -c --config -i --info -m --man)'{-w,--web}'[display manual for the command in HTML format]' \
     '(-g --guides -c --config -i --info -m --man -w --web)'{-g,--guides}'[prints a list of useful guides on the standard output]' \
     '(-v --verbose)'{-v,--verbose}'[print command descriptions]' \
-    ': : _alternative commands:command:_git_commands "guides:git guides:(attributes cli core-tutorial cvs-migration diffcore everyday glossary hooks ignore modules namespaces repository-layout revisions tutorial tutorial-2 workflows)"'
+    ': : _alternative commands:command:_git_commands "guides:git guide:(attributes cli core-tutorial cvs-migration diffcore everyday glossary hooks ignore modules namespaces repository-layout revisions tutorial tutorial-2 workflows)"'
 }
 
 (( $+functions[_git-instaweb] )) ||
@@ -5381,7 +5381,7 @@ _git-pack-redundant () {
     '(:)--all[process all packs]' \
     '--alt-odb[do not require objects to be present in local packs]' \
     '--verbose[output some statistics to standard error]' \
-    '(--all)*::packs:_files -g "*.pack(-.)"'
+    '(--all)*::pack:_files -g "*.pack(-.)"'
 }
 
 (( $+functions[_git-rev-list] )) ||
@@ -7317,7 +7317,7 @@ __git_repositories () {
 __git_local_repositories () {
   local expl
 
-  _wanted local-repositories expl 'local repositories' _directories
+  _wanted local-repositories expl 'local repository' _directories
 }
 
 (( $+functions[__git_repositories_or_urls] )) ||
diff --git a/Completion/Unix/Command/_gradle b/Completion/Unix/Command/_gradle
index 9a75daefb..adf5e9aa8 100644
--- a/Completion/Unix/Command/_gradle
+++ b/Completion/Unix/Command/_gradle
@@ -95,18 +95,18 @@ if [[ $words[CURRENT] != -* ]]; then
                 _tags gradle_group gradle_all
                 while _tags; do
                     # Offer main tasks and secondary tasks in different tags.
-                    _requested gradle_group && _describe 'group tasks' gradle_group_tasks && ret=0
-                    _requested gradle_all && _describe 'secondary tasks' gradle_all_tasks && ret=0
+                    _requested gradle_group && _describe 'group task' gradle_group_tasks && ret=0
+                    _requested gradle_all && _describe 'secondary task' gradle_all_tasks && ret=0
                     (( ret )) || break
                 done
             elif [[ $state == alltask ]]; then
                 # After '--exclude-task', we don't make a distinction between main tasks and
                 # secondary tasks.
-                _describe 'all tasks' gradle_group_tasks -- gradle_all_tasks && ret=0
+                _describe 'task' gradle_group_tasks -- gradle_all_tasks && ret=0
             fi
         fi
     else
-        _describe 'built-in tasks' '(
+        _describe 'built-in task' '(
             "dependencies:Displays all dependencies declared in root project."
             "dependencyInsight:Displays the insight into a specific dependency in root project."
             "help:Displays a help message."
diff --git a/Completion/Unix/Command/_initctl b/Completion/Unix/Command/_initctl
index 2d7c2494b..b404c0c16 100644
--- a/Completion/Unix/Command/_initctl
+++ b/Completion/Unix/Command/_initctl
@@ -51,14 +51,14 @@ _initctl_known_events()
 _initctl_multiple_known_events()
 {
   [[ ${#_initctl_events_list} -eq 0 ]] && _initctl_fillarray_events_args
-  _values -s "," "Events" "$_initctl_events_list[@]"
+  _values -s "," "event" "$_initctl_events_list[@]"
 }
 
 # list KEY= arguments, generate array if necessary
 _initctl_known_eventargs()
 {
   [[ ${#_initctl_eventargs_list} -eq 0 ]] && _initctl_fillarray_events_args
-  _values "Argument Keys" "$_initctl_eventargs_list[@]"
+  _values "argument key" "$_initctl_eventargs_list[@]"
 }
 
 # describe and offer commands for initctl, then call matching completion function
@@ -82,7 +82,7 @@ _initctl_command()
     )
 
     if (( CURRENT == 1 )); then
-        _describe -t command "initctl Commands" cmds
+        _describe -t command "initctl command" cmds
     fi
 
     local cmd=$words[1]
@@ -97,8 +97,8 @@ _initctl_startstop()
     _arguments \
         '--no-wait[do not wait for operation to complete before exiting]' \
         "${common_args[@]}" \
-        ':Upstart Jobs:_initctl_helper_jobs' \
-        '*::Argument Keys:_initctl_known_eventargs'
+        ':upstart job:_initctl_helper_jobs' \
+        '*::argument key:_initctl_known_eventargs'
 }
 
 # completion for anything that takes one job
@@ -106,7 +106,7 @@ _initctl_argjob()
 {
     _arguments \
         "${common_args[@]}" \
-        ':Upstart Jobs:_initctl_helper_jobs' \
+        ':upstart job:_initctl_helper_jobs' \
         '*::'
 }
 
@@ -116,8 +116,8 @@ _initctl_emit()
     _arguments \
         '--no-wait[do not wait for event to finish before exiting]' \
         "${common_args[@]}" \
-        ':Events:_initctl_known_events' \
-        '*::Argument Keys:_initctl_known_eventargs'
+        ':event:_initctl_known_events' \
+        '*::argument key:_initctl_known_eventargs'
 }
 
 # the fallback, just the options
@@ -133,7 +133,7 @@ _initctl_show-config()
     _arguments \
       "(-e --enumerate)"{-e,--enumerate}"[enumerate emit lines]" \
         "${common_args[@]}" \
-        '::Upstart Jobs:_initctl_helper_jobs' \
+        '::upstart job:_initctl_helper_jobs' \
         '*::'
 }
 
@@ -144,7 +144,7 @@ _initctl_check-config()
       "(-i --ignore-events)"{-i,--ignore-events}"[list of comma-separated events to ignore]:Events:_initctl_multiple_known_events" \
       "(-w --warn)"{-w,--warn}"[treat any unknown jobs or events as error]" \
         "${common_args[@]}" \
-        '::Upstart Jobs:_initctl_helper_jobs' \
+        '::upstart job:_initctl_helper_jobs' \
         '*::'
 }
 
@@ -172,7 +172,7 @@ _initctl()
   # depending on which command was used, call different completion functions
   case $service in
     initctl)
-      _arguments "${common_args[@]}" '*::Initctl Commands:_initctl_command'
+      _arguments "${common_args[@]}" '*::initctl command:_initctl_command'
     ;;
     start|stop|restart|reload|status)
       _call_function ret _initctl_${cmd_completion_funcs[${service}]-${cmd_completion_default}}
diff --git a/Completion/Unix/Command/_install b/Completion/Unix/Command/_install
index 5ad84645e..364119961 100644
--- a/Completion/Unix/Command/_install
+++ b/Completion/Unix/Command/_install
@@ -106,7 +106,7 @@ case $state in
       'a[symlinks use absolute path]'
       'r[symlinks use relative path]'
     )
-    _values -S '' 'link flags' $tmp && ret=0
+    _values -S '' 'link flag' $tmp && ret=0
     ;;
 esac
 
diff --git a/Completion/Unix/Command/_joe b/Completion/Unix/Command/_joe
index 592c34a10..74b0bf1a3 100644
--- a/Completion/Unix/Command/_joe
+++ b/Completion/Unix/Command/_joe
@@ -36,4 +36,4 @@ _arguments \
   '-linums[display line numbers before each line]' \
   '-rdonly[make file read-only]' \
   '-keymap[use an alternate section of joerc for keybindings]:keymap name' \
-  '*:files:_files'
+  '*:file:_files'
diff --git a/Completion/Unix/Command/_locate b/Completion/Unix/Command/_locate
index 23305f798..af07473b3 100644
--- a/Completion/Unix/Command/_locate
+++ b/Completion/Unix/Command/_locate
@@ -44,7 +44,7 @@ case $variant in
       -u'[create slocate database starting at path /]'
       -U'[create slocate database starting at given path]:directory:_files -/'
       -c'[parse GNU locate updatedb with -u, -U]'
-      -e'[exclude directories with -u, -U]:directories:_files -/'
+      -e'[exclude directories with -u, -U]: : _dir_list -s,'
       -f'[exclude file system types from db with -u, -U]:file system:_file_systems'
       -l'[security level]:level:(0 1)'
       -q'[quiet mode]'
diff --git a/Completion/Unix/Command/_lp b/Completion/Unix/Command/_lp
index 914d63ff2..ad7e97203 100644
--- a/Completion/Unix/Command/_lp
+++ b/Completion/Unix/Command/_lp
@@ -83,7 +83,7 @@ _lp_job_options()
 	  "DuplexTumble:flip short side"
 	  "DuplexNoTumble:flip long side"
 	  "None")
-	_describe "duplex options" desc_opts
+	_describe "duplex option" desc_opts
 	;;
 
       (*)
@@ -103,11 +103,11 @@ _lp_job_options()
       eq_suffix=(-S '=')
     fi
 
-    _description lpopts expl "generic printer options"
+    _description lpopts expl "generic printer option"
     compadd "$expl[@]" $eq_suffix $lopts_with_args
     compadd "$expl[@]" $lopts_no_args
 
-    _description printeropts expl "printer specific options"
+    _description printeropts expl "printer specific option"
     compadd "$expl[@]" $eq_suffix \
       $(_call_program list-printer-options \
 	lpoptions $printer -l | cut -d/ -f1)
diff --git a/Completion/Unix/Command/_ls b/Completion/Unix/Command/_ls
index 1fd9383f5..df14e7e2c 100644
--- a/Completion/Unix/Command/_ls
+++ b/Completion/Unix/Command/_ls
@@ -196,7 +196,7 @@ else
     '(-q --hide-control-chars)--show-control-chars'
     '(- :)--help[display help information]'
     '(- :)--version[display version information]'
-    '*:files:_files'
+    '*:file:_files'
   )
   if [[ $OSTYPE = linux* ]]; then
     arguments+=(
diff --git a/Completion/Unix/Command/_make b/Completion/Unix/Command/_make
index 21ed56184..ae91440f0 100644
--- a/Completion/Unix/Command/_make
+++ b/Completion/Unix/Command/_make
@@ -204,7 +204,7 @@ _make() {
     ;;
 
     (debug)
-    _values -s , 'debug options' \
+    _values -s , 'debug option' \
       '(b v i j m)a[all debugging output]' \
       'b[basic debugging output]' \
       '(b)v[one level above basic]' \
diff --git a/Completion/Unix/Command/_moosic b/Completion/Unix/Command/_moosic
index 54d768c8c..475a0c75c 100644
--- a/Completion/Unix/Command/_moosic
+++ b/Completion/Unix/Command/_moosic
@@ -216,7 +216,7 @@ _moosic_cmd_version() {
 _moosic_song_files()
 {
     _arguments -A '-*' $main_opts $filelist_opts $auto_opts \
-               '*:song files:_files'
+               '*:song file:_files'
 }
 
 _moosic_cmd_append() {
@@ -282,7 +282,7 @@ _moosic_cmd_stagger-merge() {
 _moosic_cmd_interval-add() {
     _arguments -A '-*' $main_opts $filelist_opts \
                   '1:interval:' \
-                  '*:song files:_files'
+                  '*:song file:_files'
 }
 
 ### REMOVING COMMANDS
diff --git a/Completion/Unix/Command/_mysql_utils b/Completion/Unix/Command/_mysql_utils
index f1ad97bcd..a7b285f1c 100644
--- a/Completion/Unix/Command/_mysql_utils
+++ b/Completion/Unix/Command/_mysql_utils
@@ -187,7 +187,7 @@ _mysqladmin() {
 	  _wanted databases expl "MySQL database" _mysql_databases && ret=0
 	;;
 	kill)
-	  _message -e ids 'thread ids'
+	  _message -e ids 'thread id'
 	;;
 	password)
 	  _message -e passwords 'new password'
diff --git a/Completion/Unix/Command/_mysqldiff b/Completion/Unix/Command/_mysqldiff
index 4b46c86df..52b96ef21 100644
--- a/Completion/Unix/Command/_mysqldiff
+++ b/Completion/Unix/Command/_mysqldiff
@@ -20,8 +20,8 @@ _mysqldiff () {
 
 _mysql_db_or_file () {
   _alternative \
-    'databases:MySQL databases:_mysql_databases' \
-    'files:MySQL database definition files:_files -g "*.(my|)sql(-.)"'
+    'databases:MySQL database:_mysql_databases' \
+    'files:MySQL database definition file:_files -g "*.(my|)sql(-.)"'
 }
 
 _mysql_utils
diff --git a/Completion/Unix/Command/_nm b/Completion/Unix/Command/_nm
index 423fd3223..2f608c5fc 100644
--- a/Completion/Unix/Command/_nm
+++ b/Completion/Unix/Command/_nm
@@ -66,7 +66,7 @@ if _pick_variant -r variant binutils=GNU elftoolchain=elftoolchain elfutils=elfu
 	'--plugin[load specified plugin]:plugin'
 	'--special-syms[include special symbols in the output]'
 	'--synthetic[display synthetic symbols as well]'
-	"--target=[target object format]:targets:(${${(@M)${(f)$(_call_program targets nm --help)}:#*supported targets:*}##*: })"
+	"--target=[target object format]:target:(${${(@M)${(f)$(_call_program targets nm --help)}:#*supported targets:*}##*: })"
 	'--with-symbol-versions[display version strings after symbol names]'
       )
     ;;
diff --git a/Completion/Unix/Command/_objdump b/Completion/Unix/Command/_objdump
index 989cd3f0b..5152e6b6e 100644
--- a/Completion/Unix/Command/_objdump
+++ b/Completion/Unix/Command/_objdump
@@ -184,7 +184,7 @@ case "$state" in
         ${=${(M)${(f)"$(_call_program targets objdump --help)"}##* supported architectures:*}##*: } && ret=0
   ;;
   disassembler_options)
-    _values -s , "disassembler options" "${(@)${(@)${(@M)${(f)${(ps.-M switch.)$(_call_program targets objdump --help)}[2]}:#  [^ ]*}#  }%% *}" && ret=0
+    _values -s , "disassembler option" "${(@)${(@)${(@M)${(f)${(ps.-M switch.)$(_call_program targets objdump --help)}[2]}:#  [^ ]*}#  }%% *}" && ret=0
   ;;
   llvm_targets)
     _values "target architecture" "${(z)${(@)${(f)$(_call_program targets
diff --git a/Completion/Unix/Command/_perforce b/Completion/Unix/Command/_perforce
index 0d007e3bc..4e69dee78 100644
--- a/Completion/Unix/Command/_perforce
+++ b/Completion/Unix/Command/_perforce
@@ -1354,7 +1354,7 @@ _perforce_fstat_fields() {
     ${${${${(M)${(f)"$(_perforce_call_p4 help-fstat help fstat)"}:#[[:blank:]]#[a-zA-Z]##(|\#)[[:blank:]]##--*}##[[:blank:]]#}:#fstat *}//[[:blank:]]##--[[:blank:]]##/:}
   )
   compset -P '*[,[:blank:]]'
-  _describe -t fstat-fields 'Perforce fstat fields' values -S, -q
+  _describe -t fstat-fields 'Perforce fstat field' values -S, -q
 }
 
 
diff --git a/Completion/Unix/Command/_perl b/Completion/Unix/Command/_perl
index 4a917903c..d7e8f1b51 100644
--- a/Completion/Unix/Command/_perl
+++ b/Completion/Unix/Command/_perl
@@ -31,7 +31,7 @@ _perl () {
     "-u[dump core after parsing script]" \
     "-U[allow unsafe operations]" \
     "-v[print version, patchlevel and license]" \
-    "-V-[print perl configuration information]:configuration keys:_perl_config_vars" \
+    "-V-[print perl configuration information]:configuration key:_perl_config_vars" \
     '(   -W -X)-w[turn warnings on for compilation of your script (recommended)]' \
     "(-w    -X)-W[enable all warnings (ignores 'no warnings')]" \
     "(-w -W   )-X[disable all warnings (ignores 'use warnings')]" \
@@ -96,7 +96,7 @@ _perl_config_vars () {
 }
 
 _perl_unicode_flags () {
-  _values -s '' 'unicode bitmask or flags' \
+  _values -s '' 'unicode bitmask or flag' \
     '(S)I[  1 STDIN is assumed to be in UTF-8]' \
     '(S)O[  2 STDOUT will be in UTF-8]' \
     '(S)E[  4 STDERR will be in UTF-8]' \
diff --git a/Completion/Unix/Command/_perldoc b/Completion/Unix/Command/_perldoc
index 3e58d5a50..b724d74ee 100644
--- a/Completion/Unix/Command/_perldoc
+++ b/Completion/Unix/Command/_perldoc
@@ -3,7 +3,7 @@
 local curcontext="$curcontext" state line expl args ret=1
 typeset -A opt_args
 
-args=( '*:Perl pod pages:->perl-pods' )
+args=( '*:Perl pod page:->perl-pods' )
 
 if [[ $service = *PERLDOC* ]]; then
   compset -q
@@ -46,7 +46,7 @@ case  $state in
 
   perl-pods)
     if (( $+opt_args[-F] )); then
-      _wanted files expl 'Perl modules and .pods' \
+      _wanted files expl 'Perl module or .pod' \
           _files -g "*.(pod|pm)(-.)" && ret=0
     else
       _alternative \
diff --git a/Completion/Unix/Command/_ps b/Completion/Unix/Command/_ps
index 98dcd1cd0..9b54cbcc6 100644
--- a/Completion/Unix/Command/_ps
+++ b/Completion/Unix/Command/_ps
@@ -236,8 +236,8 @@ else
   [[ -z "$state" ]] && return ret
 fi
 
-_values -s '' -S ' ' 'options' $bsd && ret=0
-_values -S ' ' 'options' $bsdarg && ret=0
+_values -s '' -S ' ' 'option' $bsd && ret=0
+_values -S ' ' 'option' $bsdarg && ret=0
 if [[ -z $pids ]]; then
   _pids && ret=0
 fi
diff --git a/Completion/Unix/Command/_qemu b/Completion/Unix/Command/_qemu
index 3c21c3e74..30fcd6757 100644
--- a/Completion/Unix/Command/_qemu
+++ b/Completion/Unix/Command/_qemu
@@ -6,7 +6,7 @@ _qemu_log_items () {
     [[ $hline[1] = Log ]] && continue
     opts=($opts "${hline[1]}[${hline[2,-1]}]")
   done
-  _values -s , 'log items' $opts
+  _values -s , 'log item' $opts
 }
 
 local _qemu_machines
@@ -45,7 +45,7 @@ _arguments \
   '-s[wait gdb connection to port 1234]' \
   '-p[change gdb connection port]:port:_ports' \
   '-S[do not start CPU at startup]' \
-  '-d[output log in /tmp/qemu.log]:log items:_qemu_log_items' \
+  '-d[output log in /tmp/qemu.log]:log item:_qemu_log_items' \
   '-hdachs[force hard disk 0 geometry (usually qemu can guess it)]:hd0 geometry c,h,s:' \
   '-vga[select video card type]:card type:(std cirrus vmware qxl xenfb none)' \
   '-no-acpi[disable ACPI]' \
diff --git a/Completion/Unix/Command/_quilt b/Completion/Unix/Command/_quilt
index 8167bce1e..8f39dadac 100644
--- a/Completion/Unix/Command/_quilt
+++ b/Completion/Unix/Command/_quilt
@@ -36,7 +36,7 @@ _quilt_unapplied() {
 
 _arguments $help \
   '--trace[run the command in bash trace mode]' \
-  '--quiltrc=[use the specified configuration file]:files:_files' \
+  '--quiltrc=[use the specified configuration file]:file:_files' \
   '--version[print the version number and exit]' \
   ':quilt command:->cmd' \
   '*:: :->subcmd' && return
@@ -116,12 +116,12 @@ case $words[1] in
   add)
     _arguments -S $help \
       '-P+[specify patch to add files to]:patch:_quilt_applied' \
-      '*:files:_files' && return
+      '*:file:_files' && return
   ;;
   annotate)
     _arguments $help \
       '-P[stop checking for changes at the specified rather than the topmost patch]:patch:_quilt_series' \
-      ':files:_files' && return
+      ':file:_files' && return
   ;;
   applied) _arguments $help ':quilt series:_quilt_series' && return ;;
   delete)
@@ -142,9 +142,9 @@ case $words[1] in
       '(-P -z)--snapshot[diff against snapshot]' \
       '--diff=[use the specified utility for generating the diff]:diff utility:_command_names -e' \
       '--sort[sort files by name]' \
-      '*:files:_files' && return
+      '*:file:_files' && return
   ;;
-  edit) _arguments $help '*:files:_files' && return ;;
+  edit) _arguments $help '*:file:_files' && return ;;
   files)
     _arguments -s $help $verbose \
       '-a[list all files in all applied patches]' \
@@ -187,14 +187,14 @@ case $words[1] in
       '-P+[patch filename to use inside quilt]:quilt select patch filename: ' \
       '-f[overwrite/update existing patches]' \
       '-d+[header resolution when overwriting in existing patch]:resolution:((a\:all\ headers n\:new\ headers o\:old\ headers))' \
-      '*:files:_files' && return
+      '*:file:_files' && return
   ;;
   mail)
     _arguments $help \
       '(-h -M)-m[introduction text to use]:introduction text' \
       '(-h -m)-M[read introduction text from file]:file:_files' \
       '--prefix=[use an alternate prefix in the bracketed part of the subjects generated]:quilt select prefix: ' \
-      '--mbox=[store all messages in the specified file in mbox format]:files:_files' \
+      '--mbox=[store all messages in the specified file in mbox format]:file:_files' \
       '--send[send the messages directly]' \
       '--sender=[specify envelope sender address to use]:sender:_email_addresses -c' \
       '--from=[from header]:address:_email_addresses' \
@@ -202,13 +202,13 @@ case $words[1] in
       '*--to=[append a recipient to the To header]:recipient:_email_addresses' \
       '*--cc=[append a recipient to the Cc header]:recipient:_email_addresses' \
       '*--bcc=[append a recipient to the Bcc header]:recipient:_email_addresses' \
-      '--signature=[append specified signature file to messages]:files:_files' \
+      '--signature=[append specified signature file to messages]:file:_files' \
       '--reply-to=[add reply address to message]:address:_email_addresses' \
       '*:patch:_quilt_series' && return
   ;;
   new) _arguments $help $pstyle ':patch name' && return ;;
   next) _arguments $help ':patch:_quilt_series' && return ;;
-  patches) _arguments -S $help $verbose $color '*:files:_files' && return ;;
+  patches) _arguments -S $help $verbose $color '*:file:_files' && return ;;
   pop)
     _arguments -s $help $verbose \
       '-a[remove all applied patches]' \
@@ -253,7 +253,7 @@ case $words[1] in
   revert)
     _arguments $help \
       '-P[revert changes in the named patch]:patch:_quilt_series' \
-      '*:files:_files' && return
+      '*:file:_files' && return
   ;;
   series) _arguments $help $verbose $color && return ;;
   setup)
@@ -261,7 +261,7 @@ case $words[1] in
       '-d[specify path prefix for resulting source tree]:prefix:_files -W / -P /' \
       '--sourcedir[specify location of package sources]:directory:_directories' \
       '--fuzz=[set the maximum fuzz factor]:factor' \
-      ':files:_files' && return
+      ':file:_files' && return
   ;;
   snapshot) _arguments $help '-d[only remove current snapshot]' && return ;;
   unapplied) _arguments $help ':patch:_quilt_series' && return ;;
diff --git a/Completion/Unix/Command/_rclone b/Completion/Unix/Command/_rclone
index 40f06e0ba..27b4dd926 100644
--- a/Completion/Unix/Command/_rclone
+++ b/Completion/Unix/Command/_rclone
@@ -79,7 +79,7 @@ _arguments -C \
   '--dump-bodies[dump HTTP headers and bodies - may contain sensitive info]' \
   '--dump-headers[dump HTTP headers - may contain sensitive info]' \
   '--exclude[exclude files matching pattern]:stringArray' \
-  '--exclude-from[read exclude patterns from file]:files:_files' \
+  '--exclude-from[read exclude patterns from file]:file:_files' \
   '--exclude-if-present[exclude directories if filename is present]:string' \
   '--fast-list[use recursive list if available]' \
   '--files-from[read list of source-file names from file]:file:_files' \
@@ -339,8 +339,8 @@ _arguments -C \
 if [[ $state == 'files_or_remotes' ]]; then
   remotes=( $(_call_program rclone-remotes rclone listremotes) )
   _alternative \
-    "remote:rclone-remotes:compadd -a remotes" \
-    "file:files:_files" && ret=0
+    "rclone-remotes:remote:compadd -a remotes" \
+    "files:file:_files" && ret=0
 fi
 
 return ret
diff --git a/Completion/Unix/Command/_rsync b/Completion/Unix/Command/_rsync
index e14c99cc6..b1a4f6046 100644
--- a/Completion/Unix/Command/_rsync
+++ b/Completion/Unix/Command/_rsync
@@ -71,14 +71,14 @@ _rsync_info() {
   local opts
   opts=( ${${(M)${(f)"$(_call_program values $words[1] --info=help)"}:#*Mention*}/ ##Me/[me} )
   (( $#opts )) && opts=( '(ALL NONE HELP)'${^opts}\] )
-  _values -s , 'info options' $opts ALL NONE HELP
+  _values -s , 'info option' $opts ALL NONE HELP
 }
 
 _rsync_debug() {
   local opts
   opts=( ${${(M)${(f)"$(_call_program values $words[1] --debug=help)"}:#*Debug*}/ ##De/[de} )
   (( $#opts )) && opts=( '(ALL NONE HELP)'${^opts}\] )
-  _values -s , 'debug options' $opts ALL NONE HELP
+  _values -s , 'debug option' $opts ALL NONE HELP
 }
 
 _rsync_files() {
diff --git a/Completion/Unix/Command/_runit b/Completion/Unix/Command/_runit
index 81ba26a44..5c22cc54e 100644
--- a/Completion/Unix/Command/_runit
+++ b/Completion/Unix/Command/_runit
@@ -19,7 +19,7 @@ _sv_commands() {
     'kill':'send SIGKILL if service is running'
     'exit':'send SIGTERM and SIGCONT if service is running. Do not restart service.'
   )
-  _describe -t commands "sv commands" sv_ary -V sv_commands
+  _describe -t commands "sv command" sv_ary -V sv_commands
 }
 
 _sv_lsb() {
@@ -41,7 +41,7 @@ _sv_lsb() {
 }
 
 _sv_additional() {
-  _describe -t additional-commands "sv additional commands" '("check:check status of service")' -V sv_addl_comm
+  _describe -t additional-commands "sv additional command" '("check:check status of service")' -V sv_addl_comm
 }
 
 local curcontext="$curcontext" state line
@@ -68,6 +68,6 @@ case $state in
     )
 
     sv_services=( ${sv_services#$svdir/} )
-    _describe -t services "sv services" sv_services
+    _describe -t services "sv service" sv_services
   ;;
 esac
diff --git a/Completion/Unix/Command/_scons b/Completion/Unix/Command/_scons
index 2c620cc1a..77fe6dfb0 100644
--- a/Completion/Unix/Command/_scons
+++ b/Completion/Unix/Command/_scons
@@ -19,7 +19,7 @@ _arguments -s -S \
   '(-)-'{h,-help}'[display defined usage information]' \
   '(-)-'{H,-help-options}'[display usage information]' \
   '(-i -ignore-errors)-'{i,-ignore-errors}'[ignore errors from build actions]' \
-  \*{-I,--include-dir=}'[add directory to search Python modules]:directories:_directories' \
+  \*{-I,--include-dir=}'[add directory to search Python modules]:directory:_directories' \
   '(--implicit-deps-changed --implicit-deps-unchanged)--implicit-cache[cache scanned dependencies]' \
   '(--implicit-cache --implicit-deps-changed)--implicit-deps-changed[rescan dependencies]' \
   '(--implicit-cache --implicit-deps-unchanged)--implicit-deps-unchanged[ignore changes to scanned dependencies]' \
diff --git a/Completion/Unix/Command/_ssh b/Completion/Unix/Command/_ssh
index 82a2a1827..ffdc4999f 100644
--- a/Completion/Unix/Command/_ssh
+++ b/Completion/Unix/Command/_ssh
@@ -392,7 +392,7 @@ _ssh () {
           state=dynforward
           ;;
         (#i)kbdinteractivedevices=*)
-          _values -s , 'keyboard-interactive authentication methods' \
+          _values -s , 'keyboard-interactive authentication method' \
               'bsdauth' 'pam' 'skey' && ret=0
           ;;
         (#i)(kexalgorithms|gssapikexalgorithms)=*)
diff --git a/Completion/Unix/Command/_tla b/Completion/Unix/Command/_tla
index 1e4cdd8d9..33dfc005f 100644
--- a/Completion/Unix/Command/_tla
+++ b/Completion/Unix/Command/_tla
@@ -45,8 +45,8 @@ _tla_revisions () { _arch_namespace tla 4 "$argv[@]" }
 (( $+functions[_tla_local_revisions] )) ||
 _tla_local_revisions () {
   local expl1 expl2 tree_version=`$TLA tree-version`
-  _description -V applied-patches expl1 "patches from this version"
-  _description -V other-patches expl2 "patches from other versions"
+  _description -V applied-patches expl1 "patch from this version"
+  _description -V other-patches expl2 "patch from other versions"
   compadd "$expl1[@]" `$TLA logs`
   compadd "$expl2[@]" `$TLA logs --full $($TLA log-versions | grep -v $tree_version)`
   # This is incredibly slow.
@@ -90,7 +90,7 @@ _tla_limit () { #presently only does push-mirror style limits
   if [ $archive ]; then
 
     if [[ $PREFIX != *--* ]]; then
-      _description -V categories expl "categories in $archive"
+      _description -V categories expl "category in $archive"
       compadd -q -S -- "$expl[@]" `$TLA categories -A $archive`
     else
       _tla_namespace_branches 3
@@ -107,7 +107,7 @@ _tla_tree_or_rev () {
 _tla_libraries () {
   local libraries expl
   libraries=($(_call_program tla $TLA my-revision-library))
-  _description -V libraries expl "revision libraries"
+  _description -V libraries expl "revision library"
   compadd "$expl[@]" -a libraries
 }
 
@@ -128,7 +128,7 @@ _tla_log_versions () {
   else
     logs=($(_call_program tla $TLA logs))
   fi
-  _description -V versions expl "log versions"
+  _description -V versions expl "log version"
   compadd "$expl[@]" -a logs
 }
 
@@ -278,12 +278,12 @@ methods=(
 cmd_tagging_method=($cmd_id_tagging_method)
 
 local cmd_add cmd_add_id cmd_add_tag
-cmd_add=('*:files to add:_files')
+cmd_add=('*:file to add:_files')
 cmd_add_id=($cmd_add)
 cmd_add_tag=($cmd_add)
 
 local cmd_delete cmd_delete_id cmd_delete_tag
-cmd_delete=('*:files to delete:_files')
+cmd_delete=('*:file to delete:_files')
 cmd_delete_id=($cmd_delete)
 cmd_delete_tag=($cmd_delete)
 
@@ -312,7 +312,7 @@ cmd_changeset=(
   ':ORIG:_files -/'
   ':MOD:_files -/'
   ':DEST:_files -/'
-  '*:files:_files'
+  '*:file:_files'
 )
 cmd_mkpatch=("$cmd_changeset[@]")
 
@@ -328,7 +328,7 @@ local cmd_make_archive
 cmd_make_archive=('::name:' ':location:_files -/')
 
 local cmd_archive_setup
-cmd_archive_setup=('*:versions:_tla_branches --trailing-dashes')
+cmd_archive_setup=('*:version:_tla_branches --trailing-dashes')
 
 local cmd_make_category
 cmd_make_category=(':category:_tla_archives -S /')
@@ -344,7 +344,7 @@ cmd_import=('::version:_tla_versions')
 cmd_imprev=($cmd_import)
 
 local cmd_commit cmd_cmtrev
-cmd_commit=('::version:_tla_versions' ':separator:(--)' '*:files:_files')
+cmd_commit=('::version:_tla_versions' ':separator:(--)' '*:file:_files')
 cmd_cmtrev=($cmd_commit)
 
 local cmd_get cmd_getrev
@@ -619,7 +619,7 @@ _tla_main () {
     local -U cmds
     help=(${(f)"$($TLA help)"})
     cmds=(${${${${(M)help:#* :*}/ #: #/:}%% ##}## #})
-    arguments=(':commands:(($cmds))')
+    arguments=(':command:(($cmds))')
   fi
   _arguments -S -A '-*' \
     {"${hide_short}(: -)-V",'(: -)--version'}'[display version]' \
diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index f4e5619a0..284a325e5 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1114,7 +1114,7 @@ function __tmux-buffers() {
     fi
 
     buffers=( ${${(f)"$(command tmux 2> /dev/null list-buffers "${bopts[@]}")"}/:[ $'\t']##/:} )
-    _describe -t buffers 'buffers' buffers
+    _describe -t buffers 'buffer' buffers
 }
 
 function __tmux-bound-keys() {
@@ -1122,14 +1122,14 @@ function __tmux-bound-keys() {
     local -a keys
 
     keys=( ${${${${(f)"$(command tmux 2> /dev/null list-keys "$@")"}/:[ $'\t']##/:}/(#s)[ $'\t']##/}/(#s):/\\:} )
-    _describe -t keys 'keys' keys
+    _describe -t keys 'key' keys
 }
 
 function __tmux-clients() {
     local expl
     local -a clients
     clients=( ${${(f)"$(command tmux 2> /dev/null list-clients)"}/:[ $'\t']##/:} )
-    _describe -t clients 'clients' clients
+    _describe -t clients 'client' clients
 }
 
 function __tmux-environment-variables() {
@@ -1165,7 +1165,7 @@ function __tmux-environment-variables() {
                 descriptions+=( "${k//:/\\:}:$v" )
             done
             # TODO: this if/else is because '_describe ${hint:+"-x"}' prints the "No matches" error in addition to the message.
-            local msg="${dash_g[1]:+"global "}environment variables${hint}"
+            local msg="${dash_g[1]:+"global "}environment variable${hint}"
             if _describe -t parameters $msg descriptions; then
                 :
             elif [[ -n $hint ]]; then
@@ -1621,9 +1621,9 @@ function __tmux-panes() {
     command tmux 2> /dev/null list-panes "${opts[@]}" | while IFS= read -r line; do
         panes+=( $(( num++ )):${line//:/} )
     done
-    _describe -t panes 'panes' panes "$@"
+    _describe -t panes 'pane' panes "$@"
     if [[ ${IPREFIX} != *. ]]; then
-        _wanted windows expl 'windows' __tmux-windows -S.
+        _wanted windows expl 'window' __tmux-windows -S.
     fi
 }
 
@@ -1648,14 +1648,14 @@ function __tmux-server-options() {
 function __tmux-sessions() {
     local -a sessions
     sessions=( ${${(f)"$(command tmux 2> /dev/null list-sessions)"}/:[ $'\t']##/:} )
-    _describe -t sessions 'sessions' sessions "$@"
+    _describe -t sessions 'session' sessions "$@"
 }
 
 function __tmux-sessions-attached() {
     local -a sessions
     sessions=( ${${(f)"$(command tmux 2> /dev/null list-sessions)"}/:[ $'\t']##/:} )
     sessions=( ${(M)sessions:#*"(attached)"} )
-    _describe -t sessions 'attached sessions' sessions "$@"
+    _describe -t sessions 'attached session' sessions "$@"
 }
 
 # Complete attached-sessions and detached-sessions as separate tags.
@@ -1671,8 +1671,8 @@ function __tmux-sessions-separately() {
     _tags detached-sessions attached-sessions
     # Placing detached before attached means the default behaviour of this
     # function better suits its only current caller, _tmux-attach-session().
-    _requested detached-sessions && _describe -t detached-sessions 'detached sessions' detached_sessions "$@" && ret=0
-    _requested attached-sessions && _describe -t attached-sessions 'attached sessions' attached_sessions "$@" && ret=0
+    _requested detached-sessions && _describe -t detached-sessions 'detached session' detached_sessions "$@" && ret=0
+    _requested attached-sessions && _describe -t attached-sessions 'attached session' attached_sessions "$@" && ret=0
 
     return ret
 }
@@ -1744,9 +1744,9 @@ function __tmux-windows() {
         opts=( )
     fi
     wins=( ${${(M)${(f)"$(command tmux 2> /dev/null list-windows "${opts[@]}")"}:#<->*}/:[ $'\t']##/:} )
-    _describe -t windows 'windows' wins "$@"
+    _describe -t windows 'window' wins "$@"
     if [[ ${IPREFIX} != *: ]]; then
-        _wanted sessions expl 'sessions' __tmux-sessions -S:
+        _wanted sessions expl 'session' __tmux-sessions -S:
     fi
 }
 
@@ -1775,11 +1775,11 @@ _tmux() {
   if (( CURRENT == 1 )); then
     zstyle -s ":completion:${curcontext}:subcommands" mode mode || mode='both'
     if [[ ${mode} == 'commands' ]]; then
-      _describe -t subcommands 'tmux commands' _tmux_commands && ret=0
+      _describe -t subcommands 'tmux command' _tmux_commands && ret=0
     elif [[ ${mode} == 'aliases' ]]; then
-      _describe -t subcommands 'tmux aliases' _tmux_aliases && ret=0
+      _describe -t subcommands 'tmux alias' _tmux_aliases && ret=0
     else
-      _describe -t subcommands 'tmux commands and aliases' _tmux_commands -- _tmux_aliases && ret=0
+      _describe -t subcommands 'tmux command or alias' _tmux_commands -- _tmux_aliases && ret=0
     fi
   else
     tmuxcommand="${words[1]}"
diff --git a/Completion/Unix/Command/_tput b/Completion/Unix/Command/_tput
index a3b4e949c..abba3e8c0 100644
--- a/Completion/Unix/Command/_tput
+++ b/Completion/Unix/Command/_tput
@@ -14,5 +14,5 @@ esac
 _arguments : \
   $args - set3 \
   '(-S -V)-T+[terminal type]:terminal type:_terminals' \
-  '1:terminal capabilities:( init reset longname ${(k)terminfo} )' \
+  '1:terminal capability:( init reset longname ${(k)terminfo} )' \
   '*:capability parameters:{ [[ $words[1] != (init|reset|longname) ]] && _message parameter }'
diff --git a/Completion/Unix/Command/_unison b/Completion/Unix/Command/_unison
index 5963d66c6..91fa57e5b 100644
--- a/Completion/Unix/Command/_unison
+++ b/Completion/Unix/Command/_unison
@@ -6,7 +6,7 @@ typeset -A opt_args
 _arguments \
     '-auto[automatically accept default (nonconflicting) actions]' \
     '-batch[batch mode\: ask no questions at all]' \
-    '-doc[show documentation]:topics:(about people lists status copying ack install tutorial basics failures running ssh news all topics)' \
+    '-doc[show documentation]:topic:(about people lists status copying ack install tutorial basics failures running ssh news all topics)' \
     '-follow[add a pattern to the follow list]:pattern:' \
     '-force[force changes from this replica to the other]:replica:' \
     '-group[synchronize group attributes]' \
diff --git a/Completion/Unix/Command/_w3m b/Completion/Unix/Command/_w3m
index 6e83a6781..8b45ad730 100644
--- a/Completion/Unix/Command/_w3m
+++ b/Completion/Unix/Command/_w3m
@@ -84,7 +84,7 @@ case "$state" in
     _alternative \
       'files:file:_files -g "*.x#html(-.)"' \
       'urls:URL:_urls' \
-      'bookmarks:bookmarks:compadd -a bookmarks' \
+      'bookmarks:bookmark:compadd -a bookmarks' \
       'history:history:compadd -a w3mhistory' && ret=0
   ;;
   option)
diff --git a/Completion/Unix/Command/_wget b/Completion/Unix/Command/_wget
index 49c8e8b01..d061fcd06 100644
--- a/Completion/Unix/Command/_wget
+++ b/Completion/Unix/Command/_wget
@@ -137,7 +137,7 @@ _arguments -C -s \
   '(--reject -R)'{--reject=,-R+}'[specify rejected extensions]:extensions' \
   --{accept,reject}-regex=:regex '--regex-type=:regex type:(posix pcre)' \
   '(--domains -D)'{--domains=,-D+}'[specify accepted domains]:domains:_domains' \
-  '--exclude-domains=:rejected domains:_domains' \
+  '--exclude-domains=:rejected domain:_sequence _domains' \
   '--follow-ftp' \
   '--follow-tags=:HTML tags:' \
   '--ignore-tags=[specify ignored HTML tags]:HTML tags' \
diff --git a/Completion/Unix/Command/_xmlsoft b/Completion/Unix/Command/_xmlsoft
index 487974fdb..6f7e3b7c9 100644
--- a/Completion/Unix/Command/_xmlsoft
+++ b/Completion/Unix/Command/_xmlsoft
@@ -45,7 +45,7 @@ case $service in
       '--encoding[the input document character encoding]:encoding:(${encoding[@]})' \
       '*--param[pass a parameter,value pair]:name::value (xpath expression)' \
       '*--stringparam[pass a parameter]:name::value' \
-      '--path[provide a set of paths for resources]:paths:_files -/' \
+      '--path[provide a set of paths for resources]:path:_dir_list' \
       '--nonet[refuse to fetch DTDs or entities over network]' \
       '--nowrite[refuse to write to any file or resource]' \
       '--nomkdir[refuse to create directories]' \
@@ -70,7 +70,7 @@ case $service in
       '--noent[substitute entity references by their value]' \
       '--noenc[ignore any encoding specified inside the document]' \
       "(--output -o)--noout[don't output the result tree]" \
-      '--path[provide a set of paths for resources]:paths:_files -/' \
+      '--path[provide a set of paths for resources]:path:_dir_list' \
       '--load-trace[print trace of all external entities loaded]' \
       '--nonet[refuse to fetch DTDs or entities over network]' \
       '--nocompact[do not generate compact text nodes]' \
diff --git a/Completion/Unix/Command/_xmms2 b/Completion/Unix/Command/_xmms2
index 525d5177c..ca2383b2f 100644
--- a/Completion/Unix/Command/_xmms2
+++ b/Completion/Unix/Command/_xmms2
@@ -43,7 +43,7 @@ _xmms2_command() {
 	)
 
     if (( CURRENT == 1 )); then
-	_describe -t command "xmms2 commands" xmms2_cmds
+	_describe -t command "xmms2 command" xmms2_cmds
     else
 	local curcontext="$curcontext"
     fi
@@ -63,7 +63,7 @@ _xmms2_command() {
 	 fi
      done
      
-     _values -s ' ' 'playlist items' ${(On)playlistitems}
+     _values -s ' ' 'playlist item' ${(On)playlistitems}
 
 }
 
@@ -84,7 +84,7 @@ _xmms2_mlib() {
 
 	)
     if (( CURRENT == 2 )); then
-	_describe -t command "xmms2 mlib commands" mlib_cmds
+	_describe -t command "xmms2 mlib command" mlib_cmds
     else
 	local curcontext="$curcontext"
     fi
@@ -107,7 +107,7 @@ _xmms2_playlist() {
 	remove:"Remove a playlist"
 	)
     if (( CURRENT == 2 )); then
-	_describe -t command "xmms2 playlist commands" playlist_cmds
+	_describe -t command "xmms2 playlist command" playlist_cmds
     else
 	local curcontext="$curcontext"
     fi
@@ -121,14 +121,14 @@ _xmms2_playlist() {
 _xmms2_playlist_load() {
     local list
     list=($(xmms2 playlist list))
-    _describe -t command "xmms2 playlists" list
+    _describe -t command "xmms2 playlist" list
 }
 
 
 _xmms2_playlist_remove() {
     local list
     list=($(xmms2 playlist list))
-    _describe -t command "xmms2 playlists" list
+    _describe -t command "xmms2 playlist" list
 }
 
 
@@ -146,7 +146,7 @@ _xmms2_coll() {
 	attr:"Get/set an attribute for a saved collection"
 	)
     if (( CURRENT == 2 )); then
-	_describe -t command "xmms2 collection commands" coll_cmds
+	_describe -t command "xmms2 collection command" coll_cmds
     else
 	local curcontext="$curcontext"
     fi
@@ -160,7 +160,7 @@ _xmms2_coll() {
 _xmms2_coll_helper() {
     local list
     list=($(xmms2 coll list))
-    _describe -t command "xmms2 playlists" list
+    _describe -t command "xmms2 playlist" list
 }
 
 _xmms2_coll_rename() {
diff --git a/Completion/Unix/Command/_yafc b/Completion/Unix/Command/_yafc
index 1e0a601a1..946c0b4ce 100644
--- a/Completion/Unix/Command/_yafc
+++ b/Completion/Unix/Command/_yafc
@@ -32,7 +32,7 @@ _yafc_bookmarks() {
     if [[ -f $bkmfile ]]; then
         local -a bkms expl
         bkms=(${${${(M)"${(f)$(<$bkmfile)}":#machine*alias ##\'*\' #}##machine*alias ##\'}%%\' #}) #" vim syntax goes crazy
-        _wanted bookmarks expl 'bookmarks' compadd "$@" -a - bkms
+        _wanted bookmarks expl 'bookmark' compadd "$@" -a - bkms
     fi
 }
 
diff --git a/Completion/Unix/Type/_email_addresses b/Completion/Unix/Type/_email_addresses
index 8a5877a9c..d5f175a79 100644
--- a/Completion/Unix/Type/_email_addresses
+++ b/Completion/Unix/Type/_email_addresses
@@ -69,7 +69,7 @@ _email-ldap() {
     fi
   done
   compstate[insert]=menu
-  _wanted email-ldap expl 'matching names' \
+  _wanted email-ldap expl 'matching name' \
       compadd -U -i "$IPREFIX" -I "$ISUFFIX" "$@" -a - ali
 }
 
diff --git a/Completion/Unix/Type/_urls b/Completion/Unix/Type/_urls
index 5d4990442..f9cdd58cd 100644
--- a/Completion/Unix/Type/_urls
+++ b/Completion/Unix/Type/_urls
@@ -103,7 +103,7 @@ case "$scheme" in
   bookmark)
     if [[ -f "$urls/$scheme/${(Q)PREFIX}${(Q)SUFFIX}" &&
 	  -s "$urls/$scheme/${(Q)PREFIX}${(Q)SUFFIX}" ]]; then
-      _wanted -C bookmark bookmarks expl bookmarks \
+      _wanted -C bookmark bookmarks expl bookmark \
           compadd "$@" -U - \
               "$ipre$(<"$urls/$scheme/${(Q)PREFIX}${(Q)SUFFIX}")" && ret=0
     else
diff --git a/Completion/X/Command/_mozilla b/Completion/X/Command/_mozilla
index 64f4d9450..0be25b8d3 100644
--- a/Completion/X/Command/_mozilla
+++ b/Completion/X/Command/_mozilla
@@ -95,7 +95,7 @@ if [[ "$state" = "remote" ]]; then
     ;;
     *)
       compset -S '(|\\)\(*' || suf="${${QIPREFIX:+(}:-\(}"
-      _wanted commands expl 'remote commands' \
+      _wanted commands expl 'remote command' \
           compadd -qS "$suf" -M 'm:{a-zA-Z}={A-Za-z}' -a \
                   remote_commands && ret=0
     ;;
diff --git a/Completion/X/Command/_mplayer b/Completion/X/Command/_mplayer
index a913960fe..1f99a1789 100644
--- a/Completion/X/Command/_mplayer
+++ b/Completion/X/Command/_mplayer
@@ -131,13 +131,13 @@ case "$state" in
   ;;
   audio-drivers)
     vals=( help ${${${(f)"$(_call_program audio-drivers mplayer -ao help 2>/dev/null)"}[(r)	*,-1]#?}/	/:} )
-    _describe -t audio-drivers 'audio drivers' vals && ret=0
+    _describe -t audio-drivers 'audio driver' vals && ret=0
   ;;
   audio-codec-families)
     compset -P '*,'
     compset -S ',*'
     vals=( help ${${${(f)"$(_call_program audio-codec-families mplayer -afm help 2>/dev/null)"}[(r) [^:]#,-1]## ##}/ ##/:} )
-    _describe -t audio-codec-families 'audio drivers' vals && ret=0
+    _describe -t audio-codec-families 'audio driver' vals && ret=0
   ;;
   audio-plugins)
     _values -s : 'audio output plugin' \
@@ -154,7 +154,7 @@ case "$state" in
   ;;
   video-drivers)
     vals=( help ${${${(f)"$(_call_program video-drivers mplayer -vo help 2>/dev/null)"}[(r)	*,-1]#?}/	/:} )
-    _describe -t video-drivers 'video drivers' vals && ret=0
+    _describe -t video-drivers 'video driver' vals && ret=0
   ;;
   video-output-plugins)
     vals=( help ${${${${(f)"$(_call_program video-output-plugins mplayer -vop help 2>/dev/null)"}[(r)	*,-1]}/	/}/ #: /:} )
diff --git a/Completion/X/Command/_netscape b/Completion/X/Command/_netscape
index e1d02ae90..78b2da649 100644
--- a/Completion/X/Command/_netscape
+++ b/Completion/X/Command/_netscape
@@ -52,7 +52,7 @@ if [[ "$state" = "remote" ]]; then
     ;;
     *)
       compset -S '(|\\)\(*' || suf="${${QIPREFIX:+(}:-\(}"
-      _wanted commands expl 'remote commands' \
+      _wanted commands expl 'remote command' \
           compadd -qS "$suf" -M 'm:{a-zA-Z}={A-Za-z}' -a \
                   remote_commands && ret=0
     ;;
diff --git a/Completion/X/Command/_pdftk b/Completion/X/Command/_pdftk
index b8c43f754..1ac3223f7 100644
--- a/Completion/X/Command/_pdftk
+++ b/Completion/X/Command/_pdftk
@@ -24,7 +24,7 @@ case $words[CURRENT-1] in
     (allow)
 	#_description permissions expl "permission"
 	#compadd $expl \
-	_values -s , permissions \
+	_values -s , permission \
 	    Printing DegradedPrinting ModifyContents Assembly CopyContents \
 	    ScreenReaders ModifyAnnotations FillIn AllFeatures
 	;;
@@ -34,12 +34,12 @@ case $words[CURRENT-1] in
 	;;
 
     (fill_form)
-	_description files expl 'FDF and XFDF files'
+	_description files expl 'FDF and XFDF file'
 	_files "$@" $expl -g '(#i)*.(fdf|xfdf)'
 	;;
 
     ((multibackground|background|stamp|multistamp|output))
-	_description files expl 'PDF files'
+	_description files expl 'PDF file'
 	_files "$@" $expl -g '(#i)*.pdf'
 	;;
 
@@ -53,11 +53,11 @@ case $words[CURRENT-1] in
 esac && return 0
 
 if [[ -n $words[(r)(${(j:|:)operations})] ]]; then
-    _description options expl "options"
+    _description options expl "option"
     compadd $@ $expl $opts
 else
     _tags files operations
     _alternative \
-	'files:PDF files:_pdfwithhandle' \
-	"operations:operations:($operations)"
+	'files:PDF file:_pdfwithhandle' \
+	"operations:operation:($operations)"
 fi
diff --git a/Completion/X/Command/_vnc b/Completion/X/Command/_vnc
index d60616f21..9263ab930 100644
--- a/Completion/X/Command/_vnc
+++ b/Completion/X/Command/_vnc
@@ -86,7 +86,7 @@ case $service in
   ;;
   *vncviewer) 
     _xt_arguments -shared -viewonly -fullscreen -bgr233 -owncmap -truecolour \
-      '-encodings:encodings:_values -s " " encoding copyrect hextile corre rre raw' \
+      '-encodings: :_values -s " " encoding copyrect hextile corre rre raw' \
       '-depth:depth' \
       '-passwd:file:_files' \
       '(1)-listen:display number' \
diff --git a/Completion/X/Command/_xauth b/Completion/X/Command/_xauth
index 14dfc8400..22ebffecd 100644
--- a/Completion/X/Command/_xauth
+++ b/Completion/X/Command/_xauth
@@ -41,7 +41,7 @@ while [[ -n "$state" ]]; do
 	  group) _message -e ids 'group-id';;
 	  data) _message -e values 'hexdata';;
 	  *) 
-	    _wanted options expl 'xauth generate options' \
+	    _wanted options expl 'xauth generate option' \
 	      compadd trusted untrusted timeout group data && ret=0
 	    ;;
 	  esac
diff --git a/Completion/X/Command/_xournal b/Completion/X/Command/_xournal
index 066ef55f5..c36210c26 100644
--- a/Completion/X/Command/_xournal
+++ b/Completion/X/Command/_xournal
@@ -2,5 +2,5 @@
 
 local expl
 
-_description files expl 'PDF and Xournal files'
+_description files expl 'PDF or Xournal file'
 _files "$@" "$expl[@]" -g '*.(#i){xoj,pdf}(-.)'
diff --git a/Completion/Zsh/Command/_bindkey b/Completion/Zsh/Command/_bindkey
index 81ae69974..df9c8f225 100644
--- a/Completion/Zsh/Command/_bindkey
+++ b/Completion/Zsh/Command/_bindkey
@@ -27,7 +27,7 @@ _arguments -C -s -S \
   '(-l -L -d -D -A -N -m -p -r *)-s[bind each in-string to each out-string]:*:key string' \
   '(-e -v -a -M -l -L -d -D -A -N -m -p)-R[interpret in-strings as ranges]' \
   '(-l -L -d -A -N -m -p -r -s):in-string' \
-  '(-l -L -d -A -N -m -p -r -s)*::widgets:_widgets' && ret=0
+  '(-l -L -d -A -N -m -p -r -s)*::widget:_widgets' && ret=0
 
 case $state in
   keymap)
diff --git a/Completion/Zsh/Command/_disable b/Completion/Zsh/Command/_disable
index 52b82a6e9..da3803039 100644
--- a/Completion/Zsh/Command/_disable
+++ b/Completion/Zsh/Command/_disable
@@ -7,10 +7,10 @@ sali_arr=(${(k)saliases})
 func_arr=(${(k)functions})
 
 _arguments -C -s -A "-*" -S \
-  "(-f -r -s -p)-a[act on regular or global aliases]:*:regular or global aliases:compadd -k ali_arr" \
-  "(-a -r -s -p)-f[act on functions]:*:functions:compadd -k func_arr" \
-  "(-a -f -s -p)-r[act on reserved words]:*:reserved-words:compadd -k reswords" \
-  "(-a -f -r -p)-s[act on suffix aliases]:*:suffix aliases:compadd -k sali_arr" \
-  "(-a -f -r -s)-p[act on pattern characters]:*:pattern characters:compadd -k patchars" \
+  "(-f -r -s -p)-a[act on regular or global aliases]:*:regular or global alias:compadd -k ali_arr" \
+  "(-a -r -s -p)-f[act on functions]:*:function:compadd -k func_arr" \
+  "(-a -f -s -p)-r[act on reserved words]:*:reserved-word:compadd -k reswords" \
+  "(-a -f -r -p)-s[act on suffix aliases]:*:suffix alias:compadd -k sali_arr" \
+  "(-a -f -r -s)-p[act on pattern characters]:*:pattern character:compadd -k patchars" \
   '-m[treat arguments as patterns]' \
   "*:builtin command:(${(k)builtins})"
diff --git a/Completion/Zsh/Command/_enable b/Completion/Zsh/Command/_enable
index 9410651b7..b62619d89 100644
--- a/Completion/Zsh/Command/_enable
+++ b/Completion/Zsh/Command/_enable
@@ -7,10 +7,10 @@ sali_arr=(${(k)dis_saliases})
 func_arr=(${(k)dis_functions})
 
 _arguments -C -s -A "-*" -S \
-  "(-f -r -s -p)-a[act on regular or global aliases]:*:aliases:compadd -k ali_arr" \
-  "(-a -r -s -p)-f[act on functions]:*:functions:compadd -k func_arr" \
-  "(-a -f -s -p)-r[act on reserved words]:*:reserved-words:compadd -k dis_reswords" \
-  "(-a -f -r -p)-s[act on suffix aliases]:*:suffix aliases:compadd -k sali_arr" \
-  "(-a -f -r -s)-p[act on pattern characters]:*:pattern characters:compadd -k dis_patchars" \
+  "(-f -r -s -p)-a[act on regular or global aliases]:*:alias:compadd -k ali_arr" \
+  "(-a -r -s -p)-f[act on functions]:*:function:compadd -k func_arr" \
+  "(-a -f -s -p)-r[act on reserved words]:*:reserved-word:compadd -k dis_reswords" \
+  "(-a -f -r -p)-s[act on suffix aliases]:*:suffix alias:compadd -k sali_arr" \
+  "(-a -f -r -s)-p[act on pattern characters]:*:pattern character:compadd -k dis_patchars" \
   '-m[treat arguments as patterns]' \
   "*:builtin command:(${(k)dis_builtins})"
diff --git a/Completion/Zsh/Command/_sched b/Completion/Zsh/Command/_sched
index e8ff5ab87..888708684 100644
--- a/Completion/Zsh/Command/_sched
+++ b/Completion/Zsh/Command/_sched
@@ -10,7 +10,7 @@ if [[ CURRENT -eq 2 ]]; then
     else
       disp=()
     fi
-    [[ -z $lines ]] || _wanted jobs expl 'scheduled jobs' \
+    [[ -z $lines ]] || _wanted jobs expl 'scheduled job' \
                            compadd "$disp[@]" - {1..$#lines}
     return
   else
diff --git a/Completion/Zsh/Command/_typeset b/Completion/Zsh/Command/_typeset
index ae33ae539..aecacb112 100644
--- a/Completion/Zsh/Command/_typeset
+++ b/Completion/Zsh/Command/_typeset
@@ -127,7 +127,7 @@ if [[ "$state" = vars_eq ]]; then
 	[[ $PREFIX != [_.]* ]]; then
 	args=(${args:#_*})
       fi
-      _wanted functions expl 'shell functions' compadd -a args
+      _wanted functions expl 'shell function' compadd -a args
     else
       _functions
     fi
diff --git a/Completion/Zsh/Command/_zmodload b/Completion/Zsh/Command/_zmodload
index 3416d50c6..f3e38c0f6 100644
--- a/Completion/Zsh/Command/_zmodload
+++ b/Completion/Zsh/Command/_zmodload
@@ -23,7 +23,7 @@ _arguments -n -C -S -s \
   '(-e -u)-L[output in the form of calls to zmodload]' \
   '(-b -c -d -I -f -F -P -l -m -A -R)-p[autoload module for parameters]' \
   '(-u -b -c -d -p -f -A -R)-P[array param for features]:array name:_parameters' \
-  '(-)*:params:->params' && ret=0
+  '(-)*:param:->params' && ret=0
 
 [[ $state = params ]] || return ret
 
@@ -66,7 +66,7 @@ else
   while _tags; do
     _requested builtins expl 'builtin command' \
       compadd "$@" -k builtins && ret=0
-    _requested loadedmodules expl 'loaded modules' \
+    _requested loadedmodules expl 'loaded module' \
       compadd -k 'modules[(R)loaded]' && ret=0
     _requested files expl 'module file' \
       _files -W module_path -g '*.(dll|s[ol]|bundle)(:r)' && ret=0
diff --git a/Completion/Zsh/Command/_zstyle b/Completion/Zsh/Command/_zstyle
index 9d06076e4..0c81c2f2e 100644
--- a/Completion/Zsh/Command/_zstyle
+++ b/Completion/Zsh/Command/_zstyle
@@ -491,7 +491,7 @@ while (( $#state )); do
       elif compset -P '*:'; then
         _message -e tags tag
       else
-        _message -e patterns 'glob patterns'
+        _message -e patterns 'glob pattern'
       fi
       ;;
 
diff --git a/Completion/Zsh/Context/_subscript b/Completion/Zsh/Context/_subscript
index 0d9632864..25cedd193 100644
--- a/Completion/Zsh/Context/_subscript
+++ b/Completion/Zsh/Context/_subscript
@@ -80,7 +80,7 @@ elif compset -P '\('; then
     );;
   esac
 
-  _values -s '' 'subscript flags' $flags
+  _values -s '' 'subscript flag' $flags
 elif [[ ${(Pt)${compstate[parameter]}} = assoc* ]]; then
   local suf MATCH MBEGIN MEND
   local -a keys
diff --git a/Completion/Zsh/Context/_zcalc_line b/Completion/Zsh/Context/_zcalc_line
index 50fb8c17c..ab8e42df9 100644
--- a/Completion/Zsh/Context/_zcalc_line
+++ b/Completion/Zsh/Context/_zcalc_line
@@ -16,7 +16,7 @@ _zcalc_line_escapes() {
     "function:define math function (also \:func or \:f)"
   )
   cmds=("\:"${^cmds})
-  _describe -t command-escapes "command escapes" cmds -Q
+  _describe -t command-escapes "command escape" cmds -Q
 }
 
 _zcalc_line() {
diff --git a/Completion/Zsh/Function/_add-zsh-hook b/Completion/Zsh/Function/_add-zsh-hook
index 4d8a96dab..5b1ff0e42 100644
--- a/Completion/Zsh/Function/_add-zsh-hook
+++ b/Completion/Zsh/Function/_add-zsh-hook
@@ -3,7 +3,7 @@
 _add-zsh-hook_hooks() {
   local expl
   if (( $+opt_args[-d] )); then
-    _wanted functions expl "installed hooks" compadd -a - "$line[1]_functions" && return 0
+    _wanted functions expl "installed hook" compadd -a - "$line[1]_functions" && return 0
   else
     _functions && return 0
   fi
diff --git a/Completion/openSUSE/Command/_hwinfo b/Completion/openSUSE/Command/_hwinfo
index aac0a05ad..7dff82805 100644
--- a/Completion/openSUSE/Command/_hwinfo
+++ b/Completion/openSUSE/Command/_hwinfo
@@ -5,7 +5,7 @@ _arguments \
   '--version[show libhd version]' \
   '--short[just a short listing]' \
   '--log[write info to logfile]:logfile:_files' \
-  '--debug[set debuglevel]:debuglevels:(1 2 3 4 5 6 7 8 9)' \
+  '--debug[set debuglevel]:debug level:(1 2 3 4 5 6 7 8 9)' \
   '--dump-db[dump hardware data base, 0: external, 1: internal]:dumpdb:(0 1)' \
   '--bios' \
   '--block' \
diff --git a/Completion/openSUSE/Command/_zypper b/Completion/openSUSE/Command/_zypper
index 25a32c3f1..3f3402bd9 100644
--- a/Completion/openSUSE/Command/_zypper
+++ b/Completion/openSUSE/Command/_zypper
@@ -65,17 +65,17 @@ _zypper() {
 _all_repos() {
     local -a repos
     repos=( $(zypper -q lr | tail -n +3 | cut -d'|' -f 2) )
-    _describe -t repos 'Available repositories' repos && return
+    _describe -t repos 'available repository' repos && return
 }
 
 _enabled_repos() {
     repos=( $(zypper -x lr | grep 'enabled="1"' | cut -d\" -f 2) )
-    _describe -t repos 'Available repositories' repos && return
+    _describe -t repos 'available repository' repos && return
 }
 
 _disabled_repos() {
     repos=( $(zypper -x lr | grep 'enabled="0"' | cut -d\" -f 2) )
-    _describe -t repos 'Available repositories' repos && return
+    _describe -t repos 'available repository' repos && return
 }
 
 _zypper_cmd_do() {
@@ -107,7 +107,7 @@ _zypper_cmd_do() {
         case ${words[CURRENT - 1]} in
             --from)
                 repos=( $(zypper -x lr | grep 'enabled="1"' | cut -d\" -f 2) )
-                _describe -t repos 'Available repositories' repos && return
+                _describe -t repos 'available repository' repos && return
                ;;
             (--enable|-e)
                 case $cmd in
@@ -128,7 +128,7 @@ _zypper_cmd_do() {
                 case $cmd in
                     (if|info|se|search|in|install) 
                         types=( pattern srcpackage package patch )
-                        _describe -t types 'Package types' types && return
+                        _describe -t types 'package type' types && return
                     ;;
                 esac
                 ;;
@@ -143,7 +143,7 @@ _zypper_cmd_do() {
                 ;;
             (in|install)
                 local expl
-                _description files expl 'RPM files' 
+                _description files expl 'RPM file'
                 _files "$expl[@]" -g '*.(#i)rpm(.)'
                 ;;
         esac




Messages sorted by: Reverse Date, Date, Thread, Author