about summary refs log tree commit diff
path: root/Completion/User
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-08-12 21:25:12 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-08-12 21:25:12 +0000
commitd00f73c3672b2783f14e3a27b35d34c218657506 (patch)
tree55bd4876283ca101a0d99f790c0c8c7174efa44d /Completion/User
parent98aaef0a46c8d9d1c34dd939fd8a470791aed2ee (diff)
downloadzsh-d00f73c3672b2783f14e3a27b35d34c218657506.tar.gz
zsh-d00f73c3672b2783f14e3a27b35d34c218657506.tar.xz
zsh-d00f73c3672b2783f14e3a27b35d34c218657506.zip
zsh-workers/7420
Diffstat (limited to 'Completion/User')
-rw-r--r--Completion/User/_colors24
-rw-r--r--Completion/User/_pbm145
-rw-r--r--Completion/User/_x_options2
3 files changed, 167 insertions, 4 deletions
diff --git a/Completion/User/_colors b/Completion/User/_colors
new file mode 100644
index 000000000..4e9ee2030
--- /dev/null
+++ b/Completion/User/_colors
@@ -0,0 +1,24 @@
+#autoload
+
+if (( ! $+_color_cache )); then
+  local file
+
+  # Cache of color names doesn't exist yet, create it.
+
+  if [[ -f /usr/lib/X11/rgb.txt ]]; then
+    file=/usr/lib/X11/rgb.txt
+  elif [[ -f /usr/local/lib/X11/rgb.txt ]]; then
+    file=/usr/local/lib/X11/rgb.txt
+  fi
+
+  if [[ -n "$file" ]]; then
+    _color_cache=( "${(@)${(@f)$(< $file)}[2,-1]##*		}" )
+  else
+
+    # Stupid default value.
+
+    _color_cache=(white black gray red blue green)
+  fi
+fi
+
+compadd - "$_color_cache[@]"
diff --git a/Completion/User/_pbm b/Completion/User/_pbm
index 1e5cb16cb..5ee328cd9 100644
--- a/Completion/User/_pbm
+++ b/Completion/User/_pbm
@@ -1,8 +1,147 @@
 #compdef -p p[bgpn]m*
 
-local pat
+local pat opts ret=1
 
