]> granicus.if.org Git - vim/commitdiff
patch 8.2.3562: cannot add color names v8.2.3562
authorDrew Vogel <dvogel@github>
Sun, 24 Oct 2021 19:35:07 +0000 (20:35 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 24 Oct 2021 19:35:07 +0000 (20:35 +0100)
Problem:    Cannot add color names.
Solution:   Add the v:colornames dictionary. (Drew Vogel, closes #8761)

26 files changed:
Filelist
READMEdir/README_extra.txt
nsis/gvim.nsi
runtime/colors/README.txt
runtime/colors/lists/csscolors.vim [new file with mode: 0644]
runtime/colors/lists/default.vim [new file with mode: 0644]
runtime/doc/eval.txt
runtime/doc/gui_w32.txt
runtime/doc/message.txt
runtime/doc/os_haiku.txt
runtime/doc/syntax.txt
runtime/doc/usr_06.txt
src/Makefile
src/errors.h
src/evalvars.c
src/globals.h
src/gui.c
src/gui_haiku.cc
src/highlight.c
src/job.c
src/proto/highlight.pro
src/proto/term.pro
src/term.c
src/testdir/test_highlight.vim
src/version.c
src/vim.h

index 34285eb3b6ed39ff9d9496d5cb84f1276cf387ef..01c388bd4921623ffb5f8165095edf06c666113a 100644 (file)
--- a/Filelist
+++ b/Filelist
@@ -798,6 +798,7 @@ RT_SCRIPTS =        \
                runtime/autoload/xml/*.vim \
                runtime/colors/*.vim \
                runtime/colors/README.txt \
+               runtime/colors/lists/*.vim \
                runtime/colors/tools/*.vim \
                runtime/compiler/*.vim \
                runtime/compiler/README.txt \
@@ -850,7 +851,6 @@ RT_AMI_DOS =        \
 # DOS runtime (also in the extra archive)
 RT_DOS =       \
                README_dos.txt \
-               runtime/rgb.txt \
                vimtutor.bat \
 
 # DOS runtime without CR-LF translation (also in the extra archive)
index 4f22d1bcc2662180045ea6a17f73bad7a031b451..94d93f986b0c73cf997d0cfe4732b5ca0092edfb 100644 (file)
@@ -26,7 +26,6 @@ src/os_win32.*                Files for the Win32 port.
 src/gui_w32.*          Files for the Win32 GUI.
 src/gui_w48.*          Files for the Win32 and Win16 GUI.
 src/Make_mvc.mak       MS Visual C++ makefile for the Win32 GUI.
-runtime/rgb.txt                File with color definitions for the Win32 GUI.
 
 src/if_ole.*           OLE automation interface, for MS Windows 95 and NT.
 
index fc5713f7903cdcf8147f30880500da24700f4517..649c6950dde640be026d13d2fa61884c0069b23e 100644 (file)
@@ -357,7 +357,6 @@ Section "$(str_section_exe)" id_section_exe
        File ..\README.txt
        File ..\uninstall.txt
        File ${VIMRT}\*.vim
-       File ${VIMRT}\rgb.txt
 
        File ${VIMTOOLS}\diff.exe
        File ${VIMTOOLS}\winpty${BIT}.dll
@@ -367,6 +366,8 @@ Section "$(str_section_exe)" id_section_exe
        File ${VIMRT}\colors\*.*
        SetOutPath $0\colors\tools
        File ${VIMRT}\colors\tools\*.*
+       SetOutPath $0\colors\lists
+       File ${VIMRT}\colors\lists\*.*
 
        SetOutPath $0\compiler
        File ${VIMRT}\compiler\*.*
index 89501e0517cdc27330d860ec9a1090d58f2715c4..2b3471e39888e1f8d47b740cfcf460076805828f 100644 (file)
@@ -87,4 +87,5 @@ please check the following items:
 - In the GUI, is it easy to find the cursor, also in a file with lots of
   syntax highlighting?
 - Do not use hard coded escape sequences, these will not work in other
-  terminals.  Always use color names or #RRGGBB for the GUI.
+  terminals.  Always use color names or #RRGGBB for the GUI. See v:colornames
+  for details on how to define your own color names.
diff --git a/runtime/colors/lists/csscolors.vim b/runtime/colors/lists/csscolors.vim
new file mode 100644 (file)
index 0000000..7495522
--- /dev/null
@@ -0,0 +1,166 @@
+" Maintainer:  Drew Vogel <dvogel@sidejump.org>
+" Last Change: 2021 Jul 25
+
+" Similar in spirit to rgb.txt, this plugin establishes a human-friendly name
+" for every color listed in the CSS standard:
+"
+" https://www.w3.org/TR/css-color-3/
+
+let s:keepcpo= &cpo
+set cpo&vim
+
+call extend(v:colornames, {
+                       \ 'css_black': '#000000',
+                       \ 'css_silver': '#c0c0c0',
+                       \ 'css_gray': '#808080',
+                       \ 'css_white': '#FFFFFF',
+                       \ 'css_maroon': '#800000',
+                       \ 'css_red': '#FF0000',
+                       \ 'css_purple': '#800080',
+                       \ 'css_fuchsia': '#FF00FF',
+                       \ 'css_green': '#008000',
+                       \ 'css_lime': '#00FF00',
+                       \ 'css_olive': '#808000',
+                       \ 'css_yellow': '#FFFF00',
+                       \ 'css_navy': '#000080',
+                       \ 'css_blue': '#0000FF',
+                       \ 'css_teal': '#008080',
+                       \ 'css_aqua': '#00FFFF',
+                       \
+                       \ 'css_aliceblue': '#f0f8ff',
+                       \ 'css_antiquewhite': '#faebd7',
+                       \ 'css_aquamarine': '#7fffd4',
+                       \ 'css_azure': '#f0ffff',
+                       \ 'css_beige': '#f5f5dc',
+                       \ 'css_bisque': '#ffe4c4',
+                       \ 'css_blanchedalmond': '#ffebcd',
+                       \ 'css_blueviolet': '#8a2be2',
+                       \ 'css_brown': '#a52a2a',
+                       \ 'css_burlywood': '#deb887',
+                       \ 'css_cadetblue': '#5f9ea0',
+                       \ 'css_chartreuse': '#7fff00',
+                       \ 'css_chocolate': '#d2691e',
+                       \ 'css_coral': '#ff7f50',
+                       \ 'css_cornflowerblue': '#6495ed',
+                       \ 'css_cornsilk': '#fff8dc',
+                       \ 'css_crimson': '#dc143c',
+                       \ 'css_cyan': '#00ffff',
+                       \ 'css_darkblue': '#00008b',
+                       \ 'css_darkcyan': '#008b8b',
+                       \ 'css_darkgoldenrod': '#b8860b',
+                       \ 'css_darkgray': '#a9a9a9',
+                       \ 'css_darkgreen': '#006400',
+                       \ 'css_darkgrey': '#a9a9a9',
+                       \ 'css_darkkhaki': '#bdb76b',
+                       \ 'css_darkmagenta': '#8b008b',
+                       \ 'css_darkolivegreen': '#556b2f',
+                       \ 'css_darkorange': '#ff8c00',
+                       \ 'css_darkorchid': '#9932cc',
+                       \ 'css_darkred': '#8b0000',
+                       \ 'css_darksalmon': '#e9967a',
+                       \ 'css_darkseagreen': '#8fbc8f',
+                       \ 'css_darkslateblue': '#483d8b',
+                       \ 'css_darkslategray': '#2f4f4f',
+                       \ 'css_darkslategrey': '#2f4f4f',
+                       \ 'css_darkturquoise': '#00ced1',
+                       \ 'css_darkviolet': '#9400d3',
+                       \ 'css_deeppink': '#ff1493',
+                       \ 'css_deepskyblue': '#00bfff',
+                       \ 'css_dimgray': '#696969',
+                       \ 'css_dimgrey': '#696969',
+                       \ 'css_dodgerblue': '#1e90ff',
+                       \ 'css_firebrick': '#b22222',
+                       \ 'css_floralwhite': '#fffaf0',
+                       \ 'css_forestgreen': '#228b22',
+                       \ 'css_gainsboro': '#dcdcdc',
+                       \ 'css_ghostwhite': '#f8f8ff',
+                       \ 'css_gold': '#ffd700',
+                       \ 'css_goldenrod': '#daa520',
+                       \ 'css_greenyellow': '#adff2f',
+                       \ 'css_grey': '#808080',
+                       \ 'css_honeydew': '#f0fff0',
+                       \ 'css_hotpink': '#ff69b4',
+                       \ 'css_indianred': '#cd5c5c',
+                       \ 'css_indigo': '#4b0082',
+                       \ 'css_ivory': '#fffff0',
+                       \ 'css_khaki': '#f0e68c',
+                       \ 'css_lavender': '#e6e6fa',
+                       \ 'css_lavenderblush': '#fff0f5',
+                       \ 'css_lawngreen': '#7cfc00',
+                       \ 'css_lemonchiffon': '#fffacd',
+                       \ 'css_lightblue': '#add8e6',
+                       \ 'css_lightcoral': '#f08080',
+                       \ 'css_lightcyan': '#e0ffff',
+                       \ 'css_lightgoldenrodyellow': '#fafad2',
+                       \ 'css_lightgray': '#d3d3d3',
+                       \ 'css_lightgreen': '#90ee90',
+                       \ 'css_lightgrey': '#d3d3d3',
+                       \ 'css_lightpink': '#ffb6c1',
+                       \ 'css_lightsalmon': '#ffa07a',
+                       \ 'css_lightseagreen': '#20b2aa',
+                       \ 'css_lightskyblue': '#87cefa',
+                       \ 'css_lightslategray': '#778899',
+                       \ 'css_lightslategrey': '#778899',
+                       \ 'css_lightsteelblue': '#b0c4de',
+                       \ 'css_lightyellow': '#ffffe0',
+                       \ 'css_limegreen': '#32cd32',
+                       \ 'css_linen': '#faf0e6',
+                       \ 'css_magenta': '#ff00ff',
+                       \ 'css_mediumaquamarine': '#66cdaa',
+                       \ 'css_mediumblue': '#0000cd',
+                       \ 'css_mediumorchid': '#ba55d3',
+                       \ 'css_mediumpurple': '#9370db',
+                       \ 'css_mediumseagreen': '#3cb371',
+                       \ 'css_mediumslateblue': '#7b68ee',
+                       \ 'css_mediumspringgreen': '#00fa9a',
+                       \ 'css_mediumturquoise': '#48d1cc',
+                       \ 'css_mediumvioletred': '#c71585',
+                       \ 'css_midnightblue': '#191970',
+                       \ 'css_mintcream': '#f5fffa',
+                       \ 'css_mistyrose': '#ffe4e1',
+                       \ 'css_moccasin': '#ffe4b5',
+                       \ 'css_navajowhite': '#ffdead',
+                       \ 'css_oldlace': '#fdf5e6',
+                       \ 'css_olivedrab': '#6b8e23',
+                       \ 'css_orange': '#ffa500',
+                       \ 'css_orangered': '#ff4500',
+                       \ 'css_orchid': '#da70d6',
+                       \ 'css_palegoldenrod': '#eee8aa',
+                       \ 'css_palegreen': '#98fb98',
+                       \ 'css_paleturquoise': '#afeeee',
+                       \ 'css_palevioletred': '#db7093',
+                       \ 'css_papayawhip': '#ffefd5',
+                       \ 'css_peachpuff': '#ffdab9',
+                       \ 'css_peru': '#cd853f',
+                       \ 'css_pink': '#ffc0cb',
+                       \ 'css_plum': '#dda0dd',
+                       \ 'css_powderblue': '#b0e0e6',
+                       \ 'css_rosybrown': '#bc8f8f',
+                       \ 'css_royalblue': '#4169e1',
+                       \ 'css_saddlebrown': '#8b4513',
+                       \ 'css_salmon': '#fa8072',
+                       \ 'css_sandybrown': '#f4a460',
+                       \ 'css_seagreen': '#2e8b57',
+                       \ 'css_seashell': '#fff5ee',
+                       \ 'css_sienna': '#a0522d',
+                       \ 'css_skyblue': '#87ceeb',
+                       \ 'css_slateblue': '#6a5acd',
+                       \ 'css_slategray': '#708090',
+                       \ 'css_slategrey': '#708090',
+                       \ 'css_snow': '#fffafa',
+                       \ 'css_springgreen': '#00ff7f',
+                       \ 'css_steelblue': '#4682b4',
+                       \ 'css_tan': '#d2b48c',
+                       \ 'css_thistle': '#d8bfd8',
+                       \ 'css_tomato': '#ff6347',
+                       \ 'css_turquoise': '#40e0d0',
+                       \ 'css_violet': '#ee82ee',
+                       \ 'css_wheat': '#f5deb3',
+                       \ 'css_whitesmoke': '#f5f5f5',
+                       \ 'css_yellowgreen': '#9acd32',
+                       \ }, 'keep')
+
+let &cpo= s:keepcpo
+unlet s:keepcpo
+
+"vim: sw=4
diff --git a/runtime/colors/lists/default.vim b/runtime/colors/lists/default.vim
new file mode 100644 (file)
index 0000000..5940048
--- /dev/null
@@ -0,0 +1,801 @@
+" Maintainer:  Drew Vogel <dvogel@sidejump.org>
+" Last Change: 2021 Jul 25
+"
+" Replaced rgb.txt as the source of de facto standard color names. This is
+" sourced each time the colorscheme command is run. It is also sourced each
+" time the highlight command fails to recognize a gui color. You can override
+" these colors by introducing a new colors/lists/default.vim file earlier in
+" the runtimepath.
+
+let s:keepcpo= &cpo
+set cpo&vim
+
+call extend(v:colornames, {
+                       \ 'snow': '#fffafa',
+                       \ 'ghost white': '#f8f8ff',
+                       \ 'ghostwhite': '#f8f8ff',
+                       \ 'white smoke': '#f5f5f5',
+                       \ 'whitesmoke': '#f5f5f5',
+                       \ 'gainsboro': '#dcdcdc',
+                       \ 'floral white': '#fffaf0',
+                       \ 'floralwhite': '#fffaf0',
+                       \ 'old lace': '#fdf5e6',
+                       \ 'oldlace': '#fdf5e6',
+                       \ 'linen': '#faf0e6',
+                       \ 'antique white': '#faebd7',
+                       \ 'antiquewhite': '#faebd7',
+                       \ 'papaya whip': '#ffefd5',
+                       \ 'papayawhip': '#ffefd5',
+                       \ 'blanched almond': '#ffebcd',
+                       \ 'blanchedalmond': '#ffebcd',
+                       \ 'bisque': '#ffe4c4',
+                       \ 'peach puff': '#ffdab9',
+                       \ 'peachpuff': '#ffdab9',
+                       \ 'navajo white': '#ffdead',
+                       \ 'navajowhite': '#ffdead',
+                       \ 'moccasin': '#ffe4b5',
+                       \ 'cornsilk': '#fff8dc',
+                       \ 'ivory': '#fffff0',
+                       \ 'lemon chiffon': '#fffacd',
+                       \ 'lemonchiffon': '#fffacd',
+                       \ 'seashell': '#fff5ee',
+                       \ 'honeydew': '#f0fff0',
+                       \ 'mint cream': '#f5fffa',
+                       \ 'mintcream': '#f5fffa',
+                       \ 'azure': '#f0ffff',
+                       \ 'alice blue': '#f0f8ff',
+                       \ 'aliceblue': '#f0f8ff',
+                       \ 'lavender': '#e6e6fa',
+                       \ 'lavender blush': '#fff0f5',
+                       \ 'lavenderblush': '#fff0f5',
+                       \ 'misty rose': '#ffe4e1',
+                       \ 'mistyrose': '#ffe4e1',
+                       \ 'white': '#ffffff',
+                       \ 'black': '#000000',
+                       \ 'dark slate gray': '#2f4f4f',
+                       \ 'darkslategray': '#2f4f4f',
+                       \ 'dark slate grey': '#2f4f4f',
+                       \ 'darkslategrey': '#2f4f4f',
+                       \ 'dim gray': '#696969',
+                       \ 'dimgray': '#696969',
+                       \ 'dim grey': '#696969',
+                       \ 'dimgrey': '#696969',
+                       \ 'slate gray': '#708090',
+                       \ 'slategray': '#708090',
+                       \ 'slate grey': '#708090',
+                       \ 'slategrey': '#708090',
+                       \ 'light slate gray': '#778899',
+                       \ 'lightslategray': '#778899',
+                       \ 'light slate grey': '#778899',
+                       \ 'lightslategrey': '#778899',
+                       \ 'gray': '#bebebe',
+                       \ 'grey': '#bebebe',
+                       \ 'x11 gray': '#bebebe',
+                       \ 'x11gray': '#bebebe',
+                       \ 'x11 grey': '#bebebe',
+                       \ 'x11grey': '#bebebe',
+                       \ 'web gray': '#808080',
+                       \ 'webgray': '#808080',
+                       \ 'web grey': '#808080',
+                       \ 'webgrey': '#808080',
+                       \ 'light grey': '#d3d3d3',
+                       \ 'lightgrey': '#d3d3d3',
+                       \ 'light gray': '#d3d3d3',
+                       \ 'lightgray': '#d3d3d3',
+                       \ 'midnight blue': '#191970',
+                       \ 'midnightblue': '#191970',
+                       \ 'navy': '#000080',
+                       \ 'navy blue': '#000080',
+                       \ 'navyblue': '#000080',
+                       \ 'cornflower blue': '#6495ed',
+                       \ 'cornflowerblue': '#6495ed',
+                       \ 'dark slate blue': '#483d8b',
+                       \ 'darkslateblue': '#483d8b',
+                       \ 'slate blue': '#6a5acd',
+                       \ 'slateblue': '#6a5acd',
+                       \ 'medium slate blue': '#7b68ee',
+                       \ 'mediumslateblue': '#7b68ee',
+                       \ 'light slate blue': '#8470ff',
+                       \ 'lightslateblue': '#8470ff',
+                       \ 'medium blue': '#0000cd',
+                       \ 'mediumblue': '#0000cd',
+                       \ 'royal blue': '#4169e1',
+                       \ 'royalblue': '#4169e1',
+                       \ 'blue': '#0000ff',
+                       \ 'dodger blue': '#1e90ff',
+                       \ 'dodgerblue': '#1e90ff',
+                       \ 'deep sky blue': '#00bfff',
+                       \ 'deepskyblue': '#00bfff',
+                       \ 'sky blue': '#87ceeb',
+                       \ 'skyblue': '#87ceeb',
+                       \ 'light sky blue': '#87cefa',
+                       \ 'lightskyblue': '#87cefa',
+                       \ 'steel blue': '#4682b4',
+                       \ 'steelblue': '#4682b4',
+                       \ 'light steel blue': '#b0c4de',
+                       \ 'lightsteelblue': '#b0c4de',
+                       \ 'light blue': '#add8e6',
+                       \ 'lightblue': '#add8e6',
+                       \ 'powder blue': '#b0e0e6',
+                       \ 'powderblue': '#b0e0e6',
+                       \ 'pale turquoise': '#afeeee',
+                       \ 'paleturquoise': '#afeeee',
+                       \ 'dark turquoise': '#00ced1',
+                       \ 'darkturquoise': '#00ced1',
+                       \ 'medium turquoise': '#48d1cc',
+                       \ 'mediumturquoise': '#48d1cc',
+                       \ 'turquoise': '#40e0d0',
+                       \ 'cyan': '#00ffff',
+                       \ 'aqua': '#00ffff',
+                       \ 'light cyan': '#e0ffff',
+                       \ 'lightcyan': '#e0ffff',
+                       \ 'cadet blue': '#5f9ea0',
+                       \ 'cadetblue': '#5f9ea0',
+                       \ 'medium aquamarine': '#66cdaa',
+                       \ 'mediumaquamarine': '#66cdaa',
+                       \ 'aquamarine': '#7fffd4',
+                       \ 'dark green': '#006400',
+                       \ 'darkgreen': '#006400',
+                       \ 'dark olive green': '#556b2f',
+                       \ 'darkolivegreen': '#556b2f',
+                       \ 'dark sea green': '#8fbc8f',
+                       \ 'darkseagreen': '#8fbc8f',
+                       \ 'sea green': '#2e8b57',
+                       \ 'seagreen': '#2e8b57',
+                       \ 'medium sea green': '#3cb371',
+                       \ 'mediumseagreen': '#3cb371',
+                       \ 'light sea green': '#20b2aa',
+                       \ 'lightseagreen': '#20b2aa',
+                       \ 'pale green': '#98fb98',
+                       \ 'palegreen': '#98fb98',
+                       \ 'spring green': '#00ff7f',
+                       \ 'springgreen': '#00ff7f',
+                       \ 'lawn green': '#7cfc00',
+                       \ 'lawngreen': '#7cfc00',
+                       \ 'green': '#00ff00',
+                       \ 'lime': '#00ff00',
+                       \ 'x11 green': '#00ff00',
+                       \ 'x11green': '#00ff00',
+                       \ 'web green': '#008000',
+                       \ 'webgreen': '#008000',
+                       \ 'chartreuse': '#7fff00',
+                       \ 'medium spring green': '#00fa9a',
+                       \ 'mediumspringgreen': '#00fa9a',
+                       \ 'green yellow': '#adff2f',
+                       \ 'greenyellow': '#adff2f',
+                       \ 'lime green': '#32cd32',
+                       \ 'limegreen': '#32cd32',
+                       \ 'yellow green': '#9acd32',
+                       \ 'yellowgreen': '#9acd32',
+                       \ 'forest green': '#228b22',
+                       \ 'forestgreen': '#228b22',
+                       \ 'olive drab': '#6b8e23',
+                       \ 'olivedrab': '#6b8e23',
+                       \ 'dark khaki': '#bdb76b',
+                       \ 'darkkhaki': '#bdb76b',
+                       \ 'khaki': '#f0e68c',
+                       \ 'pale goldenrod': '#eee8aa',
+                       \ 'palegoldenrod': '#eee8aa',
+                       \ 'light goldenrod yellow': '#fafad2',
+                       \ 'lightgoldenrodyellow': '#fafad2',
+                       \ 'light yellow': '#ffffe0',
+                       \ 'lightyellow': '#ffffe0',
+                       \ 'yellow': '#ffff00',
+                       \ 'gold': '#ffd700',
+                       \ 'light goldenrod': '#eedd82',
+                       \ 'lightgoldenrod': '#eedd82',
+                       \ 'goldenrod': '#daa520',
+                       \ 'dark goldenrod': '#b8860b',
+                       \ 'darkgoldenrod': '#b8860b',
+                       \ 'rosy brown': '#bc8f8f',
+                       \ 'rosybrown': '#bc8f8f',
+                       \ 'indian red': '#cd5c5c',
+                       \ 'indianred': '#cd5c5c',
+                       \ 'saddle brown': '#8b4513',
+                       \ 'saddlebrown': '#8b4513',
+                       \ 'sienna': '#a0522d',
+                       \ 'peru': '#cd853f',
+                       \ 'burlywood': '#deb887',
+                       \ 'beige': '#f5f5dc',
+                       \ 'wheat': '#f5deb3',
+                       \ 'sandy brown': '#f4a460',
+                       \ 'sandybrown': '#f4a460',
+                       \ 'tan': '#d2b48c',
+                       \ 'chocolate': '#d2691e',
+                       \ 'firebrick': '#b22222',
+                       \ 'brown': '#a52a2a',
+                       \ 'dark salmon': '#e9967a',
+                       \ 'darksalmon': '#e9967a',
+                       \ 'salmon': '#fa8072',
+                       \ 'light salmon': '#ffa07a',
+                       \ 'lightsalmon': '#ffa07a',
+                       \ 'orange': '#ffa500',
+                       \ 'dark orange': '#ff8c00',
+                       \ 'darkorange': '#ff8c00',
+                       \ 'coral': '#ff7f50',
+                       \ 'light coral': '#f08080',
+                       \ 'lightcoral': '#f08080',
+                       \ 'tomato': '#ff6347',
+                       \ 'orange red': '#ff4500',
+                       \ 'orangered': '#ff4500',
+                       \ 'red': '#ff0000',
+                       \ 'hot pink': '#ff69b4',
+                       \ 'hotpink': '#ff69b4',
+                       \ 'deep pink': '#ff1493',
+                       \ 'deeppink': '#ff1493',
+                       \ 'pink': '#ffc0cb',
+                       \ 'light pink': '#ffb6c1',
+                       \ 'lightpink': '#ffb6c1',
+                       \ 'pale violet red': '#db7093',
+                       \ 'palevioletred': '#db7093',
+                       \ 'maroon': '#b03060',
+                       \ 'x11 maroon': '#b03060',
+                       \ 'x11maroon': '#b03060',
+                       \ 'web maroon': '#800000',
+                       \ 'webmaroon': '#800000',
+                       \ 'medium violet red': '#c71585',
+                       \ 'mediumvioletred': '#c71585',
+                       \ 'violet red': '#d02090',
+                       \ 'violetred': '#d02090',
+                       \ 'magenta': '#ff00ff',
+                       \ 'fuchsia': '#ff00ff',
+                       \ 'violet': '#ee82ee',
+                       \ 'plum': '#dda0dd',
+                       \ 'orchid': '#da70d6',
+                       \ 'medium orchid': '#ba55d3',
+                       \ 'mediumorchid': '#ba55d3',
+                       \ 'dark orchid': '#9932cc',
+                       \ 'darkorchid': '#9932cc',
+                       \ 'dark violet': '#9400d3',
+                       \ 'darkviolet': '#9400d3',
+                       \ 'blue violet': '#8a2be2',
+                       \ 'blueviolet': '#8a2be2',
+                       \ 'purple': '#a020f0',
+                       \ 'x11 purple': '#a020f0',
+                       \ 'x11purple': '#a020f0',
+                       \ 'web purple': '#800080',
+                       \ 'webpurple': '#800080',
+                       \ 'medium purple': '#9370db',
+                       \ 'mediumpurple': '#9370db',
+                       \ 'thistle': '#d8bfd8',
+                       \ 'snow1': '#fffafa',
+                       \ 'snow2': '#eee9e9',
+                       \ 'snow3': '#cdc9c9',
+                       \ 'snow4': '#8b8989',
+                       \ 'seashell1': '#fff5ee',
+                       \ 'seashell2': '#eee5de',
+                       \ 'seashell3': '#cdc5bf',
+                       \ 'seashell4': '#8b8682',
+                       \ 'antiquewhite1': '#ffefdb',
+                       \ 'antiquewhite2': '#eedfcc',
+                       \ 'antiquewhite3': '#cdc0b0',
+                       \ 'antiquewhite4': '#8b8378',
+                       \ 'bisque1': '#ffe4c4',
+                       \ 'bisque2': '#eed5b7',
+                       \ 'bisque3': '#cdb79e',
+                       \ 'bisque4': '#8b7d6b',
+                       \ 'peachpuff1': '#ffdab9',
+                       \ 'peachpuff2': '#eecbad',
+                       \ 'peachpuff3': '#cdaf95',
+                       \ 'peachpuff4': '#8b7765',
+                       \ 'navajowhite1': '#ffdead',
+                       \ 'navajowhite2': '#eecfa1',
+                       \ 'navajowhite3': '#cdb38b',
+                       \ 'navajowhite4': '#8b795e',
+                       \ 'lemonchiffon1': '#fffacd',
+                       \ 'lemonchiffon2': '#eee9bf',
+                       \ 'lemonchiffon3': '#cdc9a5',
+                       \ 'lemonchiffon4': '#8b8970',
+                       \ 'cornsilk1': '#fff8dc',
+                       \ 'cornsilk2': '#eee8cd',
+                       \ 'cornsilk3': '#cdc8b1',
+                       \ 'cornsilk4': '#8b8878',
+                       \ 'ivory1': '#fffff0',
+                       \ 'ivory2': '#eeeee0',
+                       \ 'ivory3': '#cdcdc1',
+                       \ 'ivory4': '#8b8b83',
+                       \ 'honeydew1': '#f0fff0',
+                       \ 'honeydew2': '#e0eee0',
+                       \ 'honeydew3': '#c1cdc1',
+                       \ 'honeydew4': '#838b83',
+                       \ 'lavenderblush1': '#fff0f5',
+                       \ 'lavenderblush2': '#eee0e5',
+                       \ 'lavenderblush3': '#cdc1c5',
+                       \ 'lavenderblush4': '#8b8386',
+                       \ 'mistyrose1': '#ffe4e1',
+                       \ 'mistyrose2': '#eed5d2',
+                       \ 'mistyrose3': '#cdb7b5',
+                       \ 'mistyrose4': '#8b7d7b',
+                       \ 'azure1': '#f0ffff',
+                       \ 'azure2': '#e0eeee',
+                       \ 'azure3': '#c1cdcd',
+                       \ 'azure4': '#838b8b',
+                       \ 'slateblue1': '#836fff',
+                       \ 'slateblue2': '#7a67ee',
+                       \ 'slateblue3': '#6959cd',
+                       \ 'slateblue4': '#473c8b',
+                       \ 'royalblue1': '#4876ff',
+                       \ 'royalblue2': '#436eee',
+                       \ 'royalblue3': '#3a5fcd',
+                       \ 'royalblue4': '#27408b',
+                       \ 'blue1': '#0000ff',
+                       \ 'blue2': '#0000ee',
+                       \ 'blue3': '#0000cd',
+                       \ 'blue4': '#00008b',
+                       \ 'dodgerblue1': '#1e90ff',
+                       \ 'dodgerblue2': '#1c86ee',
+                       \ 'dodgerblue3': '#1874cd',
+                       \ 'dodgerblue4': '#104e8b',
+                       \ 'steelblue1': '#63b8ff',
+                       \ 'steelblue2': '#5cacee',
+                       \ 'steelblue3': '#4f94cd',
+                       \ 'steelblue4': '#36648b',
+                       \ 'deepskyblue1': '#00bfff',
+                       \ 'deepskyblue2': '#00b2ee',
+                       \ 'deepskyblue3': '#009acd',
+                       \ 'deepskyblue4': '#00688b',
+                       \ 'skyblue1': '#87ceff',
+                       \ 'skyblue2': '#7ec0ee',
+                       \ 'skyblue3': '#6ca6cd',
+                       \ 'skyblue4': '#4a708b',
+                       \ 'lightskyblue1': '#b0e2ff',
+                       \ 'lightskyblue2': '#a4d3ee',
+                       \ 'lightskyblue3': '#8db6cd',
+                       \ 'lightskyblue4': '#607b8b',
+                       \ 'slategray1': '#c6e2ff',
+                       \ 'slategray2': '#b9d3ee',
+                       \ 'slategray3': '#9fb6cd',
+                       \ 'slategray4': '#6c7b8b',
+                       \ 'lightsteelblue1': '#cae1ff',
+                       \ 'lightsteelblue2': '#bcd2ee',
+                       \ 'lightsteelblue3': '#a2b5cd',
+                       \ 'lightsteelblue4': '#6e7b8b',
+                       \ 'lightblue1': '#bfefff',
+                       \ 'lightblue2': '#b2dfee',
+                       \ 'lightblue3': '#9ac0cd',
+                       \ 'lightblue4': '#68838b',
+                       \ 'lightcyan1': '#e0ffff',
+                       \ 'lightcyan2': '#d1eeee',
+                       \ 'lightcyan3': '#b4cdcd',
+                       \ 'lightcyan4': '#7a8b8b',
+                       \ 'paleturquoise1': '#bbffff',
+                       \ 'paleturquoise2': '#aeeeee',
+                       \ 'paleturquoise3': '#96cdcd',
+                       \ 'paleturquoise4': '#668b8b',
+                       \ 'cadetblue1': '#98f5ff',
+                       \ 'cadetblue2': '#8ee5ee',
+                       \ 'cadetblue3': '#7ac5cd',
+                       \ 'cadetblue4': '#53868b',
+                       \ 'turquoise1': '#00f5ff',
+                       \ 'turquoise2': '#00e5ee',
+                       \ 'turquoise3': '#00c5cd',
+                       \ 'turquoise4': '#00868b',
+                       \ 'cyan1': '#00ffff',
+                       \ 'cyan2': '#00eeee',
+                       \ 'cyan3': '#00cdcd',
+                       \ 'cyan4': '#008b8b',
+                       \ 'darkslategray1': '#97ffff',
+                       \ 'darkslategray2': '#8deeee',
+                       \ 'darkslategray3': '#79cdcd',
+                       \ 'darkslategray4': '#528b8b',
+                       \ 'aquamarine1': '#7fffd4',
+                       \ 'aquamarine2': '#76eec6',
+                       \ 'aquamarine3': '#66cdaa',
+                       \ 'aquamarine4': '#458b74',
+                       \ 'darkseagreen1': '#c1ffc1',
+                       \ 'darkseagreen2': '#b4eeb4',
+                       \ 'darkseagreen3': '#9bcd9b',
+                       \ 'darkseagreen4': '#698b69',
+                       \ 'seagreen1': '#54ff9f',
+                       \ 'seagreen2': '#4eee94',
+                       \ 'seagreen3': '#43cd80',
+                       \ 'seagreen4': '#2e8b57',
+                       \ 'palegreen1': '#9aff9a',
+                       \ 'palegreen2': '#90ee90',
+                       \ 'palegreen3': '#7ccd7c',
+                       \ 'palegreen4': '#548b54',
+                       \ 'springgreen1': '#00ff7f',
+                       \ 'springgreen2': '#00ee76',
+                       \ 'springgreen3': '#00cd66',
+                       \ 'springgreen4': '#008b45',
+                       \ 'green1': '#00ff00',
+                       \ 'green2': '#00ee00',
+                       \ 'green3': '#00cd00',
+                       \ 'green4': '#008b00',
+                       \ 'chartreuse1': '#7fff00',
+                       \ 'chartreuse2': '#76ee00',
+                       \ 'chartreuse3': '#66cd00',
+                       \ 'chartreuse4': '#458b00',
+                       \ 'olivedrab1': '#c0ff3e',
+                       \ 'olivedrab2': '#b3ee3a',
+                       \ 'olivedrab3': '#9acd32',
+                       \ 'olivedrab4': '#698b22',
+                       \ 'darkolivegreen1': '#caff70',
+                       \ 'darkolivegreen2': '#bcee68',
+                       \ 'darkolivegreen3': '#a2cd5a',
+                       \ 'darkolivegreen4': '#6e8b3d',
+                       \ 'khaki1': '#fff68f',
+                       \ 'khaki2': '#eee685',
+                       \ 'khaki3': '#cdc673',
+                       \ 'khaki4': '#8b864e',
+                       \ 'lightgoldenrod1': '#ffec8b',
+                       \ 'lightgoldenrod2': '#eedc82',
+                       \ 'lightgoldenrod3': '#cdbe70',
+                       \ 'lightgoldenrod4': '#8b814c',
+                       \ 'lightyellow1': '#ffffe0',
+                       \ 'lightyellow2': '#eeeed1',
+                       \ 'lightyellow3': '#cdcdb4',
+                       \ 'lightyellow4': '#8b8b7a',
+                       \ 'yellow1': '#ffff00',
+                       \ 'yellow2': '#eeee00',
+                       \ 'yellow3': '#cdcd00',
+                       \ 'yellow4': '#8b8b00',
+                       \ 'gold1': '#ffd700',
+                       \ 'gold2': '#eec900',
+                       \ 'gold3': '#cdad00',
+                       \ 'gold4': '#8b7500',
+                       \ 'goldenrod1': '#ffc125',
+                       \ 'goldenrod2': '#eeb422',
+                       \ 'goldenrod3': '#cd9b1d',
+                       \ 'goldenrod4': '#8b6914',
+                       \ 'darkgoldenrod1': '#ffb90f',
+                       \ 'darkgoldenrod2': '#eead0e',
+                       \ 'darkgoldenrod3': '#cd950c',
+                       \ 'darkgoldenrod4': '#8b6508',
+                       \ 'rosybrown1': '#ffc1c1',
+                       \ 'rosybrown2': '#eeb4b4',
+                       \ 'rosybrown3': '#cd9b9b',
+                       \ 'rosybrown4': '#8b6969',
+                       \ 'indianred1': '#ff6a6a',
+                       \ 'indianred2': '#ee6363',
+                       \ 'indianred3': '#cd5555',
+                       \ 'indianred4': '#8b3a3a',
+                       \ 'sienna1': '#ff8247',
+                       \ 'sienna2': '#ee7942',
+                       \ 'sienna3': '#cd6839',
+                       \ 'sienna4': '#8b4726',
+                       \ 'burlywood1': '#ffd39b',
+                       \ 'burlywood2': '#eec591',
+                       \ 'burlywood3': '#cdaa7d',
+                       \ 'burlywood4': '#8b7355',
+                       \ 'wheat1': '#ffe7ba',
+                       \ 'wheat2': '#eed8ae',
+                       \ 'wheat3': '#cdba96',
+                       \ 'wheat4': '#8b7e66',
+                       \ 'tan1': '#ffa54f',
+                       \ 'tan2': '#ee9a49',
+                       \ 'tan3': '#cd853f',
+                       \ 'tan4': '#8b5a2b',
+                       \ 'chocolate1': '#ff7f24',
+                       \ 'chocolate2': '#ee7621',
+                       \ 'chocolate3': '#cd661d',
+                       \ 'chocolate4': '#8b4513',
+                       \ 'firebrick1': '#ff3030',
+                       \ 'firebrick2': '#ee2c2c',
+                       \ 'firebrick3': '#cd2626',
+                       \ 'firebrick4': '#8b1a1a',
+                       \ 'brown1': '#ff4040',
+                       \ 'brown2': '#ee3b3b',
+                       \ 'brown3': '#cd3333',
+                       \ 'brown4': '#8b2323',
+                       \ 'salmon1': '#ff8c69',
+                       \ 'salmon2': '#ee8262',
+                       \ 'salmon3': '#cd7054',
+                       \ 'salmon4': '#8b4c39',
+                       \ 'lightsalmon1': '#ffa07a',
+                       \ 'lightsalmon2': '#ee9572',
+                       \ 'lightsalmon3': '#cd8162',
+                       \ 'lightsalmon4': '#8b5742',
+                       \ 'orange1': '#ffa500',
+                       \ 'orange2': '#ee9a00',
+                       \ 'orange3': '#cd8500',
+                       \ 'orange4': '#8b5a00',
+                       \ 'darkorange1': '#ff7f00',
+                       \ 'darkorange2': '#ee7600',
+                       \ 'darkorange3': '#cd6600',
+                       \ 'darkorange4': '#8b4500',
+                       \ 'coral1': '#ff7256',
+                       \ 'coral2': '#ee6a50',
+                       \ 'coral3': '#cd5b45',
+                       \ 'coral4': '#8b3e2f',
+                       \ 'tomato1': '#ff6347',
+                       \ 'tomato2': '#ee5c42',
+                       \ 'tomato3': '#cd4f39',
+                       \ 'tomato4': '#8b3626',
+                       \ 'orangered1': '#ff4500',
+                       \ 'orangered2': '#ee4000',
+                       \ 'orangered3': '#cd3700',
+                       \ 'orangered4': '#8b2500',
+                       \ 'red1': '#ff0000',
+                       \ 'red2': '#ee0000',
+                       \ 'red3': '#cd0000',
+                       \ 'red4': '#8b0000',
+                       \ 'deeppink1': '#ff1493',
+                       \ 'deeppink2': '#ee1289',
+                       \ 'deeppink3': '#cd1076',
+                       \ 'deeppink4': '#8b0a50',
+                       \ 'hotpink1': '#ff6eb4',
+                       \ 'hotpink2': '#ee6aa7',
+                       \ 'hotpink3': '#cd6090',
+                       \ 'hotpink4': '#8b3a62',
+                       \ 'pink1': '#ffb5c5',
+                       \ 'pink2': '#eea9b8',
+                       \ 'pink3': '#cd919e',
+                       \ 'pink4': '#8b636c',
+                       \ 'lightpink1': '#ffaeb9',
+                       \ 'lightpink2': '#eea2ad',
+                       \ 'lightpink3': '#cd8c95',
+                       \ 'lightpink4': '#8b5f65',
+                       \ 'palevioletred1': '#ff82ab',
+                       \ 'palevioletred2': '#ee799f',
+                       \ 'palevioletred3': '#cd6889',
+                       \ 'palevioletred4': '#8b475d',
+                       \ 'maroon1': '#ff34b3',
+                       \ 'maroon2': '#ee30a7',
+                       \ 'maroon3': '#cd2990',
+                       \ 'maroon4': '#8b1c62',
+                       \ 'violetred1': '#ff3e96',
+                       \ 'violetred2': '#ee3a8c',
+                       \ 'violetred3': '#cd3278',
+                       \ 'violetred4': '#8b2252',
+                       \ 'magenta1': '#ff00ff',
+                       \ 'magenta2': '#ee00ee',
+                       \ 'magenta3': '#cd00cd',
+                       \ 'magenta4': '#8b008b',
+                       \ 'orchid1': '#ff83fa',
+                       \ 'orchid2': '#ee7ae9',
+                       \ 'orchid3': '#cd69c9',
+                       \ 'orchid4': '#8b4789',
+                       \ 'plum1': '#ffbbff',
+                       \ 'plum2': '#eeaeee',
+                       \ 'plum3': '#cd96cd',
+                       \ 'plum4': '#8b668b',
+                       \ 'mediumorchid1': '#e066ff',
+                       \ 'mediumorchid2': '#d15fee',
+                       \ 'mediumorchid3': '#b452cd',
+                       \ 'mediumorchid4': '#7a378b',
+                       \ 'darkorchid1': '#bf3eff',
+                       \ 'darkorchid2': '#b23aee',
+                       \ 'darkorchid3': '#9a32cd',
+                       \ 'darkorchid4': '#68228b',
+                       \ 'purple1': '#9b30ff',
+                       \ 'purple2': '#912cee',
+                       \ 'purple3': '#7d26cd',
+                       \ 'purple4': '#551a8b',
+                       \ 'mediumpurple1': '#ab82ff',
+                       \ 'mediumpurple2': '#9f79ee',
+                       \ 'mediumpurple3': '#8968cd',
+                       \ 'mediumpurple4': '#5d478b',
+                       \ 'thistle1': '#ffe1ff',
+                       \ 'thistle2': '#eed2ee',
+                       \ 'thistle3': '#cdb5cd',
+                       \ 'thistle4': '#8b7b8b',
+                       \ 'gray0': '#000000',
+                       \ 'grey0': '#000000',
+                       \ 'gray1': '#030303',
+                       \ 'grey1': '#030303',
+                       \ 'gray2': '#050505',
+                       \ 'grey2': '#050505',
+                       \ 'gray3': '#080808',
+                       \ 'grey3': '#080808',
+                       \ 'gray4': '#0a0a0a',
+                       \ 'grey4': '#0a0a0a',
+                       \ 'gray5': '#0d0d0d',
+                       \ 'grey5': '#0d0d0d',
+                       \ 'gray6': '#0f0f0f',
+                       \ 'grey6': '#0f0f0f',
+                       \ 'gray7': '#121212',
+                       \ 'grey7': '#121212',
+                       \ 'gray8': '#141414',
+                       \ 'grey8': '#141414',
+                       \ 'gray9': '#171717',
+                       \ 'grey9': '#171717',
+                       \ 'gray10': '#1a1a1a',
+                       \ 'grey10': '#1a1a1a',
+                       \ 'gray11': '#1c1c1c',
+                       \ 'grey11': '#1c1c1c',
+                       \ 'gray12': '#1f1f1f',
+                       \ 'grey12': '#1f1f1f',
+                       \ 'gray13': '#212121',
+                       \ 'grey13': '#212121',
+                       \ 'gray14': '#242424',
+                       \ 'grey14': '#242424',
+                       \ 'gray15': '#262626',
+                       \ 'grey15': '#262626',
+                       \ 'gray16': '#292929',
+                       \ 'grey16': '#292929',
+                       \ 'gray17': '#2b2b2b',
+                       \ 'grey17': '#2b2b2b',
+                       \ 'gray18': '#2e2e2e',
+                       \ 'grey18': '#2e2e2e',
+                       \ 'gray19': '#303030',
+                       \ 'grey19': '#303030',
+                       \ 'gray20': '#333333',
+                       \ 'grey20': '#333333',
+                       \ 'gray21': '#363636',
+                       \ 'grey21': '#363636',
+                       \ 'gray22': '#383838',
+                       \ 'grey22': '#383838',
+                       \ 'gray23': '#3b3b3b',
+                       \ 'grey23': '#3b3b3b',
+                       \ 'gray24': '#3d3d3d',
+                       \ 'grey24': '#3d3d3d',
+                       \ 'gray25': '#404040',
+                       \ 'grey25': '#404040',
+                       \ 'gray26': '#424242',
+                       \ 'grey26': '#424242',
+                       \ 'gray27': '#454545',
+                       \ 'grey27': '#454545',
+                       \ 'gray28': '#474747',
+                       \ 'grey28': '#474747',
+                       \ 'gray29': '#4a4a4a',
+                       \ 'grey29': '#4a4a4a',
+                       \ 'gray30': '#4d4d4d',
+                       \ 'grey30': '#4d4d4d',
+                       \ 'gray31': '#4f4f4f',
+                       \ 'grey31': '#4f4f4f',
+                       \ 'gray32': '#525252',
+                       \ 'grey32': '#525252',
+                       \ 'gray33': '#545454',
+                       \ 'grey33': '#545454',
+                       \ 'gray34': '#575757',
+                       \ 'grey34': '#575757',
+                       \ 'gray35': '#595959',
+                       \ 'grey35': '#595959',
+                       \ 'gray36': '#5c5c5c',
+                       \ 'grey36': '#5c5c5c',
+                       \ 'gray37': '#5e5e5e',
+                       \ 'grey37': '#5e5e5e',
+                       \ 'gray38': '#616161',
+                       \ 'grey38': '#616161',
+                       \ 'gray39': '#636363',
+                       \ 'grey39': '#636363',
+                       \ 'gray40': '#666666',
+                       \ 'grey40': '#666666',
+                       \ 'gray41': '#696969',
+                       \ 'grey41': '#696969',
+                       \ 'gray42': '#6b6b6b',
+                       \ 'grey42': '#6b6b6b',
+                       \ 'gray43': '#6e6e6e',
+                       \ 'grey43': '#6e6e6e',
+                       \ 'gray44': '#707070',
+                       \ 'grey44': '#707070',
+                       \ 'gray45': '#737373',
+                       \ 'grey45': '#737373',
+                       \ 'gray46': '#757575',
+                       \ 'grey46': '#757575',
+                       \ 'gray47': '#787878',
+                       \ 'grey47': '#787878',
+                       \ 'gray48': '#7a7a7a',
+                       \ 'grey48': '#7a7a7a',
+                       \ 'gray49': '#7d7d7d',
+                       \ 'grey49': '#7d7d7d',
+                       \ 'gray50': '#7f7f7f',
+                       \ 'grey50': '#7f7f7f',
+                       \ 'gray51': '#828282',
+                       \ 'grey51': '#828282',
+                       \ 'gray52': '#858585',
+                       \ 'grey52': '#858585',
+                       \ 'gray53': '#878787',
+                       \ 'grey53': '#878787',
+                       \ 'gray54': '#8a8a8a',
+                       \ 'grey54': '#8a8a8a',
+                       \ 'gray55': '#8c8c8c',
+                       \ 'grey55': '#8c8c8c',
+                       \ 'gray56': '#8f8f8f',
+                       \ 'grey56': '#8f8f8f',
+                       \ 'gray57': '#919191',
+                       \ 'grey57': '#919191',
+                       \ 'gray58': '#949494',
+                       \ 'grey58': '#949494',
+                       \ 'gray59': '#969696',
+                       \ 'grey59': '#969696',
+                       \ 'gray60': '#999999',
+                       \ 'grey60': '#999999',
+                       \ 'gray61': '#9c9c9c',
+                       \ 'grey61': '#9c9c9c',
+                       \ 'gray62': '#9e9e9e',
+                       \ 'grey62': '#9e9e9e',
+                       \ 'gray63': '#a1a1a1',
+                       \ 'grey63': '#a1a1a1',
+                       \ 'gray64': '#a3a3a3',
+                       \ 'grey64': '#a3a3a3',
+                       \ 'gray65': '#a6a6a6',
+                       \ 'grey65': '#a6a6a6',
+                       \ 'gray66': '#a8a8a8',
+                       \ 'grey66': '#a8a8a8',
+                       \ 'gray67': '#ababab',
+                       \ 'grey67': '#ababab',
+                       \ 'gray68': '#adadad',
+                       \ 'grey68': '#adadad',
+                       \ 'gray69': '#b0b0b0',
+                       \ 'grey69': '#b0b0b0',
+                       \ 'gray70': '#b3b3b3',
+                       \ 'grey70': '#b3b3b3',
+                       \ 'gray71': '#b5b5b5',
+                       \ 'grey71': '#b5b5b5',
+                       \ 'gray72': '#b8b8b8',
+                       \ 'grey72': '#b8b8b8',
+                       \ 'gray73': '#bababa',
+                       \ 'grey73': '#bababa',
+                       \ 'gray74': '#bdbdbd',
+                       \ 'grey74': '#bdbdbd',
+                       \ 'gray75': '#bfbfbf',
+                       \ 'grey75': '#bfbfbf',
+                       \ 'gray76': '#c2c2c2',
+                       \ 'grey76': '#c2c2c2',
+                       \ 'gray77': '#c4c4c4',
+                       \ 'grey77': '#c4c4c4',
+                       \ 'gray78': '#c7c7c7',
+                       \ 'grey78': '#c7c7c7',
+                       \ 'gray79': '#c9c9c9',
+                       \ 'grey79': '#c9c9c9',
+                       \ 'gray80': '#cccccc',
+                       \ 'grey80': '#cccccc',
+                       \ 'gray81': '#cfcfcf',
+                       \ 'grey81': '#cfcfcf',
+                       \ 'gray82': '#d1d1d1',
+                       \ 'grey82': '#d1d1d1',
+                       \ 'gray83': '#d4d4d4',
+                       \ 'grey83': '#d4d4d4',
+                       \ 'gray84': '#d6d6d6',
+                       \ 'grey84': '#d6d6d6',
+                       \ 'gray85': '#d9d9d9',
+                       \ 'grey85': '#d9d9d9',
+                       \ 'gray86': '#dbdbdb',
+                       \ 'grey86': '#dbdbdb',
+                       \ 'gray87': '#dedede',
+                       \ 'grey87': '#dedede',
+                       \ 'gray88': '#e0e0e0',
+                       \ 'grey88': '#e0e0e0',
+                       \ 'gray89': '#e3e3e3',
+                       \ 'grey89': '#e3e3e3',
+                       \ 'gray90': '#e5e5e5',
+                       \ 'grey90': '#e5e5e5',
+                       \ 'gray91': '#e8e8e8',
+                       \ 'grey91': '#e8e8e8',
+                       \ 'gray92': '#ebebeb',
+                       \ 'grey92': '#ebebeb',
+                       \ 'gray93': '#ededed',
+                       \ 'grey93': '#ededed',
+                       \ 'gray94': '#f0f0f0',
+                       \ 'grey94': '#f0f0f0',
+                       \ 'gray95': '#f2f2f2',
+                       \ 'grey95': '#f2f2f2',
+                       \ 'gray96': '#f5f5f5',
+                       \ 'grey96': '#f5f5f5',
+                       \ 'gray97': '#f7f7f7',
+                       \ 'grey97': '#f7f7f7',
+                       \ 'gray98': '#fafafa',
+                       \ 'grey98': '#fafafa',
+                       \ 'gray99': '#fcfcfc',
+                       \ 'grey99': '#fcfcfc',
+                       \ 'gray100': '#ffffff',
+                       \ 'grey100': '#ffffff',
+                       \ 'dark grey': '#a9a9a9',
+                       \ 'darkgrey': '#a9a9a9',
+                       \ 'dark gray': '#a9a9a9',
+                       \ 'darkgray': '#a9a9a9',
+                       \ 'dark blue': '#00008b',
+                       \ 'darkblue': '#00008b',
+                       \ 'dark cyan': '#008b8b',
+                       \ 'darkcyan': '#008b8b',
+                       \ 'dark magenta': '#8b008b',
+                       \ 'darkmagenta': '#8b008b',
+                       \ 'dark red': '#8b0000',
+                       \ 'darkred': '#8b0000',
+                       \ 'light green': '#90ee90',
+                       \ 'lightgreen': '#90ee90',
+                       \ 'crimson': '#dc143c',
+                       \ 'indigo': '#4b0082',
+                       \ 'olive': '#808000',
+                       \ 'rebecca purple': '#663399',
+                       \ 'rebeccapurple': '#663399',
+                       \ 'silver': '#c0c0c0',
+                       \ 'teal': '#008080'
+                       \ }, 'keep')
+
+let &cpo= s:keepcpo
+unlet s:keepcpo
+
+"vim: sw=4
index 8d31483ec63cbcec4d94c6284705487b033a2289..418aee9cebba55719a4e0d9e42b959ff4e2d1a77 100644 (file)
@@ -1840,6 +1840,43 @@ v:collate        The current locale setting for collation order of the runtime
                command.
                See |multi-lang|.
 
+                                                                *v:colornames*
+v:colornames    A dictionary that maps color names to hex color strings. These
+               color names can be used with the |highlight-guifg|,
+               |highlight-guibg|, and |highlight-guisp| parameters. Updating
+               an entry in v:colornames has no immediate effect on the syntax
+               highlighting. The highlight commands (probably in a
+               colorscheme script) need to be re-evaluated in order to use
+               the updated color values. For example: >
+
+                   :let v:colornames['fuscia'] = '#cf3ab4'
+                   :let v:colornames['mauve'] = '#915f6d'
+                   :highlight Normal guifg=fuscia guibg=mauve
+<
+               This cannot be used to override the |cterm-colors| but it can
+               be used to override other colors. For example, the X11 colors
+               defined in the `colors/lists/default.vim` (previously defined
+               in |rgb.txt|). When defining new color names in a plugin, the
+               recommended practice is to set a color entry only when it does
+               not already exist. For example: >
+
+                   :call extend(v:colornames, {
+                       \ 'fuscia': '#cf3ab4',
+                       \ 'mauve': '#915f6d,
+                       \ }, 'keep')
+<
+               Using |extend| with the 'keep' option updates each color only
+               if it did not exist in |v:colornames|. Doing so allows the
+               user to choose the precise color value for a common name
+               by setting it in their |.vimrc|.
+
+               It is possible to remove entries from this dictionary but
+               doing so is *NOT* recommended. Doing so is disruptive to
+               other scripts. It is also unlikely to achieve the desired
+               result because the |colorscheme| and |highlight| commands will
+               both automatically load all `colors/lists/default.vim` color
+               scripts.
+
                                *v:completed_item* *completed_item-variable*
 v:completed_item
                |Dictionary| containing the |complete-items| for the most
index b83df1b98b7cb5225f5d8335df7eb8c5c223eabc..227d0a271abbdcd6b25d9f3dff33b68e1d8fd872 100644 (file)
@@ -323,20 +323,10 @@ These extra colors are also available:
 Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet,
 
                                                                *rgb.txt*
-Additionally, colors defined by a "rgb.txt" file can be used.  This file is
-well known from X11.  A few lines from it: >
-
-  255 218 185             peach puff
-  205 133  63             peru
-  255 181 197             pink
-
-This shows the layout of the file:  First the R, G and B value as a decimal
-number, followed by the name of the color.  The four fields are separated by
-spaces.
-
-You can get an rgb.txt file from any X11 distribution.  It is located in a
-directory like "/usr/X11R6/lib/X11/".  For Vim it must be located in the
-$VIMRUNTIME directory.  Thus the file can be found with "$VIMRUNTIME/rgb.txt".
+Additionally, colors defined by a default color list can be used.  For more
+info see |:colorscheme|.  These colors used to be defined in
+$VIMRUNTIME/rgb.txt, now they are in |v:colornames| which is initialized from
+$VIMRUNTIME/colors/lists/default.vim.
 
 ==============================================================================
                                                *gui-w32-dialogs* *dialog*
index 2dc753546895487f213f5911b02616af49f686c9..5334ac00c05c290ecf6f360613c80a69d3a347f1 100644 (file)
@@ -141,6 +141,11 @@ larger.  When it's more there probably is an endless loop.  Probably a
 The color name {name} is unknown.  See |gui-colors| for a list of colors that
 are available on most systems.
 
+                                                       *E1244*  >
+  Bad color string: {str}
+
+The provided color did not conform to the pattern #rrggbb
+
                                                        *E458*  >
   Cannot allocate colormap entry, some colors may be incorrect
 
index 5c520b068322b98a45571a38baa611eb20ebecfa..a22b99bf433810b5f37b630849da627181b09fb0 100644 (file)
@@ -194,9 +194,8 @@ $VIM/macros/swapmous.vim for an example.            |gui-mouse-mapping|
 
 11. Color names                                                *haiku-colors*
 
-Vim has a number of color names built-in.  Additional names are read from the
-file $VIMRUNTIME/rgb.txt, if present.  This file is basically the color
-database from X.  Names used from this file are cached for efficiency.
+Vim has a number of color names built-in. Additional names can be defined in
+|v:colornames|. See |:colorscheme| for details.
 
 
 12. GUI Toolbar Images                                 *haiku-toolbar-images*
index 1ade9e99d955127ed35bbdc1a4637f0690e6ca2a..1c20659acf64f039939a5d9687d4d5dc5909b2ac 100644 (file)
@@ -5143,8 +5143,35 @@ guisp={color-name}                                       *highlight-guisp*
                "gg"    is the Green value
                "bb"    is the Blue value
        All values are hexadecimal, range from "00" to "ff".  Examples: >
-  :highlight Comment guifg=#11f0c3 guibg=#ff00ff
+            :highlight Comment guifg=#11f0c3 guibg=#ff00ff
 <
+       If you are authoring a color scheme and use the same hexademical value
+       repeatedly, you can define a name for it in |v:colornames|. For
+       example: >
+
+           # provide a default value for this color but allow the user to
+           # override it.
+           :call extend(v:colornames, {'alt_turquoise': '#11f0c3'}, 'keep')
+           :highlight Comment guifg=alt_turquoise guibg=magenta
+<
+       If you are using a color scheme that relies on named colors and you
+       would like to adjust the precise appearance of those colors, you can
+       do so by overriding the values in |v:colornames| prior to loading the
+       scheme: >
+
+           let v:colornames['alt_turquoise'] = '#22f0d3'
+           colorscheme alt
+<
+       If you want to develop a color list that can be relied on by others,
+       it is best to prefix your color names. By convention these color lists
+       are placed in the colors/lists directory. You can see an example in
+       '$VIMRUNTIME/colors/lists/csscolors.vim'. This list would be sourced
+       by a color scheme using: >
+
+           :runtime colors/lists/csscolors.vim
+           :highlight Comment guifg=css_turquoise
+<
+
                                        *highlight-groups* *highlight-default*
 These are the default highlighting groups.  These groups are used by the
 'highlight' option default.  Note that the highlighting depends on the value
index 65d69dec5cf756c87e4b55a8c96dc5310be38ebc..2cf672e70c14db33db746639b52512cc35a105ef 100644 (file)
@@ -184,7 +184,30 @@ this command: >
        :runtime syntax/colortest.vim
 
 You will see text in various color combinations.  You can check which ones are
-readable and look nice.
+readable and look nice. These aren't the only colors available to you though.
+You can specify #rrggbb hex colors and you can define new names for hex
+colors in |v:colornames| like so: >
+
+       let v:colornames['mine_red'] = '#aa0000'
+<
+If you are authoring a color scheme for others to use, it is important
+to define these colors only when they do not exist: >
+
+       call extend(v:colornames, {'mine_red': '#aa0000'}, 'keep')
+
+This allows users of the color scheme to override the precise definition of
+that color prior to loading your color scheme. For example, in a |.vimrc|
+file:
+
+       runtime colors/lists/css_colors.vim
+       let v:colornames['your_red'] = v:colornames['css_red']
+       colorscheme yourscheme
+
+As a color scheme author, you should be able to rely on some color names for
+GUI colors. These are defined in `colors/lists/default.vim`. All such files
+found on the |runtimepath| are loaded each time the colorscheme command is
+run. A canonical list is provided by the vim distribution, which should
+include all X11 colors (previously defined in rgb.txt).
 
 ==============================================================================
 *06.4* With colors or without colors
index 32411d0b889f8a3447cd86c94c6dc482e16aa770..e5953afdbd0a84278575e124805cd70ab3bd9317 100644 (file)
@@ -1136,9 +1136,6 @@ SYS_DELMENU_FILE = $(DESTDIR)$(SCRIPTLOC)/delmenu.vim
 ### Name of the bugreport file target.
 SYS_BUGR_FILE  = $(DESTDIR)$(SCRIPTLOC)/bugreport.vim
 
-### Name of the rgb.txt file target.
-SYS_RGB_FILE   = $(DESTDIR)$(SCRIPTLOC)/rgb.txt
-
 ### Name of the file type detection file target.
 SYS_FILETYPE_FILE = $(DESTDIR)$(SCRIPTLOC)/filetype.vim
 
@@ -2449,9 +2446,6 @@ installrtbase: $(HELPSOURCE)/vim.1 $(DEST_VIM) $(DEST_RT) \
        chmod $(VIMSCRIPTMOD) $(EVIM_FILE)
        $(INSTALL_DATA) $(SCRIPTSOURCE)/mswin.vim $(MSWIN_FILE)
        chmod $(VIMSCRIPTMOD) $(MSWIN_FILE)
-# install the rgb.txt file
-       $(INSTALL_DATA) $(SCRIPTSOURCE)/rgb.txt $(SYS_RGB_FILE)
-       chmod $(VIMSCRIPTMOD) $(SYS_RGB_FILE)
 # install the bugreport file
        $(INSTALL_DATA) $(SCRIPTSOURCE)/bugreport.vim $(SYS_BUGR_FILE)
        chmod $(VIMSCRIPTMOD) $(SYS_BUGR_FILE)
@@ -2481,7 +2475,7 @@ installrtbase: $(HELPSOURCE)/vim.1 $(DEST_VIM) $(DEST_RT) \
        cd $(PRINTSOURCE); $(INSTALL_DATA) *.ps $(DEST_PRINT)
        cd $(DEST_PRINT); chmod $(FILEMOD) *.ps
 # install the colorscheme files
-       cd $(COLSOURCE); $(INSTALL_DATA_R) *.vim tools README.txt $(DEST_COL)
+       cd $(COLSOURCE); $(INSTALL_DATA_R) *.vim lists tools README.txt $(DEST_COL)
        cd $(DEST_COL); chmod $(DIRMOD) tools
        cd $(DEST_COL); chmod $(HELPMOD) *.vim README.txt tools/*.vim
 # install the syntax files
@@ -2894,7 +2888,6 @@ uninstall_runtime:
        -rm -f $(DEST_MAN_RU)/xxd.1 $(DEST_MAN_RU_U)/xxd.1
        -rm -f $(DEST_HELP)/*.txt $(DEST_HELP)/tags $(DEST_HELP)/*.pl
        -rm -f $(DEST_HELP)/*.??x $(DEST_HELP)/tags-??
-       -rm -f $(SYS_RGB_FILE)
        -rm -f $(SYS_MENU_FILE) $(SYS_SYNMENU_FILE) $(SYS_DELMENU_FILE)
        -rm -f $(SYS_BUGR_FILE) $(VIM_DEFAULTS_FILE) $(EVIM_FILE) $(MSWIN_FILE)
        -rm -f $(DEST_SCRIPT)/gvimrc_example.vim $(DEST_SCRIPT)/vimrc_example.vim
@@ -3666,12 +3659,10 @@ Makefile:
 # This rule:
 #              - add resources to already installed vim binary to avoid
 #                stripping them during install;
-#              - copy rgb.txt to runtime directory;
 #              - update system MIME database with info about vim application.
 #
 install_haiku_extra: $(DEST_BIN)/$(VIMTARGET) objects/os_haiku.rsrc
        xres -o $(DEST_BIN)/$(VIMTARGET) objects/os_haiku.rsrc
-       $(INSTALL_DATA) $(SCRIPTSOURCE)/rgb.txt $(DEST_RT)
        mimeset $(DEST_BIN)/$(VIMTARGET)
 
 # List of g*-links that should be replaced with shell script equivalents.
index 7778b39602c934f3a4f931ab0768ba7eaee16086..537072d7d5c442a26286d6f8aaf041c5dd7e3132 100644 (file)
@@ -147,6 +147,10 @@ EXTERN char e_no_such_user_defined_command_str[]
 EXTERN char e_no_digraphs_version[]
        INIT(= N_("E196: No digraphs in this version"));
 #endif
+#if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
+EXTERN char e_cannot_allocate_color_str[]
+       INIT(= N_("E254: Cannot allocate color %s"));
+#endif
 EXTERN char e_ambiguous_use_of_user_defined_command[]
        INIT(= N_("E464: Ambiguous use of user-defined command"));
 EXTERN char e_invalid_command[]
@@ -678,3 +682,5 @@ EXTERN char e_no_white_space_allowed_before_separator_str[]
        INIT(= N_("E1242: No white space allowed before separator: %s"));
 EXTERN char e_ascii_code_not_in_range[]
        INIT(= N_("E1243: ASCII code not in 32-127 range"));
+EXTERN char e_bad_color_string_str[]
+       INIT(= N_("E1244: Bad color string: %s"));
index fbf2d68d1b9888b8a0efe1edecf147bf8074d22a..08736dd8c7a04fdb7516c750b4bbab8ca3d0d185 100644 (file)
@@ -149,6 +149,7 @@ static struct vimvar
     {VV_NAME("argv",            VAR_LIST), VV_RO},
     {VV_NAME("collate",                 VAR_STRING), VV_RO},
     {VV_NAME("exiting",                 VAR_SPECIAL), VV_RO},
+    {VV_NAME("colornames",       VAR_DICT), VV_RO},
 };
 
 // shorthand
@@ -248,6 +249,8 @@ evalvars_init(void)
 
     set_vim_var_nr(VV_ECHOSPACE,    sc_col - 1);
 
+    set_vim_var_dict(VV_COLORNAMES, dict_alloc());
+
     // Default for v:register is not 0 but '"'.  This is adjusted once the
     // clipboard has been setup by calling reset_reg_var().
     set_reg_var(0);
index 948c35f84fdf6dbece656737ae6af2fd499df08a..5c54130ebd240058cbedd346ebddb18c8dc1dcbf 100644 (file)
@@ -1774,9 +1774,6 @@ EXTERN char e_nowhitespace[]      INIT(= N_("E274: No white space allowed before pare
 EXTERN char e_lock_unlock[]    INIT(= N_("E940: Cannot lock or unlock variable %s"));
 #endif
 
-#if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
-EXTERN char e_alloc_color[]    INIT(= N_("E254: Cannot allocate color %s"));
-#endif
 EXTERN char e_chan_or_job_req[]        INIT(= N_("E706: Channel or Job required"));
 EXTERN char e_jobreq[]         INIT(= N_("E693: Job required"));
 
index 1edf659dd1f9f27566fbea898af5779e8e719921..68754b3bc0bfeafd949e66665e6cff8323af859e 100644 (file)
--- a/src/gui.c
+++ b/src/gui.c
@@ -4785,7 +4785,7 @@ gui_get_color(char_u *name)
            && gui.in_use
 #endif
            )
-       semsg(_(e_alloc_color), name);
+       semsg(_(e_cannot_allocate_color_str), name);
     return t;
 }
 
index 644c2db66584fdf33a4e150c6666148afb653a37..6d973c56568fbbbff686d31b9cc85597bc87cdcf 100644 (file)
@@ -4054,164 +4054,7 @@ guicolor_T
 gui_mch_get_color(
        char_u  *name)
 {
-    typedef struct GuiColourTable
-    {
-       const char    *name;
-       guicolor_T     colour;
-    } GuiColourTable;
-
-#define NSTATIC_COLOURS            50 // 32
-#define NDYNAMIC_COLOURS    33
-#define NCOLOURS       (NSTATIC_COLOURS + NDYNAMIC_COLOURS)
-
-    static GuiColourTable table[NCOLOURS] =
-    {
-       {"Black",       RGB(0x00, 0x00, 0x00)},
-       {"DarkGray",        RGB(0x80, 0x80, 0x80)},
-       {"DarkGrey",        RGB(0x80, 0x80, 0x80)},
-       {"Gray",        RGB(0xC0, 0xC0, 0xC0)},
-       {"Grey",        RGB(0xC0, 0xC0, 0xC0)},
-       {"LightGray",       RGB(0xD3, 0xD3, 0xD3)},
-       {"LightGrey",       RGB(0xD3, 0xD3, 0xD3)},
-       {"Gray10",      RGB(0x1A, 0x1A, 0x1A)},
-       {"Grey10",      RGB(0x1A, 0x1A, 0x1A)},
-       {"Gray20",      RGB(0x33, 0x33, 0x33)},
-       {"Grey20",      RGB(0x33, 0x33, 0x33)},
-       {"Gray30",      RGB(0x4D, 0x4D, 0x4D)},
-       {"Grey30",      RGB(0x4D, 0x4D, 0x4D)},
-       {"Gray40",      RGB(0x66, 0x66, 0x66)},
-       {"Grey40",      RGB(0x66, 0x66, 0x66)},
-       {"Gray50",      RGB(0x7F, 0x7F, 0x7F)},
-       {"Grey50",      RGB(0x7F, 0x7F, 0x7F)},
-       {"Gray60",      RGB(0x99, 0x99, 0x99)},
-       {"Grey60",      RGB(0x99, 0x99, 0x99)},
-       {"Gray70",      RGB(0xB3, 0xB3, 0xB3)},
-       {"Grey70",      RGB(0xB3, 0xB3, 0xB3)},
-       {"Gray80",      RGB(0xCC, 0xCC, 0xCC)},
-       {"Grey80",      RGB(0xCC, 0xCC, 0xCC)},
-       {"Gray90",      RGB(0xE5, 0xE5, 0xE5)},
-       {"Grey90",      RGB(0xE5, 0xE5, 0xE5)},
-       {"White",       RGB(0xFF, 0xFF, 0xFF)},
-       {"DarkRed",     RGB(0x80, 0x00, 0x00)},
-       {"Red",         RGB(0xFF, 0x00, 0x00)},
-       {"LightRed",        RGB(0xFF, 0xA0, 0xA0)},
-       {"DarkBlue",        RGB(0x00, 0x00, 0x80)},
-       {"Blue",        RGB(0x00, 0x00, 0xFF)},
-       {"LightBlue",       RGB(0xA0, 0xA0, 0xFF)},
-       {"DarkGreen",       RGB(0x00, 0x80, 0x00)},
-       {"Green",       RGB(0x00, 0xFF, 0x00)},
-       {"LightGreen",      RGB(0xA0, 0xFF, 0xA0)},
-       {"DarkCyan",        RGB(0x00, 0x80, 0x80)},
-       {"Cyan",        RGB(0x00, 0xFF, 0xFF)},
-       {"LightCyan",       RGB(0xA0, 0xFF, 0xFF)},
-       {"DarkMagenta",     RGB(0x80, 0x00, 0x80)},
-       {"Magenta",     RGB(0xFF, 0x00, 0xFF)},
-       {"LightMagenta",    RGB(0xFF, 0xA0, 0xFF)},
-       {"Brown",       RGB(0x80, 0x40, 0x40)},
-       {"Yellow",      RGB(0xFF, 0xFF, 0x00)},
-       {"LightYellow",     RGB(0xFF, 0xFF, 0xA0)},
-       {"DarkYellow",      RGB(0xBB, 0xBB, 0x00)},
-       {"SeaGreen",        RGB(0x2E, 0x8B, 0x57)},
-       {"Orange",      RGB(0xFF, 0xA5, 0x00)},
-       {"Purple",      RGB(0xA0, 0x20, 0xF0)},
-       {"SlateBlue",       RGB(0x6A, 0x5A, 0xCD)},
-       {"Violet",      RGB(0xEE, 0x82, 0xEE)},
-       //  NOTE: some entries are zero-allocated for NDDYNAMIC_COLORS
-       //       in this table!
-    };
-
-    static int endColour = NSTATIC_COLOURS;
-    static int newColour = NSTATIC_COLOURS;
-
-    int                r, g, b;
-    int                i;
-
-    if (name[0] == '#' && STRLEN(name) == 7)
-    {
-       // Name is in "#rrggbb" format
-       r = hex_digit(name[1]) * 16 + hex_digit(name[2]);
-       g = hex_digit(name[3]) * 16 + hex_digit(name[4]);
-       b = hex_digit(name[5]) * 16 + hex_digit(name[6]);
-       if (r < 0 || g < 0 || b < 0)
-           return INVALCOLOR;
-       return RGB(r, g, b);
-    }
-    else
-    {
-       // Check if the name is one of the colours we know
-       for (i = 0; i < endColour; i++)
-           if (STRICMP(name, table[i].name) == 0)
-               return table[i].colour;
-    }
-
-    /*
-     * Last attempt. Look in the file "$VIMRUNTIME/rgb.txt".
-     */
-    {
-#define LINE_LEN 100
-       FILE    *fd;
-       char    line[LINE_LEN];
-       char_u  *fname;
-
-       fname = expand_env_save((char_u *)"$VIMRUNTIME/rgb.txt");
-       if (fname == NULL)
-           return INVALCOLOR;
-
-       fd = fopen((char *)fname, "rt");
-       vim_free(fname);
-       if (fd == NULL)
-           return INVALCOLOR;
-
-       while (!feof(fd))
-       {
-           int     len;
-           int     pos;
-           char    *colour;
-
-           fgets(line, LINE_LEN, fd);
-           len = strlen(line);
-
-           if (len <= 1 || line[len-1] != '\n')
-               continue;
-
-           line[len-1] = '\0';
-
-           i = sscanf(line, "%d %d %d %n", &r, &g, &b, &pos);
-           if (i != 3)
-               continue;
-
-           colour = line + pos;
-
-           if (STRICMP(colour, name) == 0)
-           {
-               fclose(fd);
-               /*
-                * Now remember this colour in the table.
-                * A LRU scheme might be better but this is simpler.
-                * Or could use a growing array.
-                */
-               guicolor_T gcolour = RGB(r,g,b);
-
-               // NOTE: see note above in table allocation! We are working here with
-               //      dynamically allocated names, not constant ones!
-               vim_free((char*)table[newColour].name);
-               table[newColour].name = (char *)vim_strsave((char_u *)colour);
-               table[newColour].colour = gcolour;
-
-               newColour++;
-               if (newColour >= NCOLOURS)
-                   newColour = NSTATIC_COLOURS;
-               if (endColour < NCOLOURS)
-                   endColour = newColour;
-
-               return gcolour;
-           }
-       }
-
-       fclose(fd);
-    }
-
-    return INVALCOLOR;
+    return gui_get_color_cmn(name);
 }
 
 /*
index 76d9a7e82eb6ce52408639e44fb9a7dad3a15d3a..5dde08b8f3994d0257f94c19bbb57d1cea458bc3 100644 (file)
@@ -475,6 +475,9 @@ load_colors(char_u *name)
     buf = alloc(STRLEN(name) + 12);
     if (buf != NULL)
     {
+#ifdef FEAT_EVAL
+       load_default_colors_lists();
+#endif
        apply_autocmds(EVENT_COLORSCHEMEPRE, name,
                                               curbuf->b_fname, FALSE, curbuf);
        sprintf((char *)buf, "colors/%s.vim", name);
@@ -1190,7 +1193,7 @@ highlight_set_guibg(
            HL_TABLE()[idx].sg_set |= SG_GUI;
 
 # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
-       // In GUI guifg colors are only used when recognized
+       // In GUI guibg colors are only used when recognized
        i = color_name2handle(arg);
        if (i != INVALCOLOR || STRCMP(arg, "NONE") == 0 || !USE_24BIT)
        {
@@ -2231,6 +2234,234 @@ color_name2handle(char_u *name)
 
     return GUI_GET_COLOR(name);
 }
+
+// On MS-Windows an RGB macro is available and it produces 0x00bbggrr color
+// values as used by the MS-Windows GDI api.  It should be used only for
+// MS-Windows GDI builds.
+# if defined(RGB) && defined(MSWIN) && !defined(FEAT_GUI)
+#  undef RGB
+# endif
+# ifndef RGB
+#  define RGB(r, g, b) ((r<<16) | (g<<8) | (b))
+# endif
+
+# ifdef VIMDLL
+    static guicolor_T
+gui_adjust_rgb(guicolor_T c)
+{
+    if (gui.in_use)
+       return c;
+    else
+       return ((c & 0xff) << 16) | (c & 0x00ff00) | ((c >> 16) & 0xff);
+}
+# else
+#  define gui_adjust_rgb(c) (c)
+# endif
+
+    static int
+hex_digit(int c)
+{
+    if (isdigit(c))
+       return c - '0';
+    c = TOLOWER_ASC(c);
+    if (c >= 'a' && c <= 'f')
+       return c - 'a' + 10;
+    return 0x1ffffff;
+}
+
+    guicolor_T
+decode_hex_color(char_u *hex)
+{
+    guicolor_T color;
+
+    if (hex[0] != '#' || STRLEN(hex) != 7)
+       return INVALCOLOR;
+
+    // Name is in "#rrggbb" format
+    color = RGB(((hex_digit(hex[1]) << 4) + hex_digit(hex[2])),
+               ((hex_digit(hex[3]) << 4) + hex_digit(hex[4])),
+               ((hex_digit(hex[5]) << 4) + hex_digit(hex[6])));
+    if (color > 0xffffff)
+       return INVALCOLOR;
+    return gui_adjust_rgb(color);
+}
+
+#if defined(FEAT_EVAL)
+// Returns the color currently mapped to the given name or INVALCOLOR if no
+// such name exists in the color table. The convention is to use lowercase for
+// all keys in the v:colornames dictionary. The value can be either a string in
+// the form #rrggbb or a number, either of which is converted to a guicolor_T.
+    guicolor_T
+colorname2rgb(char_u *name)
+{
+    dict_T      *colornames_table = get_vim_var_dict(VV_COLORNAMES);
+    char_u      *lc_name;
+    dictitem_T  *colentry;
+    char_u      *colstr;
+    varnumber_T colnum;
+
+    lc_name = strlow_save(name);
+    if (lc_name == NULL)
+       return INVALCOLOR;
+
+    colentry = dict_find(colornames_table, lc_name, -1);
+    vim_free(lc_name);
+    if (colentry == NULL)
+       return INVALCOLOR;
+
+    if (colentry->di_tv.v_type == VAR_STRING)
+    {
+       colstr = tv_get_string_strict(&colentry->di_tv);
+       if ((STRLEN(colstr) == 7) && (*colstr == '#'))
+       {
+           return decode_hex_color(colstr);
+       }
+       else
+       {
+           semsg(_(e_bad_color_string_str), colstr);
+           return INVALCOLOR;
+       }
+    }
+
+    if (colentry->di_tv.v_type == VAR_NUMBER)
+    {
+       colnum = tv_get_number(&colentry->di_tv);
+       return (guicolor_T)colnum;
+    }
+
+    return INVALCOLOR;
+}
+
+// Maps the given name to the given color value, overwriting any current
+// mapping. If allocation fails the named color will no longer exist in the
+// table and the user will receive an error message.
+    void
+save_colorname_hexstr(int r, int g, int b, char_u *name)
+{
+    int        result;
+    dict_T     *colornames_table;
+    dictitem_T *existing;
+    char_u     hexstr[8];
+
+    if (vim_snprintf((char *)hexstr, sizeof(hexstr),
+                                                "#%02x%02x%02x", r, g, b) < 0)
+    {
+       semsg(_(e_cannot_allocate_color_str), name);
+       return;
+    }
+
+    colornames_table = get_vim_var_dict(VV_COLORNAMES);
+    // The colornames_table dict is safe to use here because it is allocated at
+    // startup in evalvars.c
+    existing = dict_find(colornames_table, name, -1);
+    if (existing != NULL)
+    {
+       dictitem_remove(colornames_table, existing);
+       existing = NULL; // dictitem_remove freed the item
+    }
+
+    result = dict_add_string(colornames_table, (char *)name, hexstr);
+    if (result == FAIL)
+       semsg(_(e_cannot_allocate_color_str), name);
+}
+
+/*
+ * Load a default color list. Intended to support legacy color names but allows
+ * the user to override the color values. Only loaded once.
+ */
+    void
+load_default_colors_lists()
+{
+    // Lacking a default color list isn't the end of the world but it is likely
+    // an inconvenience so users should know when it is missing.
+    if (source_runtime((char_u *)"colors/lists/default.vim", DIP_ALL) != OK)
+       msg("failed to load colors/lists/default.vim");
+}
+#endif
+
+    guicolor_T
+gui_get_color_cmn(char_u *name)
+{
+    int         i;
+    guicolor_T  color;
+
+    struct rgbcolor_table_S {
+       char_u      *color_name;
+       guicolor_T  color;
+    };
+
+    // Only non X11 colors (not present in rgb.txt) and colors in
+    // color_names[], useful when $VIMRUNTIME is not found,.
+    static struct rgbcolor_table_S rgb_table[] = {
+           {(char_u *)"black",         RGB(0x00, 0x00, 0x00)},
+           {(char_u *)"blue",          RGB(0x00, 0x00, 0xFF)},
+           {(char_u *)"brown",         RGB(0xA5, 0x2A, 0x2A)},
+           {(char_u *)"cyan",          RGB(0x00, 0xFF, 0xFF)},
+           {(char_u *)"darkblue",      RGB(0x00, 0x00, 0x8B)},
+           {(char_u *)"darkcyan",      RGB(0x00, 0x8B, 0x8B)},
+           {(char_u *)"darkgray",      RGB(0xA9, 0xA9, 0xA9)},
+           {(char_u *)"darkgreen",     RGB(0x00, 0x64, 0x00)},
+           {(char_u *)"darkgrey",      RGB(0xA9, 0xA9, 0xA9)},
+           {(char_u *)"darkmagenta",   RGB(0x8B, 0x00, 0x8B)},
+           {(char_u *)"darkred",       RGB(0x8B, 0x00, 0x00)},
+           {(char_u *)"darkyellow",    RGB(0x8B, 0x8B, 0x00)}, // No X11
+           {(char_u *)"gray",          RGB(0xBE, 0xBE, 0xBE)},
+           {(char_u *)"green",         RGB(0x00, 0xFF, 0x00)},
+           {(char_u *)"grey",          RGB(0xBE, 0xBE, 0xBE)},
+           {(char_u *)"grey40",        RGB(0x66, 0x66, 0x66)},
+           {(char_u *)"grey50",        RGB(0x7F, 0x7F, 0x7F)},
+           {(char_u *)"grey90",        RGB(0xE5, 0xE5, 0xE5)},
+           {(char_u *)"lightblue",     RGB(0xAD, 0xD8, 0xE6)},
+           {(char_u *)"lightcyan",     RGB(0xE0, 0xFF, 0xFF)},
+           {(char_u *)"lightgray",     RGB(0xD3, 0xD3, 0xD3)},
+           {(char_u *)"lightgreen",    RGB(0x90, 0xEE, 0x90)},
+           {(char_u *)"lightgrey",     RGB(0xD3, 0xD3, 0xD3)},
+           {(char_u *)"lightmagenta",  RGB(0xFF, 0x8B, 0xFF)}, // No X11
+           {(char_u *)"lightred",      RGB(0xFF, 0x8B, 0x8B)}, // No X11
+           {(char_u *)"lightyellow",   RGB(0xFF, 0xFF, 0xE0)},
+           {(char_u *)"magenta",       RGB(0xFF, 0x00, 0xFF)},
+           {(char_u *)"red",           RGB(0xFF, 0x00, 0x00)},
+           {(char_u *)"seagreen",      RGB(0x2E, 0x8B, 0x57)},
+           {(char_u *)"white",         RGB(0xFF, 0xFF, 0xFF)},
+           {(char_u *)"yellow",        RGB(0xFF, 0xFF, 0x00)},
+    };
+
+    color = decode_hex_color(name);
+    if (color != INVALCOLOR)
+       return color;
+
+    // Check if the name is one of the colors we know
+    for (i = 0; i < (int)ARRAY_LENGTH(rgb_table); i++)
+       if (STRICMP(name, rgb_table[i].color_name) == 0)
+           return gui_adjust_rgb(rgb_table[i].color);
+
+#if defined(FEAT_EVAL)
+    /*
+     * Not a traditional color. Load additional color aliases and then consult the alias table.
+     */
+
+    color = colorname2rgb(name);
+    if (color == INVALCOLOR)
+    {
+       load_default_colors_lists();
+       color = colorname2rgb(name);
+    }
+
+    return color;
+#else
+    return INVALCOLOR;
+#endif
+}
+
+    guicolor_T
+gui_get_rgb_color_cmn(int r, int g, int b)
+{
+    guicolor_T  color = RGB(r, g, b);
+
+    if (color > 0xffffff)
+       return INVALCOLOR;
+    return gui_adjust_rgb(color);
+}
 #endif
 
 /*
index afa9972a766b909bd433a4d7685778b00435f16e..fcb482c7066e434c4d055547af8be80883474961 100644 (file)
--- a/src/job.c
+++ b/src/job.c
@@ -559,7 +559,7 @@ get_job_options(typval_T *tv, jobopt_T *opt, int supported, int supported2)
                    {
                        if (called_emsg_before == called_emsg)
                            // may not get the error if the GUI didn't start
-                           semsg(_(e_alloc_color), color_name);
+                           semsg(_(e_cannot_allocate_color_str), color_name);
                        return FAIL;
                    }
 
index ca4498140c119b9346bd0063b537616703b1d62c..4c6b2f75c0ba12b779fb336bb37ec22780fd32d8 100644 (file)
@@ -14,6 +14,12 @@ void hl_set_font_name(char_u *font_name);
 void hl_set_bg_color_name(char_u *name);
 void hl_set_fg_color_name(char_u *name);
 guicolor_T color_name2handle(char_u *name);
+guicolor_T decode_hex_color(char_u *hex);
+guicolor_T colorname2rgb(char_u *name);
+void save_colorname_hexstr(int r, int g, int b, char_u *name);
+void load_default_colors_lists(void);
+guicolor_T gui_get_color_cmn(char_u *name);
+guicolor_T gui_get_rgb_color_cmn(int r, int g, int b);
 int get_cterm_attr_idx(int attr, int fg, int bg);
 int get_tgc_attr_idx(int attr, guicolor_T fg, guicolor_T bg);
 int get_gui_attr_idx(int attr, guicolor_T fg, guicolor_T bg);
index efb25553433f30c8ff2cb658d2960e4856e6da63..572a41db7a8662f80f549343c950fc2224207126 100644 (file)
@@ -83,8 +83,6 @@ void show_termcodes(void);
 int show_one_termcode(char_u *name, char_u *code, int printit);
 void update_tcap(int attr);
 void swap_tcap(void);
-guicolor_T gui_get_color_cmn(char_u *name);
-guicolor_T gui_get_rgb_color_cmn(int r, int g, int b);
 void cterm_color2rgb(int nr, char_u *r, char_u *g, char_u *b, char_u *ansi_idx);
 void term_replace_bs_del_keycode(char_u *ta_buf, int ta_len, int len);
 /* vim: set ft=c : */
index b61667de8c6e177712131a720df15054b4547997..cb38b933870d6a36b4e9ae54374eddc7e91a695c 100644 (file)
@@ -1353,7 +1353,7 @@ termgui_get_color(char_u *name)
     t = termgui_mch_get_color(name);
 
     if (t == INVALCOLOR)
-       semsg(_(e_alloc_color), name);
+       semsg(_(e_cannot_allocate_color_str), name);
     return t;
 }
 
