about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOliver Kiddle <opk@users.sourceforge.net>2004-01-21 13:53:28 +0000
committerOliver Kiddle <opk@users.sourceforge.net>2004-01-21 13:53:28 +0000
commit63b336243fdf5e60058472fa456ed11e75280189 (patch)
treef101df4260c4cef5d32c63456ca98e23d6b54449
parent1b530bf152e1ca8c9c135c58a4753899d68db8e4 (diff)
downloadzsh-63b336243fdf5e60058472fa456ed11e75280189.tar.gz
zsh-63b336243fdf5e60058472fa456ed11e75280189.tar.xz
zsh-63b336243fdf5e60058472fa456ed11e75280189.zip
19387: add (-.) glob qualifier to globs where only files are directly applicable
-rw-r--r--ChangeLog9
-rw-r--r--Completion/AIX/Type/_object_classes2
-rw-r--r--Completion/BSD/Command/_bsd_pkg6
-rw-r--r--Completion/BSD/Command/_kld4
-rw-r--r--Completion/Debian/Command/_debsign2
-rw-r--r--Completion/Debian/Command/_dpkg18
-rw-r--r--Completion/Debian/Command/_dpkg_source2
-rw-r--r--Completion/Debian/Command/_dput2
-rw-r--r--Completion/Debian/Command/_dupload2
-rw-r--r--Completion/Linux/Command/_losetup2
-rw-r--r--Completion/Linux/Command/_mondo2
-rw-r--r--Completion/Linux/Command/_pkgtool6
-rw-r--r--Completion/Linux/Command/_uml2
-rw-r--r--Completion/Mandrake/Command/_urpmi2
-rw-r--r--Completion/Redhat/Command/_rpm12
-rw-r--r--Completion/Unix/Command/_aap2
-rw-r--r--Completion/Unix/Command/_antiword2
-rw-r--r--Completion/Unix/Command/_bison10
-rw-r--r--Completion/Unix/Command/_bzip24
-rw-r--r--Completion/Unix/Command/_cdrecord4
-rw-r--r--Completion/Unix/Command/_compress4
-rw-r--r--Completion/Unix/Command/_dvi60
-rw-r--r--Completion/Unix/Command/_ecasound4
-rw-r--r--Completion/Unix/Command/_figlet4
-rw-r--r--Completion/Unix/Command/_flex2
-rw-r--r--Completion/Unix/Command/_gcc8
-rw-r--r--Completion/Unix/Command/_gdb2
-rw-r--r--Completion/Unix/Command/_gprof4
-rw-r--r--Completion/Unix/Command/_gzip4
-rw-r--r--Completion/Unix/Command/_imagemagick2
-rw-r--r--Completion/Unix/Command/_ispell12
-rw-r--r--Completion/Unix/Command/_java16
-rw-r--r--Completion/Unix/Command/_links2
-rw-r--r--Completion/Unix/Command/_lynx2
-rw-r--r--Completion/Unix/Command/_lzop4
-rw-r--r--Completion/Unix/Command/_mh4
-rw-r--r--Completion/Unix/Command/_mysqldiff2
-rw-r--r--Completion/Unix/Command/_pack4
-rw-r--r--Completion/Unix/Command/_pbm36
-rw-r--r--Completion/Unix/Command/_perl2
-rw-r--r--Completion/Unix/Command/_perldoc2
-rw-r--r--Completion/Unix/Command/_python23
-rw-r--r--Completion/Unix/Command/_rar2
-rw-r--r--Completion/Unix/Command/_ruby2
-rw-r--r--Completion/Unix/Command/_sablotron2
-rw-r--r--Completion/Unix/Command/_sccs4
-rw-r--r--Completion/Unix/Command/_texinfo18
-rw-r--r--Completion/Unix/Command/_tiff104
-rw-r--r--Completion/Unix/Command/_vorbis4
-rw-r--r--Completion/Unix/Command/_w3m2
-rw-r--r--Completion/Unix/Command/_xmlsoft4
-rw-r--r--Completion/Unix/Command/_yodl2
-rw-r--r--Completion/Unix/Command/_zip8
-rw-r--r--Completion/Unix/Type/_pdf2
-rw-r--r--Completion/Unix/Type/_ps2
-rw-r--r--Completion/Unix/Type/_pspdf2
-rw-r--r--Completion/Unix/Type/_tar_archive6
-rw-r--r--Completion/Unix/Type/_tex2
-rw-r--r--Completion/Unix/Type/_texi2
-rw-r--r--Completion/X/Command/_acroread6
-rw-r--r--Completion/X/Command/_gqview2
-rw-r--r--Completion/X/Command/_mplayer4
-rw-r--r--Completion/X/Command/_x_utils38
-rw-r--r--Completion/X/Command/_xdvi32
-rw-r--r--Completion/X/Command/_xfig34
-rw-r--r--Completion/X/Command/_xloadimage6
-rw-r--r--Completion/X/Command/_xv32
-rw-r--r--Completion/X/Command/_xwit4
-rw-r--r--Completion/Zsh/Command/_autoload2
-rw-r--r--Completion/Zsh/Command/_mere2
70 files changed, 317 insertions, 311 deletions
diff --git a/ChangeLog b/ChangeLog
index 1e80030b5..fe8a15206 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2004-01-21  Oliver Kiddle  <opk@zsh.org>
+
+	* 19387: Completion/...: add (-.) glob qualifiers to many globs
+	where only files are directly applicable: _files can add directories 
+
+	* 19309: Completion/Unix/Type/_files: add #q to the start of a
+	glob qualifier in the -g argument so that glob qualifiers can
+	be specified from the file-patterns style
+	
 2004-01-20  Peter Stephenson  <pws@csr.com>
 
 	* Bob Schmertz: 19385: Src/compmatch.c: protect against calling
diff --git a/Completion/AIX/Type/_object_classes b/Completion/AIX/Type/_object_classes
index 225f669b1..6122dcdf4 100644
--- a/Completion/AIX/Type/_object_classes
+++ b/Completion/AIX/Type/_object_classes
@@ -3,4 +3,4 @@
 local expl
 
 _wanted objectclasses expl 'object class' \
