about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Completion/Linux/_rpm49
-rw-r--r--Completion/User/_pbm401
-rw-r--r--Completion/User/_ssh4
3 files changed, 323 insertions, 131 deletions
diff --git a/Completion/Linux/_rpm b/Completion/Linux/_rpm
index a206a397b..5f6843267 100644
--- a/Completion/Linux/_rpm
+++ b/Completion/Linux/_rpm
@@ -54,21 +54,22 @@ _arguments -s \
   '--rcfile:resource file:_files' \
   '--ftpproxy:FTP proxy server:_hosts' \
   '--ftpport:FTP port number:' \
-  '-q:*:query:->query' \
-  '*-v' \
-  -{V,y,-{setperms,setugids,querytags,initdb,showrc}} \
-  '-pipe:pipe command:_command_names -e' \
-  '--verify:*:verify:->verify' \
-  '-i+:*:install:->install' \
+  '-q+[query mode]:*:query:->query' \
+  '*-v[verbose mode]' \
+  --{setperms,setugids,querytags,initdb,showrc} \
+  '--pipe:pipe command:_command_names -e' \
+  -{V,y}'[verify mode]:*:verify:->verify' \
+  '--verify[verify mode]:*:verify:->verify' \
+  '-i+[install mode]:*:install:->install' \
   '--install:*:install:->install' \
-  '-U+:*:upgrade:->upgrade' \
+  '-U+[upgrade mode]:*:upgrade:->upgrade' \
   '--upgrade:*:upgrade:->upgrade' \
-  '-e+:*:uninstall:->uninstall' \
+  '-e+[uninstall mode]:*:uninstall:->uninstall' \
   '--erase:*:uninstall:->uninstall' \
-  -'b+:build stage:((p\:execute\ \%prep\ stage l\:do\ a\ list\ check c\:execute\ build\ stage i\:execute\ install\ stage b\:build\ a\ binary\ package a\:build\ binary\ and\ source\ packages)):*:build:->build_b' \
-  -'t+:build stage:((p\:execute\ \%prep\ stage l\:do\ a\ list\ check c\:execute\ build\ stage i\:execute\ install\ stage b\:build\ a\ binary\ package a\:build\ binary\ and\ source\ packages)):*:build:->build_t' \
+  -'b+[build mode (spec file)]:build stage:((p\:execute\ \%prep\ stage l\:do\ a\ list\ check c\:execute\ build\ stage i\:execute\ install\ stage b\:build\ a\ binary\ package a\:build\ binary\ and\ source\ packages)):*:build:->build_b' \
+  -'t+[build mode (tar file)]:build stage:((p\:execute\ \%prep\ stage l\:do\ a\ list\ check c\:execute\ build\ stage i\:execute\ install\ stage b\:build\ a\ binary\ package a\:build\ binary\ and\ source\ packages)):*:build:->build_t' \
   --{rebuild,rmsource,recompile,resign,addsign}':*:RPM package:->package' \
-  '-K+:*:sigcheck:->sigcheck' \
+  '-K+[signature check mode]:*:sigcheck:->sigcheck' \
   '--checksig:*:sigcheck:->sigcheck' \
   '--rebuilddb:*:rebuild:->rebuild' && ret=0
 
@@ -91,15 +92,15 @@ while [[ -n "$state" ]]; do
   case "$lstate" in
   query)
     _arguments -s \
-      '*-v' \
+      '*-v[verbose mode]' -q \
       '--rcfile:resource file:_files' \
       '--ftpproxy:FTP proxy server:_hosts' \
       '--ftpport:FTP port number:' \
       '--root:RPM root directory:_files -/' \
       '--dbpath:RPM database path:_files -/' \
       '--queryformat:RPM query format:->tags' \
-      '-f:file:_files' \
-      '-p:RPM package file:->package_file' \
+      '-f[specify file to query owner of]:file:_files' \
+      '-p[specify uninstalled package file to query]:RPM package file:->package_file' \
       '--triggeredby:RPM package:->package' \
       '--whatprovides:RPM capability:->capability' \
       '--whatrequires:RPM capability:->capability' \
@@ -107,7 +108,7 @@ while [[ -n "$state" ]]; do
     ;;
   verify)
     _arguments -s \
-      '*-v' \
+      '*-v[verbose mode]' '(-y)-V' '(-V)-y' \
       '--rcfile:resource file:_files' \
       '--ftpproxy:FTP proxy server:_hosts' \
       '--ftpport:FTP port number:' \
