#autoload # This tries to automatically find the rgb.txt color database. If this # in an unusual place on your system or you want a personal database, # you can use the configuration key: # # colors_path # Path to a file containing the names of colors you want to # complete. In the form of a X11 rgb.txt file. local expl if (( ! $+_cache_x_colors )); then typeset -ga _cache_x_colors local file # Cache of color names doesn't exist yet, create it. zstyle -s ":completion:${curcontext}:colors" path file if [[ -n "$file" ]]; then _cache_x_colors=( "${(@)${(@f)$(< $file)}[2,-1]##* }" ) elif (( $+commands[showrgb] )); then _cache_x_colors=( "${(@)${(@)${(@f)$(_call_program colors showrgb)}[2,-1]##* }:#* *}" ) else file=( /usr/{lib,{{X11R6,openwin},local{,/X11{,R6}}}/lib}/X11/rgb.txt(N) ) (( $#file )) && _cache_x_colors=( "${(@)${(@)${(@f)$(< $file[1])}[2,-1]##* }:#* *}" ) fi # Stupid default value. (( $#_cache_x_colors )) || _cache_x_colors=(white black gray red blue green) fi _wanted colors expl 'color specification' compadd "$@" -M \ 'm:{a-z}={A-Z} m:-=\ r:[^ A-Z0-9]||[ A-Z0-9]=* r:|=*' -a - _cache_x_colors