-   _files -W ${ODMDIR:-/etc/objrepos} -g '^*.vc'
+   _files -W ${ODMDIR:-/etc/objrepos} -g '^*.vc(-.)'
diff --git a/Completion/BSD/Command/_bsd_pkg b/Completion/BSD/Command/_bsd_pkg
index adb93c0d1..8cc1a6230 100644
--- a/Completion/BSD/Command/_bsd_pkg
+++ b/Completion/BSD/Command/_bsd_pkg
@@ -16,9 +16,9 @@ _bsd_pkg_pkgfiles() {
   pkgsdir=${PACKAGES:-$portsdir/packages}/All
 
   paths=( "${(@)${(@s.:.)PKG_PATH}:#}" )
-  _files "$@" -g '*.t[bg]z' && ret=0
-  (( $#path )) && _files "$@" -W paths -g '*.t[bg]z' && ret=0
-  compadd "$@" - $pkgsdir/*.t[bg]z && ret=0
+  _files "$@" -g '*.t[bg]z(-.)' && ret=0
+  (( $#path )) && _files "$@" -W paths -g '*.t[bg]z(-.)' && ret=0
+  compadd "$@" - $pkgsdir/*.t[bg]z(-.) && ret=0
 
   return ret
 }
diff --git a/Completion/BSD/Command/_kld b/Completion/BSD/Command/_kld
index dd71f7a58..b967f33c4 100644
--- a/Completion/BSD/Command/_kld
+++ b/Completion/BSD/Command/_kld
@@ -4,8 +4,8 @@
 _kld_module() {
   local ret=1
 
-  compadd "$@" - /boot/kernel/*.ko(:t) /modules/*.ko(:t) && ret=0
-  _files "$@" -g \*.ko && ret=0
+  compadd "$@" - /boot/kernel/*.ko(-.:t) /modules/*.ko(-.:t) && ret=0
+  _files "$@" -g '*.ko(-.)' && ret=0
 
   return ret
 }
diff --git a/Completion/Debian/Command/_debsign b/Completion/Debian/Command/_debsign
index cd8c96dad..b358186b8 100644
--- a/Completion/Debian/Command/_debsign
+++ b/Completion/Debian/Command/_debsign
@@ -12,4 +12,4 @@ _arguments \
   '-t[GNU system type]:GNU system type' \
   '--help[display help information]' \
   '--version[display version information]' \
-  '*:changes or dsc file:_files -g "*.(changes|dsc)"'
+  '*:changes or dsc file:_files -g "*.(changes|dsc)(-.)"'
diff --git a/Completion/Debian/Command/_dpkg b/Completion/Debian/Command/_dpkg
index 406428d97..f098e8a88 100644
--- a/Completion/Debian/Command/_dpkg
+++ b/Completion/Debian/Command/_dpkg
@@ -7,13 +7,13 @@ typeset -A opt_args
 
 _dpkg_deb_actions=(
   '(--build -b)'{--build,-b}'[build archive]:directory:_files -/'
-  '(--contents -c)'{--contents,-c}'[list contents]:Debian package:_files -g \*.u\#deb'
-  '(--info -I)'{--info,-I}'[show info]:Debian package:_files -g \*.u\#deb'
-  '(--field -f)'{--field,-f}'[show fields]:Debian package:_files -g \*.u\#deb'
-  '(--control -e)'{--control,-e}'[extract control]:Debian package:_files -g \*.u\#deb'
-  '(--extract -x)'{--extract,-x}'[extract files]:Debian package:_files -g \*.u\#deb'
-  '(--vextract -X)'{--vextract,-X}'[extract and list files]:Debian package:_files -g \*.u\#deb'
-  '--fsys-tarfile[output fs tarfile]:Debian package:_files -g \*.u\#deb'
+  '(--contents -c)'{--contents,-c}'[list contents]:Debian package:_files -g "*.u#deb(-.)"'
+  '(--info -I)'{--info,-I}'[show info]:Debian package:_files -g "*.u#deb(-.)"'
+  '(--field -f)'{--field,-f}'[show fields]:Debian package:_files -g "*.u#deb(-.)"'
+  '(--control -e)'{--control,-e}'[extract control]:Debian package:_files -g "*.u#deb(-.)"'
+  '(--extract -x)'{--extract,-x}'[extract files]:Debian package:_files -g "*.u#deb(-.)"'
+  '(--vextract -X)'{--vextract,-X}'[extract and list files]:Debian package:_files -g "*.u#deb(-.)"'
+  '--fsys-tarfile[output fs tarfile]:Debian package:_files -g "*.u#deb(-.)"'
 )
 
 _dpkg_common_actions=(
@@ -24,7 +24,7 @@ _dpkg_common_actions=(
 
 _dpkg_actions=(
   '(--install -i)'{--install,-i}'[install packages]:*:Debian packages:->install'
-  '--unpack[unpack package]:Debian package:_files -g \*.deb'
+  '--unpack[unpack package]:Debian package:_files -g "*.deb(-.)"'
   '--configure[reconfigure specified packages]:*:package:->configure'
   '(--remove -r)'{--remove,-r}'[remove package]:*:package:->remove'
   '(--purge -P)'{--purge,-P}'[purge package]:*:package:->purge'
@@ -111,7 +111,7 @@ case "$state" in
 	"$_dpkg_options_recursive[@]" \
 	'*:directory:_path_files -/' \
       - nonrecur \
-	'*:Debian package:_path_files -g \*.deb'
+	'*:Debian package:_path_files -g "*.deb(-.)"'
   ;;
   remove|purge|status|listfiles)
     _call_function ret _dpkg_$state && return ret
diff --git a/Completion/Debian/Command/_dpkg_source b/Completion/Debian/Command/_dpkg_source
index 274a85794..eabe8bc33 100644
--- a/Completion/Debian/Command/_dpkg_source
+++ b/Completion/Debian/Command/_dpkg_source
@@ -1,7 +1,7 @@
 #compdef dpkg-source
 
 _arguments \
-  '-x[specify source file]:Debian source file:_files -g \*.dsc' \
+  '-x[specify source file]:Debian source file:_files -g "*.dsc(-.)"' \
   '-b[specify source directory]:Debian source directory:_files -/' \
   '-c-[control file]:control file:_files' \
   '-l-[changelog file]:changelog file:_files' \
diff --git a/Completion/Debian/Command/_dput b/Completion/Debian/Command/_dput
index 64b682c6f..e4161a46c 100644
--- a/Completion/Debian/Command/_dput
+++ b/Completion/Debian/Command/_dput
@@ -11,4 +11,4 @@ _arguments \
   '(-s --simulate)'{-s,--simulare}'[simulate an upload only]' \
   '(-u --unchecked)'{-u,--unchecked}'[do not check GPG signature on the changes file]' \
   '(-v --version)'{-v,--version}'[show version information]' \
-  '*:changes file:_files -g \*.changes'
+  '*:changes file:_files -g "*.changes(-.)"'
diff --git a/Completion/Debian/Command/_dupload b/Completion/Debian/Command/_dupload
index 4ec179688..65ce4b0e4 100644
--- a/Completion/Debian/Command/_dupload
+++ b/Completion/Debian/Command/_dupload
@@ -18,4 +18,4 @@ _arguments \
   '(-p --print)'{-p,--print}'[print config legibly]' \
   '(-q --quiet)'{-q,--quiet}'[quiet]' \
   '(-V --Version)'{-V,--Version}'[display version information]' \
-  '*:changes file:_files -g \*.changes'
+  '*:changes file:_files -g "*.changes(-.)"'
diff --git a/Completion/Linux/Command/_losetup b/Completion/Linux/Command/_losetup
index 16b726c8e..ff18681f1 100644
--- a/Completion/Linux/Command/_losetup
+++ b/Completion/Linux/Command/_losetup
@@ -10,5 +10,5 @@ _arguments -S \
   '(-d --delete --detach -o --offset)'{-o,--offset}'+[specify data start is offset]:offset (bytes)' \
   '(-d --delete --detach -p --pass-fd)'{-p,--pass-fd}'+[read passphrase from specified file descriptor]:file descriptor:_file_descriptors' \
   '(-d --delete --detach -k --keybits)'{-k,--keybits}'+[set the number of bits to use in key]:key size:(64 128 160 192 256)' \
-  '1:device:_files -g loop\*' \
+  '1:device:_files -g "loop*(-.)"' \
   '(-d --delete --detach)2:file:_files'
diff --git a/Completion/Linux/Command/_mondo b/Completion/Linux/Command/_mondo
index 3d3a6d09c..047a04129 100644
--- a/Completion/Linux/Command/_mondo
+++ b/Completion/Linux/Command/_mondo
@@ -26,7 +26,7 @@ _arguments -C \
   '-F[do not create floppy]' \
   '-H[create autorestore image]' \
   '-L[use lzo instead of bzip2]' \
-  '-P[post-nuke tarball]:post-nuke tarball:_files -g "*.(#i)(tar.gz|tgz)"' \
+  '-P[post-nuke tarball]:post-nuke tarball:_files -g "*.(#i)(tar.gz|tgz)(-.)"' \
   '-S[scratch directory]:scratch directory:_files -/' \
   '-T[temporary directory]:temporary directory:_files -/' \
   '-f[device with MBR]:device with MBR:_files -g "*(%b)"' \
diff --git a/Completion/Linux/Command/_pkgtool b/Completion/Linux/Command/_pkgtool
index 146467d36..5ec95469c 100644
--- a/Completion/Linux/Command/_pkgtool
+++ b/Completion/Linux/Command/_pkgtool
@@ -10,7 +10,7 @@ case "$service" in
       "-ask[always ask on package installation regardless of package's priority]" \
       '-priority[provide a priority for the entire package list to use]:priority list:(ADD REC OPT SKP)' \
       '-tagfile[specify a different file to use for package priorities]:tagfile:_files -/' \
-      '*:package file:_files -g \*.tgz'
+      '*:package file:_files -g "*.tgz(-.)"'
   ;;
 
   removepkg)
@@ -27,11 +27,11 @@ case "$service" in
       '--install-new[install new packages in addition to upgrading existing ones]' \
       '--reinstall[upgrade even when the same version is already installed]' \
       '--verbose[show all the gory details of the upgrade]' \
-      '*:package file:_files -g \*.tgz'
+      '*:package file:_files -g "*.tgz(-.)"'
   ;;
 
   explodepkg)
-    _wanted file expl 'package file' _files -g \*.tgz
+    _wanted file expl 'package file' _files -g '*.tgz(-.)'
   ;;
 
   makepkg)
diff --git a/Completion/Linux/Command/_uml b/Completion/Linux/Command/_uml
index 5c62f6234..1a5619f74 100644
--- a/Completion/Linux/Command/_uml
+++ b/Completion/Linux/Command/_uml
@@ -5,7 +5,7 @@ typeset -A opt_args
 
 case $service in
   uml_moo)
-    _arguments '1:COW file:_files -g \*cow\*' '2:new backing file:_files'
+    _arguments '1:COW file:_files -g "*cow*(-.)"' '2:new backing file:_files'
     return
   ;;
   uml_switch)
diff --git a/Completion/Mandrake/Command/_urpmi b/Completion/Mandrake/Command/_urpmi
index 2376b09de..f831fbab3 100644
--- a/Completion/Mandrake/Command/_urpmi
+++ b/Completion/Mandrake/Command/_urpmi
@@ -44,7 +44,7 @@ _urpmi_rpms() {
     fi
 
     _requested files expl '(S)RPM file' \
-      _files -g '*.(#i)rpm' && ret=0
+      _files -g '*.(#i)rpm(-.)' && ret=0
   
     (( ret )) || break
   done
diff --git a/Completion/Redhat/Command/_rpm b/Completion/Redhat/Command/_rpm
index f274975fe..284ecab6b 100644
--- a/Completion/Redhat/Command/_rpm
+++ b/Completion/Redhat/Command/_rpm
@@ -172,10 +172,10 @@ _rpm () {
 	'*:package:->package' && ret=0
       ;;
     build_b)
-      tmp=( '*:spec file:_files -g \*.spec' )
+      tmp=( '*:spec file:_files -g "*.spec(-.)"' )
       ;&
     build_t)
-      (( $#tmp )) || tmp=( '*:tar file:_files -g \*.\(\#i\)tar\(.\*\|\)' )
+      (( $#tmp )) || tmp=( '*:tar file:_files -g "*.(#i)tar(.*|)(-.)"' )
 
       _arguments -s \
 	"${commonopts[@]}" "${pathopts[@]}" \
@@ -258,21 +258,21 @@ _rpm () {
       ;;
     spec_files)
       _wanted specfiles expl 'spec file' \
-	  _files -g \*.spec && ret=0
+	  _files -g '*.spec(-.)' && ret=0
       ;;
     package_file)
       _wanted files expl 'package file' \
-	  _files -g '*.(#i)rpm' && ret=0
+	  _files -g '*.(#i)rpm(-.)' && ret=0
       if [[ -prefix 1 (f|ht)tp:// ]]; then
 	_wanted urls expl 'URL of rpm package file' \
-	    _urls -f -g '*.(#i)rpm' "${expl[@]}" && ret=0
+	    _urls -f -g '*.(#i)rpm(-.)' "${expl[@]}" && ret=0
       else
 	_wanted urls expl 'URL of rpm package file' \
 	    compadd -S '' "${expl[@]}" ftp:// http:// && ret=0
       fi
       ;;
     package_src)
-      _files -g "(#i)*.src.rpm" && ret=0
+      _files -g '(#i)*.src.rpm(-.)' && ret=0
       ;;
     tags)
       local -a suf
diff --git a/Completion/Unix/Command/_aap b/Completion/Unix/Command/_aap
index 6a06480ed..1e0ddd51f 100644
--- a/Completion/Unix/Command/_aap
+++ b/Completion/Unix/Command/_aap
@@ -27,7 +27,7 @@ _arguments \
   {-j,--jobs=}'[maximum number of parallel jobs]:number of jobs:' \
   {-u,--search-up,--up}'[search directory tree upwards for main.aap recipe]' \
   \*{-I,--include=}'[directory to search for included recipes]:include directory:_files -/' \
-  {-f,--recipe=}'[recipe file to be executed]:recipe file:_files -g \*.aap' \
+  {-f,--recipe=}'[recipe file to be executed]:recipe file:_files -g \*.aap\(-.\)' \
   '--install=[install specified package]:package name:' \
   '--[end of options, targets and assignments follow]' \
   '*:aap target:->target' && ret=0
diff --git a/Completion/Unix/Command/_antiword b/Completion/Unix/Command/_antiword
index 2f99593e4..0fc4c80b8 100644
--- a/Completion/Unix/Command/_antiword
+++ b/Completion/Unix/Command/_antiword
@@ -11,6 +11,6 @@ _arguments -s -S \
   '(-t -w)-L[use landscape mode (PostScript only)]' \
   '-s[show hidden (by Word) text]' \
   '(* -)-h[give a help message]' \
-  '*:MS Word file:_files -g \*.doc' && return
+  '*:MS Word file:_files -g "*.doc(-.)"' && return
 
 return 1
diff --git a/Completion/Unix/Command/_bison b/Completion/Unix/Command/_bison
index 350847cdd..67ad7f0e4 100644
--- a/Completion/Unix/Command/_bison
+++ b/Completion/Unix/Command/_bison
@@ -1,21 +1,21 @@
 #compdef bison
 
 _arguments -s -S \
-  '(--file-prefix)-b+[specify output file prefix]:output file prefix:' \
+  '(--file-prefix)-b+[specify output file prefix]:output file prefix' \
   '(--defines)-d[write token definition file]' \
   '(--raw)-r[output bison token numbers]' \
   '(--token-table)-k[output token table]' \
   '(--no-lines)-l[don'"'"'t generate #line directives]' \
   '(--no-parser)-n[don'"'"'t generate parse (only declarations)]' \
   '(--output-file)-o+[specify parser output file name]:parser file name:_files' \
-  '(--name-prefix)-p+[change yy prefix]:prefix string:' \
+  '(--name-prefix)-p+[change yy prefix]:prefix string' \
   '(--debug)-t[output YYDEBUG definition]' \
   '(--verbose)-v[verbose mode]' \
   '(--version)-V[show version]' \
   '(--help)-h[show help]' \
   '(--yacc --fixed-output-file)-y[imitate yacc'"'"'s output file convention]' \
-  ':input file:_files -g \*.\(\#i\)\(bison\|yacc\|y\)' \
+  ':input file:_files -g \*.\(\#i\)\(bison\|yacc\|y\)\(-.\)' \
   -- \
   '*=outfile:parser file name:_files' \
-  '*file-prefix=prefix:output file prefix:' \
-  '*name-prefix=prefix:prefix string:'
+  '*file-prefix=prefix:output file prefix' \
+  '*name-prefix=prefix:prefix string'
diff --git a/Completion/Unix/Command/_bzip2 b/Completion/Unix/Command/_bzip2
index 15a78e578..75f051a57 100644
--- a/Completion/Unix/Command/_bzip2
+++ b/Completion/Unix/Command/_bzip2
@@ -49,10 +49,10 @@ if [[ "$state" = files ]]; then
       $+opt_args[--test] )) && unset decompress
   if [[ -z "$decompress" ]]; then
     _description files expl 'compressed file'
-    _files "$expl[@]" -g '*.(bz2|tbz|tbz2)' && return
+    _files "$expl[@]" -g '*.(bz2|tbz|tbz2)(-.)' && return
   else
     _description files expl 'file to compress'
-    _files "$expl[@]" -g '*~*.(bz2|tbz|tbz2)' && return
+    _files "$expl[@]" -g '^*.(bz2|tbz|tbz2)(-.)' && return
   fi
 fi
 
diff --git a/Completion/Unix/Command/_cdrecord b/Completion/Unix/Command/_cdrecord
index 02226f9d2..129f46eea 100644
--- a/Completion/Unix/Command/_cdrecord
+++ b/Completion/Unix/Command/_cdrecord
@@ -80,8 +80,8 @@ if [[ -n $state ]]; then
 	'mcn[set media catalog number for this CD]:text' \
 	'isrc[set isrc number for the next track]:text' \
 	'index[set the index list for the next track]:list' \
-	'textfile[set the file with CD-Text data]:name:_files -g "*.inf"' \
-	'cuefile[set the file with CDRWIN CUE data]:name:_files -g "*.cue"' && ret=0
+	'textfile[set the file with CD-Text data]:name:_files -g "*.inf(-.)"' \
+	'cuefile[set the file with CDRWIN CUE data]:name:_files -g "*.cue(-.)"' && ret=0
     fi
     _requested files expl track _files && ret=0
     (( ret )) || break
diff --git a/Completion/Unix/Command/_compress b/Completion/Unix/Command/_compress
index b8f691373..cd96b8e80 100644
--- a/Completion/Unix/Command/_compress
+++ b/Completion/Unix/Command/_compress
@@ -38,10 +38,10 @@ esac
 if [[ "$state" = files ]]; then
   if [[ -z "$decompress" ]] || (( $+opt_args[-d] )); then
     _description files expl 'file to compress'
-    _files "$expl[@]" -g '*~*.Z' && return
+    _files "$expl[@]" -g '^*.Z(-.)' && return
   else
     _description files expl 'compressed file'
-    _files "$expl[@]" -g '*.Z' && return
+    _files "$expl[@]" -g '*.Z(-.)' && return
   fi
 fi
 
diff --git a/Completion/Unix/Command/_dvi b/Completion/Unix/Command/_dvi
index 672b4419d..154be68fb 100644
--- a/Completion/Unix/Command/_dvi
+++ b/Completion/Unix/Command/_dvi
@@ -3,10 +3,10 @@
 local expl args
 
 args=(
-  '-i[specify input file]:input DVI file:_files -g \*.\(dvi\|DVI\)' \
-  '-o[specify output file]:output DVI file:_files -g \*.\(dvi\|DVI\)' \
-  ':input DVI file:_files -g \*.\(dvi\|DVI\)' \
-  ':output DVI file:_files -g \*.\(dvi\|DVI\)'
+  '-i[specify input file]:input DVI file:_files -g "*.(dvi|DVI)(-.)"' \
+  '-o[specify output file]:output DVI file:_files -g "*.(dvi|DVI)(-.)"' \
+  ':input DVI file:_files -g "*.(dvi|DVI)(-.)"' \
+  ':output DVI file:_files -g "*.(dvi|DVI)(-.)"'
 )
 
 case "$service" in
@@ -15,52 +15,52 @@ dvips)
     '-a[make three passes]' \
     '(-B)-A[print only odd numbered pages]' \
     '(-A)-B[print only even numbered pages]' \
-    '(-c -C)-b[select number of copies (duplicating body)]:number of copies:' \
-    '(-b -C)-c[select number of copies]:number of copies:' \
-    '(-b -c)-C[select number of copies (collated)]:number of copies:' \
-    '-d[set debug flags]:debug flags:' \
-    '(-X -Y)-D[set resolution]:resolution in dots per inch:' \
-    '-e[set maximum character offset]:maximum character offset:' \
+    '(-c -C)-b[select number of copies (duplicating body)]:number of copies' \
+    '(-b -C)-c[select number of copies]:number of copies' \
+    '(-b -c)-C[select number of copies (collated)]:number of copies' \
+    '-d[set debug flags]:debug flags' \
+    '(-X -Y)-D[set resolution]:resolution in dots per inch' \
+    '-e[set maximum character offset]:maximum character offset' \
     '-E[generate EPSF file]' \
     '(-o)-f[write to stdout]' \
     '-F[append control-D]' \
-    '-h[specify additional header file]:postscript header file:_files -g \*.\(\#i\)\(ps\|eps\)' \
+    '-h[specify additional header file]:postscript header file:_files -g "*.(#i)(ps|eps)(-.)"' \
     '-i[one file per section]' \
     '-k[print crop marks]' \
     '-K[include postscript comments]' \
-    '(-pp)-l[specify last page to print]:number of last page:' \
+    '(-pp)-l[specify last page to print]:number of last page' \
     '-m[specify manual feed for printer]' \
     '-M[no automatic font generation]' \
-    '(-pp)-n[specify maximum number of pages to print]:maximum number of pages:' \
+    '(-pp)-n[specify maximum number of pages to print]:maximum number of pages' \
     '-N[turn off structured comments]' \
-    '(-f)-o[specify output file name]:output file name:_files -g \*.\(\#i\)\(ps\|eps\)' \
-    '-O[specify offset of origin]:offset of origin (<x>,<y>):' \
+    '(-f)-o[specify output file name]:output file name:_files -g "*.(#i)(ps|eps)(-.)"' \
+    '-O[specify offset of origin]:offset of origin (<x>,<y>)' \
     '(-p -l -n)-pp[specify which pages to print]:list of pages or ranges to print:' \
-    '(-pp)-p[specify first page to print]:number of first page:' \
-    '-P[specify printer]:printer name:' \
+    '(-pp)-p[specify first page to print]:number of first page' \
+    '-P[specify printer]:printer name' \
     '-q[quiet operation]' \
     '-r[reverse order of pages]' \
     '-s[enclose output in save/restore pair]' \
-    '-S[set maximum number of pages per section]:maximum number of pages per section:' \
+    '-S[set maximum number of pages per section]:maximum number of pages per section' \
     '(-T)*-t[specify paper type]:paper type:(letter legal ledger a4 a3 landscape)' \
-    '(-t)-T[set paper size]:paper size (<x>,<y>):' \
-    '-x[set magnification ratio]:magnification ratio (per mille):' \
-    '(-D)-X[set horizontal resolution]:horizontal resolution:' \
-    '(-D)-Y[set vertical resolution]:vertical resolution:' \
+    '(-t)-T[set paper size]:paper size (<x>,<y>)' \
+    '-x[set magnification ratio]:magnification ratio (per mille)' \
+    '(-D)-X[set horizontal resolution]:horizontal resolution' \
+    '(-D)-Y[set vertical resolution]:vertical resolution' \
     '-Z[compress bitmapped fonts]' \
-    ':input file:_files -g \*.\(dvi\|DVI\)'
+    ':input file:_files -g "*.(dvi|DVI)(-.)"'
   ;;
 dvibook)
   _arguments -s \
     '-q[quiet operation]' \
-    '-s-[specify signature size]:signature size:' \
+    '-s-[specify signature size]:signature size' \
     "$args[@]"
   ;;
 dviconcat)
   _arguments \
-    '-m[specify magnification]:magnification factor:' \
-    '-o[specify output file]:output DVI file:_files -g \*.\(dvi\|DVI\)' \
-    '*:input DVI file:_files -g \*.\(dvi\|DVI\)'
+    '-m[specify magnification]:magnification factor' \
+    '-o[specify output file]:output DVI file:_files -g "*.(dvi|DVI)(-.)"' \
+    '*:input DVI file:_files -g "*.(dvi|DVI)(-.)"'
   ;;
 dvidvi)
   _arguments -s \
@@ -71,8 +71,8 @@ dvidvi)
     '(-i -x)-n[select number of pages]:maximum number of pages:' \
     '(-f -l -n)-i[specify included pages]:list of included pages:' \
     '(-f -l -n)-x[specify excluded pages]:list of excluded pages:' \
-    ':input DVI file:_files -g \*.\(dvi\|DVI\)' \
-    ':output DVI file:_files -g \*.\(dvi\|DVI\)'
+    ':input DVI file:_files -g "*.(dvi|DVI)(-.)"' \
+    ':output DVI file:_files -g "*.(dvi|DVI)(-.)"'
   ;;
 dviselect)
   _arguments -s \
@@ -90,6 +90,6 @@ dvitodvi)
   ;;
 *)
   _description files expl 'DVI file'
-  _files "$expl[@]" -g '*.(dvi|DVI)'
+  _files "$expl[@]" -g '*.(dvi|DVI)(-.)'
   ;;
 esac
diff --git a/Completion/Unix/Command/_ecasound b/Completion/Unix/Command/_ecasound
index 67b9c363a..204ce869a 100644
--- a/Completion/Unix/Command/_ecasound
+++ b/Completion/Unix/Command/_ecasound
@@ -29,7 +29,7 @@ _arguments \
   '*-Md\:-[set the active MIDI-device]:device name:_files' \
   '*-Mms\:-[send MMC start/stop to MIDI device-id]:device id' \
   '*-mss[sends MIDI-sync to the selected MIDI-device]' \
-  '*-pf\:-[use the first preset found from file as chain operator]:preset file:_files -g *.epp' \
+  '*-pf\:-[use the first preset found from file as chain operator]:preset file:_files -g \*.epp\(-.\)' \
   '*-pn\:-[find preset from global preset database]:preset name:->pn' \
   '*-ev[analyze sample data to find max apm value without clipping]' \
   '*-ezf[find the optimal value for DC-adjusting]' \
@@ -135,7 +135,7 @@ case $state in
       fi
     else
       _alternative \
-        'files:input/output file:_files -g "*.(aif|aiff|mid|wav|ewf|mp3|mp2)"' \
+        'files:input/output file:_files -g "*.(aif|aiff|mid|wav|ewf|mp3|mp2)(-.)"' \
         'streams:stream:(stdin stdout)' \
 	'devices:realtime device:((/dev/dsp alsa\:alsa\ device null\:null\ device))'
     fi
diff --git a/Completion/Unix/Command/_figlet b/Completion/Unix/Command/_figlet
index 0a5ba0a2f..32bed4790 100644
--- a/Completion/Unix/Command/_figlet
+++ b/Completion/Unix/Command/_figlet
@@ -27,9 +27,9 @@ _arguments -s -S \
   "(-L -R)-X[use default writing direction of font]" \
   "(-t)-w+[specify output width]:output width (in columns)" \
   "-d+[specify font directory]:font directory:_path_files -/" \
-  '-f+[specify font]:font:_files -W ${~opt_args[-d]\:-$fontdir} -g \*flf\*\(\:r\)' \
+  '-f+[specify font]:font:_files -W ${~opt_args[-d]\:-$fontdir} -g \*flf\*\(-.\:r\)' \
   '(-k -S -s -o -W)-m+[specify layout mode]:layout mode' \
-  '(-N)-C+[specify control file]:control file:_files -W ${~opt_args[-d]\:-$fontdir} -g \*flc\*\(\:r\)' \
+  '(-N)-C+[specify control file]:control file:_files -W ${~opt_args[-d]\:-$fontdir} -g \*flc\*\(-.\:r\)' \
   "(-v)-I+[display info]:info code:((
     -1\:normal\ operation\ \(default\)
     0\:version,\ copyright\ and\ usage\ information
diff --git a/Completion/Unix/Command/_flex b/Completion/Unix/Command/_flex
index 82e219758..7ca5b0f83 100644
--- a/Completion/Unix/Command/_flex
+++ b/Completion/Unix/Command/_flex
@@ -29,7 +29,7 @@ _arguments -C -s \
   '-o-[specify output file]:output file:_files' \
   '-P-[change yy prefix]:prefix string:' \
   '-S-[override skeleton file]:skeleton file:_files' \
-  '*:input files:_files -g \*.\(\#i\)\(f\|\)lex' && ret=0
+  '*:input files:_files -g "*.(#i)(f|)lex(-.)"' && ret=0
 
 if [[ -n "$state" ]]; then
   _values -s '' 'table compression' \
diff --git a/Completion/Unix/Command/_gcc b/Completion/Unix/Command/_gcc
index 6f105155d..c5287473d 100644
--- a/Completion/Unix/Command/_gcc
+++ b/Completion/Unix/Command/_gcc
@@ -13,7 +13,7 @@ if [[ "$service" = -value-* ]]; then
     args2=()
   fi
 else
-  args2=( '*:input file:_files -g \*.\(\[cCmisSoak\]\|cc\|cxx\|ii\|k\[ih\]\)' )
+  args2=( '*:input file:_files -g "*.([cCmisSoak]|cc|cxx|ii|k[ih])(-.)"' )
 fi
 
 args=()
@@ -179,7 +179,7 @@ esac
 _arguments -C -M 'L:|-{fW}no-=-{fW} r:|[_-]=* r:|=*' \
   "$args[@]" \
   -c -S -E -v -a -w -C -H -P -s '(-pg)-p' '(-p)-pg' \
-  '-o:output file:_files -g \^\*.\(c\|h\|cc\|C\|cxx\)' \
+  '-o:output file:_files -g "^*.(c|h|cc|C|cxx)(-.)"' \
   '-x:input file language:(c objective-c c++ c-header cpp-output c++-cpp-output assembler assembler-with-cpp none)' \
   '+e-:virtual function definitions in classes:((0\:only\ interface 1\:generate\ code))' \
   '-d-:dump:->dump' \
@@ -202,8 +202,8 @@ _arguments -C -M 'L:|-{fW}no-=-{fW} r:|[_-]=* r:|=*' \
   '-V:gcc version:' \
   '-print-file-name=:library:->library' \
   '-print-prog-name=:program:' \
-  '*-include:include file:_files -g \*.h' \
-  '*-imacros:macro input file:_files -g \*.h' \
+  '*-include:include file:_files -g \*.h\(-.\)' \
+  '*-imacros:macro input file:_files -g \*.h\(-.\)' \
   '*-idirafter:second include path directory:_files -/' \
   '*-iprefix:prefix:_files' \
   '*-iwithprefix:second include path directory:_files -/' \
diff --git a/Completion/Unix/Command/_gdb b/Completion/Unix/Command/_gdb
index f13a897a3..48c9d654f 100644
--- a/Completion/Unix/Command/_gdb
+++ b/Completion/Unix/Command/_gdb
@@ -47,7 +47,7 @@ else
   done
 
   if [[ $#w -gt 1 ]]; then
-    _alternative "files:: _files -g '*core'" "processes:: _pids -m ${w[1]:t}"
+    _alternative "files:: _files -g '*core(-.)'" "processes:: _pids -m ${w[1]:t}"
   else
     _description files expl executable
     _files "$expl[@]" -g '*(-*)'
diff --git a/Completion/Unix/Command/_gprof b/Completion/Unix/Command/_gprof
index 1f7a0fd0e..3bb7a5765 100644
--- a/Completion/Unix/Command/_gprof
+++ b/Completion/Unix/Command/_gprof
@@ -8,8 +8,8 @@ _arguments -C -s -{a,b,c,D,h,i,l,L,s,T,v,w,x,y,z} \
 	   '-I:directory:_dir_list' \
 	   '-d-:debug level:' '-k:function names:->pair' \
 	   '-m:minimum execution count:' \
-	   ':executable:_files -g \*\(\*\)' \
-	   ':profile file:_files -g gmon.\*' \
+	   ':executable:_files -g \*\(-\*\)' \
+	   ':profile file:_files -g gmon.\*\(-.\)' \
 	   -- -s '((#s)--[no-] --)' \
            '*=name*:function name:->funcs' \
 	   '*=dirs*:directory:_dir_list' && ret=0
diff --git a/Completion/Unix/Command/_gzip b/Completion/Unix/Command/_gzip
index 3f5aeb1b7..5c88fac39 100644
--- a/Completion/Unix/Command/_gzip
+++ b/Completion/Unix/Command/_gzip
@@ -79,10 +79,10 @@ files)
   else
     if [[ -z "$decompress" ]]; then
       _description files expl 'file to compress'
-      _files "$expl[@]" -g '*~*.(([tT]|)[gG]|)[zZ]' && return
+      _files "$expl[@]" -g '^*.(([tT]|)[gG]|)[zZ](-.)' && return
     else
       _description files expl 'compressed file'
-      _files "$expl[@]" -g '*.(([tT]|)[gG]|)[zZ]' && return
+      _files "$expl[@]" -g '*.(([tT]|)[gG]|)[zZ](-.)' && return
     fi
   fi
   ;;
diff --git a/Completion/Unix/Command/_imagemagick b/Completion/Unix/Command/_imagemagick
index fd9780ad7..43f3a277a 100644
--- a/Completion/Unix/Command/_imagemagick
+++ b/Completion/Unix/Command/_imagemagick
@@ -14,7 +14,7 @@ typeset -A opt_args
 formats=jpg:jpeg:tiff:miff:ras:bmp:cgm:dcx:ps:eps:fig:fits:fpx:gif:mpeg:pbm:pgm:ppm:pcd:pcl:pdf:pcx:png:rad:rgb:rgba:rle:sgi:html:shtml:tga:ttf:uil:xwd:xbm:xpm:yuv
 
 if (( $# )); then
-  _files "$@" "$expl[@]" -g '*.(#i)(${~format//:/|})'
+  _files "$@" "$expl[@]" -g '*.(#i)(${~format//:/|})(-.)'
   return
 fi
 
diff --git a/Completion/Unix/Command/_ispell b/Completion/Unix/Command/_ispell
index 3eacee87f..6a3e86d42 100644
--- a/Completion/Unix/Command/_ispell
+++ b/Completion/Unix/Command/_ispell
@@ -36,17 +36,17 @@ ispell)
 buildhash)
   _arguments \
     '(-c)-s[silent operation]' \
-    '(: -s)-c[count mode]:count: :affix file:_files -g \*.\(\#i\)aff' \
+    '(: -s)-c[count mode]:count: :affix file:_files -g "*.(#i)aff(-.)"' \
     ':raw dictionary file:_files:' \
-    ':affix file:_files -g \*.\(\#i\)aff' \
-    ':hashed output file:_files \*.\(\#i\)hash'
+    ':affix file:_files -g "*.(#i)aff(-.)"' \
+    ':hashed output file:_files "*.(#i)hash(-.)"'
   ;;
 munchlist)
   _arguments -s \
-    '-l[specify affix file]:affix file:_files -g \*.\(\#i\)aff' \
+    '-l[specify affix file]:affix file:_files -g "*.(#i)aff(-.)"' \
     '-c[specify converted output file name]:converted file name:_files' \
     '-T[specify string character type]:string character type:' \
-    '-s[specify strip hash file]:hash file:_files \*.\(\#i\)hash' \
+    '-s[specify strip hash file]:hash file:_files "*.(#i)hash(-.)"' \
     '-D[debug mode]' \
     '-v[verbose mode]' \
     '-w[specify additional word characters]:word characters:' \
@@ -76,7 +76,7 @@ tryaffix)
 icombine)
   _arguments \
     '-T[specify string character type]:string character type:' \
-    ':affix file:_files -g \*.\(\#i\)aff'
+    ':affix file:_files -g "*.(#i)aff(-.)"'
   ;;
 ijoin)
   _arguments -s \
diff --git a/Completion/Unix/Command/_java b/Completion/Unix/Command/_java
index 10f23c39d..680238ebc 100644
--- a/Completion/Unix/Command/_java
+++ b/Completion/Unix/Command/_java
@@ -22,7 +22,7 @@ javac)
     '-source[provide source compatibility with specified release]:release:(1.3 1.4)' \
     '-target[specify VM version]:release:(1.{1..4})' \
     '-help[print a synopsis of standard options]' \
-    '*:java source file:_files -g \*.java' && return 0
+    '*:java source file:_files -g \*.java\(-.\)' && return 0
   ;;
 
 jdb)
@@ -43,7 +43,7 @@ java)
     '-verbose\:jni[print JNI information]' \
     '-version[print version]' \
     '-help[print help message]' \
-    '(- 1)-jar[specify a program capsulated as jar]:jar:_files -g \*.jar' \
+    '(- 1)-jar[specify a program capsulated as jar]:jar:_files -g \*.jar\(-.\)' \
     '(-):class:_java_class -m main ${(kv)opt_args[(i)(-classpath|-cp)]}' \
     '*::args: _normal' \
      && return 0
@@ -118,7 +118,7 @@ jar)
     jar_cmd="${words[2]#-}"
     tmpassoc=(
       m ':manifest file:_files'
-      f ':archive file:_files -g \*.\([ejw]ar\|zip\)'
+      f ':archive file:_files -g "*.([ejw]ar|zip)(-.)"'
     )
     _arguments -C \
       "${jar_cmd/[^-]*/:dummy:}" \
@@ -165,7 +165,7 @@ javap)
 extcheck)
   _arguments \
     '-verbose[print verbose messages]' \
-    ':target jar file:_files -g \*.jar' && return 0
+    ':target jar file:_files -g \*.jar\(-.\)' && return 0
   ;;
 
 rmic)