@@ -122,11 +123,13 @@ while [[ -n "$state" ]]; do
   install)
     (( $#tmp )) || tmp=(-i)
     _arguments -s "$tmp[@]" \
-      '*-v' \
+      '*-v[verbose mode]' \
       '--rcfile:resource file:_files' \
       '--ftpproxy:FTP proxy server:_hosts' \
       '--ftpport:FTP port number:' \
-      -{-{badreloc,excludedocs,force,hash,allfiles,ignorearch,ignoreos,includedocs,justdb,nodeps,noorder,noscripts,notriggers,percent,replacefiles,replacepkgs,test},h} \
+      '(-h)--hash' '(--hash)-h' \
+      '(--replacepkgs --replacefiles --oldpackage)--force' \
+      --{badreloc,excludedocs,allfiles,ignorearch,ignoreos,includedocs,justdb,nodeps,noorder,noscripts,notriggers,percent,replacefiles,replacepkgs,test} \
       '--relocate:relocate:->relocate' \
       '--prefix:package prefix directory:_files -/' \
       '--root:RPM root directory:_files -/' \
@@ -135,7 +138,7 @@ while [[ -n "$state" ]]; do
     ;;
   uninstall)
     _arguments -s \
-      '*-v' -e \
+      '*-v[verbose mode]' -e \
       '--rcfile:resource file:_files' \
       '--ftpproxy:FTP proxy server:_hosts' \
       '--ftpport:FTP port number:' \
@@ -151,7 +154,7 @@ while [[ -n "$state" ]]; do
     (( $#tmp )) || tmp=( '*:tar file:_files -g \*.\(\#i\)tar\(.\*\|\)' )
 
     _arguments -s \
-      '*-v' \
+      '*-v[verbose mode]' \
       '--rcfile:resource file:_files' \
       '--ftpproxy:FTP proxy server:_hosts' \
       '--ftpport:FTP port number:' \
@@ -163,7 +166,7 @@ while [[ -n "$state" ]]; do
     ;;
   sigcheck)
     _arguments -s \
-      '*-v' -K \
+      '*-v[verbose mode]' -K \
       '--rcfile:resource file:_files' \
       '--ftpproxy:FTP proxy server:_hosts' \
       '--ftpport:FTP port number:' \
@@ -172,7 +175,7 @@ while [[ -n "$state" ]]; do
     ;;
   rebuild)
     _arguments -s \
-      '*-v' \
+      '*-v[verbose mode]' \
       '--rcfile:resource file:_files' \
       '--ftpproxy:FTP proxy server:_hosts' \
       '--ftpport:FTP port number:' \
@@ -188,11 +191,13 @@ while [[ -n "$state" ]]; do
     compadd "$expl[@]" -M 'r:|-=* r:|=*' - $(rpm -qa) && ret=0
     ;;
   package_file)
-    if compset -P ftp:; then
+    if compset -P ftp://; then
       _hosts -S/ && ret=0
     else
       _description expl 'RPM package file'
       _files "$expl[@]" -g '*.(#i)rpm' && ret=0
+      _description expl 'ftp URL prefix'
+      compadd "$expl[@]" ftp://
     fi
     ;;
   tags)
diff --git a/Completion/User/_pbm b/Completion/User/_pbm
index e118627f0..f76c3b297 100644
--- a/Completion/User/_pbm
+++ b/Completion/User/_pbm
@@ -3,7 +3,7 @@
 # Completion for all (or most, you'll never know) pbmplus commands.
 # For some of them there are special cases in the biggish `case' below.
 # Note that since this function is a post-pattern function, these
-# defaults can be overridden by simple defining completion functions
+# defaults can be overridden by simply defining completion functions
 # for those commands whose arguments you want to complete differently.
 
 local pat expl ret=1
@@ -26,44 +26,68 @@ if [[ $# -ne 0 || $+_in_pbm -ne 0 ]]; then
 fi
 
 local _in_pbm=yes
-  
+
 case "$words[1]" in
-asciitopnm)
-  _arguments '-d:divisor:' ':height:' ':width:' ':file: _pbm'
+asciitop[gn]m)
+  _arguments \
+    '-d[specify divisor]:divisor:' \
+    ':height:' ':width:' ':file: _pbm'
   ;;
 
 fitstopgm)
-  _arguments '-image:image number:' ':file: _pbm'
+  _arguments \
+    '-image[specify image number]:image number:' 
+    ':file: _pbm'
   ;;
 
 fitstopnm)
-  _arguments -{noraw,scanmax,printmax} '-image:image number:' \
-             '-min:minimum value:' '-max:maximum value:' ':file: _pbm'
+  _arguments \
+    '-image[specify image number]:image number:' 
+    '-noraw[produce ASCII pnm file]' \
+    '(-min -max)-scanmax[force scanning data for minimum and maximum]' \
+    '-printmax[only print minimum and maximum values]' \
+    '(-scanmax)-min[override minimum value]:minimum value:' \
+    '(-scanmax)-max[override maximum value]:maximum value:' \
+    ':file: _pbm'
   ;;
 
 g3topbm)
