summaryrefslogtreecommitdiff
path: root/Completion
diff options
context:
space:
mode:
Diffstat (limited to 'Completion')
-rw-r--r--Completion/X/_x_color31
1 files changed, 21 insertions, 10 deletions
diff --git a/Completion/X/_x_color b/Completion/X/_x_color
index 346142eea..8df656fe1 100644
--- a/Completion/X/_x_color
+++ b/Completion/X/_x_color
@@ -1,5 +1,13 @@
#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 (( ! $+_color_cache )); then
@@ -7,18 +15,21 @@ if (( ! $+_color_cache )); then
# Cache of color names doesn't exist yet, create it.
- file=( /usr/{lib,{{X11R6,openwin},local{,/X11{,R6}}}/lib}/X11/rgb.txt(N) )
-
- if (( $#file )); then
- _color_cache=( "${(@)${(@f)$(< $file[1])}[2,-1]##* }" )
+ zstyle -s ":completion:${curcontext}:colors" path file
+ if [[ -n "$file" ]]; then
+ _color_cache=( "${(@)${(@f)$(< $file)}[2,-1]##* }" )
else
+ file=( /usr/{lib,{{X11R6,openwin},local{,/X11{,R6}}}/lib}/X11/rgb.txt(N) )
- # Stupid default value.
-
- _color_cache=(white black gray red blue green)
+ (( $#file )) &&
+ _color_cache=( "${(@)${(@)${(@f)$(< $file[1])}[2,-1]##* }:#* *}" )
fi
+
+ # Stupid default value.
+
+ (( $#_color_cache )) || _color_cache=(white black gray red blue green)
fi
-_description expl 'color specification'
-compadd "$@" "$expl[@]" -M 'm:{a-z}={A-Z} m:-=\ r:|[ A-Z0-9]=* r:|=*' - \
- "$_color_cache[@]"
+_wanted colors expl 'color specification' \
+ compadd "$@" -M 'm:{a-z}={A-Z} m:-=\ r:[^ A-Z0-9]||[ A-Z0-9]=* r:|=*' - \
+ "$_color_cache[@]"