@@ -336,14 +336,14 @@ jarsigner)
     '-storepass[specify password for keystore]:password:' \
     '-keypass[specify password for private key]:password:' \
     '-sigfile[specify base file name of .SF and .DSA files to be generated]:sigfile:_files' \
-    '-signedjar[specify signed JAR file]:_files -g \*.\(jar\|zip\)' \
+    '-signedjar[specify signed JAR file]:_files -g "*.(jar|zip)(-.)"' \
     '(2)-verify[verify mode]' \
     '-certs[output certificate information in verify mode]' \
     '-verbose[print verbose messages]' \
     '-internalsf[old behaviour]' \
     '-sectionsonly[omit header of hash of the whole manifest file]' \
     '-J-[specify java option]:java option:' \
-    ':jar file:_files -g \*.\(jar\|zip\)' \
+    ':jar file:_files -g "*.(jar|zip)(-.)"' \
     ':alias:' && return 0
   ;;
 
@@ -374,7 +374,7 @@ classpath|sourcepath|bootstrapclasspath|docletpath)
   compset -P '*:'
   compset -S ':*'
   _alternative \
-    "classpath:$state:_path_files -qS: -g '*.(jar|zip)'" \
+    "classpath:$state:_path_files -qS: -g '*.(jar|zip)(-.)'" \
     "classpath:$state:_path_files -r': ' -/" && return
   ;;
 