@@ -6630,203 +6630,6 @@ swap_tcap(void)
 
 #endif
 
-#if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS) || defined(PROTO)
-    static int
-hex_digit(int c)
-{
-    if (isdigit(c))
-       return c - '0';
-    c = TOLOWER_ASC(c);
-    if (c >= 'a' && c <= 'f')
-       return c - 'a' + 10;
-    return 0x1ffffff;
-}
-
-# ifdef VIMDLL
-    static guicolor_T
-gui_adjust_rgb(guicolor_T c)
-{
-    if (gui.in_use)
-       return c;
-    else
-       return ((c & 0xff) << 16) | (c & 0x00ff00) | ((c >> 16) & 0xff);
-}
-# else
-#  define gui_adjust_rgb(c) (c)
-# endif
-
-    guicolor_T
-gui_get_color_cmn(char_u *name)
-{
-    // On MS-Windows an RGB macro is available and it produces 0x00bbggrr color
-    // values as used by the MS-Windows GDI api.  It should be used only for
-    // MS-Windows GDI builds.
-# if defined(RGB) && defined(MSWIN) && !defined(FEAT_GUI)
-#  undef RGB
-# endif
-# ifndef RGB
-#  define RGB(r, g, b) ((r<<16) | (g<<8) | (b))
-# endif
-# define LINE_LEN 100
-    FILE       *fd;
-    char       line[LINE_LEN];
-    char_u     *fname;
-    int                r, g, b, i;
-    guicolor_T  color;
-
-    struct rgbcolor_table_S {
-       char_u      *color_name;
-       guicolor_T  color;
-    };
-
-    // Only non X11 colors (not present in rgb.txt) and colors in
-    // color_names[], useful when $VIMRUNTIME is not found,.
-    static struct rgbcolor_table_S rgb_table[] = {
-           {(char_u *)"black",         RGB(0x00, 0x00, 0x00)},
-           {(char_u *)"blue",          RGB(0x00, 0x00, 0xFF)},
-           {(char_u *)"brown",         RGB(0xA5, 0x2A, 0x2A)},
-           {(char_u *)"cyan",          RGB(0x00, 0xFF, 0xFF)},
-           {(char_u *)"darkblue",      RGB(0x00, 0x00, 0x8B)},
-           {(char_u *)"darkcyan",      RGB(0x00, 0x8B, 0x8B)},
-           {(char_u *)"darkgray",      RGB(0xA9, 0xA9, 0xA9)},
-           {(char_u *)"darkgreen",     RGB(0x00, 0x64, 0x00)},
-           {(char_u *)"darkgrey",      RGB(0xA9, 0xA9, 0xA9)},
-           {(char_u *)"darkmagenta",   RGB(0x8B, 0x00, 0x8B)},
-           {(char_u *)"darkred",       RGB(0x8B, 0x00, 0x00)},
-           {(char_u *)"darkyellow",    RGB(0x8B, 0x8B, 0x00)}, // No X11
-           {(char_u *)"gray",          RGB(0xBE, 0xBE, 0xBE)},
-           {(char_u *)"green",         RGB(0x00, 0xFF, 0x00)},
-           {(char_u *)"grey",          RGB(0xBE, 0xBE, 0xBE)},
-           {(char_u *)"grey40",        RGB(0x66, 0x66, 0x66)},
-           {(char_u *)"grey50",        RGB(0x7F, 0x7F, 0x7F)},
-           {(char_u *)"grey90",        RGB(0xE5, 0xE5, 0xE5)},
-           {(char_u *)"lightblue",     RGB(0xAD, 0xD8, 0xE6)},
-           {(char_u *)"lightcyan",     RGB(0xE0, 0xFF, 0xFF)},
-           {(char_u *)"lightgray",     RGB(0xD3, 0xD3, 0xD3)},
-           {(char_u *)"lightgreen",    RGB(0x90, 0xEE, 0x90)},
-           {(char_u *)"lightgrey",     RGB(0xD3, 0xD3, 0xD3)},
-           {(char_u *)"lightmagenta",  RGB(0xFF, 0x8B, 0xFF)}, // No X11
-           {(char_u *)"lightred",      RGB(0xFF, 0x8B, 0x8B)}, // No X11
-           {(char_u *)"lightyellow",   RGB(0xFF, 0xFF, 0xE0)},
-           {(char_u *)"magenta",       RGB(0xFF, 0x00, 0xFF)},
-           {(char_u *)"red",           RGB(0xFF, 0x00, 0x00)},
-           {(char_u *)"seagreen",      RGB(0x2E, 0x8B, 0x57)},
-           {(char_u *)"white",         RGB(0xFF, 0xFF, 0xFF)},
-           {(char_u *)"yellow",        RGB(0xFF, 0xFF, 0x00)},
-    };
-
-    static struct rgbcolor_table_S *colornames_table;
-    static int size = 0;
-
-    if (name[0] == '#' && STRLEN(name) == 7)
-    {
-       // Name is in "#rrggbb" format
-       color = RGB(((hex_digit(name[1]) << 4) + hex_digit(name[2])),
-                   ((hex_digit(name[3]) << 4) + hex_digit(name[4])),
-                   ((hex_digit(name[5]) << 4) + hex_digit(name[6])));
-       if (color > 0xffffff)
-           return INVALCOLOR;
-       return gui_adjust_rgb(color);
-    }
-
-    // Check if the name is one of the colors we know
-    for (i = 0; i < (int)ARRAY_LENGTH(rgb_table); i++)
-       if (STRICMP(name, rgb_table[i].color_name) == 0)
-           return gui_adjust_rgb(rgb_table[i].color);
-
-    /*
-     * Last attempt. Look in the file "$VIMRUNTIME/rgb.txt".
-     */
-    if (size == 0)
-    {
-       int counting;
-
-       // colornames_table not yet initialized
-       fname = expand_env_save((char_u *)"$VIMRUNTIME/rgb.txt");
-       if (fname == NULL)
-           return INVALCOLOR;
-
-       fd = fopen((char *)fname, "rt");
-       vim_free(fname);
-       if (fd == NULL)
-       {
-           if (p_verbose > 1)
-               verb_msg(_("Cannot open $VIMRUNTIME/rgb.txt"));
-           size = -1;  // don't try again
-           return INVALCOLOR;
-       }
-
-       for (counting = 1; counting >= 0; --counting)
-       {
-           if (!counting)
-           {
-               colornames_table = ALLOC_MULT(struct rgbcolor_table_S, size);
-               if (colornames_table == NULL)
-               {
-                   fclose(fd);
-                   return INVALCOLOR;
-               }
-               rewind(fd);
-           }
-           size = 0;
-
-           while (!feof(fd))
-           {
-               size_t  len;
-               int     pos;
-
-               vim_ignoredp = fgets(line, LINE_LEN, fd);
-               len = strlen(line);
-
-               if (len <= 1 || line[len - 1] != '\n')
-                   continue;
-
-               line[len - 1] = '\0';
-
-               i = sscanf(line, "%d %d %d %n", &r, &g, &b, &pos);
-               if (i != 3)
-                   continue;
-
-               if (!counting)
-               {
-                   char_u *s = vim_strsave((char_u *)line + pos);
-
-                   if (s == NULL)
-                   {
-                       fclose(fd);
-                       return INVALCOLOR;
-                   }
-                   colornames_table[size].color_name = s;
-                   colornames_table[size].color = (guicolor_T)RGB(r, g, b);
-               }
-               size++;
-
-               // The distributed rgb.txt has less than 1000 entries. Limit to
-               // 10000, just in case the file was messed up.
-               if (size == 10000)
-                   break;
-           }
-       }
-       fclose(fd);
-    }
-
-    for (i = 0; i < size; i++)
-       if (STRICMP(name, colornames_table[i].color_name) == 0)
-           return gui_adjust_rgb(colornames_table[i].color);
-
-    return INVALCOLOR;
-}
-
-    guicolor_T
-gui_get_rgb_color_cmn(int r, int g, int b)
-{
-    guicolor_T  color = RGB(r, g, b);
-
-    if (color > 0xffffff)
-       return INVALCOLOR;
-    return gui_adjust_rgb(color);
-}
-#endif
 
 #if (defined(MSWIN) && (!defined(FEAT_GUI_MSWIN) || defined(VIMDLL))) || defined(FEAT_TERMINAL) \
        || defined(PROTO)