-  _arguments -{kludge,reversebits,stretch} ':file: _pbm'
+  _arguments \
+    '-kludge[ignore first few lines]' \
+    '-reversebits[interpret bits least-significant first]' \
+    '-stretch[duplicate each row]' \
+    ':file: _pbm'
   ;;
 
 giftopnm)
-  _arguments -{verbose,comments} '-image:image number:' \
-             ':file: _pbm'
+  _arguments \
+    '-verbose[verbose mode]' \
+    '-comments[only print comment fields]'
+    '-image[specify image number]:image number:' \
+    ':file: _pbm'
   ;;
-
 macptopbm)
   _arguments '-extraskip:number of bytes to skip:' ':file: _pbm'
   ;;
 
 pbmclean)
-  _arguments '-connect' ':file: _pbm'
+  if [[ "$PREFIX" = -* ]]; then
+    _message 'maximum number of identical neighbours'
+  else
+    _pbm
+  fi
   ;;
 
 pbmmake)
-  _arguments -{white,black,gray} ':width:' ':height:'
+  _arguments \
+    '(-black -gray)-white[produce white pbm file]' \
+    '(-white -gray)-black[produce black pbm file]' \
+    '(-white -black)-gray[produce gray pbm file (stippled)]' \
+    ':width:' ':height:'
   ;;
 
 pbmmask)
-  _arguments '-expand' ':file: _pbm'
+  _arguments '-expand[expand mask by one pixel]' ':file: _pbm'
   ;;
 
 pbmpscale)
@@ -71,16 +95,23 @@ pbmpscale)
   ;;
 
 pbmreduce)
-  _arguments -{floyd,fs,threshold} '-value:threshold value:' \
-             ':reduction factor:' ':file: _pbm'
+  _arguments \
+    '(-fs -threshold)-floyd[use Floyd-Steinberg error diffusion]' \
+    '(-floyd -threshold)-fs[use Floyd-Steinberg error diffusion]' \
+    '(-floy -fs)-threshold[use simple thresholding]' \
+    '-value[specify thresholding value]:threshold value:' \
+    ':reduction factor:' ':file: _pbm'
   ;;
 
 pbmtext)
-  _arguments '-font:font file:_files -g \*.\(\#i\)pbm' '*:text:'
+  _arguments \
+    '(-builtin)-font[specify font file]:font file:_files -g \*.\(\#i\)pbm' \
+    '(-font)-builtin[select builtin font]:builtin font:(bdf fixed)' \
+    '*:text:'
   ;;
 
 pbmto10x)
-  _arguments '-h' ':file: _pbm'
+  _arguments '-h[use resolution 120 x 144]' ':file: _pbm'
   ;;
 
 pbmtobg|pbmtobbnbg)
@@ -88,24 +119,37 @@ pbmtobg|pbmtobbnbg)
   ;;
 
 pbmtoepsi)
-  _arguments '-bbonly' ':file: _pbm'
+  _arguments '-bbonly[only create boundary box]' ':file: _pbm'
   ;;
 
 pbmtolj)
-  _arguments '-resolution:resolution:(75 100 150 300)' ':file: _pbm'
+  _arguments \
+    '-float[suppress positioning information]' \
+    '-norest[don'"'"'t write reset sequences]' \
+    '-resolution[specify output device resolution]:resolution:(75 100 150 300)' \
+    ':file: _pbm'
   ;;
 
 pbmtoln03)
-  _arguments -{l:left,r:right,t:top,b:bottom}' margin:' \
-             '-f:form length:' ':file: _pbm'
+  _arguments \
+    '-l[specify left margin]:left margin:' \
+    '-r[specify right margin]:right margin:' \
+    '-t[specify top margin]:top margin:' \
+    '-b[specify bottom margin]:bottom margin:' \
+    '-f[specify form length]:form length:' ':file: _pbm'
   ;;
 
 pbmtolps)
-  _arguments '-dpi:resolution:' ':file: _pbm'
+  _arguments '-dpi[specify output resolution]:resolution:' ':file: _pbm'
   ;;
 
 pbmtomacp)
-  _arguments -{l:left,r:right,t:top,b:bottom}' offset:' ':file: _pbm'
+  _arguments \
+    '-l[specify left offset]:left offset:' \
+    '-r[specify right offset]:right offset:' \
+    '-t[specify top offset]:top offset:' \
+    '-b[specify bottom offset]:bottom offset:' \
+    ':file: _pbm'
   ;;
 
 pbmtopgm)
@@ -115,13 +159,23 @@ pbmtopgm)
 pbmtopk)
   # This could be improved...
   