@@ -553,7 +553,7 @@ docsrc)
   if compset -P @; then
     _wanted files expl 'package/source list file' _files && return
   else
-    _wanted files expl 'package or source' _files -g '*.java' && return
+    _wanted files expl 'package or source' _files -g '*.java(-.)' && return
   fi
   ;;
 
diff --git a/Completion/Unix/Command/_links b/Completion/Unix/Command/_links
index 47869ad6a..d2bc9be14 100644
--- a/Completion/Unix/Command/_links
+++ b/Completion/Unix/Command/_links
@@ -29,7 +29,7 @@ _arguments -C \
 
 case $state in
   html)
-    _alternative 'files:file:_files -g "*.x#html"' 'urls:url:_urls' && ret=0
+    _alternative 'files:file:_files -g "*.x#html(-.)"' 'urls:url:_urls' && ret=0
   ;;
   graphics_drivers)
     vals=(${=${${${(f)"$(_call_program links-graphics-drivers links -driver help 2>&1)"}[-1]}//','/''}} )
diff --git a/Completion/Unix/Command/_lynx b/Completion/Unix/Command/_lynx
index 6bbe01449..e53fa8415 100644
--- a/Completion/Unix/Command/_lynx
+++ b/Completion/Unix/Command/_lynx
@@ -140,7 +140,7 @@ restrictions)
     outside_telnet print shell suspend telnet_port useragent && return
   ;;
 html)
-  _alternative 'files:file:_files -g "*.x#html"' 'urls:url:_urls' && return
+  _alternative 'files:file:_files -g "*.x#html(-.)"' 'urls:url:_urls' && return
   ;;
 esac
 
diff --git a/Completion/Unix/Command/_lzop b/Completion/Unix/Command/_lzop
index bad9c14d4..46e27691a 100644
--- a/Completion/Unix/Command/_lzop
+++ b/Completion/Unix/Command/_lzop
@@ -83,10 +83,10 @@ case "$state" in
 	$+opt_args[--test] || $+opt_args[-t] || $+opt_args[--list] ||
 	$+opt_args[-l] || $+opt_args[--ls] || $+opt_args[--info] )); then
       _description files expl 'compressed file'
-      _files "$expl[@]" -g '*.[tl]zo' && ret=0
+      _files "$expl[@]" -g '*.[tl]zo(-.)' && ret=0
     else
       _description files expl 'file to compress'
-      _files "$expl[@]" -g '*~*.[tl]zo' && ret=0
+      _files "$expl[@]" -g '*~*.[tl]zo(-.)' && ret=0
 
     fi
   ;;
diff --git a/Completion/Unix/Command/_mh b/Completion/Unix/Command/_mh
index 6f965ce4f..5e5245441 100644
--- a/Completion/Unix/Command/_mh
+++ b/Completion/Unix/Command/_mh
@@ -49,7 +49,7 @@ elif [[ "$prev" = -(form|audit|filter) ]]; then
   mhlib=${${$(mhparam mhlproc 2>/dev/null):h}:-/usr/lib/mh}
   mhfpath=($mymhdir $mhlib)
 
-  _wanted files expl 'MH template file' _files -W mhfpath -g '*(.)'
+  _wanted files expl 'MH template file' _files -W mhfpath -g '*(-.)'
 elif [[ $service = mhmail ]]; then
   _email_addresses
 elif [[ "$prev" = -(no|)cc ]]; then
@@ -83,7 +83,7 @@ else
       compadd "$expl[@]" $(mark $foldnam 2>/dev/null | awk -F: '{ print $1 }') &&
         ret=0
       compadd "$expl[@]" reply next cur prev first last all unseen && ret=0
-      _path_files "$expl[@]" -W folddir -g '<->' && ret=0
+      _path_files "$expl[@]" -W folddir -g '<->(-.)' && ret=0
     done
     (( ret )) || return 0
   done
diff --git a/Completion/Unix/Command/_mysqldiff b/Completion/Unix/Command/_mysqldiff
index 1409afda5..094694d32 100644
--- a/Completion/Unix/Command/_mysqldiff
+++ b/Completion/Unix/Command/_mysqldiff
@@ -24,7 +24,7 @@ _mysqldiff () {
 _mysql_db_or_file () {
   _alternative \
     'databases:MySQL databases:_mysql_databases' \
-    'files:MySQL database definition files:_files -g \*.\(my\|\)sql'
+    'files:MySQL database definition files:_files -g "*.(my|)sql(-.)"'
 }
 
 _mysql_utils
diff --git a/Completion/Unix/Command/_pack b/Completion/Unix/Command/_pack
index b0172dca8..ccd1db8f5 100644
--- a/Completion/Unix/Command/_pack
+++ b/Completion/Unix/Command/_pack
@@ -7,10 +7,10 @@ case $service in
     _arguments -C \
       '-f[force packing even for files which will not benefit]' \
       '-[show statistics for files]' \
-      '*:file to compress:_files -g \*\~\*.z'
+      '*:file to compress:_files -g "^*.z(-.)"'
   ;;
   unpack)
     _description files expl 'compressed file'
-    _files "$expl[@]" -g '*.z'
+    _files "$expl[@]" -g '*.z(-.)'
   ;;
 esac
diff --git a/Completion/Unix/Command/_pbm b/Completion/Unix/Command/_pbm
index 17963c1e7..747aed3ce 100644
--- a/Completion/Unix/Command/_pbm
+++ b/Completion/Unix/Command/_pbm
@@ -9,16 +9,16 @@
 local pat expl ret=1
 
 if [[ "$service" = pnm* ]]; then
-  pat='*.(#i)p[bgp]m'
+  pat='*.(#i)p[bgp]m(-.)'
 elif [[ "$service" = *top[bgpn]m ]]; then
-  pat="*.(#i)${service%%top[bgpn]m}"
+  pat="*.(#i)${service%%top[bgpn]m}(-.)"
 else
-  pat="*.(#i)${service[1,3]}"
+  pat="*.(#i)${service[1,3]}(-.)"
 fi
 
 if (( $# + $+_in_pbm )); then
   _wanted files expl 'picture file' _path_files "$@" -g "$pat" - ||
-      _files "$@" "$expl[@]" -g '*.(#i)p[bgp]m'
+      _files "$@" "$expl[@]" -g '*.(#i)p[bgp]m(-.)'
   return
 fi
 
@@ -114,7 +114,7 @@ pbmreduce)
 
 pbmtext)
   _arguments \
-    '(-builtin)-font[specify font file]:font file:_files -g \*.\(\#i\)pbm' \
+    '(-builtin)-font[specify font file]:font file:_files -g "*.(#i)pbm(-.)"' \
     '(-font)-builtin[select builtin font]:builtin font:(bdf fixed)' \
     '-space[add space between characters]:space (pixels)' \
     '*:text'
@@ -184,8 +184,8 @@ pbmtopk)
     '*-v[specify vertical escapement of next character]:vertical escapement' \
     '*-x[specify x offset of next character]:x offset' \
     '*-y[specify y offset of next character]:y offset' \
-    ':pk file:_files -g \*.\(\#i\)pk' \
-    ':tfm file:_files -g \*.\(\#i\)tfm' \
+    ':pk file:_files -g "*.(#i)pk(-.)"' \
+    ':tfm file:_files -g "*.(#i)tfm(-.)"' \
     '*:file:_pbm'
   ;;
 
@@ -269,7 +269,7 @@ pgmtoppm)
     return ret
   elif [[ CURRENT -eq 3 && "$words[2]" = -map ]]; then
     _description files expl 'map file'
-    _files "$expl[@]" -g '*.(#i)ppm'
+    _files "$expl[@]" -g '*.(#i)ppm(-.)'
   else
     _pbm
   fi
@@ -280,7 +280,7 @@ pktopbm)
     '*-x[set width of next bitmap]:width' \
     '*-y[set height of next bitmap]:height' \
     '*-c[set next character number]:character number' \
-    ':pk file:_files -g \*.\(\#i\)pk' \
+    ':pk file:_files -g "*.(#i)pk(-.)"' \
     '*:file:_pbm'
   ;;
 
@@ -332,7 +332,7 @@ pnmcomp)
     '(-valign)-yoff[specify overlay y offset]:y offset' \
     '(-xoff)-align=[specify horizontal alignment for overlay image]:alignment:(left center right)' \
     '(-yoff)-valign=[specify vertical alignment for overlay image]:alignment:(top middle bottom)' \
-    '-alpha[specify alpha mask file]:alpha mask file:_files -g \*.\(\#i\)pgm' \
+    '-alpha[specify alpha mask file]:alpha mask file:_files -g "*.(#i)pgm(-.)"' \
     ':overlay file:_pbm' '*:file:_pbm'
   ;;
 
@@ -384,8 +384,8 @@ pnmhisteq)
   _arguments \
     '-verbose[verbose mode]' \
     '-gray[modify only gray pixels]' \
-    '-rmap[specify input luminosity map file]:luminosity map file:_files -g \*.\(\#i\)pgm' \
-    '-wmap[specify output luminosity map file]:luminosity map file:_files -g \*.\(\#i\)pgm' \
+    '-rmap[specify input luminosity map file]:luminosity map file:_files -g "*.(#i)pgm(-.)"' \
+    '-wmap[specify output luminosity map file]:luminosity map file:_files -g "*.(#i)pgm(-.)"' \
     ':file:_pbm'
   ;;
 pnmhistmap)
@@ -470,7 +470,7 @@ pnmtile)
 pnmtoddif)
   _arguments \
     '-resolution:horizontal resolution::vertical resolution' \
