diff options
author | Drew Vogel <dvogel@github> | 2021-10-24 20:35:07 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-10-24 20:35:07 +0100 |
commit | e30d10253fa634c4f60daa798d029245f4eed393 (patch) | |
tree | 57aca74b65dc4c3924ef23185b8cb2b6933996c2 | |
parent | 3c5904d2a5d7861c227a4c3cd4ddcbc51014c838 (diff) | |
download | vim-git-e30d10253fa634c4f60daa798d029245f4eed393.tar.gz |
patch 8.2.3562: cannot add color namesv8.2.3562
Problem: Cannot add color names.
Solution: Add the v:colornames dictionary. (Drew Vogel, closes #8761)
-rw-r--r-- | Filelist | 2 | ||||
-rw-r--r-- | READMEdir/README_extra.txt | 1 | ||||
-rw-r--r-- | nsis/gvim.nsi | 3 | ||||
-rw-r--r-- | runtime/colors/README.txt | 3 | ||||
-rw-r--r-- | runtime/colors/lists/csscolors.vim | 166 | ||||
-rw-r--r-- | runtime/colors/lists/default.vim | 801 | ||||
-rw-r--r-- | runtime/doc/eval.txt | 37 | ||||
-rw-r--r-- | runtime/doc/gui_w32.txt | 18 | ||||
-rw-r--r-- | runtime/doc/message.txt | 5 | ||||
-rw-r--r-- | runtime/doc/os_haiku.txt | 5 | ||||
-rw-r--r-- | runtime/doc/syntax.txt | 29 | ||||
-rw-r--r-- | runtime/doc/usr_06.txt | 25 | ||||
-rw-r--r-- | src/Makefile | 11 | ||||
-rw-r--r-- | src/errors.h | 6 | ||||
-rw-r--r-- | src/evalvars.c | 3 | ||||
-rw-r--r-- | src/globals.h | 3 | ||||
-rw-r--r-- | src/gui.c | 2 | ||||
-rw-r--r-- | src/gui_haiku.cc | 159 | ||||
-rw-r--r-- | src/highlight.c | 233 | ||||
-rw-r--r-- | src/job.c | 2 | ||||
-rw-r--r-- | src/proto/highlight.pro | 6 | ||||
-rw-r--r-- | src/proto/term.pro | 2 | ||||
-rw-r--r-- | src/term.c | 199 | ||||
-rw-r--r-- | src/testdir/test_highlight.vim | 36 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim.h | 3 |
26 files changed, 1364 insertions, 398 deletions
@@ -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) diff --git a/READMEdir/README_extra.txt b/READMEdir/README_extra.txt index 4f22d1bcc..94d93f986 100644 --- a/READMEdir/README_extra.txt +++ b/READMEdir/README_extra.txt @@ -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. diff --git a/nsis/gvim.nsi b/nsis/gvim.nsi index fc5713f79..649c6950d 100644 --- a/nsis/gvim.nsi +++ b/nsis/gvim.nsi @@ -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\*.* diff --git a/runtime/colors/README.txt b/runtime/colors/README.txt index 89501e051..2b3471e39 100644 --- a/runtime/colors/README.txt +++ b/runtime/colors/README.txt @@ -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 index 000000000..74955226c --- /dev/null +++ b/runtime/colors/lists/csscolors.vim @@ -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 index 000000000..594004812 --- /dev/null +++ b/runtime/colors/lists/default.vim @@ -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 diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 8d31483ec..418aee9ce 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -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 diff --git a/runtime/doc/gui_w32.txt b/runtime/doc/gui_w32.txt index b83df1b98..227d0a271 100644 --- a/runtime/doc/gui_w32.txt +++ b/runtime/doc/gui_w32.txt @@ -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* diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt index 2dc753546..5334ac00c 100644 --- a/runtime/doc/message.txt +++ b/runtime/doc/message.txt @@ -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 diff --git a/runtime/doc/os_haiku.txt b/runtime/doc/os_haiku.txt index 5c520b068..a22b99bf4 100644 --- a/runtime/doc/os_haiku.txt +++ b/runtime/doc/os_haiku.txt @@ -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* diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 1ade9e99d..1c20659ac 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -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 diff --git a/runtime/doc/usr_06.txt b/runtime/doc/usr_06.txt index 65d69dec5..2cf672e70 100644 --- a/runtime/doc/usr_06.txt +++ b/runtime/doc/usr_06.txt @@ -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 diff --git a/src/Makefile b/src/Makefile index 32411d0b8..e5953afdb 100644 --- a/src/Makefile +++ b/src/Makefile @@ -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. diff --git a/src/errors.h b/src/errors.h index 7778b3960..537072d7d 100644 --- a/src/errors.h +++ b/src/errors.h @@ -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")); diff --git a/src/evalvars.c b/src/evalvars.c index fbf2d68d1..08736dd8c 100644 --- a/src/evalvars.c +++ b/src/evalvars.c @@ -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); diff --git a/src/globals.h b/src/globals.h index 948c35f84..5c54130eb 100644 --- a/src/globals.h +++ b/src/globals.h @@ -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")); @@ -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; } diff --git a/src/gui_haiku.cc b/src/gui_haiku.cc index 644c2db66..6d973c565 100644 --- a/src/gui_haiku.cc +++ b/src/gui_haiku.cc @@ -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); } /* diff --git a/src/highlight.c b/src/highlight.c index 76d9a7e82..5dde08b8f 100644 --- a/src/highlight.c +++ b/src/highlight.c @@ -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 /* @@ -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; } diff --git a/src/proto/highlight.pro b/src/proto/highlight.pro index ca4498140..4c6b2f75c 100644 --- a/src/proto/highlight.pro +++ b/src/proto/highlight.pro @@ -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); diff --git a/src/proto/term.pro b/src/proto/term.pro index efb255534..572a41db7 100644 --- a/src/proto/term.pro +++ b/src/proto/term.pro @@ -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 : */ diff --git a/src/term.c b/src/term.c index b61667de8..cb38b9338 100644 --- a/src/term.c +++ b/src/term.c @@ -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) diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim index a4c7a7259..d3734b31f 100644 --- a/src/testdir/test_highlight.vim +++ b/src/testdir/test_highlight.vim @@ -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 diff --git a/src/version.c b/src/version.c index 7dc55ac95..3bba9728a 100644 --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3562, +/**/ 3561, /**/ 3560, @@ -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 |