-  _arguments '-s:design size:' '-C:coding scheme:' '-F:font family:' \
-             '-f:option file:_files' '-c:character number:' \
-             '-W:width:' '-H:height:' '-D:depth:' '-I:italic correction:' \
-             '-h:horizontal escapement:' '-v:vertical escapement:' \
-             '-x:x offset:' '-y:y offset:' \
-             ':pk file:_files -g \*.\(\#i\)pk' ':tfm file:_files -g \*.\(\#i\)tfm' \
-             '*:file: _pbm'
+  _arguments \
+    '-s[set design size]:design size:' \
+    '-C[set coding scheme]:coding scheme:' \
+    '-F[set font family comment]:font family:' \
+    '-f[specify file with options]:option file:_files' \
+    '*-c[specify next character number]:character number:' \
+    '*-W[specify TFM width of next character]:width:' \
+    '*-H[specify TFM height of next character]:height:' \
+    '*-D[specify TFM depth of next character]:depth:' \
+    '*-I[specify italic correction of next character]:italic correction:' \
+    '*-h[specify horizontal escapement of next character]:horizontal escapement:' \
+    '*-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' \
+    '*:file: _pbm'
   ;;
 
 pbmupc)
@@ -130,8 +184,13 @@ pbmupc)
   ;;
 
 pgmcrater)
-  _arguments '-number:number of craters:' '-gamma:factor:' \
-             -{height,ysize}:height: -{width,xsize}:width:
+  _arguments \
+    '-number[specify number of craters]:number of craters:' \
+    '-gamma[specify gamma correction factor]:gamma factor:' \
+    '(-ysize)-height[specify picture height]:height:' \
+    '(-height)-ysize[specify picture height]:height:' \
+    '(-xsize)-width[specify picture width]:width:' \
+    '(-width)-xsize[specify picture width]:width:'
   ;;
 
 pgmkernel)
@@ -143,26 +202,48 @@ pgmnoise)
   ;;
 
 pgmnorm|ppmnorm)
-  _arguments '-bpercent:black percentage:' '-bvalue:black pixel value:' \
-             '-wpercent:white percentage:' '-wvalue:white pixel value:' \
-             ':file: _pbm'
+  _arguments \
+    '(-bvalue)-bpercent[specify percentage to map to black]:black percentage:' \
+    '(-bpercent)-bvalue[specify pixel value to map to black]:black pixel value:' \
+    '(-wvalue)-wpercent[specify percentage to map to white]:white percentage:' \
+    '(-wpercent)-wvalue[specify pixel value to map to white]:white pixel value:' \
+    ':file: _pbm'
   ;;
 
 pgmoil)
-  _arguments '-n:smear size:' ':file: _pbm'
+  _arguments '-n[specify smear size]:smear size:' ':file: _pbm'
   ;;
 
 pgmramp)
-  _arguments -{lr,tb,rectangle,ellipse} ':width:' ':height:'
+  _arguments \
+    '(-tb -rectangle -ellipse)-lr[produce left to right ramp]' \
+    '(-lr -rectangle -ellipse)-tb[produce top to bottom ramp]' \
+    '(-lr -tb -ellipse)-rectangle[produce rectangular ramp]' \
+    '(-lr -tb -rectangle)-ellipse[produce elliptical ramp]' \
+    ':width:' ':height:'
   ;;
 
 pgmtexture)
-  _arguments '-d:distance:' ':file: _pbm'
+  _arguments '-d[specify distance]:distance:' ':file: _pbm'
   ;;
 
 pgmtopbm)
-  _arguments -{floyd,fs,threshold,dither8,d8,cluster3,c3,cluster4,c4,cluster8,c8} \
-             '-value:threshold value:' ':file: _pbm'
+  _arguments \
+    '(-fs -threshold -hilbert -dither8 -d8 -cluster3 -c3 -cluster4 -c4 -cluster8 -c8 -clump)-floyd[use FLoyd-Steinberg error diffusion]' \
+    '(-floyd -threshold -hilbert -dither8 -d8 -cluster3 -c3 -cluster4 -c4 -cluster8 -c8 -clump)-fs[use FLoyd-Steinberg error diffusion]' \
+    '(-floyd -fs -hilbert -dither8 -d8 -cluster3 -c3 -cluster4 -c4 -cluster8 -c8 -clump)-threshold[use simple thresholding]' \
+    '(-floyd -fs -threshold -dither8 -d8 -cluster3 -c3 -cluster4 -c4 -cluster8 -c8 -value)-hilbert[use space filling curve halftoning (hilbert curve)]' \
+    '(-floyd -fs -threshold -hilbert -d8 -cluster3 -c3 -cluster4 -c4 -cluster8 -c8 -value -clump)-dither8[use Bayer'"'"'s ordered dither (16 x 16 matrix)]' \
+    '(-floyd -fs -threshold -hilbert -dither8 -cluster3 -c3 -cluster4 -c4 -cluster8 -c8 -value -clump)-d8[use Bayer'"'"'s ordered dither (16 x 16 matrix)]' \
+    '(-floyd -fs -threshold -hilbert -dither8 -d8 -c3 -cluster4 -c4 -cluster8 -c8 -value -clump)-cluster3[use 45 degree clustered dither]' \
+    '(-floyd -fs -threshold -hilbert -dither8 -d8 -cluster3 -cluster4 -c4 -cluster8 -c8 -value -clump)-c3[use 45 degree clustered dither]' \
+    '(-floyd -fs -threshold -hilbert -dither8 -d8 -cluster3 -c3 -c4 -cluster8 -c8 -value -clump)-cluster4[use 45 degree clustered dither]' \
+    '(-floyd -fs -threshold -hilbert -dither8 -d8 -cluster3 -c3 -cluster4 -cluster8 -c8 -value -clump)-c4[use 45 degree clustered dither]' \
+    '(-floyd -fs -threshold -hilbert -dither8 -d8 -cluster3 -c3 -cluster4 -c4 -c8 -value -clump)-cluster8[use 45 degree clustered dither]' \
+    '(-floyd -fs -threshold -hilbert -dither8 -d8 -cluster3 -c3 -cluster4 -c4 -cluster8 -value -clump)-c8[use 45 degree clustered dither]' \
+    '-value[specify thresholding value]:threshold value:' \
+    '-clump[specify number of pixels per clump]:number of pixel:' \
+':file: _pbm'
   ;;
 
 pgmtoppm)