-    ':file:_pbm' ':ddif file:_files -g \*.\(\#i\)ddif'
+    ':file:_pbm' ':ddif file:_files -g "*.(#i)ddif(-.)"'
   ;;
 
 pnmtofits)
@@ -664,7 +664,7 @@ ppmquant)
     return ret
   elif [[ CURRENT -eq 3 && "$words[2]" = -map ]]; then
     _description files expl 'map file'
-    _files "$expl[@]" -g '*.(#i)ppm'
+    _files "$expl[@]" -g '*.(#i)ppm(-.)'
   else
     _pbm
   fi
@@ -798,7 +798,7 @@ ppmtoyuvsplit)
 psidtopgm)
   _arguments \
     ':width' ':height' ':bits per sample' \
-    ':postscript file:_files -g "*.(#i)(ps|eps)"'
+    ':postscript file:_files -g "*.(#i)(ps|eps)(-.)"'
   ;;
 pstopnm)
   _arguments \
@@ -813,7 +813,7 @@ pstopnm)
     '-xborder:x border fraction' '-yborder:y border fraction' \
     '-xmax:maximum width' '-ymax:maximum height' \
     '-xsize:width' '-ysize:height' \
-    ':postscript file:_files -g \*.\(\#i\)\(ps\|eps\)'
+    ':postscript file:_files -g "*.(#i)(ps|eps)(-.)"'
   ;;
 
 rawtopgm)
@@ -848,7 +848,7 @@ rgb3toppm)
 
   if [[ -n "$expl" ]]; then
     _description files expl "$expl"
-    _files "$expl" -g '*.(#i)pgm'
+    _files "$expl" -g '*.(#i)pgm(-.)'
   fi
   ;;
 
@@ -887,5 +887,5 @@ zeisstopnm)
 
 *)
   _wanted files expl 'picture file' _path_files -g "$pat" ||
-      _files "$expl[@]" -g '*.(#i)p[bgp]m'
+      _files "$expl[@]" -g '*.(#i)p[bgp]m(-.)'
 esac
diff --git a/Completion/Unix/Command/_perl b/Completion/Unix/Command/_perl
index 0229f3e73..9d07b562d 100644
--- a/Completion/Unix/Command/_perl
+++ b/Completion/Unix/Command/_perl
@@ -31,7 +31,7 @@ _perl () {
     "-V-[print perl configuration information]:configuration keys:_perl_config_vars" \
     '-w[TURN WARNINGS ON FOR COMPILATION OF YOUR SCRIPT. Recommended.]' \
     '-x-[strip off text before #!perl line and perhaps cd to directory]:directory to cd to:_files -/' \
-    '1:Perl script:_files -/ -g \*.\(p\[ml\]\|PL\)' \
+    '1:Perl script:_files -/ -g "*.(p[ml]|PL)(-.)"' \
     '*::args: _normal' 
 }
 
diff --git a/Completion/Unix/Command/_perldoc b/Completion/Unix/Command/_perldoc
index 9a017a184..f0595fc9f 100644
--- a/Completion/Unix/Command/_perldoc
+++ b/Completion/Unix/Command/_perldoc
@@ -17,7 +17,7 @@ _perl_pods () {
   _alternative \
     'modules:: _perl_modules' \
     'pods:: _perl_basepods' \
-    'files:Perl modules and .pods:_files -g \*.\(pod\|pm\)'
+    'files:Perl modules and .pods:_files -g "*.(pod|pm)(-.)"'
 }
 
 _perldoc "$@"
diff --git a/Completion/Unix/Command/_python b/Completion/Unix/Command/_python
index 08d2f3887..02697bff4 100644
--- a/Completion/Unix/Command/_python
+++ b/Completion/Unix/Command/_python
@@ -1,26 +1,23 @@
 #compdef python
 
-# Python 2.2.2
-
 _arguments -s -S \
   '(1 -)-c+[program passed in as string (terminates option list)]:python command:' \
-  '-d[debug output from parser (also PYTHONDEBUG=x)]' \
+  '-d[debug output from parser]' \
   '-E[ignore environment variables (such as PYTHONPATH)]' \
-  '(1 * -)-h[print this help message and exit]' \
-  '-i[inspect interactively after running script (also PYTHONINSPECT=x)]' \
-  '-O[optimize generated bytecode (a tad; also PYTHONOPTIMIZE=x)]' \
+  '(1 * -)-h[display help information]' \
+  '-i[inspect interactively after running script]' \
+  '-O[optimize generated bytecode]' \
   '-OO[remove doc-strings in addition to the -O optimizations]' \
-  '-Q+[division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew]:division option:(old warn warnall new)' \
+  '-Q+[division options]:division option:(old warn warnall new)' \
   "-S[don't imply 'import site' on initialization]" \
   '-t[issue warnings about inconsistent tab usage]' \
   '-tt[issue errors about inconsistent tab usage]' \
-  '-u[unbuffered binary stdout and stderr (also PYTHONUNBUFFERED=x)]' \
-  '-v[verbose (trace import statements) (also PYTHONVERBOSE=x)]' \
-  '(1 * -)-V[print the Python version number and exit]' \
-  '-W+[warning control (arg is action:message:category:module:lineno)]:warning filter:(default always ignore module once error)' \
+  '-u[unbuffered binary stdout and stderr]' \
+  '-v[verbose (trace import statements)]' \
+  '(1 * -)-V[display version information]' \
+  '-W+[warning control]:warning filter (action:message:category:module:lineno):(default always ignore module once error)' \
   '-x[skip first line of source, allowing use of non-Unix forms of #!cmd]' \
-  '(1 -)-[program read from stdin (default; interactive mode if a tty)]' \
-  '(-)1:script file:_files -g \*.py\(\|c\|o\)' \
+  '(-)1:script file:_files -g "*.py(|c|o)(-.)"' \
   '*:script argument:_files' && return
 
 return 1
diff --git a/Completion/Unix/Command/_rar b/Completion/Unix/Command/_rar
index 910989437..c766b198f 100644
--- a/Completion/Unix/Command/_rar
+++ b/Completion/Unix/Command/_rar
@@ -39,7 +39,7 @@ case $service in
     if (( CURRENT == 2 )); then
       _wanted commands expl 'rar command' compadd e l lt p t v vt x && return
     else
-      _arguments "$common[@]" '*:RAR files:_files -g \*.rar' && return
+      _arguments "$common[@]" '*:RAR files:_files -g \*.rar\(-.\)' && return
     fi
   ;;
   rar)
diff --git a/Completion/Unix/Command/_ruby b/Completion/Unix/Command/_ruby
index d6df7dfd2..500dadbfd 100644
--- a/Completion/Unix/Command/_ruby
+++ b/Completion/Unix/Command/_ruby
@@ -32,7 +32,7 @@ _arguments -C -s -S \
   '(1 * -)--copyright[print the copyright]' \
   '(1 * -)'{-h,--help}'[print help message]' \
   '(1 * -)--version[print the version]' \
-  '(-)1:script file:_files -g \*.rb' \
+  '(-)1:script file:_files -g "*.rb(-.)"' \
   '*:script argument:_files' && ret=0
 
 case $state in
diff --git a/Completion/Unix/Command/_sablotron b/Completion/Unix/Command/_sablotron
index a8d332103..170f08abd 100644
--- a/Completion/Unix/Command/_sablotron
+++ b/Completion/Unix/Command/_sablotron
@@ -33,7 +33,7 @@ if [[ -n "$state" ]]; then
       case $mode:${#words[1,CURRENT-1]:#(-*|*=*)}; in
         default:1|chain:<3->|batch-x:2|batch-s:1)
 	  _description files expl stylesheet
-	  _files "$expl[@]" -g \*.xsl && ret=0
+	  _files "$expl[@]" -g "*.xsl(-.)" && ret=0
 	;;
         default:2|chain:1|batch-x:1|batch-s:2)
 	  _description files expl 'input file'
diff --git a/Completion/Unix/Command/_sccs b/Completion/Unix/Command/_sccs
index 40463b2f1..8d7babfb7 100644
--- a/Completion/Unix/Command/_sccs
+++ b/Completion/Unix/Command/_sccs
@@ -10,7 +10,7 @@ _sccs_files() {
   PREFIX="$pref"
   IPREFIX="$ipref"
   _wanted sccs-files expl 'sccs file' _files -W ${PROJECTDIR:-~+} \
-      -g 's.*' && ret=0
+      -g 's.*(-.)' && ret=0
   
   return ret
 }
@@ -49,7 +49,7 @@ subcmds=(
 
 ropt='-r+[specify sccs delta id]:sccs delta id'
 copt='-c+[specify date]:date-stamp'
-sfiles=":file:_files -g s.\*"
+sfiles=':file:_files -g "s.*(-.)"'
 
 if [[ $service = sccs ]]; then
   _arguments -C -A "-*" \
diff --git a/Completion/Unix/Command/_texinfo b/Completion/Unix/Command/_texinfo
index 240111990..13a5944f0 100644
--- a/Completion/Unix/Command/_texinfo
+++ b/Completion/Unix/Command/_texinfo
@@ -11,12 +11,12 @@ case $service in
       '(: -)--apropos=[look up string in indices]:search string: ' \
       '(-f --file)'{\*-d,\*--directory=}'[add directory to infopath]:info dir:_files -/' \
       '--dribble=[record keystrokes]:file with keystrokes:_files' \
-      '(-f --file -d --directory)'{-f,--file=}'[info file to show]:info file:_files -g "*.info(|.gz|.bz2)"' \
+      '(-f --file -d --directory)'{-f,--file=}'[info file to show]:info file:_files -g "*.info(|.gz|.bz2)(-.)"' \
       '(: - -h --help)'{-h,--help}'[display usage]' \
       '(-o --output -O)--index-search=[go directly to node if found]:search string: ' \
-      '(--index-search -o --output -O)'{-o,--output=}'[dump selected nodes to filename]:filename:_files -g "*(^/)"' \
+      '(--index-search -o --output -O)'{-o,--output=}'[dump selected nodes to filename]:filename:_files -g "*(-.)"' \
       '(-R --raw-escapes)'{-R,--raw-escapes}'[do not remove ANSI escapes from man pages]' \
-      '--restore=[read keystrokes from file]:filename:_files -g "*(^/)"' \
+      '--restore=[read keystrokes from file]:filename:_files -g "*(-.)"' \
       '(--index-search -o --output -O --show-options --usage)'{-O,--show-options,--usage}'[go to command-line options node]' \
       '--subnodes[recursively output menu items]' \
       '--vi-keys[use Vi-like key bindings]' \
@@ -43,21 +43,21 @@ case $service in
         '--keep-old=[inhibit replacement of existing entries/removal of empty sections]' \
         '--test[do not update dir file]' \
         '--debug[enable debugging]' \
-        '*:info file:_files -g \*.info'
+        '*:info file:_files -g "*.info(-.)"'
 	return
     else
       _arguments \
         '(--delete --remove)'{--delete,--remove}'[delete existing entries]' \
-        '(2)--dir-file=[specify dir file]:dir file:_files -g dir' \
+        '(2)--dir-file=[specify dir file]:dir file:_files -g "dir(-.)"' \
         \*{--entry,--info}'[specify directory entry to add]:text' \
         '(- 1 2)--help[display help information]' \
-        '(1)--info-file=[specify info file to install in the directory]:info file:_files -g *.info' \
+        '(1)--info-file=[specify info file to install in the directory]:info file:_files -g "*.info(-.)"' \
         '(2)--info-dir=[specify directory containing dir file]:info directory:_files -/' \
         '--quiet[suppress warnings]' \
         '(--delete --remove)--section=[put new entries in specified section]' \
         '(- 1 2)--version[display version information]' \
-        '1:info file:_files -g \*.info' \
-        '2:dir file:_files -g dir'
+        '1:info file:_files -g "*.info(-.)"' \
+        '2:dir file:_files -g "dir(-.)"'
 	return
     fi
   ;;
@@ -137,7 +137,7 @@ case $service in
       '-searchlook:search match display:(color inverse underline)' \
       '-iconic' \
       '-dir:info path:_dir_list' \
-      '-file:info file:_files -g "*.info(|.gz|.bz2)"' \
+      '-file:info file:_files -g "*.info(|.gz|.bz2)(-.)"' \
       '-node:info node:->item' \
       '*::menu items:->item' && ret=0
     info=( _call_program info info ${(kv)opt_args[(I)-file]/-file/-f} )
diff --git a/Completion/Unix/Command/_tiff b/Completion/Unix/Command/_tiff
index 0b3d55df3..588476d5a 100644
--- a/Completion/Unix/Command/_tiff
+++ b/Completion/Unix/Command/_tiff
@@ -3,9 +3,9 @@
 local pat expl ret=1
 
 if [[ "$service" = *2tiff ]]; then
-  pat="*.(#i)${service}"
+  pat="*.(#i)${service}(-.)"
 else
-  pat="*.(#i)tiff"
+  pat='*.(#i)tiff(-.)'
 fi
 
 if [[ $# -ne 0 || $+_in_tiff -ne 0 ]]; then
@@ -14,7 +14,7 @@ if [[ $# -ne 0 || $+_in_tiff -ne 0 ]]; then
     set -- "$expl[@]"
   fi
   _wanted files expl 'picture file' _path_files "$@" -g "$pat" - ||
-      _files "$@" "$expl[@]" -g '*.(#i)tiff'
+      _files "$@" "$expl[@]" -g '*.(#i)tiff(-.)'
   return
 fi
 
@@ -27,67 +27,67 @@ case "$service" in
 tiff2bw)
   _arguments -C \
     '-c[specify compression scheme]:compression scheme:->compress' \
-    '-r[specify rows per strip]:rows per strip:' \
-    '-R[specify percentage of red channel]:percentage of red channel:' \
-    '-G[specify percentage of green channel]:percentage of green channel:' \
-    '-B[specify percentage of blue channel]:percentage of blue channel:' \
-    ':input file:_files -g \*.\(\#i\)tif\(\|f\)' \
-    ':output file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    '-r[specify rows per strip]:rows per strip' \
+    '-R[specify percentage of red channel]:percentage of red channel' \
+    '-G[specify percentage of green channel]:percentage of green channel' \
+    '-B[specify percentage of blue channel]:percentage of blue channel' \
+    ':input file:_files -g "*.(#i)tif(|f)(-.)"' \
+    ':output file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 tiff2ps)
   _arguments \
     '-1[generate PostScript Level I output]' \
     '-2[generate PostScript Level II output]' \
     '-a[generate output for all IFDs]' \
-    '-d[set initial TIFF directory]:initial TIFF directory:' \
+    '-d[set initial TIFF directory]:initial TIFF directory' \
     '(-p)-e[generate Encapsulated PostScript]' \
-    '-o[set initial TIFF directory (file offset)]:file offset:' \
+    '-o[set initial TIFF directory (file offset)]:file offset' \
     '(-e)-p[generate non-Encapsulated PostScript]' \
-    '-h[set page height]:page height:' \
-    '-w[set page width]:page width:' \
+    '-h[set page height]:page height' \
+    '-w[set page width]:page width' \
     '-8[disable use of ASCII85 encoding]' \
     '-D[print two pages per sheet]' \
-    '-O[specify output file]:output file:_files -g \*.\(\#i\)ps' \
+    '-O[specify output file]:output file:_files -g "*.(#i)ps(-.)"' \
     '-s[generate output for a single image]' \
     '-T[print pages for top edge binding]' \
-    '*:input TIFF file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    '*:input TIFF file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 tiffcmp)
   _arguments \
     '-l[list all differing bytes]' \
     '-t[ignore differences in directories]' \
-    ':first input TIFF file:_files -g \*.\(\#i\)tif\(\|f\)' \
-    ':second input TIFF file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    ':first input TIFF file:_files -g "*.(#i)tif(|f)(-.)"' \
+    ':second input TIFF file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 tiffcp)
   _arguments -C \
     '-B[write output in bin-endian byte order]' \
     '-c[specify compression scheme]:compression scheme:->compress' \
-    '-o[set initial TIFF directory (file offset)]:file offset:' \
+    '-o[set initial TIFF directory (file offset)]:file offset' \
     '-p[set sample packing]:sample packing:(contig separate)' \
     '(-t)-s[write output in strips]' \
     '(-s)-t[write output in tiles]' \
     '-i[ignore read errors]' \
-    '-r[specify rows per strip]:rows per strip:' \
-    '-w[specify output tile width]:output tile width:' \
-    '-l[specify output tile length]:output tile length:' \
+    '-r[specify rows per strip]:rows per strip' \
+    '-w[specify output tile width]:output tile width' \
+    '-l[specify output tile length]:output tile length' \
     '-f[specify fill order]:fill order:(lsb2msb msb2lsb)' \
-    '*:input TIFF file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    '*:input TIFF file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 tiffdither)
   _arguments -C \
     '-c[specify compression scheme]:compression scheme:->compress' \
     '-f[specify fill order]:fill order:(lsb2msb msb2lsb)' \