index a4c7a725914996c46cdf3cc83a3a2cab0112ffa8..d3734b31f2b987054bed108b30382c57591ad979 100644 (file)
@@ -934,4 +934,40 @@ func Test_highlight_default_colorscheme_restores_links()
   hi clear
 endfunc
 
+func Test_colornames_assignment_and_lookup()
+  " Ensure highlight command can find custom color.
+  let v:colornames['a redish white'] = '#ffeedd'
+  highlight Normal guifg='a redish white'
+  highlight clear
+endfunc
+
+func Test_colornames_default_list()
+  " Ensure default lists are loaded automatically and can be used for all gui fields.
+  highlight Normal guifg='rebecca purple' guibg='rebecca purple' guisp='rebecca purple'
+  highlight clear
+endfunc
+
+func Test_colornames_overwrite_default()
+  " Ensure entries in v:colornames can be overwritten.
+  " Load default color scheme to trigger default color list loading.
+  colorscheme default
+  let old_rebecca_purple = v:colornames['rebecca purple']
+  highlight Normal guifg='rebecca purple' guibg='rebecca purple'
+  let v:colornames['rebecca purple'] = '#550099'
+  highlight Normal guifg='rebecca purple' guibg='rebecca purple'
+  let v:colornames['rebecca purple'] = old_rebecca_purple
+  highlight clear
+endfunc
+
+func Test_colornames_assignment_and_unassignment()
+  " Ensure we cannot overwrite the v:colornames dict.
+  call assert_fails("let v:colornames = {}", 'E46:')
+
+  " Ensure we can delete entries from the v:colornames dict.
+  let v:colornames['x1'] = '#111111'
+  call assert_equal(v:colornames['x1'], '#111111')
+  unlet v:colornames['x1']
+  call assert_fails("echo v:colornames['x1']")
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
index 7dc55ac95a8b2de80b2a8e4a83bbbd57c132dad3..3bba9728a485153a74cdcd9b07e18b003d472532 100644 (file)
@@ -757,6 +757,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3562,
 /**/
     3561,
 /**/
index 0ce0e964e2e359a356740bb74ae75a34693731e7..31d4bdefe878ed6c38288c67c7b9f4a3aad01901 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -2044,7 +2044,8 @@ typedef int sock_T;
 #define VV_ARGV                96
 #define VV_COLLATE      97
 #define VV_EXITING     98
-#define VV_LEN         99      // number of v: vars
+#define VV_COLORNAMES   99
+#define VV_LEN         100     // number of v: vars
 
 // used for v_number in VAR_BOOL and VAR_SPECIAL
 #define VVAL_FALSE     0L      // VAR_BOOL