@@ -186,30 +267,54 @@ pgmtoppm)
   ;;
 
 pktopbm)
-  _arguments ':pk file:_files -g \*.\(\#i\)pk' '-c:character number:' \
-             '*:file: _pbm'
+  _arguments \
+    '*-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' \
+    '*:file: _pbm'
   ;;
 
 pnmalias)
-  _arguments '-bgcolor:background color:_x_color' \
-             '-fgcolor:foreground color:_x_color' \
-             -{f,b}only -{f,b}alias \
-             '-weight:central aliasing weight:' ':file: _pbm'
+  _arguments \
+    '-bgcolor[specify background color]:background color:_x_color' \
+    '-fgcolor[specify background color]:foreground color:_x_color' \
+    '(-bonly)-fonly[apply antialias only to foreground pixels]' \
+    '(-fonly)-bonly[apply antialias only to background pixels]' \
+    '(-balias)-falias[apply antialias to all pixels around foreground pixels]' \
+    '(-falias)-balias[apply antialias to all pixels around foreground pixels]' \
+    '-weight[set central aliasing weight]:central aliasing weight:' \
+    ':file: _pbm'
   ;;
 
 pnmarith)
-  _arguments -{add,subtract,multiply} '*:file: _pbm'
+  _arguments \
+    -{add,subtract,multiply,difference,minimum,maximum} \
+    '*:file: _pbm'
   ;;
 
 pnmcat)
-  _arguments -{white,black,leftright,lr,topbottom,tb,jtop,jbottom,jleft,jright} \
-             '*:file: _pbm'
+  _arguments \
+    '(-black)-white[]' \
+    '(-white)-black[]' \
+    '(-lr -topbottom -tb -jleft -jright)-leftright[place pictures left to right]' \
+    '(-leftright -topbottom -tb -jleft -jright)-lr[place pictures left to right]' \
+    '(-tb -leftright -lr -jtop -jbottom)-topbottom[place pictures top to bottom]' \
+    '(-topbottom -leftright -lr -jtop -jbottom)-tb[place pictures top to bottom]' \
+    '(-topbottom -tb -jbottom -jleft -jright)-jtop[align pictures at top]' \
+    '(-topbottom -tb -jtop -jleft -jright)-jbottom[align pictures at bottom]' \
+    '(-leftright -lr -jright -jtop -jbottom)-jleft[align pictures at left side]' \
+    '(-leftright -lr -jleft -jtop -jbottom)-jright[align pictures at right side]' \
+    '*:file: _pbm'
   ;;
 
 pnmcomp)
-  _arguments '-invert' '-xoff:x offset:' '-yoff:y offset:' \
-             '-alpha:alpha mask file:_files -g \*.\(\#i\)pgm' \
-             ':overlay file:_pbm' '*:file: _pbm'
+  _arguments \
+    '-invert[invert overlay pixel values]' \
+    '-xoff[specify overlay x offset]:x offset:' \
+    '-yoff[specify overlay y offset]:y offset:' \
+    '-alpha[specify alpha mask file]:alpha mask file:_files -g \*.\(\#i\)pgm' \
+    ':overlay file:_pbm' '*:file: _pbm'
   ;;
 
 pnmconvol)
@@ -217,7 +322,11 @@ pnmconvol)
   ;;
 
 pnmcrop)