-    '-r[specify rows per strip]:rows per strip:' \
-    '-t[set threshold for dithering]:dither threshold value:' \
-    ':input file:_files -g \*.\(\#i\)tif\(\|f\)' \
-    ':output file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    '-r[specify rows per strip]:rows per strip' \
+    '-t[set threshold for dithering]:dither threshold value' \
+    ':input file:_files -g "*.(#i)tif(|f)(-.)"' \
+    ':output file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 tiffdump)
   _arguments \
     '-o[set initial TIFF directory (file offset)]:file offset:' \
     '-h[print numbers in hexadecimal]' \
-    '*:input TIFF file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    '*:input TIFF file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 tiffinfo)
   _arguments \
@@ -95,26 +95,26 @@ tiffinfo)
     '-D[read and decompress data]' \
     '-d[print decompressed data]' \
     '-j[display JPEG-related tags]' \
-    '-o[set initial TIFF directory (file offset)]:file offset:' \
+    '-o[set initial TIFF directory (file offset)]:file offset' \
     '-s[display offsets and byte counts for all data strips]' \
     '-i[ignore read errors]' \
     '-f[force fill order]:fill order:(lsb2msb msb2lsb)' \
     '-w[display raw data in words]' \
-    '*:input TIFF file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    '*:input TIFF file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 tiffmedian)
   _arguments -C \
-    '-r[specify rows per strip]:rows per strip:' \
-    '-C[specify number of colormap entries]:number of colormap entries:' \
+    '-r[specify rows per strip]:rows per strip' \
+    '-C[specify number of colormap entries]:number of colormap entries' \
     '-c[specify compression scheme]:compression scheme:->compress' \
     '-f[use Floyd-Steinberg dithering]' \
-    ':input file:_files -g \*.\(\#i\)tif\(\|f\)' \
-    ':output file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    ':input file:_files -g "*.(#i)tif(|f)(-.)"' \
+    ':output file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 tiffsplit)
   _arguments \
-    ':input file:_files -g \*.\(\#i\)tif\(\|f\)' \
-    ':output file prefix:' && ret=0
+    ':input file:_files -g "*.(#i)tif(|f)(-.)"' \
+    ':output file prefix' && ret=0
   ;;
 fax2tiff)
   _arguments \
@@ -125,46 +125,46 @@ fax2tiff)
     '(-B)-W[0 in input is white]' \
     '(-M)-L[input is lsb-to-msb]' \
     '(-L)-M[input is msb-to-lsb]' \
-    '-R[specify resolution]:resolution (lines per inch):' \
-    '-o[specify output file]:output file:_files -g \*.\(\#i\)tif\(\|f\)' \
+    '-R[specify resolution]:resolution (lines per inch)' \
+    '-o[specify output file]:output file:_files -g "*.(#i)tif(|f)(-.)"' \
     '(-f)-c[generate `classic'"'"' TIFF format]' \
     '(-c)-f[generate TIFF Class F format]' \
     '-m[output in msb-to-lsb order]' \
-    '-p[don'"'"'t align EOL codes]' \
+    "-p[don't align EOL codes]" \
     '-s[duplicate all rows]' \
     '-v[verbose mode]' \
-    ':FAX input file:_files -g \*.\(\#i\)\(g\[34\]\|fax\)' && ret=0
+    ':FAX input file:_files -g "*.(#i)(g[34]|fax)(-.)"' && ret=0
   ;;
 gif2tiff)
   _arguments -C \
-    '-r[specify rows per strip]:rows per strip:' \
+    '-r[specify rows per strip]:rows per strip' \
     '-c[specify compression scheme]:compression scheme:->compress' \
-    ':input GIF file:_files -g \*.\(\#i\)gif' \
-    ':output file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    ':input GIF file:_files -g "*.(#i)gif(-.)"' \
+    ':output file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 ppm2tiff)
   _arguments -C \
-    '-r[specify rows per strip]:rows per strip:' \
+    '-r[specify rows per strip]:rows per strip' \
     '-c[specify compression scheme]:compression scheme:->compress' \
     '-R[specify resolution]:resolution:' \
-    ':input GIF file:_files -g \*.\(\#i\)ppm' \
-    ':output file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    ':input GIF file:_files -g "*.(#i)ppm(-.)"' \
+    ':output file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 ras2tiff)
   _arguments -C \
-    '-r[specify rows per strip]:rows per strip:' \
+    '-r[specify rows per strip]:rows per strip' \
     '-c[specify compression scheme]:compression scheme:->compress' \
-    ':input raster image file:_files -g \*.\(\#i\)ras\(\|t\)' \
-    ':output file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    ':input raster image file:_files -g "*.(#i)ras(|t)(-.)"' \
+    ':output file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 pal2rgb)
   _arguments -C \
     '-C[specify number of bits for colormap entries]:bits for colormap entries:(8 16)' \
     '-p[set sample packing]:sample packing:(contig separate)' \
     '-c[specify compression scheme]:compression scheme:->compress' \
-    '-r[specify rows per strip]:rows per strip:' \
-    ':input file:_files -g \*.\(\#i\)tif\(\|f\)' \
-    ':output file:_files -g \*.\(\#i\)tif\(\|f\)' && ret=0
+    '-r[specify rows per strip]:rows per strip' \
+    ':input file:_files -g "*.(#i)tif(|f)(-.)"' \
+    ':output file:_files -g "*.(#i)tif(|f)(-.)"' && ret=0
   ;;
 *)
   _description files expl 'picture file'
@@ -185,7 +185,7 @@ if [[ -n "$state" ]]; then
 	'fill[byte-align EOL codes]' && ret=0
       ;;
     jpeg)
-      _message -e values 'compression quality (0-100), or `r'"'"' (output RGB)'
+      _message -e values "compression quality (0-100), or \`r' (output RGB)"
       ret=0
       ;;
     lzw|zip)
diff --git a/Completion/Unix/Command/_vorbis b/Completion/Unix/Command/_vorbis
index 93122b91c..45772bd8d 100644
--- a/Completion/Unix/Command/_vorbis
+++ b/Completion/Unix/Command/_vorbis
@@ -30,7 +30,7 @@ case $service in
       '(-N --tracknum)'{-N,--tracknum}'[set the track number comment field to the given value]:track number' \
       '(-t --title)'{-t,--title}'[set the track title comment field to title]:title' \
       '(-l --album)'{-l,--album}'[set the album comment field to album]' \
-      '*:wav file:_files -g "(#i)*.wav"' && ret=0
+      '*:wav file:_files -g "(#i)*.wav(-.)"' && ret=0
   ;;
   ogg123)
     _arguments -C -s \
@@ -76,7 +76,7 @@ esac
 case $state in
   oggfiles)
     _wanted files expl 'ogg vorbis file' \
-	_files "$expl[@]" -g '(#i)*.ogg' && return
+	_files "$expl[@]" -g '(#i)*.ogg(-.)' && return
   ;;
   devopts)
     if compset -p '*:'; then
diff --git a/Completion/Unix/Command/_w3m b/Completion/Unix/Command/_w3m
index 1106d5987..4e849ce0c 100644
--- a/Completion/Unix/Command/_w3m
+++ b/Completion/Unix/Command/_w3m
@@ -38,7 +38,7 @@ if [[ -n $state ]]; then
 
   _tags files w3mhistory urls
   while _tags; do
-    _requested files expl 'file' _files -g "*.x#html" && ret=0
+    _requested files expl 'file' _files -g "*.x#html(-.)" && ret=0
     _requested urls expl 'url' _urls && ret=0
     if [[ -s ~/.w3m/history ]] && _requested w3mhistory; then
       w3mhistory=( ${(f)"$(<~/.w3m/history)"} )
diff --git a/Completion/Unix/Command/_xmlsoft b/Completion/Unix/Command/_xmlsoft
index e6425cea7..2af60a253 100644
--- a/Completion/Unix/Command/_xmlsoft
+++ b/Completion/Unix/Command/_xmlsoft
@@ -29,8 +29,8 @@ case $service in
       '--xinclude[do XInclude processing on document input]' \
       '--load-trace[print trace of all external entites loaded]' \
       {--profile,--norman}'[dump profiling information]' \
-      '1:stylesheet:_files -g \*.xsl' \
-      ':file:_files -g \*.xml' && return
+      '1:stylesheet:_files -g "*.xsl(-.)"' \
+      ':file:_files -g "*.xml(-.)"' && return
   ;;
   xmllint)
     local -a encoding
diff --git a/Completion/Unix/Command/_yodl b/Completion/Unix/Command/_yodl
index f52c50b6c..1e9d16e5c 100644
--- a/Completion/Unix/Command/_yodl
+++ b/Completion/Unix/Command/_yodl
@@ -11,4 +11,4 @@ _arguments -s \
   '-v[enable verbose mode]' \
   '-w[enable warnings]' \
   '-h[show usage information]' \
-  '*:YODL input file:_files -g \*.\(\#i\)yo\(\|dl\)'
+  '*:YODL input file:_files -g "*.(#i)yo(|dl)(-.)'
diff --git a/Completion/Unix/Command/_zip b/Completion/Unix/Command/_zip
index 479b05aba..bcba76325 100644
--- a/Completion/Unix/Command/_zip
+++ b/Completion/Unix/Command/_zip
@@ -50,7 +50,7 @@ case $service in
       '(-0 -1 -2 -3 -4 -5 -6 -7 -8   )-9[compress better]' \
       '-x[exclude the following names]' \
       '-i[include only the following names]' \
-      "(-f -d -R -q -c -b -@ -F -FF -A -T -y -e -h -u -m -g -j -l -ll -L -v -z -t -tt -o -D -J -X -n -0 -1 -2 -3 -4 -5 -6 -7 -8 -9):zip file:_files -g '(#i)*.(zip|[ejw]ar)'" \
+      "(-f -d -R -q -c -b -@ -F -FF -A -T -y -e -h -u -m -g -j -l -ll -L -v -z -t -tt -o -D -J -X -n -0 -1 -2 -3 -4 -5 -6 -7 -8 -9):zip file:_files -g '(#i)*.(zip|[ejw]ar)(-.)'" \
       '*:file:->files' && ret=0
   ;;
   unzip)
@@ -75,7 +75,7 @@ case $service in
       '-M[page output]' \
       '-x[exclude the following names]' \
       '-Z[zipinfo mode]:zipinfomode:->zipinfo' \
-      "(-p -f -u -l -t -z -n -o -j -C -X -q -qq -a -aa -v -L -M)1:zip file:_files -g '(#i)*.(zip|[ejw]ar)'" \
+      "(-p -f -u -l -t -z -n -o -j -C -X -q -qq -a -aa -v -L -M)1:zip file:_files -g '(#i)*.(zip|[ejw]ar)(-.)'" \
       '*:file:->files' && ret=0
   ;;
 esac