-_compskip=1
+# No other completion functions, please.
+
+_compskip=all
+
+if (( ! $+_pbm_options )); then
+
+  # Most of the stuff is done by table lookup in these arrays.
+
+  typeset -gA _pbm_options _pbm_arg_options
+
+  # Options with arguments, per command.
+
+  _pbm_arg_options=(
+    pbmreduce 'value'
+    pbmtext 'font:_files:-g:*.(#i)pbm'
+    pbmtolj 'resolution'
+    pbmtolps 'dpi'
+    pbmtomacp 'l r t b'
+    pgmcrater 'number height ysize width xsize gamma'
+    pgmkernel 'weight'
+    pgmnorm 'bpercent bvalue wpercent wvalue'
+    pgmoil 'n'
+    pgmtexture 'd'
+    pgmtopbm 'value'
+    pgmtoppm 'map:_files:-g:*.(#i)ppm'
+    ppmbrighten 's v'
+    ppmdither 'dim red green blue'
+    ppmforge 'dimension hour inclination tilt mesh power glaciers ice saturation seed stars xsize width ysize height'
+    ppmnorm 'bpercent bvalue wpercent wvalue'
+    ppmquant 'map:_files:-g:*.(#i)ppm'
+    ppmtoacad 'background aspect'
+    ppmtoicr 'windowname expand display'
+    ppmtomitsu 'sharpness:compadd:1:2:3:4 enlarge:compadd:1:2:3 media:compadd:A:A4:AS:A4S copy:compadd:1:2:3:4:5:6:7:8:9'
+    ppmtopj 'gamma xpos ypos back:compadd:dark:lite render:compadd:none:snap:bw:dither:diffuse:monodither:monodiffuse:clusterdither:monoclusterdither'
+    ppmtopjxl 'gamma xshift yshift xsize width xscale ysize height yscale'
+    ppmtouil 'name'
+    ppmtoxpm 'name'
+    pnmalias 'fgcolor:_colors bgcolor:_colors weight'
+    pnmcomp 'xoff yoff alpha:_files:-g:*.(#i)pgm'
+    pnmhistmap 'max'
+    pnmindex 'size across colors'
+    pnmmargin 'color:_colors'
+    pnmscale 'xsize width ysize height xscale yscale xysize'
+    pnmtoddif 'resolution'
+    pnmtofits 'min max'
+    pnmtops 'scale dpi width height'
+    pnmtosgi 'imagename'
+    pnmtotiff 'predictor rowsperstrip'
+    pnmtoxwd 'pseudodepth'
+  )
+
+  # Options without arguments.
+
+  _pbm_options=(
+    pbmclean 'connect'
+    pbmmake 'white black gray'
+    pbmmask 'expand'
+    pbmreduce 'floyd fs threshold'
+    pbmtoepsi 'bbonly'
+    pgmenhance '1 2 3 4 5 6 7 8 9'
+    pgmramp 'lr tb rectangle ellipse'
+    pgmtopbm 'floyd fs threshold dither8 d8 cluster3 c3 cluster4 c4 cluster8 c8'
+    ppmbrighten 'n'
+    ppmdist 'intensity frequency'
+    ppmforge 'clouds night'
+    ppmpat 'gingham2 g2 gingham3 g3 madras tartan poles squig camo anticamo'
+    ppmquant 'floyd fs'
+    ppmqvga 'd q v'
+    ppmtoacad 'dxb poly white 8'
+    ppmtobmp 'os2 windows'
+    ppmtogif 'interlace'
+    ppmtoicr 'rle'
+    ppmtoilbm 'hamif'
+    ppmtomap 'sort square'
+    ppmtomitsu 'dpi300 tiny'
+    ppmtopj 'rle center'
+    ppmtopjxl 'nopack presentation dark diffuse cluster dither'
+    ppmtosixel 'raw margin'
+    ppmtotga 'mono cmap rgb norle'
+    pnmalias 'bonly fonly balias falias'
+    pnmarith 'add subtract multiply'
+    pnmcat 'white black leftright lr topbottom tb jtop jbottom jleft jright'
+    pnmcomp 'invert'
+    pnmcrop 'white black'
+    pnmflip 'leftright lr topbottom tb transpose xy rotate90 r90 ccw rotate270 r270 cw rotate180 r180'
+    pnmhistmap 'black white verbose'
+    pnmindex 'black'
+    pnmmargin 'white black'
+    pnmpad 'white black'
+    pnmpaste 'replace or and xor'
+    pnmrotate 'noantialias'
+    pnmshear 'noantialias'
+    pnmtops 'turn noturn rle runlength'
+    pnmtorast 'standard rle'
+    pnmtosgi 'verbatim rle'
+    pnmtotiff 'none packbits lzw g3 g4 2d fill msb2lsb lsb2msb'
+    pnmtoxwd 'directcolor'
+  )
+fi
+
+opts=( $=_pbm_arg_options[$words[1]] )
+if (( $#opts )); then
+
+  # This Command has options with arguments. The options are already in
+  # `opts'. Now we see if we are after one of these options on the line.
+
+  local after="$opts[(I)${words[CURRENT-1][2,-1]}(|:*)]"
+
+  if (( after )); then
+
+    # We are. If the string contains a colon, anything after it is a 
+    # colon-separated list of words. We just execute this list of words
+    # as a command with its arguments.
+
+    if [[ "$after" = *:* ]]; then
+      after="${${opts[after]#*:}//:/ }"
+      [[ -z "$after" ]] || $=after 
+    fi
+    return
+  fi
+
+  # Otherwise we just add the option names.
+
+  compadd -J options - -${^=opts%%:*}
+fi
+
+# And the names of the options without arguments.
+
+opts=( $=_pbm_options[$words[1]] )
+(( $#opts )) && compadd -J options - -${^=opts}
+
+# A small special case here: the first argument of `ppmmake' is a
+# color. More of these could be added.
+
+if [[ "$words[1]" = ppmmake && CURRENT -eq 2 ]]; then
+  _colors
+  return
+fi
+
+# Generate the filenames.
 
 if [[ "$words[1]" = pnm* ]]; then
   pat='*.(#i)p[bgp]m'
@@ -10,4 +149,4 @@ else
   pat="*.(#i)${words[1][1,3]}"
 fi
 
-_path_files -g "$pat" || _files -g '*.(#i)p[bgp]m'
+_path_files -J files -g "$pat" || _files -J files -g '*.(#i)p[bgp]m'
diff --git a/Completion/User/_x_options b/Completion/User/_x_options
index fddec2af4..51b602a33 100644
--- a/Completion/User/_x_options
+++ b/Completion/User/_x_options
@@ -3,7 +3,7 @@
 # A simple pattern completion, just as an example.
 
 if [ "$words[CURRENT-1]" = "-display" ]; then
-  _compskip=''
+  _compskip=all
   _hosts -S :0
 else
   compadd -P- -J options - display name xrm