-  _arguments -{white,black} ':file: _pbm'
+  _arguments \
+    '(-black)-white' \
+    '(-white)-black' \
+    -{left,right,top,bottom} \
+    ':file: _pbm'
   ;;
 
 pnmcut)
@@ -233,7 +342,7 @@ pnmenlarge)
   ;;
 
 pnmflip)
-  _arguments -{leftright,lr,topbottom,tb,transpose,xy,rotate90,r90,ccw,rotate270,r270,cw} \
+  _arguments \*-{leftright,lr,topbottom,tb,transpose,xy,rotate90,r90,ccw,rotate270,r270,cw} \
              ':file: _pbm'
   ;;
 
@@ -252,18 +361,34 @@ pnmgamma)
   return ret
   ;;
 
+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' \
+    ':file: _pbm'
+  ;;
 pnmhistmap)
   _arguments -{black,white,verbose} '-max:maximum value:' ':file: _pbm'
   ;;
 
 pnmindex)
-  _arguments '-size:image size:' '-across:images per row:' \
-             '-colors:number of colors:' '-black' '*:file: _pbm'
+  _arguments \
+    '-size[set size of index pictures]:image size:' \
+    '-across[specify number of pictures per ros]:images per row:' \
+    '-colors[specify maximum number of colors]:number of colors:' \
+    '-black[use black padding]' \
+    '*:file: _pbm'
   ;;
 
 pnmmargin)
-  _arguments -{white,black} '-color:color: _x_color' \
-             ':border width:' ':file: _pbm'
+  _arguments \
+    '(-black -colors)-white' \
+    '(-white -colors)-black' \
+    '(-white -black)-color:color: _x_color' \
+    ':border width:' \
+    ':file: _pbm'
   ;;
 
 pnmnlfilt)
@@ -271,14 +396,25 @@ pnmnlfilt)
   ;;
 
 pnmpad)
-  _arguments -{black,white} \
-             -{l-:left,r-:right,t-:top,b-:bottom}' border width:' \
-             ':file: _pbm'
+  _arguments \
+    '(-white)-black[add black border]' \
+    '(-black)-white[add white border]' \
+    '-l-[specify left border width]:left border width:' \
+    '-r-[specify right border width]:right border width:' \
+    '-t-[specify top border width]:top border width:' \
+    '-b-[specify bottom border width]:bottom border width:' \
+    ':file: _pbm'
   ;;
 
 pnmpaste)
-  _arguments -{replace,or,and,xor} ':"from" picture file:_pbm' \
-             :{x,y}' position:'    ':"into" picture file:_pbm'
+  _arguments \
+    '(-or -and -xor)-replace' \
+    '(-replace -and -xor)-or' \
+    '(-replace -or -xor)-and' \
+    '(-replace -or -and)-xor' \
+     ':"from" picture file:_pbm' \
+    :{x,y}' position:' \
+    ':"into" picture file:_pbm'
   ;;
 
 pnmrotate)
@@ -294,11 +430,17 @@ pnmscale)
     scale=( ':scale factor:' )
   fi
   
-  _arguments -{xsize,width}:width: -{ysize,height}:height: \
-             '-xscale:horizontal scale factor:' \
-             '-yscale:vertical scale factor:' \
-             '-xysize:width::height:' "$scale[@]" \
-             ':file: _pbm'
+  _arguments
+    '(-width)-xsize:width:' \
+    '(-xsize)-width:width:' \
+    '(-height)-ysize:height:' \
+    '(-ysize)-height:height:' \
+    '-xscale:horizontal scale factor:' \
+    '-yscale:vertical scale factor:' \
+    '(-width -xsize -height -ysize -xscale -yscale -pixels)-xysize:width::height:' \
+    '(-width -xsize -height -ysize -xscale -yscale -xysize)-pixels:total number of pixels:' \
+    "$scale[@]" \
+    ':file: _pbm'
   ;;
 
 pnmshear)
@@ -319,23 +461,39 @@ pnmtofits)
   ;;
 
 pnmtops)
-  _arguments -{turn,noturn,rle,runlength} '-scale:scale factor:' \
-             '-dpi:output resolution:' \
-             '-width:page width:' '-height:page height' ':file: _pbm'
+  _arguments \
+    '(-noturn)-turn' '(-turn)-noturn' \
+    '(-nocenter)-center '(-center)-nocenter \
+    '(-rle)-runlength' '(-runlength)-rle' \
+    '-scale:scale factor:' \
+    '-dpi:output resolution:' \
+    '-width:page width:' '-height:page height' ':file: _pbm'
   ;;
 
 pnmtorast)
-  _arguments -{standard,rle} ':file: _pbm'
+  _arguments '(-rle)-standard' '(-standard)-rle' ':file: _pbm'
   ;;
 
 pnmtosgi)