@@ -98,7 +98,7 @@ if [[ $service == zipinfo ]] || [[ -n $uzi ]]; then
       '(-1 -2)-T[use sortable decimal format for file times]' \
       '-M[page output]' \
       '-x[exclude the following names]' \
-      "(-1 -2 -s -m -l -v -h -z -C -t -T -M)1:zip file:_files -g '(#i)*.(zip|[ejw]ar)'" \
+      "(-1 -2 -s -m -l -v -h -z -C -t -T -M)1:zip file:_files -g '(#i)*.(zip|[ejw]ar)(-.)'" \
       '*:file:->files' && ret=0
 fi
 
@@ -112,7 +112,7 @@ case $state in
   ;;
   files)
     if [[ $service = zip ]] && (( ! ${+opt_args[-d]} )); then
-      _wanted files expl zfile _files -g '^(#i)*.(zip|[ejw]ar)' && return
+      _wanted files expl zfile _files -g '^(#i)*.(zip|[ejw]ar)(-.)' && return
     else
       zipfile=( $~line[1](|.zip|.ZIP) )
       [[ -z $zipfile[1] ]] && return 1
diff --git a/Completion/Unix/Type/_pdf b/Completion/Unix/Type/_pdf
index 7be916b15..18b1ab8f6 100644
--- a/Completion/Unix/Type/_pdf
+++ b/Completion/Unix/Type/_pdf
@@ -13,4 +13,4 @@ if [[ "$1" == '-z' ]]; then
 fi
 
 _description files expl 'PDF file'
-_files "$@" "$expl[@]" -g "*.(#i)pdf$ext"
+_files "$@" "$expl[@]" -g "*.(#i)pdf$ext(-.)"
diff --git a/Completion/Unix/Type/_ps b/Completion/Unix/Type/_ps
index 2f33d235f..6caddd981 100644
--- a/Completion/Unix/Type/_ps
+++ b/Completion/Unix/Type/_ps
@@ -11,4 +11,4 @@ if [[ "$1" == '-z' ]]; then
 fi
 
 _description files expl 'PostScript file'
-_files "$@" "$expl[@]" -g "*.(#i)(ps|eps)$ext"
+_files "$@" "$expl[@]" -g "*.(#i)(ps|eps)$ext(-.)"
diff --git a/Completion/Unix/Type/_pspdf b/Completion/Unix/Type/_pspdf
index 93856164c..16133de8e 100644
--- a/Completion/Unix/Type/_pspdf
+++ b/Completion/Unix/Type/_pspdf
@@ -11,4 +11,4 @@ if [[ "$1" == '-z' ]]; then
 fi
 
 _description files expl 'PostScript or PDF file'
-_files "$@" "$expl[@]" -g "*.(#i)(pdf|ps|eps)$ext"
+_files "$@" "$expl[@]" -g "*.(#i)(pdf|ps|eps)$ext(-.)"
diff --git a/Completion/Unix/Type/_tar_archive b/Completion/Unix/Type/_tar_archive
index c5ab0e9fc..95a864cee 100644
--- a/Completion/Unix/Type/_tar_archive
+++ b/Completion/Unix/Type/_tar_archive
@@ -15,11 +15,11 @@ _description files expl 'archive file'
 
 if [[ "$1" = *[urtx]* ]]; then
   if [[ "$1" = *[zZ]* ]]; then
-    _files "$expl[@]" -g '*.((tar|TAR).(gz|GZ|Z)|tgz)'
+    _files "$expl[@]" -g '*.((tar|TAR).(gz|GZ|Z)|tgz)(-.)'
   elif [[ "$1" = *[Ijy]* ]]; then
-    _files "$expl[@]" -g '*.(tar|TAR).bz2'
+    _files "$expl[@]" -g '*.(tar|TAR).bz2(-.)'
   else
-    _files "$expl[@]" -g '*.(tar|TAR)'
+    _files "$expl[@]" -g '*.(tar|TAR)(-.)'
   fi
 else
   _files "$expl[@]"
diff --git a/Completion/Unix/Type/_tex b/Completion/Unix/Type/_tex
index 6f803d383..0d9130930 100644
--- a/Completion/Unix/Type/_tex
+++ b/Completion/Unix/Type/_tex
@@ -3,4 +3,4 @@
 local expl
 
 _description files expl 'TeX or LaTeX file'
-_files "$expl[@]" -g '*.(tex|TEX|texinfo|texi)'
+_files "$expl[@]" -g '*.(tex|TEX|texinfo|texi)(-.)'
diff --git a/Completion/Unix/Type/_texi b/Completion/Unix/Type/_texi
index ded268c93..fb9c488ca 100644
--- a/Completion/Unix/Type/_texi
+++ b/Completion/Unix/Type/_texi
@@ -3,4 +3,4 @@
 local expl
 
 _description files expl 'texinfo file'
-_files "$expl[@]" -g '*.(texinfo|texi)'
+_files "$expl[@]" -g '*.(texinfo|texi)(-.)'
diff --git a/Completion/X/Command/_acroread b/Completion/X/Command/_acroread
index 051a32151..7ae889914 100644
--- a/Completion/X/Command/_acroread
+++ b/Completion/X/Command/_acroread
@@ -16,10 +16,10 @@ _x_arguments -C \
   '-visual:X visual:_x_visual' \
   '-xrm:X resource specification:_x_resource' \
   '-toPostScript:*::PostScript conversion options:= ->tops' \
-  '*:pdf file:_files -g "*.(#i)pdf"' && return
+  '*:pdf file:_files -g "*.(#i)pdf(-.)"' && return
 
 [[ -n "$state" ]] && _arguments \
-  '-pairs:*:pdf_file_1 ps_file_1 ...:_files -g "*.(#i)(pdf|ps)"' \
+  '-pairs:*:pdf_file_1 ps_file_1 ...:_files -g "*.(#i)(pdf|ps)(-.)"' \
   -binary \
   '-start:integer' \
   '-end:integer' \
@@ -38,6 +38,6 @@ _x_arguments -C \
   -shrink \
   '-size:page size (or custom size wxh in points):(letter tabloid ledger legal executive a3 a4 a5 b4 b5)' \
   '-transQuality:transparency flattening level:(1 2 3 4 5)' \
-  '*:pdf file:_files -g "*.(#i)pdf"' && return
+  '*:pdf file:_files -g "*.(#i)pdf(-.)"' && return
 
 return 1
diff --git a/Completion/X/Command/_gqview b/Completion/X/Command/_gqview
index 309bc1a38..f317ab538 100644
--- a/Completion/X/Command/_gqview
+++ b/Completion/X/Command/_gqview
@@ -9,4 +9,4 @@ _arguments \
   '--debug[turn on debug output]' \
   '(--version -v)'{-v,--version}'[print version info]' \
   '(--help -h)'{-h,--help}'[show help]' \
-  '*:picture file:_files -/ -g \*.\(\#i\)\(jpg\|jpe\|jpeg\|png\|gif\|tif\|tiff\|bmp\)'
+  '*:picture file:_files -g "*.(#i)(jpg|jpe|jpeg|png|gif|tif|tiff|bmp)(-.)"'
diff --git a/Completion/X/Command/_mplayer b/Completion/X/Command/_mplayer
index c465d283e..ea2922b36 100644
--- a/Completion/X/Command/_mplayer
+++ b/Completion/X/Command/_mplayer
@@ -14,7 +14,7 @@ _x_arguments -C -s \
   '-aofile:file:_files' \
   '(-nosound)*-aop[specify audio output filter]:audio output filter:->audio-plugins' \
   '-aspect:ratio' \
-  '-audiofile:audio file:_files -g "(#i)*.(wav|mp3|ogg)"' \
+  '-audiofile:audio file:_files -g "(#i)*.(wav|mp3|ogg)(-.)"' \
   -autoq:quality -autosync:factor \
   -bandwidth:bandwidth\ value -benchmark -bpp:depth \
   '(-nocache)-cache:cache size (kb)' \
@@ -115,7 +115,7 @@ case "$state" in
     _tags files urls
     while _tags; do
       _requested files expl 'video file' _files -g \
-          "*.(#i)(avi|mp3|mpg|mpe|mpeg|m1v|mov|asf|vob|mjpg|wma|wmv|asx|qt|rm|mkv|mka|ogm|ogg)" && ret=0
+          "*.(#i)(avi|mp3|mpg|mpe|mpeg|m1v|mov|asf|vob|mjpg|wma|wmv|asx|qt|rm|mkv|mka|ogm|ogg)(-.)" && ret=0
       if _requested urls; then
         while _next_label urls expl url; do
           _urls "$expl[@]" && ret=0
diff --git a/Completion/X/Command/_x_utils b/Completion/X/Command/_x_utils
index 183f5efb9..2e672fdc0 100644
--- a/Completion/X/Command/_x_utils
+++ b/Completion/X/Command/_x_utils
@@ -24,25 +24,25 @@ xfontsel)
   _xt_arguments \
     -{print,noscaled} \
     '-pattern:font pattern:_x_font' \
-    '-sample:sample text:' \
-    '-sample16:16-bit sample text:'
+    '-sample:sample text' \
+    '-sample16:16-bit sample text'
   ;;
 xfd)
   _xt_arguments \
     '-fn:font: _x_font' \
     -{box,center} \
-    '-start:first character number:' \
+    '-start:first character number' \
     '-bc:box border color:_x_color' \
-    '-rows:number of rows:' \
-    '-columns:number of columns:'
+    '-rows:number of rows' \
+    '-columns:number of columns'
   ;;
 xev)
   _x_arguments \
-    '-bw:border width:' \
+    '-bw:border width' \
     '-bs:type of backing store:(NotUseful WhenMapped Always)' \
     '-id:id:_x_window' \
     '-s[use save-under]' \
-    '-name:window name:' \
+    '-name:window name' \
     '-rv'
   ;;
 xhost)
@@ -103,8 +103,8 @@ xhost)
 xon)
   _arguments \
     -{access,debug,nols} \
-    '-name:window name:' \
-    '-screen:screen number:' \
+    '-name:window name' \
+    '-screen:screen number' \
     '-user:remote user name:_users' \
     ':remote host:_hosts' \
     '(-):command: _command_names -e' \
@@ -113,20 +113,20 @@ xon)
 xsetroot)
   _x_arguments \
     -{help,def,gray,grey,rv} \
-    '-cursor:cursor file:_files -g \*.\(\#i\)\(xbm\|curs\(\|or\)\):mask file:_files -g \*.\(\#i\)\(xbm\|curs\(\|or\)\|mask\)' \
+    '-cursor:cursor file:_files -g \*.\(\#i\)\(xbm\|curs\(\|or\)\):mask file:_files -g \*.\(\#i\)\(xbm\|curs\(\|or\)\|mask\)\(-.\)' \
     '-cursor_name:cursor name:_x_cursor' \
-    '-bitmap:bitmap file:_files -g \*.\(\#i\)xbm' \
-    '-mod:x grid distance (1-16): :y grid distance (1-16):' \
+    '-bitmap:bitmap file:_files -g \*.\(\#i\)xbm\(-.\)' \
+    '-mod:x grid distance (1-16): :y grid distance (1-16)' \
     '-fg:foreground color:_x_color' \
     '-bg:background color:_x_color' \
     '-solid:screen solid color:_x_color' \
-    '-name:root window name:'
+    '-name:root window name'
   ;;
 xwd)
   _x_arguments \
     -{debug,help,nobdrs,xy,frame,root,icmap,screen,silent} \
     '-out:output file:_files' \
-    '-add:pixel change value:' \
+    '-add:pixel change value' \
     '-id:id: _x_window' \
     '-name:name: _x_window -n'
   ;;
@@ -135,8 +135,8 @@ xwud)
     -{help,new,noclick,raw,rv,scale} \
     '-bg:background color:_x_color' \
     '-fg:foreground color:_x_color' \
-    '-in:input file:_files -g \*.\(\#i\)xwd' \
-    '-plane:image plane to display:' \
+    '-in:input file:_files -g \*.\(\#i\)xwd\(-.\)' \
+    '-plane:image plane to display' \
     '-std:standard colormap:(best default gray red blue green)' \
     '-vis:visual:_x_visual'
   ;;
@@ -156,9 +156,9 @@ xrdb)
     '(-query -load -override -remove)-merge' \
     '(-query -load -override -merge)-remove' \
     '-edit:output file:_files' \
-    '-backup:backup extension:' \
-    '*-D-:symbol to define:' \
-    '*-U-:symbol to undefine:' \
+    '-backup:backup extension' \
+    '*-D-:symbol to define' \
+    '*-U-:symbol to undefine' \
     '*-I-:include directory:_files -/' \
     '*:defaults file:_files'
   ;;
diff --git a/Completion/X/Command/_xdvi b/Completion/X/Command/_xdvi
index 7a4461ae1..d55c99485 100644
--- a/Completion/X/Command/_xdvi
+++ b/Completion/X/Command/_xdvi
@@ -3,28 +3,28 @@
 _xt_arguments \
   -+{allowshell,copy,expert,hush{,chars,checksums,specials},keep,l,no{ghostscript,grey,gssafer,makepk,postscript,scan},safer,thorough,underlink,version} \
   +{altfont,base,browser,cr,debug,density,gamma,gspalette,hl,icongeometry,interpreter,margin,mfmode,offsets,p,paper,shrink,S,sidemargin,topmargin,xoffset,yoffset,grid{1,2,3},mgs{,1,2,3,4,5}} \
-  '-altfont:default font:' \
-  '-base:base URL:' \
+  '-altfont:default font' \
+  '-base:base URL' \
   '-browser:WWW browser:_command_names -e' \
   '-cr:cursor color:_x_color' \
   '-debug:debugging bitmask:((1\:bitmaps 2\:dvi\ translation 4\:pk\ reading 8\:batch\ operation 16\:events 32\:file\ opening 64\:PostScript\ communication 128\:Kpathsea\ statistics 256\:Kpathsea\ hash\ table\ lookups 512\:Kpathsea\ path\ definitions 1024\:Kpathsea\ path\ expansion 2048\:Kpathsea\ searches))' \
-  '-density:font shrink density:' \
-  '-gamma:anti-aliasing factor (default 1.0):' \
+  '-density:font shrink density' \
+  '-gamma:anti-aliasing factor (default 1.0)' \
   -grid{1,2,3}':grid color:_x_color' \
   '-gspalette:Ghostscript palette:(Color Greyscale Monochrome)' \
   '-hl:page highlight color:_x_color' \
   '-icongeometry:icon geometry:_x_geometry' \
   '-interpreter:Ghostscript program:_command_names -e' \
-  '-margin:margin size:' \
-  '-mfmode:metafont string:' \
-  -mgs{,1,2,3,4,5}':magnifier size:' \
-  '-offsets:offset size:' \
-  '-p:font size (pixel per inch):' \
+  '-margin:margin size' \
+  '-mfmode:metafont string' \
+  -mgs{,1,2,3,4,5}':magnifier size' \
+  '-offsets:offset size' \
+  '-p:font size (pixel per inch)' \
   '-paper:paper size (<width>x<height> or ...):(us usr legal foolscap a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 c1 c2 c3 c4 c5 c6 c7 a1r a2r a3r a4r a5r a6r a7r)' \
-  '-shrink:shrink factor:' \
-  '-S:font shrink density:' \
-  '-sidemargin:side margin:' \
-  '-topmargin:top margin:' \
-  '-xoffset:horizontal offset:' \
-  '-yoffset:vertical offset:' \
-  '*:DVI file:_files -g \*.\(\#i\)dvi\(\|.Z\|.gz\|.bz2\)'
+  '-shrink:shrink factor' \
+  '-S:font shrink density' \
+  '-sidemargin:side margin' \
+  '-topmargin:top margin' \
+  '-xoffset:horizontal offset' \
+  '-yoffset:vertical offset' \
+  '*:DVI file:_files -g "*.(#i)dvi(|.Z|.gz|.bz2)(-.)"'
diff --git a/Completion/X/Command/_xfig b/Completion/X/Command/_xfig
index cc216a7b4..4d1e38f5f 100644
--- a/Completion/X/Command/_xfig
+++ b/Completion/X/Command/_xfig
@@ -4,31 +4,31 @@ _x_arguments \
   -{help,Landscape,Portrait,debug,dontswitchcmap,flushleft,inches,inverse,latexfonts,left,metric,monochrome,multiple,noscalablefonts,notrack,right,scalablefonts,showallbuttons,single,specialtext,tablet,track} \
   '-bold:bold font:_x_font' \
   '-button:button font:_x_font' \
-  '-but_per_row:number of buttons:' \
+  '-but_per_row:number of buttons' \
   '-cbg:canvas background color:_x_color' \
   '-cfg:canvas foreground color:_x_color' \
-  '-depth:visual depth:' \
+  '-depth:visual depth' \
   '-exportlanguage:export language:(box latex epic eepic eepicemu pictex ibmgl eps ps pstex textyl tpic pic mf acad pcx png gif jpeg tiff ppm xbm xpm)' \
   '-iconGeometry:icon geometry:_x_geometry' \
-  '-internalBW:internal border width:' \
+  '-internalBW:internal border width' \
   '-keyfile:compose key file:_files' \
-  '-magnification:magnification factor:' \
-  '-max_image_colors:maximum number of colors:' \
+  '-magnification:magnification factor' \
+  '-max_image_colors:maximum number of colors' \
   '-normal:normal font:_x_font' \
   '-papersize:output paper size:((Letter\:8.5\"\ x\ 11\" Legal\:8.5\"\ x\ 14\" Ledger\:17\"\ x\ 11\" Tabloid\:11\"\ x\ 17\" A\:8.5\"\ x\ 11\" B\:11\"\ x\ 17\" C\:17\"\ x\ 22\" D\:22\"\ x\ 34\" E\:34\"\ x\ 44\" A4\:21\ cm\ x\ 29.7\ cm A3\:29.7\ cm\ x\ 42\ cm A2\:42\ cm\ x\ 59.4\ cm A1\:59.4\ cm\ x\ 84.1\ cm A0\:84.1\ cm\ x\ 118.9\ cm B%\:18.2\ cm\ x\ 25.7\ cm))' \
-  '-pheight:canvas height:' \
-  '-pwidth:canvas width:' \
+  '-pheight:canvas height' \
+  '-pwidth:canvas width' \
   '-spellcheckcommand:program: _command_names -e' \
-  '-startfillstyle:fill style (-1 to 21):' \
-  '-startfontsize:font size (in points):' \
+  '-startfillstyle:fill style (-1 to 21)' \
+  '-startfontsize:font size (in points)' \
   '-startgridmode:grid mode:((0\:no\ grid 1\:1/4\ inch\ or\ 5\ mm 2\:1/2\ inch\ or\ 1\ cm 3\:1\ inch\ or\ 2\ cm))' \
-  '-startlatexfont:latex font:' \
-  '-startlinewidth:line width:' \
+  '-startlatexfont:latex font' \
+  '-startlinewidth:line width' \
   '-startposnmode:positioning mode:((0\:any 1\:1/16\ inch\ or\ 1\ mm 2\:1/4\ inch\ or\ 5\ mm 3\:1/2\ inch\ or\ 1\ cm 4\:1\ inch\ or\ 2\ cm))' \
-  '-startpsfont:postscript font:' \
-  '-starttextstep:text step:' \
-  '-userscale:scale factor:' \
-  '-userunit:unit string:' \
+  '-startpsfont:postscript font' \
+  '-starttextstep:text step' \
+  '-userscale:scale factor' \
+  '-userunit:unit string' \
   '-visual:visual:_x_visual' \
-  '-zoom:zoom scale:' \
-  '*:xfig file:_files -g \*.\(\#i\)\(\|x\)fig'
+  '-zoom:zoom scale' \
+  '*:xfig file:_files -g "*.(#i)(|x)fig(-.)"'
diff --git a/Completion/X/Command/_xloadimage b/Completion/X/Command/_xloadimage
index 5763385e8..c7c628e4a 100644
--- a/Completion/X/Command/_xloadimage
+++ b/Completion/X/Command/_xloadimage
@@ -46,7 +46,7 @@ _x_arguments "$args[@]" \
   '-default[set root background to default]' \
   '-fit[use default visual and colormap]' \
   '-fullscreen[use whole screen, surrounding image with border]' \
-  "-goto[specify image to display at end]:image name:_files -W ipath -g '*(#i)(${(j:|:)extension})(|${(j:|:)filters})'" \
+  "-goto[specify image to display at end]:image name:_files -W ipath -g '*(#i)(${(j:|:)extension})(|${(j:|:)filters})(-.)'" \
   '(*)-help[display information on options]' \
   '-identity[identify supplied images instead of displaying]' \
   '-install[forcibly install image colormap on focus]' \
@@ -84,7 +84,7 @@ _x_arguments "$args[@]" \
   '*-halftone[force halftone dithering]' \
   '*-invert[invert a monochrome image]' \
   '*-merge[merge image onto the base image]' \
-  "*-name[specify image name]:picture file:_files -W ipath -g '*(#i)(${(j:|:)extension})(|${(j:|:)filters})'" \
+  "*-name[specify image name]:picture file:_files -W ipath -g '*(#i)(${(j:|:)extension})(|${(j:|:)filters})(-.)'" \
   '*-normalize' \
   '*-rotate[rotate image clockwise]:degrees of rotation:(90 180 270)' \
-  "*:picture file:_files -W ipath -g '*(#i)(${(j:|:)extension})(|${(j:|:)filter})'"
+  "*:picture file:_files -W ipath -g '*(#i)(${(j:|:)extension})(|${(j:|:)filter})(-.)'"
diff --git a/Completion/X/Command/_xv b/Completion/X/Command/_xv
index 1a4523eb6..513a953dc 100644
--- a/Completion/X/Command/_xv
+++ b/Completion/X/Command/_xv
@@ -7,11 +7,11 @@ _x_arguments \
   '-bg:background color:_x_color' \
   '-hi:top left shadow color:_x_color' \
   '-lo:bottom right shadow color:_x_color' \
-  '-bw:border width:' \
+  '-bw:border width' \
   '-geometry:geometry:_x_geometry' \
-  '-expand:expansion factor:' \
-  '-aspect:aspect ratio (e.g. 4:3):' \
-  '-ncols:maximum number of colors used:' \
+  '-expand:expansion factor' \
+  '-aspect:aspect ratio (e.g. 4:3)' \
+  '-ncols:maximum number of colors used' \
   '-rmode:root display mode:((0\:tiling 1\:integer\ tiling 2\:mirrored\ tiling 3\:integer\ mirrored\ tiling 4\:centered\ tiling 5\:centered\ tiling\ on\ solid\ background 6\:centered\ tiling\ on\ '\\\''warp'\\\''\ background 7\:centered\ tiling\ on\ '\\\''brick'\\\''\ background 8\:symmetrical\ tiling 9\:symmetrical\ mirrored\ tiling))' \
   '-rfg:root foreground color:_x_color' \
   '-rbg:root background color:_x_color' \
@@ -21,25 +21,25 @@ _x_arguments \
   '-cmtgeometry:comments window geometry:_x_geometry' \
   '-tgeometry:text view window geometry:_x_geometry' \
   '-vsgeometry:visual schauzer geometry:_x_geometry' \
-  '-crop:left border: :top border: :width: :height:' \
+  '-crop:left border: :top border: :width: :height' \
   '-rotate:rotation angle:(0 90 -90 +90 180 -180 +180 270 -270 +270)' \
-  '-gamma:gamma value:' \
-  '-cgamma:red gamma value: :green gamma value: :blue gamma value:' \
+  '-gamma:gamma value' \
+  '-cgamma:red gamma value: :green gamma value: :blue gamma value' \
   '-preset:default preset (1-4):(1 2 3 4)' \
   '-white:'"'"'white'"'"' color:_x_color' \
   '-black:'"'"'black'"'"' color:_x_color' \
-  '-wait:seconds to wait:' \
+  '-wait:seconds to wait' \
   '-visual:visual:_x_visual' \
-  '-cursor:cursor character number:' \
+  '-cursor:cursor character number' \
   '-icgeometry:icon geometry:_x_geometry' \
   '-dir:directory:_files -/' \
   '-flist:file list file:_files' \
-  '-drift:x movement correction: :y movement correction:' \
+  '-drift:x movement correction: :y movement correction' \
   '-mfn:mono spaced font:_x_font' \
   '-name:window name:_x_name' \
-  '-+grabdelay:grab delay (seconds):' \
-  '-gsdev:ghostscript device:' \
-  '-gsres:ghostscript resolution:' \
-  '-gsgeom:ghostscript page size:' \
-  '-DEBUG:debug level:' \
-  '*:picture file:_files -g \*.\(\#i\)\(png\|gif\|jpeg\|jpg\|tiff\|tif\|pbm\|pgm\|ppm\|xbm\|xpm\|ras\(\|t\)\|tga\|rle\|rgb\|bmp\|pcx\|fits\|pm\)'
+  '-+grabdelay:grab delay (seconds)' \
+  '-gsdev:ghostscript device' \
+  '-gsres:ghostscript resolution' \
+  '-gsgeom:ghostscript page size' \
+  '-DEBUG:debug level' \
+  '*:picture file:_files -g \*.\(\#i\)\(png\|gif\|jpeg\|jpg\|tiff\|tif\|pbm\|pgm\|ppm\|xbm\|xpm\|ras\(\|t\)\|tga\|rle\|rgb\|bmp\|pcx\|fits\|pm\)\(-.\)'
diff --git a/Completion/X/Command/_xwit b/Completion/X/Command/_xwit
index 5c6a7f650..eb616adac 100644
--- a/Completion/X/Command/_xwit
+++ b/Completion/X/Command/_xwit
@@ -62,9 +62,9 @@ _regex_arguments _xwit_parse \
   \| "/-iconname$nul/" "$guard" \
      "/$word/" ':option-name:iconname:_x_name' \
   \| "/-bitmap$nul/" "$guard" \
-     "/$word/" ':option-bitmap:bitmap file:_files -g *.xbm' \
+     "/$word/" ':option-bitmap:bitmap file:_files -g *.xbm\(-.\)' \
   \| "/-mask$nul/" "$guard" \
-     "/$word/" ':option-mask:mask file:_files -g *.xbm' \
+     "/$word/" ':option-mask:mask file:_files -g *.xbm\(-.\)' \
   \| "/-iconmove$nul/" "$guard" \
      "/$word/" ':option-iconmove-x:x:' \
      "/$word/" ':option-iconmove-y:y:' \
diff --git a/Completion/Zsh/Command/_autoload b/Completion/Zsh/Command/_autoload
index 81ded019a..50423d51a 100644
--- a/Completion/Zsh/Command/_autoload
+++ b/Completion/Zsh/Command/_autoload
@@ -4,7 +4,7 @@ local expl
 
 if (( $words[(I)[-+]*w*] )); then
   _description files expl 'zwc file'
-  _files "$expl[@]" -g '*.zwc'
+  _files "$expl[@]" -g '*.zwc(-.)'
 else
   _wanted functions expl 'shell function' compadd - ${^fpath}/*(:t)
 fi
diff --git a/Completion/Zsh/Command/_mere b/Completion/Zsh/Command/_mere
index 3dd27728b..bd051e9fa 100644
--- a/Completion/Zsh/Command/_mere
+++ b/Completion/Zsh/Command/_mere
@@ -1,3 +1,3 @@
 #compdef mere
 
-_files -g '*.[1-9]([a-z]|) *.man'
+_files -g '*.[1-9]([a-z]|)(-.) *.man(-.)'