-  _arguments -{verbatim,rle} '-imagename:image name:' ':file: _pbm'
+  _arguments \
+    '(-rle)-verbatim' '(-verbatim)-rle' \
+    '-imagename:image name:' \
+    ':file: _pbm'
   ;;
 
 pnmtotiff)
-  _arguments -{none,packbits,lzw,g3,g4,2d,fill,msb2lsb,lsb2msb} \
-             '-predictor:LZW predictor:((1\:without\ differencing 2\:with\ differencing))' \
-             '-rowsperstrip:number of rows per strip:' ':file: _pbm'
+  _arguments \
+    '(-packbits -lzw -g3 -g4 -2d -fill -predictor)-none' \
+    '(-none -lzw -g3 -g4 -2d -fill -predictor)-packbits' \
+    '(-none -packbits -g3 -g4 -2d -fill -predictor)-lzw' \
+    '(-none -packbits -lzw -g4 -predictor)-g3' \
+    '(-none -packbits -lzw -g3 -2d -fill -predictor)-g4' \
+    '-2d' \
+    '-fill' \
+    '(-lsb2msb)-msb2lsb' \
+    '(-msb2lsb)-lsb2msb' \
+    '-predictor:LZW predictor:((1\:without\ differencing 2\:with\ differencing))' \
+    '-rowsperstrip:number of rows per strip:' ':file: _pbm'
   ;;
 
 pnmtoxwd)
@@ -348,7 +506,11 @@ ppm3d)
   ;;
 
 ppmbrighten)
-  _arguments '-n' '-s:saturation:' '-v:value:' ':file: _pbm'
+  _arguments \
+    '-n[normalize value]' \
+    '-s[specify saturation difference]:saturation difference:' \
+    '-v[specify value difference]:value difference:' \
+    ':file: _pbm'
   ;;
 
 ppmchange)
@@ -370,7 +532,10 @@ ppmdim)
   ;;
 
 ppmdist)
-  _arguments -{intensity,frequency} ':file: _pbm'
+  _arguments \
+    '(-frequency)-intensity[sort colors by grayscale intensity]' \
+    '(-intensity)-frequency[sort colors by frequency]' \
+    ':file: _pbm'
   ;;
 
 ppmdither)
@@ -388,14 +553,15 @@ ppmflash)
 ppmforge)
   _arguments -{clouds,night} \
              '-dimension:fractal dimension:' '-hour:hour angle:' \
-             '-inclination:inclination angle:' \
-             '-tilt:inclination angle:' \
+             '(-tilt)-inclination:inclination angle:' \
+             '(-inclination)-tilt:inclination angle:' \
              '-mesh:FFT mesh size:' '-power:elevations power factor:' \
              '-glaciers:glacier elevation:' '-ice:polar ice cap extent:' \
              '-saturation:star color saturation:' \
              '-seed:randum number seed:' \
              '-stars:minimum star pixel percentage:' \
-             -{width,xsize}:width: -{height,ysize}:height:
+ 	     '(-xsize)-width:width:'   '(-width)-xsize:width:' \
+ 	     '(-ysize)-height:height:' '(-height)-ysize:height:'
   ;;
 
 ppmmake)
@@ -411,7 +577,7 @@ ppmntsc)
   ;;
 
 ppmpat)
-  _arguments -{gingham{2,3},g{2,3},madras,tartan,poles,squig,camo,anticamo} \
+  _arguments '(gingham2 -gingham3 -g2 -g3 -madras -tartan -poles -squig -camo -anticamo)'-{gingham{2,3},g{2,3},madras,tartan,poles,squig,camo,anticamo} \
              ':width:' ':height:'
   ;;
 
@@ -455,12 +621,18 @@ ppmspread)
   ;;
 
 ppmtoacad)
-  _arguments -{dxb,poly,white,8} '-background:background color:_x_color' \
-             '-aspect:pixel aspect ratio:' ':file: _pbm'
+  _arguments \
+    '(-poly)-dxb[write AutoCAD binary database import file]' \
+    '(-dxb)-poly[render pixels as filled polygons]' \
+    '-8[restrict colors to the 8 RGB shades]' \
+    '(-background)-white[use white background]' \
+    '(-white)-background:background color (0-255):' \
+    '-aspect:pixel aspect ratio:' \
+    ':file: _pbm'
   ;;
 
 ppmtobmp)
-  _arguments -{os2,windows} ':file: _pbm'
+  _arguments '(-windows)-os2' '(-os2)-windows' ':file: _pbm'
   ;;
 
 ppmtogif)
@@ -496,12 +668,17 @@ ppmtopj)
   ;;
 
 ppmtopjxl)
-  _arguments -{nopack,presentation,dark,diffuse,cluster,dither} \
-             '-gamma:gamma value:' \
-             '-xshift:x shift:' '-yshift:y shift:' \
-             -{xscale:x,yscale:y}' scale factor:' \
-             -{xsize,width}:width: -{ysize,height}:height: \
-             ':file: _pbm'
+  _arguments \
+    -{nopack,presentation,dark,diffuse,cluster,dither} \
+    '-gamma:gamma value:' \
+    '-xshift:x shift:' '-yshift:y shift:' \
+    '(-width -xscale)-xscale:width:' \
+    '(-xsize -xscale)-width:width:' \
+    '(-xsize -width)-xscale:horizontal scale factor:' \
+    '(-height -yscale)-ysize:height:' \
+    '(-ysize -yscale)-height:height:' \
+    '(-ysize -height)-yscale:vertical scale factor:' \
+    ':file: _pbm'
   ;;
 
 ppmtosixel)
@@ -524,15 +701,20 @@ psidtopgm)
   _arguments ':width:' ':height:' ':bits per sample:' \
              ':postscript file:_files -g \*.\(\#i\)\(ps\|eps\)'
   ;;
-
 pstopnm)
-  _arguments -{forceplain,help,landscape,portrait,nocrop,pbm,pgm,ppm,verbose} \
-             '-llx:loxer left x position:' '-lly:lower left y position:' \
-             '-urx:upper right x position:' '-ury:upper right y position:' \
-             '-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\)'
+  _arguments \
+    '(-portrait)-landscape' \
+    '(-landscape)-portrait' \
+    '(-pgm -ppm)-pbm' \
+    '(-pbm -ppm)-pgm' \
+    '(-pbm -pgm)-ppm' \
+    -{forceplain,help,nocrop,verbose} \
+    '-llx:loxer left x position:' '-lly:lower left y position:' \
+    '-urx:upper right x position:' '-ury:upper right y position:' \
+    '-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\)'
   ;;
 
 rawtopgm)
@@ -542,10 +724,13 @@ rawtopgm)
   ;;
 
 rawtoppm)
-  _arguments '-headerskip:header bytes to skip:' \
-             '-rowskip:row padding to skip:' \
-             -{rgb,rbg,grb,gbr,brg,bgr,interpixel,interrow} \
-             ':width:' ':height:' ':grayscale bytes:'
+  _arguments \
+    '-headerskip:header bytes to skip:' \
+    '-rowskip:row padding to skip:' \
+    '(-rgb -rbg -grb -gbr -brg -bgr)'-{rgb,rbg,grb,gbr,brg,bgr} \
+    '(-interrow)-interpixel' \        
+    '(-interpixel)-interrow' \        
+    ':width:' ':height:' ':grayscale bytes:'
   ;;
 
 rgb3toppm)
@@ -569,9 +754,11 @@ sgitopnm)
 
 sldtoppm)
   _arguments -{adjust,dir,info,verbose} \
-             -{width,xsize}:width: -{height,ysize}:height: \
+             '(-width -xsize)'-{width,xsize}:width: \
+             '(-height -ysize)'-{height,ysize}:height: \
              '-scale:scale factor:' \
-             '-lib:slide name:' '-Lib:slide name:' ':file: _pbm'
+             '(-lib -Lib)'-{l,L}'ib:slide name:' \
+             ':file: _pbm'
   ;;
 
 yuvsplittoppm)
@@ -583,7 +770,7 @@ yuvtoppm)
   ;;
 
 zeisstopnm)
-  _arguments -p{g,p}m ':file: _pbm'
+  _arguments '(-pgm -ppm)'-p{g,p}m ':file: _pbm'
   ;;
 
 *) 
diff --git a/Completion/User/_ssh b/Completion/User/_ssh
index a3a74e1cb..9190c2b67 100644
--- a/Completion/User/_ssh
+++ b/Completion/User/_ssh
@@ -44,7 +44,7 @@ ssh-opt)
 
     case "$lstate" in
     option)
-      if compset -P '* '; then
+      if compset -P '*[= ]'; then
         case "$IPREFIX" in
         *(#i)(batchmode|compression|fallbacktorsh|forward(agent|x11)|keepalive|passwordauthentication|rhosts(|rsa)authentication|rsaauthentication|usersh|kerberos(authetication|tgtparsing)|usepriviledgedport)*)
           compadd yes no && ret=0
@@ -92,7 +92,7 @@ ssh-opt)
         esac
       else
         _description expl 'configure file option'
-        compadd "$expl[@]" -M 'm:{a-z}={A-Z}' -S ' ' - \
+        compadd "$expl[@]" -M 'm:{a-z}={A-Z}' -S '=' - \
                 BatchMode ClearAllForwardings Cipher Compression CompressionLevel \
 	        Host ConnectionAttempts EscapeChar FallBackToRsh ForwardAgent \
 	        ForwardX11 GlobalKnownHostsFile HostName IdentityFile KeepAlive \