aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/syntax.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/syntax.c')
-rw-r--r--src/nvim/syntax.c2265
1 files changed, 1265 insertions, 1000 deletions
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c
index bc7362af72..2613c09c19 100644
--- a/src/nvim/syntax.c
+++ b/src/nvim/syntax.c
@@ -52,6 +52,7 @@ static bool did_syntax_onoff = false;
struct hl_group {
char_u *sg_name; ///< highlight group name
char_u *sg_name_u; ///< uppercase of sg_name
+ int sg_cleared; ///< "hi clear" was used
int sg_attr; ///< Screen attr @see ATTR_ENTRY
int sg_link; ///< link to this highlight group ID
int sg_set; ///< combination of flags in \ref SG_SET
@@ -63,7 +64,7 @@ struct hl_group {
int sg_cterm_bold; ///< bold attr was set for light color
// for RGB UIs
int sg_gui; ///< "gui=" highlighting attributes
- ///< (combination of \ref HL_ATTRIBUTES)
+ ///< (combination of \ref HlAttrFlags)
RgbValue sg_rgb_fg; ///< RGB foreground color
RgbValue sg_rgb_bg; ///< RGB background color
RgbValue sg_rgb_sp; ///< RGB special color
@@ -880,7 +881,8 @@ static void syn_start_line(void)
}
next_match_idx = -1;
- ++current_line_id;
+ current_line_id++;
+ next_seqnr = 1;
}
/*
@@ -1598,6 +1600,7 @@ get_syntax_attr (
current_id = 0;
current_trans_id = 0;
current_flags = 0;
+ current_seqnr = 0;
return 0;
}
@@ -2041,6 +2044,7 @@ syn_current_attr (
current_id = 0;
current_trans_id = 0;
current_flags = 0;
+ current_seqnr = 0;
if (cur_si != NULL) {
for (int idx = current_state.ga_len - 1; idx >= 0; --idx) {
sip = &CUR_STATE(idx);
@@ -2129,9 +2133,11 @@ syn_current_attr (
/* nextgroup ends at end of line, unless "skipnl" or "skipempty" present */
if (current_next_list != NULL
- && syn_getcurline()[current_col + 1] == NUL
- && !(current_next_flags & (HL_SKIPNL | HL_SKIPEMPTY)))
+ && (line = syn_getcurline())[current_col] != NUL
+ && line[current_col + 1] == NUL
+ && !(current_next_flags & (HL_SKIPNL | HL_SKIPEMPTY))) {
current_next_list = NULL;
+ }
if (!GA_EMPTY(&zero_width_next_ga))
ga_clear(&zero_width_next_ga);
@@ -3019,12 +3025,19 @@ static void syn_cmd_conceal(exarg_T *eap, int syncing)
return;
next = skiptowhite(arg);
- if (STRNICMP(arg, "on", 2) == 0 && next - arg == 2)
- curwin->w_s->b_syn_conceal = TRUE;
- else if (STRNICMP(arg, "off", 3) == 0 && next - arg == 3)
- curwin->w_s->b_syn_conceal = FALSE;
- else
+ if (*arg == NUL) {
+ if (curwin->w_s->b_syn_conceal) {
+ MSG(_("syn conceal on"));
+ } else {
+ MSG(_("syn conceal off"));
+ }
+ } else if (STRNICMP(arg, "on", 2) == 0 && next - arg == 2) {
+ curwin->w_s->b_syn_conceal = true;
+ } else if (STRNICMP(arg, "off", 3) == 0 && next - arg == 3) {
+ curwin->w_s->b_syn_conceal = false;
+ } else {
EMSG2(_("E390: Illegal argument: %s"), arg);
+ }
}
/*
@@ -3040,12 +3053,19 @@ static void syn_cmd_case(exarg_T *eap, int syncing)
return;
next = skiptowhite(arg);
- if (STRNICMP(arg, "match", 5) == 0 && next - arg == 5)
- curwin->w_s->b_syn_ic = FALSE;
- else if (STRNICMP(arg, "ignore", 6) == 0 && next - arg == 6)
- curwin->w_s->b_syn_ic = TRUE;
- else
+ if (*arg == NUL) {
+ if (curwin->w_s->b_syn_ic) {
+ MSG(_("syntax case ignore"));
+ } else {
+ MSG(_("syntax case match"));
+ }
+ } else if (STRNICMP(arg, "match", 5) == 0 && next - arg == 5) {
+ curwin->w_s->b_syn_ic = false;
+ } else if (STRNICMP(arg, "ignore", 6) == 0 && next - arg == 6) {
+ curwin->w_s->b_syn_ic = true;
+ } else {
EMSG2(_("E390: Illegal argument: %s"), arg);
+ }
}
/*
@@ -3061,7 +3081,15 @@ static void syn_cmd_spell(exarg_T *eap, int syncing)
return;
next = skiptowhite(arg);
- if (STRNICMP(arg, "toplevel", 8) == 0 && next - arg == 8) {
+ if (*arg == NUL) {
+ if (curwin->w_s->b_syn_spell == SYNSPL_TOP) {
+ MSG(_("syntax spell toplevel"));
+ } else if (curwin->w_s->b_syn_spell == SYNSPL_NOTOP) {
+ MSG(_("syntax spell notoplevel"));
+ } else {
+ MSG(_("syntax spell default"));
+ }
+ } else if (STRNICMP(arg, "toplevel", 8) == 0 && next - arg == 8) {
curwin->w_s->b_syn_spell = SYNSPL_TOP;
} else if (STRNICMP(arg, "notoplevel", 10) == 0 && next - arg == 10) {
curwin->w_s->b_syn_spell = SYNSPL_NOTOP;
@@ -3121,10 +3149,11 @@ static void syn_cmd_iskeyword(exarg_T *eap, int syncing)
*/
void syntax_clear(synblock_T *block)
{
- block->b_syn_error = FALSE; /* clear previous error */
- block->b_syn_ic = FALSE; /* Use case, by default */
- block->b_syn_spell = SYNSPL_DEFAULT; /* default spell checking */
- block->b_syn_containedin = FALSE;
+ block->b_syn_error = false; // clear previous error
+ block->b_syn_ic = false; // Use case, by default
+ block->b_syn_spell = SYNSPL_DEFAULT; // default spell checking
+ block->b_syn_containedin = false;
+ block->b_syn_conceal = false;
/* free the keywords */
clear_keywtab(&block->b_keywtab);
@@ -4001,10 +4030,11 @@ get_group_name (
* Return NULL for any error;
*/
static char_u *
-get_syn_options (
- char_u *arg, /* next argument to be checked */
- syn_opt_arg_T *opt, /* various things */
- int *conceal_char
+get_syn_options(
+ char_u *arg, // next argument to be checked
+ syn_opt_arg_T *opt, // various things
+ int *conceal_char,
+ int skip // TRUE if skipping over command
)
{
char_u *gname_start, *gname;
@@ -4080,14 +4110,17 @@ get_syn_options (
EMSG(_("E395: contains argument not accepted here"));
return NULL;
}
- if (get_id_list(&arg, 8, &opt->cont_list) == FAIL)
+ if (get_id_list(&arg, 8, &opt->cont_list, skip) == FAIL) {
return NULL;
+ }
} else if (flagtab[fidx].argtype == 2) {
- if (get_id_list(&arg, 11, &opt->cont_in_list) == FAIL)
+ if (get_id_list(&arg, 11, &opt->cont_in_list, skip) == FAIL) {
return NULL;
+ }
} else if (flagtab[fidx].argtype == 3) {
- if (get_id_list(&arg, 9, &opt->next_list) == FAIL)
+ if (get_id_list(&arg, 9, &opt->next_list, skip) == FAIL) {
return NULL;
+ }
} else if (flagtab[fidx].argtype == 11 && arg[5] == '=') {
/* cchar=? */
if (has_mbyte) {
@@ -4206,11 +4239,11 @@ static void syn_cmd_include(exarg_T *eap, int syncing)
*/
eap->argt |= (XFILE | NOSPC);
separate_nextcmd(eap);
- if (*eap->arg == '<' || *eap->arg == '$' || path_is_absolute_path(eap->arg)) {
- /* For an absolute path, "$VIM/..." or "<sfile>.." we ":source" the
- * file. Need to expand the file name first. In other cases
- * ":runtime!" is used. */
- source = TRUE;
+ if (*eap->arg == '<' || *eap->arg == '$' || path_is_absolute(eap->arg)) {
+ // For an absolute path, "$VIM/..." or "<sfile>.." we ":source" the
+ // file. Need to expand the file name first. In other cases
+ // ":runtime!" is used.
+ source = true;
if (expand_filename(eap, syn_cmdlinep, &errormsg) == FAIL) {
if (errormsg != NULL)
EMSG(errormsg);
@@ -4257,7 +4290,11 @@ static void syn_cmd_keyword(exarg_T *eap, int syncing)
rest = get_group_name(arg, &group_name_end);
if (rest != NULL) {
- syn_id = syn_check_group(arg, (int)(group_name_end - arg));
+ if (eap->skip) {
+ syn_id = -1;
+ } else {
+ syn_id = syn_check_group(arg, (int)(group_name_end - arg));
+ }
if (syn_id != 0) {
// Allocate a buffer, for removing backslashes in the keyword.
keyword_copy = xmalloc(STRLEN(rest) + 1);
@@ -4276,7 +4313,7 @@ static void syn_cmd_keyword(exarg_T *eap, int syncing)
cnt = 0;
p = keyword_copy;
for (; rest != NULL && !ends_excmd(*rest); rest = skipwhite(rest)) {
- rest = get_syn_options(rest, &syn_opt_arg, &conceal_char);
+ rest = get_syn_options(rest, &syn_opt_arg, &conceal_char, eap->skip);
if (rest == NULL || ends_excmd(*rest)) {
break;
}
@@ -4375,17 +4412,18 @@ syn_cmd_match (
syn_opt_arg.cont_list = NULL;
syn_opt_arg.cont_in_list = NULL;
syn_opt_arg.next_list = NULL;
- rest = get_syn_options(rest, &syn_opt_arg, &conceal_char);
+ rest = get_syn_options(rest, &syn_opt_arg, &conceal_char, eap->skip);
/* get the pattern. */
init_syn_patterns();
memset(&item, 0, sizeof(item));
rest = get_syn_pattern(rest, &item);
- if (vim_regcomp_had_eol() && !(syn_opt_arg.flags & HL_EXCLUDENL))
+ if (vim_regcomp_had_eol() && !(syn_opt_arg.flags & HL_EXCLUDENL)) {
syn_opt_arg.flags |= HL_HAS_EOL;
+ }
- /* Get options after the pattern */
- rest = get_syn_options(rest, &syn_opt_arg, &conceal_char);
+ // Get options after the pattern
+ rest = get_syn_options(rest, &syn_opt_arg, &conceal_char, eap->skip);
if (rest != NULL) { /* all arguments are valid */
/*
@@ -4497,14 +4535,13 @@ syn_cmd_region (
syn_opt_arg.cont_in_list = NULL;
syn_opt_arg.next_list = NULL;
- /*
- * get the options, patterns and matchgroup.
- */
+ // get the options, patterns and matchgroup.
while (rest != NULL && !ends_excmd(*rest)) {
- /* Check for option arguments */
- rest = get_syn_options(rest, &syn_opt_arg, &conceal_char);
- if (rest == NULL || ends_excmd(*rest))
+ // Check for option arguments
+ rest = get_syn_options(rest, &syn_opt_arg, &conceal_char, eap->skip);
+ if (rest == NULL || ends_excmd(*rest)) {
break;
+ }
/* must be a pattern or matchgroup then */
key_end = rest;
@@ -4926,13 +4963,17 @@ static void syn_cmd_cluster(exarg_T *eap, int syncing)
break;
clstr_list = NULL;
- if (get_id_list(&rest, opt_len, &clstr_list) == FAIL) {
+ if (get_id_list(&rest, opt_len, &clstr_list, eap->skip) == FAIL) {
EMSG2(_(e_invarg2), rest);
break;
}
- syn_combine_list(&SYN_CLSTR(curwin->w_s)[scl_id].scl_list,
- &clstr_list, list_op);
- got_clstr = TRUE;
+ if (scl_id >= 0) {
+ syn_combine_list(&SYN_CLSTR(curwin->w_s)[scl_id].scl_list,
+ &clstr_list, list_op);
+ } else {
+ xfree(clstr_list);
+ }
+ got_clstr = true;
}
if (got_clstr) {
@@ -5180,9 +5221,10 @@ static void syn_cmd_sync(exarg_T *eap, int syncing)
static int
get_id_list (
char_u **arg,
- int keylen, /* length of keyword */
- short **list /* where to store the resulting list, if not
- NULL, the list is silently skipped! */
+ int keylen, // length of keyword
+ int16_t **list, // where to store the resulting list, if not
+ // NULL, the list is silently skipped!
+ int skip
)
{
char_u *p = NULL;
@@ -5238,8 +5280,9 @@ get_id_list (
break;
}
if (count != 0) {
- EMSG2(_("E408: %s must be first in contains list"), name + 1);
- failed = TRUE;
+ EMSG2(_("E408: %s must be first in contains list"),
+ name + 1);
+ failed = true;
xfree(name);
break;
}
@@ -5251,7 +5294,11 @@ get_id_list (
id = SYNID_CONTAINED;
id += current_syn_inc_tag;
} else if (name[1] == '@') {
- id = syn_check_cluster(name + 2, (int)(end - p - 1));
+ if (skip) {
+ id = -1;
+ } else {
+ id = syn_check_cluster(name + 2, (int)(end - p - 1));
+ }
} else {
/*
* Handle full group name.
@@ -5930,9 +5977,9 @@ static void syntime_report(void)
//
// When making changes here, also change runtime/colors/default.vim!
-static char *highlight_init_both[] =
-{
- "Conceal ctermbg=DarkGrey ctermfg=LightGrey guibg=DarkGrey guifg=LightGrey",
+static const char *highlight_init_both[] = {
+ "Conceal "
+ "ctermbg=DarkGrey ctermfg=LightGrey guibg=DarkGrey guifg=LightGrey",
"Cursor guibg=fg guifg=bg",
"lCursor guibg=fg guifg=bg",
"DiffText cterm=bold ctermbg=Red gui=bold guibg=Red",
@@ -5952,11 +5999,11 @@ static char *highlight_init_both[] =
"default link QuickFixLine Search",
"default link Substitute Search",
"default link Whitespace NonText",
+ "default link MsgSeparator StatusLine",
NULL
};
-static char *highlight_init_light[] =
-{
+static const char *highlight_init_light[] = {
"ColorColumn ctermbg=LightRed guibg=LightRed",
"CursorColumn ctermbg=LightGrey guibg=Grey90",
"CursorLine cterm=underline guibg=Grey90",
@@ -5989,8 +6036,7 @@ static char *highlight_init_light[] =
NULL
};
-static char *highlight_init_dark[] =
-{
+static const char *highlight_init_dark[] = {
"ColorColumn ctermbg=DarkRed guibg=DarkRed",
"CursorColumn ctermbg=DarkGrey guibg=Grey40",
"CursorLine cterm=underline guibg=Grey40",
@@ -6023,18 +6069,223 @@ static char *highlight_init_dark[] =
NULL
};
+const char *const highlight_init_cmdline[] = {
+ // XXX When modifying a list modify it in both valid and invalid halfs.
+ // TODO(ZyX-I): merge valid and invalid groups via a macros.
+
+ // NvimInternalError should appear only when highlighter has a bug.
+ "NvimInternalError ctermfg=Red ctermbg=Red guifg=Red guibg=Red",
+
+ // Highlight groups (links) used by parser:
+
+ "default link NvimAssignment Operator",
+ "default link NvimPlainAssignment NvimAssignment",
+ "default link NvimAugmentedAssignment NvimAssignment",
+ "default link NvimAssignmentWithAddition NvimAugmentedAssignment",
+ "default link NvimAssignmentWithSubtraction NvimAugmentedAssignment",
+ "default link NvimAssignmentWithConcatenation NvimAugmentedAssignment",
+
+ "default link NvimOperator Operator",
+
+ "default link NvimUnaryOperator NvimOperator",
+ "default link NvimUnaryPlus NvimUnaryOperator",
+ "default link NvimUnaryMinus NvimUnaryOperator",
+ "default link NvimNot NvimUnaryOperator",
+
+ "default link NvimBinaryOperator NvimOperator",
+ "default link NvimComparison NvimBinaryOperator",
+ "default link NvimComparisonModifier NvimComparison",
+ "default link NvimBinaryPlus NvimBinaryOperator",
+ "default link NvimBinaryMinus NvimBinaryOperator",
+ "default link NvimConcat NvimBinaryOperator",
+ "default link NvimConcatOrSubscript NvimConcat",
+ "default link NvimOr NvimBinaryOperator",
+ "default link NvimAnd NvimBinaryOperator",
+ "default link NvimMultiplication NvimBinaryOperator",
+ "default link NvimDivision NvimBinaryOperator",
+ "default link NvimMod NvimBinaryOperator",
+
+ "default link NvimTernary NvimOperator",
+ "default link NvimTernaryColon NvimTernary",
+
+ "default link NvimParenthesis Delimiter",
+ "default link NvimLambda NvimParenthesis",
+ "default link NvimNestingParenthesis NvimParenthesis",
+ "default link NvimCallingParenthesis NvimParenthesis",
+
+ "default link NvimSubscript NvimParenthesis",
+ "default link NvimSubscriptBracket NvimSubscript",
+ "default link NvimSubscriptColon NvimSubscript",
+ "default link NvimCurly NvimSubscript",
+
+ "default link NvimContainer NvimParenthesis",
+ "default link NvimDict NvimContainer",
+ "default link NvimList NvimContainer",
+
+ "default link NvimIdentifier Identifier",
+ "default link NvimIdentifierScope NvimIdentifier",
+ "default link NvimIdentifierScopeDelimiter NvimIdentifier",
+ "default link NvimIdentifierName NvimIdentifier",
+ "default link NvimIdentifierKey NvimIdentifier",
+
+ "default link NvimColon Delimiter",
+ "default link NvimComma Delimiter",
+ "default link NvimArrow Delimiter",
+
+ "default link NvimRegister SpecialChar",
+ "default link NvimNumber Number",
+ "default link NvimFloat NvimNumber",
+ "default link NvimNumberPrefix Type",
+
+ "default link NvimOptionSigil Type",
+ "default link NvimOptionName NvimIdentifier",
+ "default link NvimOptionScope NvimIdentifierScope",
+ "default link NvimOptionScopeDelimiter NvimIdentifierScopeDelimiter",
+
+ "default link NvimEnvironmentSigil NvimOptionSigil",
+ "default link NvimEnvironmentName NvimIdentifier",
+
+ "default link NvimString String",
+ "default link NvimStringBody NvimString",
+ "default link NvimStringQuote NvimString",
+ "default link NvimStringSpecial SpecialChar",
+
+ "default link NvimSingleQuote NvimStringQuote",
+ "default link NvimSingleQuotedBody NvimStringBody",
+ "default link NvimSingleQuotedQuote NvimStringSpecial",
+
+ "default link NvimDoubleQuote NvimStringQuote",
+ "default link NvimDoubleQuotedBody NvimStringBody",
+ "default link NvimDoubleQuotedEscape NvimStringSpecial",
+
+ "default link NvimFigureBrace NvimInternalError",
+ "default link NvimSingleQuotedUnknownEscape NvimInternalError",
+
+ "default link NvimSpacing Normal",
+
+ // NvimInvalid groups:
+
+ "default link NvimInvalidSingleQuotedUnknownEscape NvimInternalError",
+
+ "default link NvimInvalid Error",
+
+ "default link NvimInvalidAssignment NvimInvalid",
+ "default link NvimInvalidPlainAssignment NvimInvalidAssignment",
+ "default link NvimInvalidAugmentedAssignment NvimInvalidAssignment",
+ "default link NvimInvalidAssignmentWithAddition "
+ "NvimInvalidAugmentedAssignment",
+ "default link NvimInvalidAssignmentWithSubtraction "
+ "NvimInvalidAugmentedAssignment",
+ "default link NvimInvalidAssignmentWithConcatenation "
+ "NvimInvalidAugmentedAssignment",
+
+ "default link NvimInvalidOperator NvimInvalid",
+
+ "default link NvimInvalidUnaryOperator NvimInvalidOperator",
+ "default link NvimInvalidUnaryPlus NvimInvalidUnaryOperator",
+ "default link NvimInvalidUnaryMinus NvimInvalidUnaryOperator",
+ "default link NvimInvalidNot NvimInvalidUnaryOperator",
+
+ "default link NvimInvalidBinaryOperator NvimInvalidOperator",
+ "default link NvimInvalidComparison NvimInvalidBinaryOperator",
+ "default link NvimInvalidComparisonModifier NvimInvalidComparison",
+ "default link NvimInvalidBinaryPlus NvimInvalidBinaryOperator",
+ "default link NvimInvalidBinaryMinus NvimInvalidBinaryOperator",
+ "default link NvimInvalidConcat NvimInvalidBinaryOperator",
+ "default link NvimInvalidConcatOrSubscript NvimInvalidConcat",
+ "default link NvimInvalidOr NvimInvalidBinaryOperator",
+ "default link NvimInvalidAnd NvimInvalidBinaryOperator",
+ "default link NvimInvalidMultiplication NvimInvalidBinaryOperator",
+ "default link NvimInvalidDivision NvimInvalidBinaryOperator",
+ "default link NvimInvalidMod NvimInvalidBinaryOperator",
+
+ "default link NvimInvalidTernary NvimInvalidOperator",
+ "default link NvimInvalidTernaryColon NvimInvalidTernary",
+
+ "default link NvimInvalidDelimiter NvimInvalid",
+
+ "default link NvimInvalidParenthesis NvimInvalidDelimiter",
+ "default link NvimInvalidLambda NvimInvalidParenthesis",
+ "default link NvimInvalidNestingParenthesis NvimInvalidParenthesis",
+ "default link NvimInvalidCallingParenthesis NvimInvalidParenthesis",
+
+ "default link NvimInvalidSubscript NvimInvalidParenthesis",
+ "default link NvimInvalidSubscriptBracket NvimInvalidSubscript",
+ "default link NvimInvalidSubscriptColon NvimInvalidSubscript",
+ "default link NvimInvalidCurly NvimInvalidSubscript",
+
+ "default link NvimInvalidContainer NvimInvalidParenthesis",
+ "default link NvimInvalidDict NvimInvalidContainer",
+ "default link NvimInvalidList NvimInvalidContainer",
+
+ "default link NvimInvalidValue NvimInvalid",
+
+ "default link NvimInvalidIdentifier NvimInvalidValue",
+ "default link NvimInvalidIdentifierScope NvimInvalidIdentifier",
+ "default link NvimInvalidIdentifierScopeDelimiter NvimInvalidIdentifier",
+ "default link NvimInvalidIdentifierName NvimInvalidIdentifier",
+ "default link NvimInvalidIdentifierKey NvimInvalidIdentifier",
+
+ "default link NvimInvalidColon NvimInvalidDelimiter",
+ "default link NvimInvalidComma NvimInvalidDelimiter",
+ "default link NvimInvalidArrow NvimInvalidDelimiter",
+
+ "default link NvimInvalidRegister NvimInvalidValue",
+ "default link NvimInvalidNumber NvimInvalidValue",
+ "default link NvimInvalidFloat NvimInvalidNumber",
+ "default link NvimInvalidNumberPrefix NvimInvalidNumber",
+
+ "default link NvimInvalidOptionSigil NvimInvalidIdentifier",
+ "default link NvimInvalidOptionName NvimInvalidIdentifier",
+ "default link NvimInvalidOptionScope NvimInvalidIdentifierScope",
+ "default link NvimInvalidOptionScopeDelimiter "
+ "NvimInvalidIdentifierScopeDelimiter",
+
+ "default link NvimInvalidEnvironmentSigil NvimInvalidOptionSigil",
+ "default link NvimInvalidEnvironmentName NvimInvalidIdentifier",
+
+ // Invalid string bodies and specials are still highlighted as valid ones to
+ // minimize the red area.
+ "default link NvimInvalidString NvimInvalidValue",
+ "default link NvimInvalidStringBody NvimStringBody",
+ "default link NvimInvalidStringQuote NvimInvalidString",
+ "default link NvimInvalidStringSpecial NvimStringSpecial",
+
+ "default link NvimInvalidSingleQuote NvimInvalidStringQuote",
+ "default link NvimInvalidSingleQuotedBody NvimInvalidStringBody",
+ "default link NvimInvalidSingleQuotedQuote NvimInvalidStringSpecial",
+
+ "default link NvimInvalidDoubleQuote NvimInvalidStringQuote",
+ "default link NvimInvalidDoubleQuotedBody NvimInvalidStringBody",
+ "default link NvimInvalidDoubleQuotedEscape NvimInvalidStringSpecial",
+ "default link NvimInvalidDoubleQuotedUnknownEscape NvimInvalidValue",
+
+ "default link NvimInvalidFigureBrace NvimInvalidDelimiter",
+
+ "default link NvimInvalidSpacing ErrorMsg",
+
+ // Not actually invalid, but we highlight user that he is doing something
+ // wrong.
+ "default link NvimDoubleQuotedUnknownEscape NvimInvalidValue",
+ NULL,
+};
+
+/// Create default links for Nvim* highlight groups used for cmdline coloring
+void syn_init_cmdline_highlight(bool reset, bool init)
+{
+ for (size_t i = 0 ; highlight_init_cmdline[i] != NULL ; i++) {
+ do_highlight(highlight_init_cmdline[i], reset, init);
+ }
+}
/// Load colors from a file if "g:colors_name" is set, otherwise load builtin
/// colors
///
/// @param both include groups where 'bg' doesn't matter
/// @param reset clear groups first
-void
-init_highlight(int both, int reset)
+void init_highlight(bool both, bool reset)
{
- int i;
- char **pp;
- static int had_both = FALSE;
+ static int had_both = false;
// Try finding the color scheme file. Used when a color file was loaded
// and 'background' or 't_Co' is changed.
@@ -6054,10 +6305,10 @@ init_highlight(int both, int reset)
* Didn't use a color file, use the compiled-in colors.
*/
if (both) {
- had_both = TRUE;
- pp = highlight_init_both;
- for (i = 0; pp[i] != NULL; i++) {
- do_highlight((char_u *)pp[i], reset, true);
+ had_both = true;
+ const char *const *const pp = highlight_init_both;
+ for (size_t i = 0; pp[i] != NULL; i++) {
+ do_highlight(pp[i], reset, true);
}
} else if (!had_both) {
// Don't do anything before the call with both == TRUE from main().
@@ -6066,10 +6317,11 @@ init_highlight(int both, int reset)
return;
}
- pp = (*p_bg == 'l') ? highlight_init_light : highlight_init_dark;
-
- for (i = 0; pp[i] != NULL; i++) {
- do_highlight((char_u *)pp[i], reset, true);
+ const char *const *const pp = ((*p_bg == 'l')
+ ? highlight_init_light
+ : highlight_init_dark);
+ for (size_t i = 0; pp[i] != NULL; i++) {
+ do_highlight(pp[i], reset, true);
}
/* Reverse looks ugly, but grey may not work for 8 colors. Thus let it
@@ -6079,15 +6331,14 @@ init_highlight(int both, int reset)
* Clear the attributes, needed when changing the t_Co value. */
if (t_colors > 8) {
do_highlight(
- (char_u *)(*p_bg == 'l'
- ? "Visual cterm=NONE ctermbg=LightGrey"
- : "Visual cterm=NONE ctermbg=DarkGrey"), false,
- true);
+ (*p_bg == 'l'
+ ? "Visual cterm=NONE ctermbg=LightGrey"
+ : "Visual cterm=NONE ctermbg=DarkGrey"), false, true);
} else {
- do_highlight((char_u *)"Visual cterm=reverse ctermbg=NONE",
- FALSE, TRUE);
- if (*p_bg == 'l')
- do_highlight((char_u *)"Search ctermfg=black", FALSE, TRUE);
+ do_highlight("Visual cterm=reverse ctermbg=NONE", false, true);
+ if (*p_bg == 'l') {
+ do_highlight("Search ctermfg=black", false, true);
+ }
}
/*
@@ -6104,6 +6355,7 @@ init_highlight(int both, int reset)
recursive--;
}
}
+ syn_init_cmdline_highlight(false, false);
}
/*
@@ -6138,17 +6390,22 @@ int load_colors(char_u *name)
}
-/// Handle the ":highlight .." command.
-/// When using ":hi clear" this is called recursively for each group with
-/// "forceit" and "init" both TRUE.
-/// @param init TRUE when called for initializing
-void
-do_highlight(char_u *line, int forceit, int init) {
- char_u *name_end;
- char_u *linep;
- char_u *key_start;
- char_u *arg_start;
- char_u *key = NULL, *arg = NULL;
+/// Handle ":highlight" command
+///
+/// When using ":highlight clear" this is called recursively for each group with
+/// forceit and init being both true.
+///
+/// @param[in] line Command arguments.
+/// @param[in] forceit True when bang is given, allows to link group even if
+/// it has its own settings.
+/// @param[in] init True when initializing.
+void do_highlight(const char *line, const bool forceit, const bool init)
+ FUNC_ATTR_NONNULL_ALL
+{
+ const char *name_end;
+ const char *linep;
+ const char *key_start;
+ const char *arg_start;
long i;
int off;
int len;
@@ -6162,140 +6419,129 @@ do_highlight(char_u *line, int forceit, int init) {
int color;
bool is_normal_group = false; // "Normal" group
- /*
- * If no argument, list current highlighting.
- */
- if (ends_excmd(*line)) {
+ // If no argument, list current highlighting.
+ if (ends_excmd((uint8_t)(*line))) {
for (int i = 1; i <= highlight_ga.ga_len && !got_int; i++) {
- // todo(vim): only call when the group has attributes set
+ // TODO(brammool): only call when the group has attributes set
highlight_list_one(i);
}
return;
}
- /*
- * Isolate the name.
- */
- name_end = skiptowhite(line);
- linep = skipwhite(name_end);
+ // Isolate the name.
+ name_end = (const char *)skiptowhite((const char_u *)line);
+ linep = (const char *)skipwhite((const char_u *)name_end);
- /*
- * Check for "default" argument.
- */
- if (STRNCMP(line, "default", name_end - line) == 0) {
- dodefault = TRUE;
+ // Check for "default" argument.
+ if (strncmp(line, "default", name_end - line) == 0) {
+ dodefault = true;
line = linep;
- name_end = skiptowhite(line);
- linep = skipwhite(name_end);
+ name_end = (const char *)skiptowhite((const char_u *)line);
+ linep = (const char *)skipwhite((const char_u *)name_end);
}
- /*
- * Check for "clear" or "link" argument.
- */
- if (STRNCMP(line, "clear", name_end - line) == 0)
- doclear = TRUE;
- if (STRNCMP(line, "link", name_end - line) == 0)
- dolink = TRUE;
+ // Check for "clear" or "link" argument.
+ if (strncmp(line, "clear", name_end - line) == 0) {
+ doclear = true;
+ } else if (strncmp(line, "link", name_end - line) == 0) {
+ dolink = true;
+ }
- /*
- * ":highlight {group-name}": list highlighting for one group.
- */
- if (!doclear && !dolink && ends_excmd(*linep)) {
- id = syn_namen2id(line, (int)(name_end - line));
- if (id == 0)
- EMSG2(_("E411: highlight group not found: %s"), line);
- else
+ // ":highlight {group-name}": list highlighting for one group.
+ if (!doclear && !dolink && ends_excmd((uint8_t)(*linep))) {
+ id = syn_namen2id((const char_u *)line, (int)(name_end - line));
+ if (id == 0) {
+ emsgf(_("E411: highlight group not found: %s"), line);
+ } else {
highlight_list_one(id);
+ }
return;
}
- /*
- * Handle ":highlight link {from} {to}" command.
- */
+ // Handle ":highlight link {from} {to}" command.
if (dolink) {
- char_u *from_start = linep;
- char_u *from_end;
- char_u *to_start;
- char_u *to_end;
+ const char *from_start = linep;
+ const char *from_end;
+ const char *to_start;
+ const char *to_end;
int from_id;
int to_id;
- from_end = skiptowhite(from_start);
- to_start = skipwhite(from_end);
- to_end = skiptowhite(to_start);
+ from_end = (const char *)skiptowhite((const char_u *)from_start);
+ to_start = (const char *)skipwhite((const char_u *)from_end);
+ to_end = (const char *)skiptowhite((const char_u *)to_start);
- if (ends_excmd(*from_start) || ends_excmd(*to_start)) {
- EMSG2(_("E412: Not enough arguments: \":highlight link %s\""),
- from_start);
+ if (ends_excmd((uint8_t)(*from_start))
+ || ends_excmd((uint8_t)(*to_start))) {
+ emsgf(_("E412: Not enough arguments: \":highlight link %s\""),
+ from_start);
return;
}
- if (!ends_excmd(*skipwhite(to_end))) {
- EMSG2(_("E413: Too many arguments: \":highlight link %s\""), from_start);
+ if (!ends_excmd(*skipwhite((const char_u *)to_end))) {
+ emsgf(_("E413: Too many arguments: \":highlight link %s\""), from_start);
return;
}
- from_id = syn_check_group(from_start, (int)(from_end - from_start));
- if (STRNCMP(to_start, "NONE", 4) == 0)
+ from_id = syn_check_group((const char_u *)from_start,
+ (int)(from_end - from_start));
+ if (strncmp(to_start, "NONE", 4) == 0) {
to_id = 0;
- else
- to_id = syn_check_group(to_start, (int)(to_end - to_start));
+ } else {
+ to_id = syn_check_group((const char_u *)to_start,
+ (int)(to_end - to_start));
+ }
if (from_id > 0 && (!init || HL_TABLE()[from_id - 1].sg_set == 0)) {
- /*
- * Don't allow a link when there already is some highlighting
- * for the group, unless '!' is used
- */
+ // Don't allow a link when there already is some highlighting
+ // for the group, unless '!' is used
if (to_id > 0 && !forceit && !init
&& hl_has_settings(from_id - 1, dodefault)) {
- if (sourcing_name == NULL && !dodefault)
+ if (sourcing_name == NULL && !dodefault) {
EMSG(_("E414: group has settings, highlight link ignored"));
+ }
} else {
if (!init)
HL_TABLE()[from_id - 1].sg_set |= SG_LINK;
HL_TABLE()[from_id - 1].sg_link = to_id;
HL_TABLE()[from_id - 1].sg_scriptID = current_SID;
+ HL_TABLE()[from_id - 1].sg_cleared = false;
redraw_all_later(SOME_VALID);
}
}
- /* Only call highlight_changed() once, after sourcing a syntax file */
- need_highlight_changed = TRUE;
+ // Only call highlight_changed() once, after sourcing a syntax file.
+ need_highlight_changed = true;
return;
}
if (doclear) {
- /*
- * ":highlight clear [group]" command.
- */
+ // ":highlight clear [group]" command.
line = linep;
- if (ends_excmd(*line)) {
+ if (ends_excmd((uint8_t)(*line))) {
do_unlet(S_LEN("colors_name"), true);
restore_cterm_colors();
- /*
- * Clear all default highlight groups and load the defaults.
- */
- for (int idx = 0; idx < highlight_ga.ga_len; ++idx) {
+ // Clear all default highlight groups and load the defaults.
+ for (int idx = 0; idx < highlight_ga.ga_len; idx++) {
highlight_clear(idx);
}
- init_highlight(TRUE, TRUE);
+ init_highlight(true, true);
highlight_changed();
redraw_later_clear();
return;
}
- name_end = skiptowhite(line);
- linep = skipwhite(name_end);
+ name_end = (const char *)skiptowhite((const char_u *)line);
+ linep = (const char *)skipwhite((const char_u *)name_end);
}
- /*
- * Find the group name in the table. If it does not exist yet, add it.
- */
- id = syn_check_group(line, (int)(name_end - line));
- if (id == 0) /* failed (out of memory) */
+ // Find the group name in the table. If it does not exist yet, add it.
+ id = syn_check_group((const char_u *)line, (int)(name_end - line));
+ if (id == 0) { // Failed (out of memory).
return;
- idx = id - 1; /* index is ID minus one */
+ }
+ idx = id - 1; // Index is ID minus one.
// Return if "default" was used and the group already has settings
if (dodefault && hl_has_settings(idx, true)) {
@@ -6304,19 +6550,21 @@ do_highlight(char_u *line, int forceit, int init) {
is_normal_group = (STRCMP(HL_TABLE()[idx].sg_name_u, "NORMAL") == 0);
- /* Clear the highlighting for ":hi clear {group}" and ":hi clear". */
+ // Clear the highlighting for ":hi clear {group}" and ":hi clear".
if (doclear || (forceit && init)) {
highlight_clear(idx);
if (!doclear)
HL_TABLE()[idx].sg_set = 0;
}
+ char *key = NULL;
+ char *arg = NULL;
if (!doclear) {
- while (!ends_excmd(*linep)) {
+ while (!ends_excmd((uint8_t)(*linep))) {
key_start = linep;
if (*linep == '=') {
- EMSG2(_("E415: unexpected equal sign: %s"), key_start);
- error = TRUE;
+ emsgf(_("E415: unexpected equal sign: %s"), key_start);
+ error = true;
break;
}
@@ -6326,61 +6574,58 @@ do_highlight(char_u *line, int forceit, int init) {
linep++;
}
xfree(key);
- key = vim_strnsave_up(key_start, (int)(linep - key_start));
- linep = skipwhite(linep);
+ key = (char *)vim_strnsave_up((const char_u *)key_start,
+ (int)(linep - key_start));
+ linep = (const char *)skipwhite((const char_u *)linep);
- if (STRCMP(key, "NONE") == 0) {
+ if (strcmp(key, "NONE") == 0) {
if (!init || HL_TABLE()[idx].sg_set == 0) {
- if (!init)
+ if (!init) {
HL_TABLE()[idx].sg_set |= SG_CTERM+SG_GUI;
+ }
highlight_clear(idx);
}
continue;
}
- /*
- * Check for the equal sign.
- */
+ // Check for the equal sign.
if (*linep != '=') {
- EMSG2(_("E416: missing equal sign: %s"), key_start);
- error = TRUE;
+ emsgf(_("E416: missing equal sign: %s"), key_start);
+ error = true;
break;
}
- ++linep;
+ linep++;
- /*
- * Isolate the argument.
- */
- linep = skipwhite(linep);
- if (*linep == '\'') { /* guifg='color name' */
+ // Isolate the argument.
+ linep = (const char *)skipwhite((const char_u *)linep);
+ if (*linep == '\'') { // guifg='color name'
arg_start = ++linep;
- linep = vim_strchr(linep, '\'');
+ linep = strchr(linep, '\'');
if (linep == NULL) {
- EMSG2(_(e_invarg2), key_start);
- error = TRUE;
+ emsgf(_(e_invarg2), key_start);
+ error = true;
break;
}
} else {
arg_start = linep;
- linep = skiptowhite(linep);
+ linep = (const char *)skiptowhite((const char_u *)linep);
}
if (linep == arg_start) {
- EMSG2(_("E417: missing argument: %s"), key_start);
- error = TRUE;
+ emsgf(_("E417: missing argument: %s"), key_start);
+ error = true;
break;
}
xfree(arg);
- arg = vim_strnsave(arg_start, (int)(linep - arg_start));
+ arg = xstrndup(arg_start, (size_t)(linep - arg_start));
- if (*linep == '\'')
- ++linep;
+ if (*linep == '\'') {
+ linep++;
+ }
- /*
- * Store the argument.
- */
- if ( STRCMP(key, "TERM") == 0
- || STRCMP(key, "CTERM") == 0
- || STRCMP(key, "GUI") == 0) {
+ // Store the argument.
+ if (strcmp(key, "TERM") == 0
+ || strcmp(key, "CTERM") == 0
+ || strcmp(key, "GUI") == 0) {
attr = 0;
off = 0;
while (arg[off] != NUL) {
@@ -6393,26 +6638,30 @@ do_highlight(char_u *line, int forceit, int init) {
}
}
if (i < 0) {
- EMSG2(_("E418: Illegal value: %s"), arg);
- error = TRUE;
+ emsgf(_("E418: Illegal value: %s"), arg);
+ error = true;
break;
}
- if (arg[off] == ',') /* another one follows */
- ++off;
+ if (arg[off] == ',') { // Another one follows.
+ off++;
+ }
}
- if (error)
+ if (error) {
break;
+ }
if (*key == 'C') {
if (!init || !(HL_TABLE()[idx].sg_set & SG_CTERM)) {
- if (!init)
+ if (!init) {
HL_TABLE()[idx].sg_set |= SG_CTERM;
+ }
HL_TABLE()[idx].sg_cterm = attr;
HL_TABLE()[idx].sg_cterm_bold = FALSE;
}
} else if (*key == 'G') {
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI)) {
- if (!init)
+ if (!init) {
HL_TABLE()[idx].sg_set |= SG_GUI;
+ }
HL_TABLE()[idx].sg_gui = attr;
}
}
@@ -6431,14 +6680,14 @@ do_highlight(char_u *line, int forceit, int init) {
HL_TABLE()[idx].sg_cterm_bold = FALSE;
}
- if (ascii_isdigit(*arg))
+ if (ascii_isdigit(*arg)) {
color = atoi((char *)arg);
- else if (STRICMP(arg, "fg") == 0) {
- if (cterm_normal_fg_color)
+ } else if (STRICMP(arg, "fg") == 0) {
+ if (cterm_normal_fg_color) {
color = cterm_normal_fg_color - 1;
- else {
+ } else {
EMSG(_("E419: FG color unknown"));
- error = TRUE;
+ error = true;
break;
}
} else if (STRICMP(arg, "bg") == 0) {
@@ -6446,70 +6695,84 @@ do_highlight(char_u *line, int forceit, int init) {
color = cterm_normal_bg_color - 1;
else {
EMSG(_("E420: BG color unknown"));
- error = TRUE;
+ error = true;
break;
}
} else {
- static char *(color_names[28]) = {
+ static const char *color_names[] = {
"Black", "DarkBlue", "DarkGreen", "DarkCyan",
"DarkRed", "DarkMagenta", "Brown", "DarkYellow",
"Gray", "Grey",
"LightGray", "LightGrey", "DarkGray", "DarkGrey",
"Blue", "LightBlue", "Green", "LightGreen",
"Cyan", "LightCyan", "Red", "LightRed", "Magenta",
- "LightMagenta", "Yellow", "LightYellow", "White", "NONE"
+ "LightMagenta", "Yellow", "LightYellow", "White",
+ "NONE"
+ };
+ static const int color_numbers_16[] = {
+ 0, 1, 2, 3,
+ 4, 5, 6, 6,
+ 7, 7,
+ 7, 7, 8, 8,
+ 9, 9, 10, 10,
+ 11, 11, 12, 12, 13,
+ 13, 14, 14, 15,
+ -1
+ };
+ // For xterm with 88 colors:
+ static int color_numbers_88[] = {
+ 0, 4, 2, 6,
+ 1, 5, 32, 72,
+ 84, 84,
+ 7, 7, 82, 82,
+ 12, 43, 10, 61,
+ 14, 63, 9, 74, 13,
+ 75, 11, 78, 15,
+ -1
+ };
+ // For xterm with 256 colors:
+ static int color_numbers_256[] = {
+ 0, 4, 2, 6,
+ 1, 5, 130, 130,
+ 248, 248,
+ 7, 7, 242, 242,
+ 12, 81, 10, 121,
+ 14, 159, 9, 224, 13,
+ 225, 11, 229, 15,
+ -1
};
- static int color_numbers_16[28] = {0, 1, 2, 3,
- 4, 5, 6, 6,
- 7, 7,
- 7, 7, 8, 8,
- 9, 9, 10, 10,
- 11, 11, 12, 12, 13,
- 13, 14, 14, 15, -1};
- /* for xterm with 88 colors... */
- static int color_numbers_88[28] = {0, 4, 2, 6,
- 1, 5, 32, 72,
- 84, 84,
- 7, 7, 82, 82,
- 12, 43, 10, 61,
- 14, 63, 9, 74, 13,
- 75, 11, 78, 15, -1};
- /* for xterm with 256 colors... */
- static int color_numbers_256[28] = {0, 4, 2, 6,
- 1, 5, 130, 130,
- 248, 248,
- 7, 7, 242, 242,
- 12, 81, 10, 121,
- 14, 159, 9, 224, 13,
- 225, 11, 229, 15, -1};
- /* for terminals with less than 16 colors... */
- static int color_numbers_8[28] = {0, 4, 2, 6,
- 1, 5, 3, 3,
- 7, 7,
- 7, 7, 0+8, 0+8,
- 4+8, 4+8, 2+8, 2+8,
- 6+8, 6+8, 1+8, 1+8, 5+8,
- 5+8, 3+8, 3+8, 7+8, -1};
-
- /* reduce calls to STRICMP a bit, it can be slow */
+ // For terminals with less than 16 colors:
+ static int color_numbers_8[28] = {
+ 0, 4, 2, 6,
+ 1, 5, 3, 3,
+ 7, 7,
+ 7, 7, 0+8, 0+8,
+ 4+8, 4+8, 2+8, 2+8,
+ 6+8, 6+8, 1+8, 1+8, 5+8,
+ 5+8, 3+8, 3+8, 7+8,
+ -1
+ };
+
+ // Reduce calls to STRICMP a bit, it can be slow.
off = TOUPPER_ASC(*arg);
- for (i = ARRAY_SIZE(color_names); --i >= 0; )
+ for (i = ARRAY_SIZE(color_names); --i >= 0; ) {
if (off == color_names[i][0]
- && STRICMP(arg + 1, color_names[i] + 1) == 0)
+ && STRICMP(arg + 1, color_names[i] + 1) == 0) {
break;
+ }
+ }
if (i < 0) {
- EMSG2(_(
- "E421: Color name or number not recognized: %s"),
- key_start);
- error = TRUE;
+ emsgf(_("E421: Color name or number not recognized: %s"),
+ key_start);
+ error = true;
break;
}
- /* Use the _16 table to check if its a valid color name. */
+ // Use the _16 table to check if its a valid color name.
color = color_numbers_16[i];
if (color >= 0) {
if (t_colors == 8) {
- /* t_Co is 8: use the 8 colors table */
+ // t_Co is 8: use the 8 colors table.
color = color_numbers_8[i];
if (key[5] == 'F') {
/* set/reset bold attribute to get light foreground
@@ -6533,16 +6796,13 @@ do_highlight(char_u *line, int forceit, int init) {
}
}
}
- /* Add one to the argument, to avoid zero. Zero is used for
- * "NONE", then "color" is -1. */
+ // Add one to the argument, to avoid zero. Zero is used for
+ // "NONE", then "color" is -1.
if (key[5] == 'F') {
HL_TABLE()[idx].sg_cterm_fg = color + 1;
if (is_normal_group) {
cterm_normal_fg_color = color + 1;
- cterm_normal_fg_bold = (HL_TABLE()[idx].sg_cterm & HL_BOLD);
- {
- must_redraw = CLEAR;
- }
+ must_redraw = CLEAR;
}
} else {
HL_TABLE()[idx].sg_cterm_bg = color + 1;
@@ -6566,15 +6826,15 @@ do_highlight(char_u *line, int forceit, int init) {
}
}
}
- } else if (STRCMP(key, "GUIFG") == 0) {
+ } else if (strcmp(key, "GUIFG") == 0) {
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI)) {
if (!init)
HL_TABLE()[idx].sg_set |= SG_GUI;
xfree(HL_TABLE()[idx].sg_rgb_fg_name);
- if (STRCMP(arg, "NONE")) {
- HL_TABLE()[idx].sg_rgb_fg_name = (uint8_t *)xstrdup((char *)arg);
- HL_TABLE()[idx].sg_rgb_fg = name_to_color(arg);
+ if (strcmp(arg, "NONE")) {
+ HL_TABLE()[idx].sg_rgb_fg_name = (char_u *)xstrdup((char *)arg);
+ HL_TABLE()[idx].sg_rgb_fg = name_to_color((const char_u *)arg);
} else {
HL_TABLE()[idx].sg_rgb_fg_name = NULL;
HL_TABLE()[idx].sg_rgb_fg = -1;
@@ -6591,8 +6851,8 @@ do_highlight(char_u *line, int forceit, int init) {
xfree(HL_TABLE()[idx].sg_rgb_bg_name);
if (STRCMP(arg, "NONE") != 0) {
- HL_TABLE()[idx].sg_rgb_bg_name = (uint8_t *)xstrdup((char *)arg);
- HL_TABLE()[idx].sg_rgb_bg = name_to_color(arg);
+ HL_TABLE()[idx].sg_rgb_bg_name = (char_u *)xstrdup((char *)arg);
+ HL_TABLE()[idx].sg_rgb_bg = name_to_color((const char_u *)arg);
} else {
HL_TABLE()[idx].sg_rgb_bg_name = NULL;
HL_TABLE()[idx].sg_rgb_bg = -1;
@@ -6602,15 +6862,15 @@ do_highlight(char_u *line, int forceit, int init) {
if (is_normal_group) {
normal_bg = HL_TABLE()[idx].sg_rgb_bg;
}
- } else if (STRCMP(key, "GUISP") == 0) {
+ } else if (strcmp(key, "GUISP") == 0) {
if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI)) {
if (!init)
HL_TABLE()[idx].sg_set |= SG_GUI;
xfree(HL_TABLE()[idx].sg_rgb_sp_name);
- if (STRCMP(arg, "NONE") != 0) {
- HL_TABLE()[idx].sg_rgb_sp_name = (uint8_t *)xstrdup((char *)arg);
- HL_TABLE()[idx].sg_rgb_sp = name_to_color(arg);
+ if (strcmp(arg, "NONE") != 0) {
+ HL_TABLE()[idx].sg_rgb_sp_name = (char_u *)xstrdup((char *)arg);
+ HL_TABLE()[idx].sg_rgb_sp = name_to_color((const char_u *)arg);
} else {
HL_TABLE()[idx].sg_rgb_sp_name = NULL;
HL_TABLE()[idx].sg_rgb_sp = -1;
@@ -6620,31 +6880,26 @@ do_highlight(char_u *line, int forceit, int init) {
if (is_normal_group) {
normal_sp = HL_TABLE()[idx].sg_rgb_sp;
}
- } else if (STRCMP(key, "START") == 0 || STRCMP(key, "STOP") == 0) {
+ } else if (strcmp(key, "START") == 0 || strcmp(key, "STOP") == 0) {
// Ignored for now
} else {
- EMSG2(_("E423: Illegal argument: %s"), key_start);
- error = TRUE;
+ emsgf(_("E423: Illegal argument: %s"), key_start);
+ error = true;
break;
}
+ HL_TABLE()[idx].sg_cleared = false;
- /*
- * When highlighting has been given for a group, don't link it.
- */
+ // When highlighting has been given for a group, don't link it.
if (!init || !(HL_TABLE()[idx].sg_set & SG_LINK)) {
HL_TABLE()[idx].sg_link = 0;
}
- /*
- * Continue with next argument.
- */
- linep = skipwhite(linep);
+ // Continue with next argument.
+ linep = (const char *)skipwhite((const char_u *)linep);
}
}
- /*
- * If there is an error, and it's a new entry, remove it from the table.
- */
+ // If there is an error, and it's a new entry, remove it from the table.
if (error && idx == highlight_ga.ga_len) {
syn_unadd_group();
} else {
@@ -6690,7 +6945,6 @@ void restore_cterm_colors(void)
normal_bg = -1;
normal_sp = -1;
cterm_normal_fg_color = 0;
- cterm_normal_fg_bold = 0;
cterm_normal_bg_color = 0;
}
@@ -6714,6 +6968,8 @@ static int hl_has_settings(int idx, int check_link)
*/
static void highlight_clear(int idx)
{
+ HL_TABLE()[idx].sg_cleared = true;
+
HL_TABLE()[idx].sg_attr = 0;
HL_TABLE()[idx].sg_cterm = 0;
HL_TABLE()[idx].sg_cterm_bold = FALSE;
@@ -6742,9 +6998,9 @@ static void highlight_clear(int idx)
/// GUI can redraw at any time for any buffer.
static garray_T attr_table = GA_EMPTY_INIT_VALUE;
-static inline attrentry_T * ATTR_ENTRY(int idx)
+static inline HlAttrs * ATTR_ENTRY(int idx)
{
- return &((attrentry_T *)attr_table.ga_data)[idx];
+ return &((HlAttrs *)attr_table.ga_data)[idx];
}
@@ -6752,23 +7008,21 @@ static inline attrentry_T * ATTR_ENTRY(int idx)
/// Add a new entry to the term_attr_table, attr_table or gui_attr_table
/// if the combination is new.
/// @return 0 for error.
-int get_attr_entry(attrentry_T *aep)
+int get_attr_entry(HlAttrs *aep)
{
garray_T *table = &attr_table;
- attrentry_T *taep;
- static int recursive = FALSE;
+ HlAttrs *taep;
+ static int recursive = false;
/*
* Init the table, in case it wasn't done yet.
*/
- table->ga_itemsize = sizeof(attrentry_T);
+ table->ga_itemsize = sizeof(HlAttrs);
ga_set_growsize(table, 7);
- /*
- * Try to find an entry with the same specifications.
- */
- for (int i = 0; i < table->ga_len; ++i) {
- taep = &(((attrentry_T *)table->ga_data)[i]);
+ // Try to find an entry with the same specifications.
+ for (int i = 0; i < table->ga_len; i++) {
+ taep = &(((HlAttrs *)table->ga_data)[i]);
if (aep->cterm_ae_attr == taep->cterm_ae_attr
&& aep->cterm_fg_color == taep->cterm_fg_color
&& aep->cterm_bg_color == taep->cterm_bg_color
@@ -6805,7 +7059,7 @@ int get_attr_entry(attrentry_T *aep)
// This is a new combination of colors and font, add an entry.
- taep = GA_APPEND_VIA_PTR(attrentry_T, table);
+ taep = GA_APPEND_VIA_PTR(HlAttrs, table);
memset(taep, 0, sizeof(*taep));
taep->cterm_ae_attr = aep->cterm_ae_attr;
taep->cterm_fg_color = aep->cterm_fg_color;
@@ -6833,9 +7087,9 @@ void clear_hl_tables(void)
// Return the resulting attributes.
int hl_combine_attr(int char_attr, int prim_attr)
{
- attrentry_T *char_aep = NULL;
- attrentry_T *spell_aep;
- attrentry_T new_en = ATTRENTRY_INIT;
+ HlAttrs *char_aep = NULL;
+ HlAttrs *spell_aep;
+ HlAttrs new_en = HLATTRS_INIT;
if (char_attr == 0) {
return prim_attr;
@@ -6884,7 +7138,7 @@ int hl_combine_attr(int char_attr, int prim_attr)
/// \note this function does not apply exclusively to cterm attr contrary
/// to what its name implies
/// \warn don't call it with attr 0 (i.e., the null attribute)
-attrentry_T *syn_cterm_attr2entry(int attr)
+HlAttrs *syn_cterm_attr2entry(int attr)
{
attr -= ATTR_OFF;
if (attr >= attr_table.ga_len) {
@@ -7133,7 +7387,7 @@ syn_list_header(int did_header, int outlen, int id)
/// @param idx corrected highlight index
static void set_hl_attr(int idx)
{
- attrentry_T at_en = ATTRENTRY_INIT;
+ HlAttrs at_en = HLATTRS_INIT;
struct hl_group *sgp = HL_TABLE() + idx;
@@ -7202,7 +7456,7 @@ char_u *syn_id2name(int id)
/*
* Like syn_name2id(), but take a pointer + length argument.
*/
-int syn_namen2id(char_u *linep, int len)
+int syn_namen2id(const char_u *linep, int len)
{
char_u *name = vim_strnsave(linep, len);
int id = syn_name2id(name);
@@ -7218,7 +7472,7 @@ int syn_namen2id(char_u *linep, int len)
/// @param len length of \p pp
///
/// @return 0 for failure else the id of the group
-int syn_check_group(char_u *pp, int len)
+int syn_check_group(const char_u *pp, int len)
{
char_u *name = vim_strnsave(pp, len);
int id = syn_name2id(name);
@@ -7505,14 +7759,28 @@ static void highlight_list_two(int cnt, int attr)
}
-/*
- * Function given to ExpandGeneric() to obtain the list of group names.
- * Also used for synIDattr() function.
- */
-const char *get_highlight_name(expand_T *const xp, const int idx)
+/// Function given to ExpandGeneric() to obtain the list of group names.
+const char *get_highlight_name(expand_T *const xp, int idx)
+ FUNC_ATTR_WARN_UNUSED_RESULT
+{
+ return get_highlight_name_ext(xp, idx, true);
+}
+
+
+/// Obtain a highlight group name.
+/// When "skip_cleared" is TRUE don't return a cleared entry.
+const char *get_highlight_name_ext(expand_T *xp, int idx, int skip_cleared)
FUNC_ATTR_WARN_UNUSED_RESULT
{
- // TODO(justinmk): 'xp' is unused
+ if (idx < 0) {
+ return NULL;
+ }
+
+ // Items are never removed from the table, skip the ones that were cleared.
+ if (skip_cleared && idx < highlight_ga.ga_len && HL_TABLE()[idx].sg_cleared) {
+ return "";
+ }
+
if (idx == highlight_ga.ga_len && include_none != 0) {
return "none";
} else if (idx == highlight_ga.ga_len + include_none
@@ -7524,7 +7792,7 @@ const char *get_highlight_name(expand_T *const xp, const int idx)
} else if (idx == highlight_ga.ga_len + include_none + include_default + 1
&& include_link != 0) {
return "clear";
- } else if (idx < 0 || idx >= highlight_ga.ga_len) {
+ } else if (idx >= highlight_ga.ga_len) {
return NULL;
}
return (const char *)HL_TABLE()[idx].sg_name;
@@ -7532,685 +7800,685 @@ const char *get_highlight_name(expand_T *const xp, const int idx)
color_name_table_T color_name_table[] = {
// Colors from rgb.txt
- { "AliceBlue", RGB(0xf0, 0xf8, 0xff) },
- { "AntiqueWhite", RGB(0xfa, 0xeb, 0xd7) },
- { "AntiqueWhite1", RGB(0xff, 0xef, 0xdb) },
- { "AntiqueWhite2", RGB(0xee, 0xdf, 0xcc) },
- { "AntiqueWhite3", RGB(0xcd, 0xc0, 0xb0) },
- { "AntiqueWhite4", RGB(0x8b, 0x83, 0x78) },
- { "Aqua", RGB(0x00, 0xff, 0xff) },
- { "Aquamarine", RGB(0x7f, 0xff, 0xd4) },
- { "Aquamarine1", RGB(0x7f, 0xff, 0xd4) },
- { "Aquamarine2", RGB(0x76, 0xee, 0xc6) },
- { "Aquamarine3", RGB(0x66, 0xcd, 0xaa) },
- { "Aquamarine4", RGB(0x45, 0x8b, 0x74) },
- { "Azure", RGB(0xf0, 0xff, 0xff) },
- { "Azure1", RGB(0xf0, 0xff, 0xff) },
- { "Azure2", RGB(0xe0, 0xee, 0xee) },
- { "Azure3", RGB(0xc1, 0xcd, 0xcd) },
- { "Azure4", RGB(0x83, 0x8b, 0x8b) },
- { "Beige", RGB(0xf5, 0xf5, 0xdc) },
- { "Bisque", RGB(0xff, 0xe4, 0xc4) },
- { "Bisque1", RGB(0xff, 0xe4, 0xc4) },
- { "Bisque2", RGB(0xee, 0xd5, 0xb7) },
- { "Bisque3", RGB(0xcd, 0xb7, 0x9e) },
- { "Bisque4", RGB(0x8b, 0x7d, 0x6b) },
- { "Black", RGB(0x00, 0x00, 0x00) },
- { "BlanchedAlmond", RGB(0xff, 0xeb, 0xcd) },
- { "Blue", RGB(0x00, 0x00, 0xff) },
- { "Blue1", RGB(0x0, 0x0, 0xff) },
- { "Blue2", RGB(0x0, 0x0, 0xee) },
- { "Blue3", RGB(0x0, 0x0, 0xcd) },
- { "Blue4", RGB(0x0, 0x0, 0x8b) },
- { "BlueViolet", RGB(0x8a, 0x2b, 0xe2) },
- { "Brown", RGB(0xa5, 0x2a, 0x2a) },
- { "Brown1", RGB(0xff, 0x40, 0x40) },
- { "Brown2", RGB(0xee, 0x3b, 0x3b) },
- { "Brown3", RGB(0xcd, 0x33, 0x33) },
- { "Brown4", RGB(0x8b, 0x23, 0x23) },
- { "BurlyWood", RGB(0xde, 0xb8, 0x87) },
- { "Burlywood1", RGB(0xff, 0xd3, 0x9b) },
- { "Burlywood2", RGB(0xee, 0xc5, 0x91) },
- { "Burlywood3", RGB(0xcd, 0xaa, 0x7d) },
- { "Burlywood4", RGB(0x8b, 0x73, 0x55) },
- { "CadetBlue", RGB(0x5f, 0x9e, 0xa0) },
- { "CadetBlue1", RGB(0x98, 0xf5, 0xff) },
- { "CadetBlue2", RGB(0x8e, 0xe5, 0xee) },
- { "CadetBlue3", RGB(0x7a, 0xc5, 0xcd) },
- { "CadetBlue4", RGB(0x53, 0x86, 0x8b) },
- { "ChartReuse", RGB(0x7f, 0xff, 0x00) },
- { "Chartreuse1", RGB(0x7f, 0xff, 0x0) },
- { "Chartreuse2", RGB(0x76, 0xee, 0x0) },
- { "Chartreuse3", RGB(0x66, 0xcd, 0x0) },
- { "Chartreuse4", RGB(0x45, 0x8b, 0x0) },
- { "Chocolate", RGB(0xd2, 0x69, 0x1e) },
- { "Chocolate1", RGB(0xff, 0x7f, 0x24) },
- { "Chocolate2", RGB(0xee, 0x76, 0x21) },
- { "Chocolate3", RGB(0xcd, 0x66, 0x1d) },
- { "Chocolate4", RGB(0x8b, 0x45, 0x13) },
- { "Coral", RGB(0xff, 0x7f, 0x50) },
- { "Coral1", RGB(0xff, 0x72, 0x56) },
- { "Coral2", RGB(0xee, 0x6a, 0x50) },
- { "Coral3", RGB(0xcd, 0x5b, 0x45) },
- { "Coral4", RGB(0x8b, 0x3e, 0x2f) },
- { "CornFlowerBlue", RGB(0x64, 0x95, 0xed) },
- { "Cornsilk", RGB(0xff, 0xf8, 0xdc) },
- { "Cornsilk1", RGB(0xff, 0xf8, 0xdc) },
- { "Cornsilk2", RGB(0xee, 0xe8, 0xcd) },
- { "Cornsilk3", RGB(0xcd, 0xc8, 0xb1) },
- { "Cornsilk4", RGB(0x8b, 0x88, 0x78) },
- { "Crimson", RGB(0xdc, 0x14, 0x3c) },
- { "Cyan", RGB(0x00, 0xff, 0xff) },
- { "Cyan1", RGB(0x0, 0xff, 0xff) },
- { "Cyan2", RGB(0x0, 0xee, 0xee) },
- { "Cyan3", RGB(0x0, 0xcd, 0xcd) },
- { "Cyan4", RGB(0x0, 0x8b, 0x8b) },
- { "DarkBlue", RGB(0x00, 0x00, 0x8b) },
- { "DarkCyan", RGB(0x00, 0x8b, 0x8b) },
- { "DarkGoldenRod", RGB(0xb8, 0x86, 0x0b) },
- { "DarkGoldenrod1", RGB(0xff, 0xb9, 0xf) },
- { "DarkGoldenrod2", RGB(0xee, 0xad, 0xe) },
- { "DarkGoldenrod3", RGB(0xcd, 0x95, 0xc) },
- { "DarkGoldenrod4", RGB(0x8b, 0x65, 0x8) },
- { "DarkGray", RGB(0xa9, 0xa9, 0xa9) },
- { "DarkGreen", RGB(0x00, 0x64, 0x00) },
- { "DarkGrey", RGB(0xa9, 0xa9, 0xa9) },
- { "DarkKhaki", RGB(0xbd, 0xb7, 0x6b) },
- { "DarkMagenta", RGB(0x8b, 0x00, 0x8b) },
- { "DarkOliveGreen", RGB(0x55, 0x6b, 0x2f) },
- { "DarkOliveGreen1", RGB(0xca, 0xff, 0x70) },
- { "DarkOliveGreen2", RGB(0xbc, 0xee, 0x68) },
- { "DarkOliveGreen3", RGB(0xa2, 0xcd, 0x5a) },
- { "DarkOliveGreen4", RGB(0x6e, 0x8b, 0x3d) },
- { "DarkOrange", RGB(0xff, 0x8c, 0x00) },
- { "DarkOrange1", RGB(0xff, 0x7f, 0x0) },
- { "DarkOrange2", RGB(0xee, 0x76, 0x0) },
- { "DarkOrange3", RGB(0xcd, 0x66, 0x0) },
- { "DarkOrange4", RGB(0x8b, 0x45, 0x0) },
- { "DarkOrchid", RGB(0x99, 0x32, 0xcc) },
- { "DarkOrchid1", RGB(0xbf, 0x3e, 0xff) },
- { "DarkOrchid2", RGB(0xb2, 0x3a, 0xee) },
- { "DarkOrchid3", RGB(0x9a, 0x32, 0xcd) },
- { "DarkOrchid4", RGB(0x68, 0x22, 0x8b) },
- { "DarkRed", RGB(0x8b, 0x00, 0x00) },
- { "DarkSalmon", RGB(0xe9, 0x96, 0x7a) },
- { "DarkSeaGreen", RGB(0x8f, 0xbc, 0x8f) },
- { "DarkSeaGreen1", RGB(0xc1, 0xff, 0xc1) },
- { "DarkSeaGreen2", RGB(0xb4, 0xee, 0xb4) },
- { "DarkSeaGreen3", RGB(0x9b, 0xcd, 0x9b) },
- { "DarkSeaGreen4", RGB(0x69, 0x8b, 0x69) },
- { "DarkSlateBlue", RGB(0x48, 0x3d, 0x8b) },
- { "DarkSlateGray", RGB(0x2f, 0x4f, 0x4f) },
- { "DarkSlateGray1", RGB(0x97, 0xff, 0xff) },
- { "DarkSlateGray2", RGB(0x8d, 0xee, 0xee) },
- { "DarkSlateGray3", RGB(0x79, 0xcd, 0xcd) },
- { "DarkSlateGray4", RGB(0x52, 0x8b, 0x8b) },
- { "DarkSlateGrey", RGB(0x2f, 0x4f, 0x4f) },
- { "DarkTurquoise", RGB(0x00, 0xce, 0xd1) },
- { "DarkViolet", RGB(0x94, 0x00, 0xd3) },
- { "DarkYellow", RGB(0xbb, 0xbb, 0x00) },
- { "DeepPink", RGB(0xff, 0x14, 0x93) },
- { "DeepPink1", RGB(0xff, 0x14, 0x93) },
- { "DeepPink2", RGB(0xee, 0x12, 0x89) },
- { "DeepPink3", RGB(0xcd, 0x10, 0x76) },
- { "DeepPink4", RGB(0x8b, 0xa, 0x50) },
- { "DeepSkyBlue", RGB(0x00, 0xbf, 0xff) },
- { "DeepSkyBlue1", RGB(0x0, 0xbf, 0xff) },
- { "DeepSkyBlue2", RGB(0x0, 0xb2, 0xee) },
- { "DeepSkyBlue3", RGB(0x0, 0x9a, 0xcd) },
- { "DeepSkyBlue4", RGB(0x0, 0x68, 0x8b) },
- { "DimGray", RGB(0x69, 0x69, 0x69) },
- { "DimGrey", RGB(0x69, 0x69, 0x69) },
- { "DodgerBlue", RGB(0x1e, 0x90, 0xff) },
- { "DodgerBlue1", RGB(0x1e, 0x90, 0xff) },
- { "DodgerBlue2", RGB(0x1c, 0x86, 0xee) },
- { "DodgerBlue3", RGB(0x18, 0x74, 0xcd) },
- { "DodgerBlue4", RGB(0x10, 0x4e, 0x8b) },
- { "Firebrick", RGB(0xb2, 0x22, 0x22) },
- { "Firebrick1", RGB(0xff, 0x30, 0x30) },
- { "Firebrick2", RGB(0xee, 0x2c, 0x2c) },
- { "Firebrick3", RGB(0xcd, 0x26, 0x26) },
- { "Firebrick4", RGB(0x8b, 0x1a, 0x1a) },
- { "FloralWhite", RGB(0xff, 0xfa, 0xf0) },
- { "ForestGreen", RGB(0x22, 0x8b, 0x22) },
- { "Fuchsia", RGB(0xff, 0x00, 0xff) },
- { "Gainsboro", RGB(0xdc, 0xdc, 0xdc) },
- { "GhostWhite", RGB(0xf8, 0xf8, 0xff) },
- { "Gold", RGB(0xff, 0xd7, 0x00) },
- { "Gold1", RGB(0xff, 0xd7, 0x0) },
- { "Gold2", RGB(0xee, 0xc9, 0x0) },
- { "Gold3", RGB(0xcd, 0xad, 0x0) },
- { "Gold4", RGB(0x8b, 0x75, 0x0) },
- { "GoldenRod", RGB(0xda, 0xa5, 0x20) },
- { "Goldenrod1", RGB(0xff, 0xc1, 0x25) },
- { "Goldenrod2", RGB(0xee, 0xb4, 0x22) },
- { "Goldenrod3", RGB(0xcd, 0x9b, 0x1d) },
- { "Goldenrod4", RGB(0x8b, 0x69, 0x14) },
- { "Gray", RGB(0x80, 0x80, 0x80) },
- { "Gray0", RGB(0x0, 0x0, 0x0) },
- { "Gray1", RGB(0x3, 0x3, 0x3) },
- { "Gray10", RGB(0x1a, 0x1a, 0x1a) },
- { "Gray100", RGB(0xff, 0xff, 0xff) },
- { "Gray11", RGB(0x1c, 0x1c, 0x1c) },
- { "Gray12", RGB(0x1f, 0x1f, 0x1f) },
- { "Gray13", RGB(0x21, 0x21, 0x21) },
- { "Gray14", RGB(0x24, 0x24, 0x24) },
- { "Gray15", RGB(0x26, 0x26, 0x26) },
- { "Gray16", RGB(0x29, 0x29, 0x29) },
- { "Gray17", RGB(0x2b, 0x2b, 0x2b) },
- { "Gray18", RGB(0x2e, 0x2e, 0x2e) },
- { "Gray19", RGB(0x30, 0x30, 0x30) },
- { "Gray2", RGB(0x5, 0x5, 0x5) },
- { "Gray20", RGB(0x33, 0x33, 0x33) },
- { "Gray21", RGB(0x36, 0x36, 0x36) },
- { "Gray22", RGB(0x38, 0x38, 0x38) },
- { "Gray23", RGB(0x3b, 0x3b, 0x3b) },
- { "Gray24", RGB(0x3d, 0x3d, 0x3d) },
- { "Gray25", RGB(0x40, 0x40, 0x40) },
- { "Gray26", RGB(0x42, 0x42, 0x42) },
- { "Gray27", RGB(0x45, 0x45, 0x45) },
- { "Gray28", RGB(0x47, 0x47, 0x47) },
- { "Gray29", RGB(0x4a, 0x4a, 0x4a) },
- { "Gray3", RGB(0x8, 0x8, 0x8) },
- { "Gray30", RGB(0x4d, 0x4d, 0x4d) },
- { "Gray31", RGB(0x4f, 0x4f, 0x4f) },
- { "Gray32", RGB(0x52, 0x52, 0x52) },
- { "Gray33", RGB(0x54, 0x54, 0x54) },
- { "Gray34", RGB(0x57, 0x57, 0x57) },
- { "Gray35", RGB(0x59, 0x59, 0x59) },
- { "Gray36", RGB(0x5c, 0x5c, 0x5c) },
- { "Gray37", RGB(0x5e, 0x5e, 0x5e) },
- { "Gray38", RGB(0x61, 0x61, 0x61) },
- { "Gray39", RGB(0x63, 0x63, 0x63) },
- { "Gray4", RGB(0xa, 0xa, 0xa) },
- { "Gray40", RGB(0x66, 0x66, 0x66) },
- { "Gray41", RGB(0x69, 0x69, 0x69) },
- { "Gray42", RGB(0x6b, 0x6b, 0x6b) },
- { "Gray43", RGB(0x6e, 0x6e, 0x6e) },
- { "Gray44", RGB(0x70, 0x70, 0x70) },
- { "Gray45", RGB(0x73, 0x73, 0x73) },
- { "Gray46", RGB(0x75, 0x75, 0x75) },
- { "Gray47", RGB(0x78, 0x78, 0x78) },
- { "Gray48", RGB(0x7a, 0x7a, 0x7a) },
- { "Gray49", RGB(0x7d, 0x7d, 0x7d) },
- { "Gray5", RGB(0xd, 0xd, 0xd) },
- { "Gray50", RGB(0x7f, 0x7f, 0x7f) },
- { "Gray51", RGB(0x82, 0x82, 0x82) },
- { "Gray52", RGB(0x85, 0x85, 0x85) },
- { "Gray53", RGB(0x87, 0x87, 0x87) },
- { "Gray54", RGB(0x8a, 0x8a, 0x8a) },
- { "Gray55", RGB(0x8c, 0x8c, 0x8c) },
- { "Gray56", RGB(0x8f, 0x8f, 0x8f) },
- { "Gray57", RGB(0x91, 0x91, 0x91) },
- { "Gray58", RGB(0x94, 0x94, 0x94) },
- { "Gray59", RGB(0x96, 0x96, 0x96) },
- { "Gray6", RGB(0xf, 0xf, 0xf) },
- { "Gray60", RGB(0x99, 0x99, 0x99) },
- { "Gray61", RGB(0x9c, 0x9c, 0x9c) },
- { "Gray62", RGB(0x9e, 0x9e, 0x9e) },
- { "Gray63", RGB(0xa1, 0xa1, 0xa1) },
- { "Gray64", RGB(0xa3, 0xa3, 0xa3) },
- { "Gray65", RGB(0xa6, 0xa6, 0xa6) },
- { "Gray66", RGB(0xa8, 0xa8, 0xa8) },
- { "Gray67", RGB(0xab, 0xab, 0xab) },
- { "Gray68", RGB(0xad, 0xad, 0xad) },
- { "Gray69", RGB(0xb0, 0xb0, 0xb0) },
- { "Gray7", RGB(0x12, 0x12, 0x12) },
- { "Gray70", RGB(0xb3, 0xb3, 0xb3) },
- { "Gray71", RGB(0xb5, 0xb5, 0xb5) },
- { "Gray72", RGB(0xb8, 0xb8, 0xb8) },
- { "Gray73", RGB(0xba, 0xba, 0xba) },
- { "Gray74", RGB(0xbd, 0xbd, 0xbd) },
- { "Gray75", RGB(0xbf, 0xbf, 0xbf) },
- { "Gray76", RGB(0xc2, 0xc2, 0xc2) },
- { "Gray77", RGB(0xc4, 0xc4, 0xc4) },
- { "Gray78", RGB(0xc7, 0xc7, 0xc7) },
- { "Gray79", RGB(0xc9, 0xc9, 0xc9) },
- { "Gray8", RGB(0x14, 0x14, 0x14) },
- { "Gray80", RGB(0xcc, 0xcc, 0xcc) },
- { "Gray81", RGB(0xcf, 0xcf, 0xcf) },
- { "Gray82", RGB(0xd1, 0xd1, 0xd1) },
- { "Gray83", RGB(0xd4, 0xd4, 0xd4) },
- { "Gray84", RGB(0xd6, 0xd6, 0xd6) },
- { "Gray85", RGB(0xd9, 0xd9, 0xd9) },
- { "Gray86", RGB(0xdb, 0xdb, 0xdb) },
- { "Gray87", RGB(0xde, 0xde, 0xde) },
- { "Gray88", RGB(0xe0, 0xe0, 0xe0) },
- { "Gray89", RGB(0xe3, 0xe3, 0xe3) },
- { "Gray9", RGB(0x17, 0x17, 0x17) },
- { "Gray90", RGB(0xe5, 0xe5, 0xe5) },
- { "Gray91", RGB(0xe8, 0xe8, 0xe8) },
- { "Gray92", RGB(0xeb, 0xeb, 0xeb) },
- { "Gray93", RGB(0xed, 0xed, 0xed) },
- { "Gray94", RGB(0xf0, 0xf0, 0xf0) },
- { "Gray95", RGB(0xf2, 0xf2, 0xf2) },
- { "Gray96", RGB(0xf5, 0xf5, 0xf5) },
- { "Gray97", RGB(0xf7, 0xf7, 0xf7) },
- { "Gray98", RGB(0xfa, 0xfa, 0xfa) },
- { "Gray99", RGB(0xfc, 0xfc, 0xfc) },
- { "Green", RGB(0x00, 0x80, 0x00) },
- { "Green1", RGB(0x0, 0xff, 0x0) },
- { "Green2", RGB(0x0, 0xee, 0x0) },
- { "Green3", RGB(0x0, 0xcd, 0x0) },
- { "Green4", RGB(0x0, 0x8b, 0x0) },
- { "GreenYellow", RGB(0xad, 0xff, 0x2f) },
- { "Grey", RGB(0x80, 0x80, 0x80) },
- { "Grey0", RGB(0x0, 0x0, 0x0) },
- { "Grey1", RGB(0x3, 0x3, 0x3) },
- { "Grey10", RGB(0x1a, 0x1a, 0x1a) },
- { "Grey100", RGB(0xff, 0xff, 0xff) },
- { "Grey11", RGB(0x1c, 0x1c, 0x1c) },
- { "Grey12", RGB(0x1f, 0x1f, 0x1f) },
- { "Grey13", RGB(0x21, 0x21, 0x21) },
- { "Grey14", RGB(0x24, 0x24, 0x24) },
- { "Grey15", RGB(0x26, 0x26, 0x26) },
- { "Grey16", RGB(0x29, 0x29, 0x29) },
- { "Grey17", RGB(0x2b, 0x2b, 0x2b) },
- { "Grey18", RGB(0x2e, 0x2e, 0x2e) },
- { "Grey19", RGB(0x30, 0x30, 0x30) },
- { "Grey2", RGB(0x5, 0x5, 0x5) },
- { "Grey20", RGB(0x33, 0x33, 0x33) },
- { "Grey21", RGB(0x36, 0x36, 0x36) },
- { "Grey22", RGB(0x38, 0x38, 0x38) },
- { "Grey23", RGB(0x3b, 0x3b, 0x3b) },
- { "Grey24", RGB(0x3d, 0x3d, 0x3d) },
- { "Grey25", RGB(0x40, 0x40, 0x40) },
- { "Grey26", RGB(0x42, 0x42, 0x42) },
- { "Grey27", RGB(0x45, 0x45, 0x45) },
- { "Grey28", RGB(0x47, 0x47, 0x47) },
- { "Grey29", RGB(0x4a, 0x4a, 0x4a) },
- { "Grey3", RGB(0x8, 0x8, 0x8) },
- { "Grey30", RGB(0x4d, 0x4d, 0x4d) },
- { "Grey31", RGB(0x4f, 0x4f, 0x4f) },
- { "Grey32", RGB(0x52, 0x52, 0x52) },
- { "Grey33", RGB(0x54, 0x54, 0x54) },
- { "Grey34", RGB(0x57, 0x57, 0x57) },
- { "Grey35", RGB(0x59, 0x59, 0x59) },
- { "Grey36", RGB(0x5c, 0x5c, 0x5c) },
- { "Grey37", RGB(0x5e, 0x5e, 0x5e) },
- { "Grey38", RGB(0x61, 0x61, 0x61) },
- { "Grey39", RGB(0x63, 0x63, 0x63) },
- { "Grey4", RGB(0xa, 0xa, 0xa) },
- { "Grey40", RGB(0x66, 0x66, 0x66) },
- { "Grey41", RGB(0x69, 0x69, 0x69) },
- { "Grey42", RGB(0x6b, 0x6b, 0x6b) },
- { "Grey43", RGB(0x6e, 0x6e, 0x6e) },
- { "Grey44", RGB(0x70, 0x70, 0x70) },
- { "Grey45", RGB(0x73, 0x73, 0x73) },
- { "Grey46", RGB(0x75, 0x75, 0x75) },
- { "Grey47", RGB(0x78, 0x78, 0x78) },
- { "Grey48", RGB(0x7a, 0x7a, 0x7a) },
- { "Grey49", RGB(0x7d, 0x7d, 0x7d) },
- { "Grey5", RGB(0xd, 0xd, 0xd) },
- { "Grey50", RGB(0x7f, 0x7f, 0x7f) },
- { "Grey51", RGB(0x82, 0x82, 0x82) },
- { "Grey52", RGB(0x85, 0x85, 0x85) },
- { "Grey53", RGB(0x87, 0x87, 0x87) },
- { "Grey54", RGB(0x8a, 0x8a, 0x8a) },
- { "Grey55", RGB(0x8c, 0x8c, 0x8c) },
- { "Grey56", RGB(0x8f, 0x8f, 0x8f) },
- { "Grey57", RGB(0x91, 0x91, 0x91) },
- { "Grey58", RGB(0x94, 0x94, 0x94) },
- { "Grey59", RGB(0x96, 0x96, 0x96) },
- { "Grey6", RGB(0xf, 0xf, 0xf) },
- { "Grey60", RGB(0x99, 0x99, 0x99) },
- { "Grey61", RGB(0x9c, 0x9c, 0x9c) },
- { "Grey62", RGB(0x9e, 0x9e, 0x9e) },
- { "Grey63", RGB(0xa1, 0xa1, 0xa1) },
- { "Grey64", RGB(0xa3, 0xa3, 0xa3) },
- { "Grey65", RGB(0xa6, 0xa6, 0xa6) },
- { "Grey66", RGB(0xa8, 0xa8, 0xa8) },
- { "Grey67", RGB(0xab, 0xab, 0xab) },
- { "Grey68", RGB(0xad, 0xad, 0xad) },
- { "Grey69", RGB(0xb0, 0xb0, 0xb0) },
- { "Grey7", RGB(0x12, 0x12, 0x12) },
- { "Grey70", RGB(0xb3, 0xb3, 0xb3) },
- { "Grey71", RGB(0xb5, 0xb5, 0xb5) },
- { "Grey72", RGB(0xb8, 0xb8, 0xb8) },
- { "Grey73", RGB(0xba, 0xba, 0xba) },
- { "Grey74", RGB(0xbd, 0xbd, 0xbd) },
- { "Grey75", RGB(0xbf, 0xbf, 0xbf) },
- { "Grey76", RGB(0xc2, 0xc2, 0xc2) },
- { "Grey77", RGB(0xc4, 0xc4, 0xc4) },
- { "Grey78", RGB(0xc7, 0xc7, 0xc7) },
- { "Grey79", RGB(0xc9, 0xc9, 0xc9) },
- { "Grey8", RGB(0x14, 0x14, 0x14) },
- { "Grey80", RGB(0xcc, 0xcc, 0xcc) },
- { "Grey81", RGB(0xcf, 0xcf, 0xcf) },
- { "Grey82", RGB(0xd1, 0xd1, 0xd1) },
- { "Grey83", RGB(0xd4, 0xd4, 0xd4) },
- { "Grey84", RGB(0xd6, 0xd6, 0xd6) },
- { "Grey85", RGB(0xd9, 0xd9, 0xd9) },
- { "Grey86", RGB(0xdb, 0xdb, 0xdb) },
- { "Grey87", RGB(0xde, 0xde, 0xde) },
- { "Grey88", RGB(0xe0, 0xe0, 0xe0) },
- { "Grey89", RGB(0xe3, 0xe3, 0xe3) },
- { "Grey9", RGB(0x17, 0x17, 0x17) },
- { "Grey90", RGB(0xe5, 0xe5, 0xe5) },
- { "Grey91", RGB(0xe8, 0xe8, 0xe8) },
- { "Grey92", RGB(0xeb, 0xeb, 0xeb) },
- { "Grey93", RGB(0xed, 0xed, 0xed) },
- { "Grey94", RGB(0xf0, 0xf0, 0xf0) },
- { "Grey95", RGB(0xf2, 0xf2, 0xf2) },
- { "Grey96", RGB(0xf5, 0xf5, 0xf5) },
- { "Grey97", RGB(0xf7, 0xf7, 0xf7) },
- { "Grey98", RGB(0xfa, 0xfa, 0xfa) },
- { "Grey99", RGB(0xfc, 0xfc, 0xfc) },
- { "Honeydew", RGB(0xf0, 0xff, 0xf0) },
- { "Honeydew1", RGB(0xf0, 0xff, 0xf0) },
- { "Honeydew2", RGB(0xe0, 0xee, 0xe0) },
- { "Honeydew3", RGB(0xc1, 0xcd, 0xc1) },
- { "Honeydew4", RGB(0x83, 0x8b, 0x83) },
- { "HotPink", RGB(0xff, 0x69, 0xb4) },
- { "HotPink1", RGB(0xff, 0x6e, 0xb4) },
- { "HotPink2", RGB(0xee, 0x6a, 0xa7) },
- { "HotPink3", RGB(0xcd, 0x60, 0x90) },
- { "HotPink4", RGB(0x8b, 0x3a, 0x62) },
- { "IndianRed", RGB(0xcd, 0x5c, 0x5c) },
- { "IndianRed1", RGB(0xff, 0x6a, 0x6a) },
- { "IndianRed2", RGB(0xee, 0x63, 0x63) },
- { "IndianRed3", RGB(0xcd, 0x55, 0x55) },
- { "IndianRed4", RGB(0x8b, 0x3a, 0x3a) },
- { "Indigo", RGB(0x4b, 0x00, 0x82) },
- { "Ivory", RGB(0xff, 0xff, 0xf0) },
- { "Ivory1", RGB(0xff, 0xff, 0xf0) },
- { "Ivory2", RGB(0xee, 0xee, 0xe0) },
- { "Ivory3", RGB(0xcd, 0xcd, 0xc1) },
- { "Ivory4", RGB(0x8b, 0x8b, 0x83) },
- { "Khaki", RGB(0xf0, 0xe6, 0x8c) },
- { "Khaki1", RGB(0xff, 0xf6, 0x8f) },
- { "Khaki2", RGB(0xee, 0xe6, 0x85) },
- { "Khaki3", RGB(0xcd, 0xc6, 0x73) },
- { "Khaki4", RGB(0x8b, 0x86, 0x4e) },
- { "Lavender", RGB(0xe6, 0xe6, 0xfa) },
- { "LavenderBlush", RGB(0xff, 0xf0, 0xf5) },
- { "LavenderBlush1", RGB(0xff, 0xf0, 0xf5) },
- { "LavenderBlush2", RGB(0xee, 0xe0, 0xe5) },
- { "LavenderBlush3", RGB(0xcd, 0xc1, 0xc5) },
- { "LavenderBlush4", RGB(0x8b, 0x83, 0x86) },
- { "LawnGreen", RGB(0x7c, 0xfc, 0x00) },
- { "LemonChiffon", RGB(0xff, 0xfa, 0xcd) },
- { "LemonChiffon1", RGB(0xff, 0xfa, 0xcd) },
- { "LemonChiffon2", RGB(0xee, 0xe9, 0xbf) },
- { "LemonChiffon3", RGB(0xcd, 0xc9, 0xa5) },
- { "LemonChiffon4", RGB(0x8b, 0x89, 0x70) },
- { "LightBlue", RGB(0xad, 0xd8, 0xe6) },
- { "LightBlue1", RGB(0xbf, 0xef, 0xff) },
- { "LightBlue2", RGB(0xb2, 0xdf, 0xee) },
- { "LightBlue3", RGB(0x9a, 0xc0, 0xcd) },
- { "LightBlue4", RGB(0x68, 0x83, 0x8b) },
- { "LightCoral", RGB(0xf0, 0x80, 0x80) },
- { "LightCyan", RGB(0xe0, 0xff, 0xff) },
- { "LightCyan1", RGB(0xe0, 0xff, 0xff) },
- { "LightCyan2", RGB(0xd1, 0xee, 0xee) },
- { "LightCyan3", RGB(0xb4, 0xcd, 0xcd) },
- { "LightCyan4", RGB(0x7a, 0x8b, 0x8b) },
- { "LightGoldenrod", RGB(0xee, 0xdd, 0x82) },
- { "LightGoldenrod1", RGB(0xff, 0xec, 0x8b) },
- { "LightGoldenrod2", RGB(0xee, 0xdc, 0x82) },
- { "LightGoldenrod3", RGB(0xcd, 0xbe, 0x70) },
- { "LightGoldenrod4", RGB(0x8b, 0x81, 0x4c) },
- { "LightGoldenRodYellow", RGB(0xfa, 0xfa, 0xd2) },
- { "LightGray", RGB(0xd3, 0xd3, 0xd3) },
- { "LightGreen", RGB(0x90, 0xee, 0x90) },
- { "LightGrey", RGB(0xd3, 0xd3, 0xd3) },
- { "LightMagenta", RGB(0xff, 0xbb, 0xff) },
- { "LightPink", RGB(0xff, 0xb6, 0xc1) },
- { "LightPink1", RGB(0xff, 0xae, 0xb9) },
- { "LightPink2", RGB(0xee, 0xa2, 0xad) },
- { "LightPink3", RGB(0xcd, 0x8c, 0x95) },
- { "LightPink4", RGB(0x8b, 0x5f, 0x65) },
- { "LightRed", RGB(0xff, 0xbb, 0xbb) },
- { "LightSalmon", RGB(0xff, 0xa0, 0x7a) },
- { "LightSalmon1", RGB(0xff, 0xa0, 0x7a) },
- { "LightSalmon2", RGB(0xee, 0x95, 0x72) },
- { "LightSalmon3", RGB(0xcd, 0x81, 0x62) },
- { "LightSalmon4", RGB(0x8b, 0x57, 0x42) },
- { "LightSeaGreen", RGB(0x20, 0xb2, 0xaa) },
- { "LightSkyBlue", RGB(0x87, 0xce, 0xfa) },
- { "LightSkyBlue1", RGB(0xb0, 0xe2, 0xff) },
- { "LightSkyBlue2", RGB(0xa4, 0xd3, 0xee) },
- { "LightSkyBlue3", RGB(0x8d, 0xb6, 0xcd) },
- { "LightSkyBlue4", RGB(0x60, 0x7b, 0x8b) },
- { "LightSlateBlue", RGB(0x84, 0x70, 0xff) },
- { "LightSlateGray", RGB(0x77, 0x88, 0x99) },
- { "LightSlateGrey", RGB(0x77, 0x88, 0x99) },
- { "LightSteelBlue", RGB(0xb0, 0xc4, 0xde) },
- { "LightSteelBlue1", RGB(0xca, 0xe1, 0xff) },
- { "LightSteelBlue2", RGB(0xbc, 0xd2, 0xee) },
- { "LightSteelBlue3", RGB(0xa2, 0xb5, 0xcd) },
- { "LightSteelBlue4", RGB(0x6e, 0x7b, 0x8b) },
- { "LightYellow", RGB(0xff, 0xff, 0xe0) },
- { "LightYellow1", RGB(0xff, 0xff, 0xe0) },
- { "LightYellow2", RGB(0xee, 0xee, 0xd1) },
- { "LightYellow3", RGB(0xcd, 0xcd, 0xb4) },
- { "LightYellow4", RGB(0x8b, 0x8b, 0x7a) },
- { "Lime", RGB(0x00, 0xff, 0x00) },
- { "LimeGreen", RGB(0x32, 0xcd, 0x32) },
- { "Linen", RGB(0xfa, 0xf0, 0xe6) },
- { "Magenta", RGB(0xff, 0x00, 0xff) },
- { "Magenta1", RGB(0xff, 0x0, 0xff) },
- { "Magenta2", RGB(0xee, 0x0, 0xee) },
- { "Magenta3", RGB(0xcd, 0x0, 0xcd) },
- { "Magenta4", RGB(0x8b, 0x0, 0x8b) },
- { "Maroon", RGB(0x80, 0x00, 0x00) },
- { "Maroon1", RGB(0xff, 0x34, 0xb3) },
- { "Maroon2", RGB(0xee, 0x30, 0xa7) },
- { "Maroon3", RGB(0xcd, 0x29, 0x90) },
- { "Maroon4", RGB(0x8b, 0x1c, 0x62) },
- { "MediumAquamarine", RGB(0x66, 0xcd, 0xaa) },
- { "MediumBlue", RGB(0x00, 0x00, 0xcd) },
- { "MediumOrchid", RGB(0xba, 0x55, 0xd3) },
- { "MediumOrchid1", RGB(0xe0, 0x66, 0xff) },
- { "MediumOrchid2", RGB(0xd1, 0x5f, 0xee) },
- { "MediumOrchid3", RGB(0xb4, 0x52, 0xcd) },
- { "MediumOrchid4", RGB(0x7a, 0x37, 0x8b) },
- { "MediumPurple", RGB(0x93, 0x70, 0xdb) },
- { "MediumPurple1", RGB(0xab, 0x82, 0xff) },
- { "MediumPurple2", RGB(0x9f, 0x79, 0xee) },
- { "MediumPurple3", RGB(0x89, 0x68, 0xcd) },
- { "MediumPurple4", RGB(0x5d, 0x47, 0x8b) },
- { "MediumSeaGreen", RGB(0x3c, 0xb3, 0x71) },
- { "MediumSlateBlue", RGB(0x7b, 0x68, 0xee) },
- { "MediumSpringGreen", RGB(0x00, 0xfa, 0x9a) },
- { "MediumTurquoise", RGB(0x48, 0xd1, 0xcc) },
- { "MediumVioletRed", RGB(0xc7, 0x15, 0x85) },
- { "MidnightBlue", RGB(0x19, 0x19, 0x70) },
- { "MintCream", RGB(0xf5, 0xff, 0xfa) },
- { "MistyRose", RGB(0xff, 0xe4, 0xe1) },
- { "MistyRose1", RGB(0xff, 0xe4, 0xe1) },
- { "MistyRose2", RGB(0xee, 0xd5, 0xd2) },
- { "MistyRose3", RGB(0xcd, 0xb7, 0xb5) },
- { "MistyRose4", RGB(0x8b, 0x7d, 0x7b) },
- { "Moccasin", RGB(0xff, 0xe4, 0xb5) },
- { "NavajoWhite", RGB(0xff, 0xde, 0xad) },
- { "NavajoWhite1", RGB(0xff, 0xde, 0xad) },
- { "NavajoWhite2", RGB(0xee, 0xcf, 0xa1) },
- { "NavajoWhite3", RGB(0xcd, 0xb3, 0x8b) },
- { "NavajoWhite4", RGB(0x8b, 0x79, 0x5e) },
- { "Navy", RGB(0x00, 0x00, 0x80) },
- { "NavyBlue", RGB(0x0, 0x0, 0x80) },
- { "OldLace", RGB(0xfd, 0xf5, 0xe6) },
- { "Olive", RGB(0x80, 0x80, 0x00) },
- { "OliveDrab", RGB(0x6b, 0x8e, 0x23) },
- { "OliveDrab1", RGB(0xc0, 0xff, 0x3e) },
- { "OliveDrab2", RGB(0xb3, 0xee, 0x3a) },
- { "OliveDrab3", RGB(0x9a, 0xcd, 0x32) },
- { "OliveDrab4", RGB(0x69, 0x8b, 0x22) },
- { "Orange", RGB(0xff, 0xa5, 0x00) },
- { "Orange1", RGB(0xff, 0xa5, 0x0) },
- { "Orange2", RGB(0xee, 0x9a, 0x0) },
- { "Orange3", RGB(0xcd, 0x85, 0x0) },
- { "Orange4", RGB(0x8b, 0x5a, 0x0) },
- { "OrangeRed", RGB(0xff, 0x45, 0x00) },
- { "OrangeRed1", RGB(0xff, 0x45, 0x0) },
- { "OrangeRed2", RGB(0xee, 0x40, 0x0) },
- { "OrangeRed3", RGB(0xcd, 0x37, 0x0) },
- { "OrangeRed4", RGB(0x8b, 0x25, 0x0) },
- { "Orchid", RGB(0xda, 0x70, 0xd6) },
- { "Orchid1", RGB(0xff, 0x83, 0xfa) },
- { "Orchid2", RGB(0xee, 0x7a, 0xe9) },
- { "Orchid3", RGB(0xcd, 0x69, 0xc9) },
- { "Orchid4", RGB(0x8b, 0x47, 0x89) },
- { "PaleGoldenRod", RGB(0xee, 0xe8, 0xaa) },
- { "PaleGreen", RGB(0x98, 0xfb, 0x98) },
- { "PaleGreen1", RGB(0x9a, 0xff, 0x9a) },
- { "PaleGreen2", RGB(0x90, 0xee, 0x90) },
- { "PaleGreen3", RGB(0x7c, 0xcd, 0x7c) },
- { "PaleGreen4", RGB(0x54, 0x8b, 0x54) },
- { "PaleTurquoise", RGB(0xaf, 0xee, 0xee) },
- { "PaleTurquoise1", RGB(0xbb, 0xff, 0xff) },
- { "PaleTurquoise2", RGB(0xae, 0xee, 0xee) },
- { "PaleTurquoise3", RGB(0x96, 0xcd, 0xcd) },
- { "PaleTurquoise4", RGB(0x66, 0x8b, 0x8b) },
- { "PaleVioletRed", RGB(0xdb, 0x70, 0x93) },
- { "PaleVioletRed1", RGB(0xff, 0x82, 0xab) },
- { "PaleVioletRed2", RGB(0xee, 0x79, 0x9f) },
- { "PaleVioletRed3", RGB(0xcd, 0x68, 0x89) },
- { "PaleVioletRed4", RGB(0x8b, 0x47, 0x5d) },
- { "PapayaWhip", RGB(0xff, 0xef, 0xd5) },
- { "PeachPuff", RGB(0xff, 0xda, 0xb9) },
- { "PeachPuff1", RGB(0xff, 0xda, 0xb9) },
- { "PeachPuff2", RGB(0xee, 0xcb, 0xad) },
- { "PeachPuff3", RGB(0xcd, 0xaf, 0x95) },
- { "PeachPuff4", RGB(0x8b, 0x77, 0x65) },
- { "Peru", RGB(0xcd, 0x85, 0x3f) },
- { "Pink", RGB(0xff, 0xc0, 0xcb) },
- { "Pink1", RGB(0xff, 0xb5, 0xc5) },
- { "Pink2", RGB(0xee, 0xa9, 0xb8) },
- { "Pink3", RGB(0xcd, 0x91, 0x9e) },
- { "Pink4", RGB(0x8b, 0x63, 0x6c) },
- { "Plum", RGB(0xdd, 0xa0, 0xdd) },
- { "Plum1", RGB(0xff, 0xbb, 0xff) },
- { "Plum2", RGB(0xee, 0xae, 0xee) },
- { "Plum3", RGB(0xcd, 0x96, 0xcd) },
- { "Plum4", RGB(0x8b, 0x66, 0x8b) },
- { "PowderBlue", RGB(0xb0, 0xe0, 0xe6) },
- { "Purple", RGB(0x80, 0x00, 0x80) },
- { "Purple1", RGB(0x9b, 0x30, 0xff) },
- { "Purple2", RGB(0x91, 0x2c, 0xee) },
- { "Purple3", RGB(0x7d, 0x26, 0xcd) },
- { "Purple4", RGB(0x55, 0x1a, 0x8b) },
- { "RebeccaPurple", RGB(0x66, 0x33, 0x99) },
- { "Red", RGB(0xff, 0x00, 0x00) },
- { "Red1", RGB(0xff, 0x0, 0x0) },
- { "Red2", RGB(0xee, 0x0, 0x0) },
- { "Red3", RGB(0xcd, 0x0, 0x0) },
- { "Red4", RGB(0x8b, 0x0, 0x0) },
- { "RosyBrown", RGB(0xbc, 0x8f, 0x8f) },
- { "RosyBrown1", RGB(0xff, 0xc1, 0xc1) },
- { "RosyBrown2", RGB(0xee, 0xb4, 0xb4) },
- { "RosyBrown3", RGB(0xcd, 0x9b, 0x9b) },
- { "RosyBrown4", RGB(0x8b, 0x69, 0x69) },
- { "RoyalBlue", RGB(0x41, 0x69, 0xe1) },
- { "RoyalBlue1", RGB(0x48, 0x76, 0xff) },
- { "RoyalBlue2", RGB(0x43, 0x6e, 0xee) },
- { "RoyalBlue3", RGB(0x3a, 0x5f, 0xcd) },
- { "RoyalBlue4", RGB(0x27, 0x40, 0x8b) },
- { "SaddleBrown", RGB(0x8b, 0x45, 0x13) },
- { "Salmon", RGB(0xfa, 0x80, 0x72) },
- { "Salmon1", RGB(0xff, 0x8c, 0x69) },
- { "Salmon2", RGB(0xee, 0x82, 0x62) },
- { "Salmon3", RGB(0xcd, 0x70, 0x54) },
- { "Salmon4", RGB(0x8b, 0x4c, 0x39) },
- { "SandyBrown", RGB(0xf4, 0xa4, 0x60) },
- { "SeaGreen", RGB(0x2e, 0x8b, 0x57) },
- { "SeaGreen1", RGB(0x54, 0xff, 0x9f) },
- { "SeaGreen2", RGB(0x4e, 0xee, 0x94) },
- { "SeaGreen3", RGB(0x43, 0xcd, 0x80) },
- { "SeaGreen4", RGB(0x2e, 0x8b, 0x57) },
- { "SeaShell", RGB(0xff, 0xf5, 0xee) },
- { "Seashell1", RGB(0xff, 0xf5, 0xee) },
- { "Seashell2", RGB(0xee, 0xe5, 0xde) },
- { "Seashell3", RGB(0xcd, 0xc5, 0xbf) },
- { "Seashell4", RGB(0x8b, 0x86, 0x82) },
- { "Sienna", RGB(0xa0, 0x52, 0x2d) },
- { "Sienna1", RGB(0xff, 0x82, 0x47) },
- { "Sienna2", RGB(0xee, 0x79, 0x42) },
- { "Sienna3", RGB(0xcd, 0x68, 0x39) },
- { "Sienna4", RGB(0x8b, 0x47, 0x26) },
- { "Silver", RGB(0xc0, 0xc0, 0xc0) },
- { "SkyBlue", RGB(0x87, 0xce, 0xeb) },
- { "SkyBlue1", RGB(0x87, 0xce, 0xff) },
- { "SkyBlue2", RGB(0x7e, 0xc0, 0xee) },
- { "SkyBlue3", RGB(0x6c, 0xa6, 0xcd) },
- { "SkyBlue4", RGB(0x4a, 0x70, 0x8b) },
- { "SlateBlue", RGB(0x6a, 0x5a, 0xcd) },
- { "SlateBlue1", RGB(0x83, 0x6f, 0xff) },
- { "SlateBlue2", RGB(0x7a, 0x67, 0xee) },
- { "SlateBlue3", RGB(0x69, 0x59, 0xcd) },
- { "SlateBlue4", RGB(0x47, 0x3c, 0x8b) },
- { "SlateGray", RGB(0x70, 0x80, 0x90) },
- { "SlateGray1", RGB(0xc6, 0xe2, 0xff) },
- { "SlateGray2", RGB(0xb9, 0xd3, 0xee) },
- { "SlateGray3", RGB(0x9f, 0xb6, 0xcd) },
- { "SlateGray4", RGB(0x6c, 0x7b, 0x8b) },
- { "SlateGrey", RGB(0x70, 0x80, 0x90) },
- { "Snow", RGB(0xff, 0xfa, 0xfa) },
- { "Snow1", RGB(0xff, 0xfa, 0xfa) },
- { "Snow2", RGB(0xee, 0xe9, 0xe9) },
- { "Snow3", RGB(0xcd, 0xc9, 0xc9) },
- { "Snow4", RGB(0x8b, 0x89, 0x89) },
- { "SpringGreen", RGB(0x00, 0xff, 0x7f) },
- { "SpringGreen1", RGB(0x0, 0xff, 0x7f) },
- { "SpringGreen2", RGB(0x0, 0xee, 0x76) },
- { "SpringGreen3", RGB(0x0, 0xcd, 0x66) },
- { "SpringGreen4", RGB(0x0, 0x8b, 0x45) },
- { "SteelBlue", RGB(0x46, 0x82, 0xb4) },
- { "SteelBlue1", RGB(0x63, 0xb8, 0xff) },
- { "SteelBlue2", RGB(0x5c, 0xac, 0xee) },
- { "SteelBlue3", RGB(0x4f, 0x94, 0xcd) },
- { "SteelBlue4", RGB(0x36, 0x64, 0x8b) },
- { "Tan", RGB(0xd2, 0xb4, 0x8c) },
- { "Tan1", RGB(0xff, 0xa5, 0x4f) },
- { "Tan2", RGB(0xee, 0x9a, 0x49) },
- { "Tan3", RGB(0xcd, 0x85, 0x3f) },
- { "Tan4", RGB(0x8b, 0x5a, 0x2b) },
- { "Teal", RGB(0x00, 0x80, 0x80) },
- { "Thistle", RGB(0xd8, 0xbf, 0xd8) },
- { "Thistle1", RGB(0xff, 0xe1, 0xff) },
- { "Thistle2", RGB(0xee, 0xd2, 0xee) },
- { "Thistle3", RGB(0xcd, 0xb5, 0xcd) },
- { "Thistle4", RGB(0x8b, 0x7b, 0x8b) },
- { "Tomato", RGB(0xff, 0x63, 0x47) },
- { "Tomato1", RGB(0xff, 0x63, 0x47) },
- { "Tomato2", RGB(0xee, 0x5c, 0x42) },
- { "Tomato3", RGB(0xcd, 0x4f, 0x39) },
- { "Tomato4", RGB(0x8b, 0x36, 0x26) },
- { "Turquoise", RGB(0x40, 0xe0, 0xd0) },
- { "Turquoise1", RGB(0x0, 0xf5, 0xff) },
- { "Turquoise2", RGB(0x0, 0xe5, 0xee) },
- { "Turquoise3", RGB(0x0, 0xc5, 0xcd) },
- { "Turquoise4", RGB(0x0, 0x86, 0x8b) },
- { "Violet", RGB(0xee, 0x82, 0xee) },
- { "VioletRed", RGB(0xd0, 0x20, 0x90) },
- { "VioletRed1", RGB(0xff, 0x3e, 0x96) },
- { "VioletRed2", RGB(0xee, 0x3a, 0x8c) },
- { "VioletRed3", RGB(0xcd, 0x32, 0x78) },
- { "VioletRed4", RGB(0x8b, 0x22, 0x52) },
- { "WebGray", RGB(0x80, 0x80, 0x80) },
- { "WebGreen", RGB(0x0, 0x80, 0x0) },
- { "WebGrey", RGB(0x80, 0x80, 0x80) },
- { "WebMaroon", RGB(0x80, 0x0, 0x0) },
- { "WebPurple", RGB(0x80, 0x0, 0x80) },
- { "Wheat", RGB(0xf5, 0xde, 0xb3) },
- { "Wheat1", RGB(0xff, 0xe7, 0xba) },
- { "Wheat2", RGB(0xee, 0xd8, 0xae) },
- { "Wheat3", RGB(0xcd, 0xba, 0x96) },
- { "Wheat4", RGB(0x8b, 0x7e, 0x66) },
- { "White", RGB(0xff, 0xff, 0xff) },
- { "WhiteSmoke", RGB(0xf5, 0xf5, 0xf5) },
- { "X11Gray", RGB(0xbe, 0xbe, 0xbe) },
- { "X11Green", RGB(0x0, 0xff, 0x0) },
- { "X11Grey", RGB(0xbe, 0xbe, 0xbe) },
- { "X11Maroon", RGB(0xb0, 0x30, 0x60) },
- { "X11Purple", RGB(0xa0, 0x20, 0xf0) },
- { "Yellow", RGB(0xff, 0xff, 0x00) },
- { "Yellow1", RGB(0xff, 0xff, 0x0) },
- { "Yellow2", RGB(0xee, 0xee, 0x0) },
- { "Yellow3", RGB(0xcd, 0xcd, 0x0) },
- { "Yellow4", RGB(0x8b, 0x8b, 0x0) },
- { "YellowGreen", RGB(0x9a, 0xcd, 0x32) },
+ { "AliceBlue", RGB_(0xf0, 0xf8, 0xff) },
+ { "AntiqueWhite", RGB_(0xfa, 0xeb, 0xd7) },
+ { "AntiqueWhite1", RGB_(0xff, 0xef, 0xdb) },
+ { "AntiqueWhite2", RGB_(0xee, 0xdf, 0xcc) },
+ { "AntiqueWhite3", RGB_(0xcd, 0xc0, 0xb0) },
+ { "AntiqueWhite4", RGB_(0x8b, 0x83, 0x78) },
+ { "Aqua", RGB_(0x00, 0xff, 0xff) },
+ { "Aquamarine", RGB_(0x7f, 0xff, 0xd4) },
+ { "Aquamarine1", RGB_(0x7f, 0xff, 0xd4) },
+ { "Aquamarine2", RGB_(0x76, 0xee, 0xc6) },
+ { "Aquamarine3", RGB_(0x66, 0xcd, 0xaa) },
+ { "Aquamarine4", RGB_(0x45, 0x8b, 0x74) },
+ { "Azure", RGB_(0xf0, 0xff, 0xff) },
+ { "Azure1", RGB_(0xf0, 0xff, 0xff) },
+ { "Azure2", RGB_(0xe0, 0xee, 0xee) },
+ { "Azure3", RGB_(0xc1, 0xcd, 0xcd) },
+ { "Azure4", RGB_(0x83, 0x8b, 0x8b) },
+ { "Beige", RGB_(0xf5, 0xf5, 0xdc) },
+ { "Bisque", RGB_(0xff, 0xe4, 0xc4) },
+ { "Bisque1", RGB_(0xff, 0xe4, 0xc4) },
+ { "Bisque2", RGB_(0xee, 0xd5, 0xb7) },
+ { "Bisque3", RGB_(0xcd, 0xb7, 0x9e) },
+ { "Bisque4", RGB_(0x8b, 0x7d, 0x6b) },
+ { "Black", RGB_(0x00, 0x00, 0x00) },
+ { "BlanchedAlmond", RGB_(0xff, 0xeb, 0xcd) },
+ { "Blue", RGB_(0x00, 0x00, 0xff) },
+ { "Blue1", RGB_(0x0, 0x0, 0xff) },
+ { "Blue2", RGB_(0x0, 0x0, 0xee) },
+ { "Blue3", RGB_(0x0, 0x0, 0xcd) },
+ { "Blue4", RGB_(0x0, 0x0, 0x8b) },
+ { "BlueViolet", RGB_(0x8a, 0x2b, 0xe2) },
+ { "Brown", RGB_(0xa5, 0x2a, 0x2a) },
+ { "Brown1", RGB_(0xff, 0x40, 0x40) },
+ { "Brown2", RGB_(0xee, 0x3b, 0x3b) },
+ { "Brown3", RGB_(0xcd, 0x33, 0x33) },
+ { "Brown4", RGB_(0x8b, 0x23, 0x23) },
+ { "BurlyWood", RGB_(0xde, 0xb8, 0x87) },
+ { "Burlywood1", RGB_(0xff, 0xd3, 0x9b) },
+ { "Burlywood2", RGB_(0xee, 0xc5, 0x91) },
+ { "Burlywood3", RGB_(0xcd, 0xaa, 0x7d) },
+ { "Burlywood4", RGB_(0x8b, 0x73, 0x55) },
+ { "CadetBlue", RGB_(0x5f, 0x9e, 0xa0) },
+ { "CadetBlue1", RGB_(0x98, 0xf5, 0xff) },
+ { "CadetBlue2", RGB_(0x8e, 0xe5, 0xee) },
+ { "CadetBlue3", RGB_(0x7a, 0xc5, 0xcd) },
+ { "CadetBlue4", RGB_(0x53, 0x86, 0x8b) },
+ { "ChartReuse", RGB_(0x7f, 0xff, 0x00) },
+ { "Chartreuse1", RGB_(0x7f, 0xff, 0x0) },
+ { "Chartreuse2", RGB_(0x76, 0xee, 0x0) },
+ { "Chartreuse3", RGB_(0x66, 0xcd, 0x0) },
+ { "Chartreuse4", RGB_(0x45, 0x8b, 0x0) },
+ { "Chocolate", RGB_(0xd2, 0x69, 0x1e) },
+ { "Chocolate1", RGB_(0xff, 0x7f, 0x24) },
+ { "Chocolate2", RGB_(0xee, 0x76, 0x21) },
+ { "Chocolate3", RGB_(0xcd, 0x66, 0x1d) },
+ { "Chocolate4", RGB_(0x8b, 0x45, 0x13) },
+ { "Coral", RGB_(0xff, 0x7f, 0x50) },
+ { "Coral1", RGB_(0xff, 0x72, 0x56) },
+ { "Coral2", RGB_(0xee, 0x6a, 0x50) },
+ { "Coral3", RGB_(0xcd, 0x5b, 0x45) },
+ { "Coral4", RGB_(0x8b, 0x3e, 0x2f) },
+ { "CornFlowerBlue", RGB_(0x64, 0x95, 0xed) },
+ { "Cornsilk", RGB_(0xff, 0xf8, 0xdc) },
+ { "Cornsilk1", RGB_(0xff, 0xf8, 0xdc) },
+ { "Cornsilk2", RGB_(0xee, 0xe8, 0xcd) },
+ { "Cornsilk3", RGB_(0xcd, 0xc8, 0xb1) },
+ { "Cornsilk4", RGB_(0x8b, 0x88, 0x78) },
+ { "Crimson", RGB_(0xdc, 0x14, 0x3c) },
+ { "Cyan", RGB_(0x00, 0xff, 0xff) },
+ { "Cyan1", RGB_(0x0, 0xff, 0xff) },
+ { "Cyan2", RGB_(0x0, 0xee, 0xee) },
+ { "Cyan3", RGB_(0x0, 0xcd, 0xcd) },
+ { "Cyan4", RGB_(0x0, 0x8b, 0x8b) },
+ { "DarkBlue", RGB_(0x00, 0x00, 0x8b) },
+ { "DarkCyan", RGB_(0x00, 0x8b, 0x8b) },
+ { "DarkGoldenRod", RGB_(0xb8, 0x86, 0x0b) },
+ { "DarkGoldenrod1", RGB_(0xff, 0xb9, 0xf) },
+ { "DarkGoldenrod2", RGB_(0xee, 0xad, 0xe) },
+ { "DarkGoldenrod3", RGB_(0xcd, 0x95, 0xc) },
+ { "DarkGoldenrod4", RGB_(0x8b, 0x65, 0x8) },
+ { "DarkGray", RGB_(0xa9, 0xa9, 0xa9) },
+ { "DarkGreen", RGB_(0x00, 0x64, 0x00) },
+ { "DarkGrey", RGB_(0xa9, 0xa9, 0xa9) },
+ { "DarkKhaki", RGB_(0xbd, 0xb7, 0x6b) },
+ { "DarkMagenta", RGB_(0x8b, 0x00, 0x8b) },
+ { "DarkOliveGreen", RGB_(0x55, 0x6b, 0x2f) },
+ { "DarkOliveGreen1", RGB_(0xca, 0xff, 0x70) },
+ { "DarkOliveGreen2", RGB_(0xbc, 0xee, 0x68) },
+ { "DarkOliveGreen3", RGB_(0xa2, 0xcd, 0x5a) },
+ { "DarkOliveGreen4", RGB_(0x6e, 0x8b, 0x3d) },
+ { "DarkOrange", RGB_(0xff, 0x8c, 0x00) },
+ { "DarkOrange1", RGB_(0xff, 0x7f, 0x0) },
+ { "DarkOrange2", RGB_(0xee, 0x76, 0x0) },
+ { "DarkOrange3", RGB_(0xcd, 0x66, 0x0) },
+ { "DarkOrange4", RGB_(0x8b, 0x45, 0x0) },
+ { "DarkOrchid", RGB_(0x99, 0x32, 0xcc) },
+ { "DarkOrchid1", RGB_(0xbf, 0x3e, 0xff) },
+ { "DarkOrchid2", RGB_(0xb2, 0x3a, 0xee) },
+ { "DarkOrchid3", RGB_(0x9a, 0x32, 0xcd) },
+ { "DarkOrchid4", RGB_(0x68, 0x22, 0x8b) },
+ { "DarkRed", RGB_(0x8b, 0x00, 0x00) },
+ { "DarkSalmon", RGB_(0xe9, 0x96, 0x7a) },
+ { "DarkSeaGreen", RGB_(0x8f, 0xbc, 0x8f) },
+ { "DarkSeaGreen1", RGB_(0xc1, 0xff, 0xc1) },
+ { "DarkSeaGreen2", RGB_(0xb4, 0xee, 0xb4) },
+ { "DarkSeaGreen3", RGB_(0x9b, 0xcd, 0x9b) },
+ { "DarkSeaGreen4", RGB_(0x69, 0x8b, 0x69) },
+ { "DarkSlateBlue", RGB_(0x48, 0x3d, 0x8b) },
+ { "DarkSlateGray", RGB_(0x2f, 0x4f, 0x4f) },
+ { "DarkSlateGray1", RGB_(0x97, 0xff, 0xff) },
+ { "DarkSlateGray2", RGB_(0x8d, 0xee, 0xee) },
+ { "DarkSlateGray3", RGB_(0x79, 0xcd, 0xcd) },
+ { "DarkSlateGray4", RGB_(0x52, 0x8b, 0x8b) },
+ { "DarkSlateGrey", RGB_(0x2f, 0x4f, 0x4f) },
+ { "DarkTurquoise", RGB_(0x00, 0xce, 0xd1) },
+ { "DarkViolet", RGB_(0x94, 0x00, 0xd3) },
+ { "DarkYellow", RGB_(0xbb, 0xbb, 0x00) },
+ { "DeepPink", RGB_(0xff, 0x14, 0x93) },
+ { "DeepPink1", RGB_(0xff, 0x14, 0x93) },
+ { "DeepPink2", RGB_(0xee, 0x12, 0x89) },
+ { "DeepPink3", RGB_(0xcd, 0x10, 0x76) },
+ { "DeepPink4", RGB_(0x8b, 0xa, 0x50) },
+ { "DeepSkyBlue", RGB_(0x00, 0xbf, 0xff) },
+ { "DeepSkyBlue1", RGB_(0x0, 0xbf, 0xff) },
+ { "DeepSkyBlue2", RGB_(0x0, 0xb2, 0xee) },
+ { "DeepSkyBlue3", RGB_(0x0, 0x9a, 0xcd) },
+ { "DeepSkyBlue4", RGB_(0x0, 0x68, 0x8b) },
+ { "DimGray", RGB_(0x69, 0x69, 0x69) },
+ { "DimGrey", RGB_(0x69, 0x69, 0x69) },
+ { "DodgerBlue", RGB_(0x1e, 0x90, 0xff) },
+ { "DodgerBlue1", RGB_(0x1e, 0x90, 0xff) },
+ { "DodgerBlue2", RGB_(0x1c, 0x86, 0xee) },
+ { "DodgerBlue3", RGB_(0x18, 0x74, 0xcd) },
+ { "DodgerBlue4", RGB_(0x10, 0x4e, 0x8b) },
+ { "Firebrick", RGB_(0xb2, 0x22, 0x22) },
+ { "Firebrick1", RGB_(0xff, 0x30, 0x30) },
+ { "Firebrick2", RGB_(0xee, 0x2c, 0x2c) },
+ { "Firebrick3", RGB_(0xcd, 0x26, 0x26) },
+ { "Firebrick4", RGB_(0x8b, 0x1a, 0x1a) },
+ { "FloralWhite", RGB_(0xff, 0xfa, 0xf0) },
+ { "ForestGreen", RGB_(0x22, 0x8b, 0x22) },
+ { "Fuchsia", RGB_(0xff, 0x00, 0xff) },
+ { "Gainsboro", RGB_(0xdc, 0xdc, 0xdc) },
+ { "GhostWhite", RGB_(0xf8, 0xf8, 0xff) },
+ { "Gold", RGB_(0xff, 0xd7, 0x00) },
+ { "Gold1", RGB_(0xff, 0xd7, 0x0) },
+ { "Gold2", RGB_(0xee, 0xc9, 0x0) },
+ { "Gold3", RGB_(0xcd, 0xad, 0x0) },
+ { "Gold4", RGB_(0x8b, 0x75, 0x0) },
+ { "GoldenRod", RGB_(0xda, 0xa5, 0x20) },
+ { "Goldenrod1", RGB_(0xff, 0xc1, 0x25) },
+ { "Goldenrod2", RGB_(0xee, 0xb4, 0x22) },
+ { "Goldenrod3", RGB_(0xcd, 0x9b, 0x1d) },
+ { "Goldenrod4", RGB_(0x8b, 0x69, 0x14) },
+ { "Gray", RGB_(0x80, 0x80, 0x80) },
+ { "Gray0", RGB_(0x0, 0x0, 0x0) },
+ { "Gray1", RGB_(0x3, 0x3, 0x3) },
+ { "Gray10", RGB_(0x1a, 0x1a, 0x1a) },
+ { "Gray100", RGB_(0xff, 0xff, 0xff) },
+ { "Gray11", RGB_(0x1c, 0x1c, 0x1c) },
+ { "Gray12", RGB_(0x1f, 0x1f, 0x1f) },
+ { "Gray13", RGB_(0x21, 0x21, 0x21) },
+ { "Gray14", RGB_(0x24, 0x24, 0x24) },
+ { "Gray15", RGB_(0x26, 0x26, 0x26) },
+ { "Gray16", RGB_(0x29, 0x29, 0x29) },
+ { "Gray17", RGB_(0x2b, 0x2b, 0x2b) },
+ { "Gray18", RGB_(0x2e, 0x2e, 0x2e) },
+ { "Gray19", RGB_(0x30, 0x30, 0x30) },
+ { "Gray2", RGB_(0x5, 0x5, 0x5) },
+ { "Gray20", RGB_(0x33, 0x33, 0x33) },
+ { "Gray21", RGB_(0x36, 0x36, 0x36) },
+ { "Gray22", RGB_(0x38, 0x38, 0x38) },
+ { "Gray23", RGB_(0x3b, 0x3b, 0x3b) },
+ { "Gray24", RGB_(0x3d, 0x3d, 0x3d) },
+ { "Gray25", RGB_(0x40, 0x40, 0x40) },
+ { "Gray26", RGB_(0x42, 0x42, 0x42) },
+ { "Gray27", RGB_(0x45, 0x45, 0x45) },
+ { "Gray28", RGB_(0x47, 0x47, 0x47) },
+ { "Gray29", RGB_(0x4a, 0x4a, 0x4a) },
+ { "Gray3", RGB_(0x8, 0x8, 0x8) },
+ { "Gray30", RGB_(0x4d, 0x4d, 0x4d) },
+ { "Gray31", RGB_(0x4f, 0x4f, 0x4f) },
+ { "Gray32", RGB_(0x52, 0x52, 0x52) },
+ { "Gray33", RGB_(0x54, 0x54, 0x54) },
+ { "Gray34", RGB_(0x57, 0x57, 0x57) },
+ { "Gray35", RGB_(0x59, 0x59, 0x59) },
+ { "Gray36", RGB_(0x5c, 0x5c, 0x5c) },
+ { "Gray37", RGB_(0x5e, 0x5e, 0x5e) },
+ { "Gray38", RGB_(0x61, 0x61, 0x61) },
+ { "Gray39", RGB_(0x63, 0x63, 0x63) },
+ { "Gray4", RGB_(0xa, 0xa, 0xa) },
+ { "Gray40", RGB_(0x66, 0x66, 0x66) },
+ { "Gray41", RGB_(0x69, 0x69, 0x69) },
+ { "Gray42", RGB_(0x6b, 0x6b, 0x6b) },
+ { "Gray43", RGB_(0x6e, 0x6e, 0x6e) },
+ { "Gray44", RGB_(0x70, 0x70, 0x70) },
+ { "Gray45", RGB_(0x73, 0x73, 0x73) },
+ { "Gray46", RGB_(0x75, 0x75, 0x75) },
+ { "Gray47", RGB_(0x78, 0x78, 0x78) },
+ { "Gray48", RGB_(0x7a, 0x7a, 0x7a) },
+ { "Gray49", RGB_(0x7d, 0x7d, 0x7d) },
+ { "Gray5", RGB_(0xd, 0xd, 0xd) },
+ { "Gray50", RGB_(0x7f, 0x7f, 0x7f) },
+ { "Gray51", RGB_(0x82, 0x82, 0x82) },
+ { "Gray52", RGB_(0x85, 0x85, 0x85) },
+ { "Gray53", RGB_(0x87, 0x87, 0x87) },
+ { "Gray54", RGB_(0x8a, 0x8a, 0x8a) },
+ { "Gray55", RGB_(0x8c, 0x8c, 0x8c) },
+ { "Gray56", RGB_(0x8f, 0x8f, 0x8f) },
+ { "Gray57", RGB_(0x91, 0x91, 0x91) },
+ { "Gray58", RGB_(0x94, 0x94, 0x94) },
+ { "Gray59", RGB_(0x96, 0x96, 0x96) },
+ { "Gray6", RGB_(0xf, 0xf, 0xf) },
+ { "Gray60", RGB_(0x99, 0x99, 0x99) },
+ { "Gray61", RGB_(0x9c, 0x9c, 0x9c) },
+ { "Gray62", RGB_(0x9e, 0x9e, 0x9e) },
+ { "Gray63", RGB_(0xa1, 0xa1, 0xa1) },
+ { "Gray64", RGB_(0xa3, 0xa3, 0xa3) },
+ { "Gray65", RGB_(0xa6, 0xa6, 0xa6) },
+ { "Gray66", RGB_(0xa8, 0xa8, 0xa8) },
+ { "Gray67", RGB_(0xab, 0xab, 0xab) },
+ { "Gray68", RGB_(0xad, 0xad, 0xad) },
+ { "Gray69", RGB_(0xb0, 0xb0, 0xb0) },
+ { "Gray7", RGB_(0x12, 0x12, 0x12) },
+ { "Gray70", RGB_(0xb3, 0xb3, 0xb3) },
+ { "Gray71", RGB_(0xb5, 0xb5, 0xb5) },
+ { "Gray72", RGB_(0xb8, 0xb8, 0xb8) },
+ { "Gray73", RGB_(0xba, 0xba, 0xba) },
+ { "Gray74", RGB_(0xbd, 0xbd, 0xbd) },
+ { "Gray75", RGB_(0xbf, 0xbf, 0xbf) },
+ { "Gray76", RGB_(0xc2, 0xc2, 0xc2) },
+ { "Gray77", RGB_(0xc4, 0xc4, 0xc4) },
+ { "Gray78", RGB_(0xc7, 0xc7, 0xc7) },
+ { "Gray79", RGB_(0xc9, 0xc9, 0xc9) },
+ { "Gray8", RGB_(0x14, 0x14, 0x14) },
+ { "Gray80", RGB_(0xcc, 0xcc, 0xcc) },
+ { "Gray81", RGB_(0xcf, 0xcf, 0xcf) },
+ { "Gray82", RGB_(0xd1, 0xd1, 0xd1) },
+ { "Gray83", RGB_(0xd4, 0xd4, 0xd4) },
+ { "Gray84", RGB_(0xd6, 0xd6, 0xd6) },
+ { "Gray85", RGB_(0xd9, 0xd9, 0xd9) },
+ { "Gray86", RGB_(0xdb, 0xdb, 0xdb) },
+ { "Gray87", RGB_(0xde, 0xde, 0xde) },
+ { "Gray88", RGB_(0xe0, 0xe0, 0xe0) },
+ { "Gray89", RGB_(0xe3, 0xe3, 0xe3) },
+ { "Gray9", RGB_(0x17, 0x17, 0x17) },
+ { "Gray90", RGB_(0xe5, 0xe5, 0xe5) },
+ { "Gray91", RGB_(0xe8, 0xe8, 0xe8) },
+ { "Gray92", RGB_(0xeb, 0xeb, 0xeb) },
+ { "Gray93", RGB_(0xed, 0xed, 0xed) },
+ { "Gray94", RGB_(0xf0, 0xf0, 0xf0) },
+ { "Gray95", RGB_(0xf2, 0xf2, 0xf2) },
+ { "Gray96", RGB_(0xf5, 0xf5, 0xf5) },
+ { "Gray97", RGB_(0xf7, 0xf7, 0xf7) },
+ { "Gray98", RGB_(0xfa, 0xfa, 0xfa) },
+ { "Gray99", RGB_(0xfc, 0xfc, 0xfc) },
+ { "Green", RGB_(0x00, 0x80, 0x00) },
+ { "Green1", RGB_(0x0, 0xff, 0x0) },
+ { "Green2", RGB_(0x0, 0xee, 0x0) },
+ { "Green3", RGB_(0x0, 0xcd, 0x0) },
+ { "Green4", RGB_(0x0, 0x8b, 0x0) },
+ { "GreenYellow", RGB_(0xad, 0xff, 0x2f) },
+ { "Grey", RGB_(0x80, 0x80, 0x80) },
+ { "Grey0", RGB_(0x0, 0x0, 0x0) },
+ { "Grey1", RGB_(0x3, 0x3, 0x3) },
+ { "Grey10", RGB_(0x1a, 0x1a, 0x1a) },
+ { "Grey100", RGB_(0xff, 0xff, 0xff) },
+ { "Grey11", RGB_(0x1c, 0x1c, 0x1c) },
+ { "Grey12", RGB_(0x1f, 0x1f, 0x1f) },
+ { "Grey13", RGB_(0x21, 0x21, 0x21) },
+ { "Grey14", RGB_(0x24, 0x24, 0x24) },
+ { "Grey15", RGB_(0x26, 0x26, 0x26) },
+ { "Grey16", RGB_(0x29, 0x29, 0x29) },
+ { "Grey17", RGB_(0x2b, 0x2b, 0x2b) },
+ { "Grey18", RGB_(0x2e, 0x2e, 0x2e) },
+ { "Grey19", RGB_(0x30, 0x30, 0x30) },
+ { "Grey2", RGB_(0x5, 0x5, 0x5) },
+ { "Grey20", RGB_(0x33, 0x33, 0x33) },
+ { "Grey21", RGB_(0x36, 0x36, 0x36) },
+ { "Grey22", RGB_(0x38, 0x38, 0x38) },
+ { "Grey23", RGB_(0x3b, 0x3b, 0x3b) },
+ { "Grey24", RGB_(0x3d, 0x3d, 0x3d) },
+ { "Grey25", RGB_(0x40, 0x40, 0x40) },
+ { "Grey26", RGB_(0x42, 0x42, 0x42) },
+ { "Grey27", RGB_(0x45, 0x45, 0x45) },
+ { "Grey28", RGB_(0x47, 0x47, 0x47) },
+ { "Grey29", RGB_(0x4a, 0x4a, 0x4a) },
+ { "Grey3", RGB_(0x8, 0x8, 0x8) },
+ { "Grey30", RGB_(0x4d, 0x4d, 0x4d) },
+ { "Grey31", RGB_(0x4f, 0x4f, 0x4f) },
+ { "Grey32", RGB_(0x52, 0x52, 0x52) },
+ { "Grey33", RGB_(0x54, 0x54, 0x54) },
+ { "Grey34", RGB_(0x57, 0x57, 0x57) },
+ { "Grey35", RGB_(0x59, 0x59, 0x59) },
+ { "Grey36", RGB_(0x5c, 0x5c, 0x5c) },
+ { "Grey37", RGB_(0x5e, 0x5e, 0x5e) },
+ { "Grey38", RGB_(0x61, 0x61, 0x61) },
+ { "Grey39", RGB_(0x63, 0x63, 0x63) },
+ { "Grey4", RGB_(0xa, 0xa, 0xa) },
+ { "Grey40", RGB_(0x66, 0x66, 0x66) },
+ { "Grey41", RGB_(0x69, 0x69, 0x69) },
+ { "Grey42", RGB_(0x6b, 0x6b, 0x6b) },
+ { "Grey43", RGB_(0x6e, 0x6e, 0x6e) },
+ { "Grey44", RGB_(0x70, 0x70, 0x70) },
+ { "Grey45", RGB_(0x73, 0x73, 0x73) },
+ { "Grey46", RGB_(0x75, 0x75, 0x75) },
+ { "Grey47", RGB_(0x78, 0x78, 0x78) },
+ { "Grey48", RGB_(0x7a, 0x7a, 0x7a) },
+ { "Grey49", RGB_(0x7d, 0x7d, 0x7d) },
+ { "Grey5", RGB_(0xd, 0xd, 0xd) },
+ { "Grey50", RGB_(0x7f, 0x7f, 0x7f) },
+ { "Grey51", RGB_(0x82, 0x82, 0x82) },
+ { "Grey52", RGB_(0x85, 0x85, 0x85) },
+ { "Grey53", RGB_(0x87, 0x87, 0x87) },
+ { "Grey54", RGB_(0x8a, 0x8a, 0x8a) },
+ { "Grey55", RGB_(0x8c, 0x8c, 0x8c) },
+ { "Grey56", RGB_(0x8f, 0x8f, 0x8f) },
+ { "Grey57", RGB_(0x91, 0x91, 0x91) },
+ { "Grey58", RGB_(0x94, 0x94, 0x94) },
+ { "Grey59", RGB_(0x96, 0x96, 0x96) },
+ { "Grey6", RGB_(0xf, 0xf, 0xf) },
+ { "Grey60", RGB_(0x99, 0x99, 0x99) },
+ { "Grey61", RGB_(0x9c, 0x9c, 0x9c) },
+ { "Grey62", RGB_(0x9e, 0x9e, 0x9e) },
+ { "Grey63", RGB_(0xa1, 0xa1, 0xa1) },
+ { "Grey64", RGB_(0xa3, 0xa3, 0xa3) },
+ { "Grey65", RGB_(0xa6, 0xa6, 0xa6) },
+ { "Grey66", RGB_(0xa8, 0xa8, 0xa8) },
+ { "Grey67", RGB_(0xab, 0xab, 0xab) },
+ { "Grey68", RGB_(0xad, 0xad, 0xad) },
+ { "Grey69", RGB_(0xb0, 0xb0, 0xb0) },
+ { "Grey7", RGB_(0x12, 0x12, 0x12) },
+ { "Grey70", RGB_(0xb3, 0xb3, 0xb3) },
+ { "Grey71", RGB_(0xb5, 0xb5, 0xb5) },
+ { "Grey72", RGB_(0xb8, 0xb8, 0xb8) },
+ { "Grey73", RGB_(0xba, 0xba, 0xba) },
+ { "Grey74", RGB_(0xbd, 0xbd, 0xbd) },
+ { "Grey75", RGB_(0xbf, 0xbf, 0xbf) },
+ { "Grey76", RGB_(0xc2, 0xc2, 0xc2) },
+ { "Grey77", RGB_(0xc4, 0xc4, 0xc4) },
+ { "Grey78", RGB_(0xc7, 0xc7, 0xc7) },
+ { "Grey79", RGB_(0xc9, 0xc9, 0xc9) },
+ { "Grey8", RGB_(0x14, 0x14, 0x14) },
+ { "Grey80", RGB_(0xcc, 0xcc, 0xcc) },
+ { "Grey81", RGB_(0xcf, 0xcf, 0xcf) },
+ { "Grey82", RGB_(0xd1, 0xd1, 0xd1) },
+ { "Grey83", RGB_(0xd4, 0xd4, 0xd4) },
+ { "Grey84", RGB_(0xd6, 0xd6, 0xd6) },
+ { "Grey85", RGB_(0xd9, 0xd9, 0xd9) },
+ { "Grey86", RGB_(0xdb, 0xdb, 0xdb) },
+ { "Grey87", RGB_(0xde, 0xde, 0xde) },
+ { "Grey88", RGB_(0xe0, 0xe0, 0xe0) },
+ { "Grey89", RGB_(0xe3, 0xe3, 0xe3) },
+ { "Grey9", RGB_(0x17, 0x17, 0x17) },
+ { "Grey90", RGB_(0xe5, 0xe5, 0xe5) },
+ { "Grey91", RGB_(0xe8, 0xe8, 0xe8) },
+ { "Grey92", RGB_(0xeb, 0xeb, 0xeb) },
+ { "Grey93", RGB_(0xed, 0xed, 0xed) },
+ { "Grey94", RGB_(0xf0, 0xf0, 0xf0) },
+ { "Grey95", RGB_(0xf2, 0xf2, 0xf2) },
+ { "Grey96", RGB_(0xf5, 0xf5, 0xf5) },
+ { "Grey97", RGB_(0xf7, 0xf7, 0xf7) },
+ { "Grey98", RGB_(0xfa, 0xfa, 0xfa) },
+ { "Grey99", RGB_(0xfc, 0xfc, 0xfc) },
+ { "Honeydew", RGB_(0xf0, 0xff, 0xf0) },
+ { "Honeydew1", RGB_(0xf0, 0xff, 0xf0) },
+ { "Honeydew2", RGB_(0xe0, 0xee, 0xe0) },
+ { "Honeydew3", RGB_(0xc1, 0xcd, 0xc1) },
+ { "Honeydew4", RGB_(0x83, 0x8b, 0x83) },
+ { "HotPink", RGB_(0xff, 0x69, 0xb4) },
+ { "HotPink1", RGB_(0xff, 0x6e, 0xb4) },
+ { "HotPink2", RGB_(0xee, 0x6a, 0xa7) },
+ { "HotPink3", RGB_(0xcd, 0x60, 0x90) },
+ { "HotPink4", RGB_(0x8b, 0x3a, 0x62) },
+ { "IndianRed", RGB_(0xcd, 0x5c, 0x5c) },
+ { "IndianRed1", RGB_(0xff, 0x6a, 0x6a) },
+ { "IndianRed2", RGB_(0xee, 0x63, 0x63) },
+ { "IndianRed3", RGB_(0xcd, 0x55, 0x55) },
+ { "IndianRed4", RGB_(0x8b, 0x3a, 0x3a) },
+ { "Indigo", RGB_(0x4b, 0x00, 0x82) },
+ { "Ivory", RGB_(0xff, 0xff, 0xf0) },
+ { "Ivory1", RGB_(0xff, 0xff, 0xf0) },
+ { "Ivory2", RGB_(0xee, 0xee, 0xe0) },
+ { "Ivory3", RGB_(0xcd, 0xcd, 0xc1) },
+ { "Ivory4", RGB_(0x8b, 0x8b, 0x83) },
+ { "Khaki", RGB_(0xf0, 0xe6, 0x8c) },
+ { "Khaki1", RGB_(0xff, 0xf6, 0x8f) },
+ { "Khaki2", RGB_(0xee, 0xe6, 0x85) },
+ { "Khaki3", RGB_(0xcd, 0xc6, 0x73) },
+ { "Khaki4", RGB_(0x8b, 0x86, 0x4e) },
+ { "Lavender", RGB_(0xe6, 0xe6, 0xfa) },
+ { "LavenderBlush", RGB_(0xff, 0xf0, 0xf5) },
+ { "LavenderBlush1", RGB_(0xff, 0xf0, 0xf5) },
+ { "LavenderBlush2", RGB_(0xee, 0xe0, 0xe5) },
+ { "LavenderBlush3", RGB_(0xcd, 0xc1, 0xc5) },
+ { "LavenderBlush4", RGB_(0x8b, 0x83, 0x86) },
+ { "LawnGreen", RGB_(0x7c, 0xfc, 0x00) },
+ { "LemonChiffon", RGB_(0xff, 0xfa, 0xcd) },
+ { "LemonChiffon1", RGB_(0xff, 0xfa, 0xcd) },
+ { "LemonChiffon2", RGB_(0xee, 0xe9, 0xbf) },
+ { "LemonChiffon3", RGB_(0xcd, 0xc9, 0xa5) },
+ { "LemonChiffon4", RGB_(0x8b, 0x89, 0x70) },
+ { "LightBlue", RGB_(0xad, 0xd8, 0xe6) },
+ { "LightBlue1", RGB_(0xbf, 0xef, 0xff) },
+ { "LightBlue2", RGB_(0xb2, 0xdf, 0xee) },
+ { "LightBlue3", RGB_(0x9a, 0xc0, 0xcd) },
+ { "LightBlue4", RGB_(0x68, 0x83, 0x8b) },
+ { "LightCoral", RGB_(0xf0, 0x80, 0x80) },
+ { "LightCyan", RGB_(0xe0, 0xff, 0xff) },
+ { "LightCyan1", RGB_(0xe0, 0xff, 0xff) },
+ { "LightCyan2", RGB_(0xd1, 0xee, 0xee) },
+ { "LightCyan3", RGB_(0xb4, 0xcd, 0xcd) },
+ { "LightCyan4", RGB_(0x7a, 0x8b, 0x8b) },
+ { "LightGoldenrod", RGB_(0xee, 0xdd, 0x82) },
+ { "LightGoldenrod1", RGB_(0xff, 0xec, 0x8b) },
+ { "LightGoldenrod2", RGB_(0xee, 0xdc, 0x82) },
+ { "LightGoldenrod3", RGB_(0xcd, 0xbe, 0x70) },
+ { "LightGoldenrod4", RGB_(0x8b, 0x81, 0x4c) },
+ { "LightGoldenRodYellow", RGB_(0xfa, 0xfa, 0xd2) },
+ { "LightGray", RGB_(0xd3, 0xd3, 0xd3) },
+ { "LightGreen", RGB_(0x90, 0xee, 0x90) },
+ { "LightGrey", RGB_(0xd3, 0xd3, 0xd3) },
+ { "LightMagenta", RGB_(0xff, 0xbb, 0xff) },
+ { "LightPink", RGB_(0xff, 0xb6, 0xc1) },
+ { "LightPink1", RGB_(0xff, 0xae, 0xb9) },
+ { "LightPink2", RGB_(0xee, 0xa2, 0xad) },
+ { "LightPink3", RGB_(0xcd, 0x8c, 0x95) },
+ { "LightPink4", RGB_(0x8b, 0x5f, 0x65) },
+ { "LightRed", RGB_(0xff, 0xbb, 0xbb) },
+ { "LightSalmon", RGB_(0xff, 0xa0, 0x7a) },
+ { "LightSalmon1", RGB_(0xff, 0xa0, 0x7a) },
+ { "LightSalmon2", RGB_(0xee, 0x95, 0x72) },
+ { "LightSalmon3", RGB_(0xcd, 0x81, 0x62) },
+ { "LightSalmon4", RGB_(0x8b, 0x57, 0x42) },
+ { "LightSeaGreen", RGB_(0x20, 0xb2, 0xaa) },
+ { "LightSkyBlue", RGB_(0x87, 0xce, 0xfa) },
+ { "LightSkyBlue1", RGB_(0xb0, 0xe2, 0xff) },
+ { "LightSkyBlue2", RGB_(0xa4, 0xd3, 0xee) },
+ { "LightSkyBlue3", RGB_(0x8d, 0xb6, 0xcd) },
+ { "LightSkyBlue4", RGB_(0x60, 0x7b, 0x8b) },
+ { "LightSlateBlue", RGB_(0x84, 0x70, 0xff) },
+ { "LightSlateGray", RGB_(0x77, 0x88, 0x99) },
+ { "LightSlateGrey", RGB_(0x77, 0x88, 0x99) },
+ { "LightSteelBlue", RGB_(0xb0, 0xc4, 0xde) },
+ { "LightSteelBlue1", RGB_(0xca, 0xe1, 0xff) },
+ { "LightSteelBlue2", RGB_(0xbc, 0xd2, 0xee) },
+ { "LightSteelBlue3", RGB_(0xa2, 0xb5, 0xcd) },
+ { "LightSteelBlue4", RGB_(0x6e, 0x7b, 0x8b) },
+ { "LightYellow", RGB_(0xff, 0xff, 0xe0) },
+ { "LightYellow1", RGB_(0xff, 0xff, 0xe0) },
+ { "LightYellow2", RGB_(0xee, 0xee, 0xd1) },
+ { "LightYellow3", RGB_(0xcd, 0xcd, 0xb4) },
+ { "LightYellow4", RGB_(0x8b, 0x8b, 0x7a) },
+ { "Lime", RGB_(0x00, 0xff, 0x00) },
+ { "LimeGreen", RGB_(0x32, 0xcd, 0x32) },
+ { "Linen", RGB_(0xfa, 0xf0, 0xe6) },
+ { "Magenta", RGB_(0xff, 0x00, 0xff) },
+ { "Magenta1", RGB_(0xff, 0x0, 0xff) },
+ { "Magenta2", RGB_(0xee, 0x0, 0xee) },
+ { "Magenta3", RGB_(0xcd, 0x0, 0xcd) },
+ { "Magenta4", RGB_(0x8b, 0x0, 0x8b) },
+ { "Maroon", RGB_(0x80, 0x00, 0x00) },
+ { "Maroon1", RGB_(0xff, 0x34, 0xb3) },
+ { "Maroon2", RGB_(0xee, 0x30, 0xa7) },
+ { "Maroon3", RGB_(0xcd, 0x29, 0x90) },
+ { "Maroon4", RGB_(0x8b, 0x1c, 0x62) },
+ { "MediumAquamarine", RGB_(0x66, 0xcd, 0xaa) },
+ { "MediumBlue", RGB_(0x00, 0x00, 0xcd) },
+ { "MediumOrchid", RGB_(0xba, 0x55, 0xd3) },
+ { "MediumOrchid1", RGB_(0xe0, 0x66, 0xff) },
+ { "MediumOrchid2", RGB_(0xd1, 0x5f, 0xee) },
+ { "MediumOrchid3", RGB_(0xb4, 0x52, 0xcd) },
+ { "MediumOrchid4", RGB_(0x7a, 0x37, 0x8b) },
+ { "MediumPurple", RGB_(0x93, 0x70, 0xdb) },
+ { "MediumPurple1", RGB_(0xab, 0x82, 0xff) },
+ { "MediumPurple2", RGB_(0x9f, 0x79, 0xee) },
+ { "MediumPurple3", RGB_(0x89, 0x68, 0xcd) },
+ { "MediumPurple4", RGB_(0x5d, 0x47, 0x8b) },
+ { "MediumSeaGreen", RGB_(0x3c, 0xb3, 0x71) },
+ { "MediumSlateBlue", RGB_(0x7b, 0x68, 0xee) },
+ { "MediumSpringGreen", RGB_(0x00, 0xfa, 0x9a) },
+ { "MediumTurquoise", RGB_(0x48, 0xd1, 0xcc) },
+ { "MediumVioletRed", RGB_(0xc7, 0x15, 0x85) },
+ { "MidnightBlue", RGB_(0x19, 0x19, 0x70) },
+ { "MintCream", RGB_(0xf5, 0xff, 0xfa) },
+ { "MistyRose", RGB_(0xff, 0xe4, 0xe1) },
+ { "MistyRose1", RGB_(0xff, 0xe4, 0xe1) },
+ { "MistyRose2", RGB_(0xee, 0xd5, 0xd2) },
+ { "MistyRose3", RGB_(0xcd, 0xb7, 0xb5) },
+ { "MistyRose4", RGB_(0x8b, 0x7d, 0x7b) },
+ { "Moccasin", RGB_(0xff, 0xe4, 0xb5) },
+ { "NavajoWhite", RGB_(0xff, 0xde, 0xad) },
+ { "NavajoWhite1", RGB_(0xff, 0xde, 0xad) },
+ { "NavajoWhite2", RGB_(0xee, 0xcf, 0xa1) },
+ { "NavajoWhite3", RGB_(0xcd, 0xb3, 0x8b) },
+ { "NavajoWhite4", RGB_(0x8b, 0x79, 0x5e) },
+ { "Navy", RGB_(0x00, 0x00, 0x80) },
+ { "NavyBlue", RGB_(0x0, 0x0, 0x80) },
+ { "OldLace", RGB_(0xfd, 0xf5, 0xe6) },
+ { "Olive", RGB_(0x80, 0x80, 0x00) },
+ { "OliveDrab", RGB_(0x6b, 0x8e, 0x23) },
+ { "OliveDrab1", RGB_(0xc0, 0xff, 0x3e) },
+ { "OliveDrab2", RGB_(0xb3, 0xee, 0x3a) },
+ { "OliveDrab3", RGB_(0x9a, 0xcd, 0x32) },
+ { "OliveDrab4", RGB_(0x69, 0x8b, 0x22) },
+ { "Orange", RGB_(0xff, 0xa5, 0x00) },
+ { "Orange1", RGB_(0xff, 0xa5, 0x0) },
+ { "Orange2", RGB_(0xee, 0x9a, 0x0) },
+ { "Orange3", RGB_(0xcd, 0x85, 0x0) },
+ { "Orange4", RGB_(0x8b, 0x5a, 0x0) },
+ { "OrangeRed", RGB_(0xff, 0x45, 0x00) },
+ { "OrangeRed1", RGB_(0xff, 0x45, 0x0) },
+ { "OrangeRed2", RGB_(0xee, 0x40, 0x0) },
+ { "OrangeRed3", RGB_(0xcd, 0x37, 0x0) },
+ { "OrangeRed4", RGB_(0x8b, 0x25, 0x0) },
+ { "Orchid", RGB_(0xda, 0x70, 0xd6) },
+ { "Orchid1", RGB_(0xff, 0x83, 0xfa) },
+ { "Orchid2", RGB_(0xee, 0x7a, 0xe9) },
+ { "Orchid3", RGB_(0xcd, 0x69, 0xc9) },
+ { "Orchid4", RGB_(0x8b, 0x47, 0x89) },
+ { "PaleGoldenRod", RGB_(0xee, 0xe8, 0xaa) },
+ { "PaleGreen", RGB_(0x98, 0xfb, 0x98) },
+ { "PaleGreen1", RGB_(0x9a, 0xff, 0x9a) },
+ { "PaleGreen2", RGB_(0x90, 0xee, 0x90) },
+ { "PaleGreen3", RGB_(0x7c, 0xcd, 0x7c) },
+ { "PaleGreen4", RGB_(0x54, 0x8b, 0x54) },
+ { "PaleTurquoise", RGB_(0xaf, 0xee, 0xee) },
+ { "PaleTurquoise1", RGB_(0xbb, 0xff, 0xff) },
+ { "PaleTurquoise2", RGB_(0xae, 0xee, 0xee) },
+ { "PaleTurquoise3", RGB_(0x96, 0xcd, 0xcd) },
+ { "PaleTurquoise4", RGB_(0x66, 0x8b, 0x8b) },
+ { "PaleVioletRed", RGB_(0xdb, 0x70, 0x93) },
+ { "PaleVioletRed1", RGB_(0xff, 0x82, 0xab) },
+ { "PaleVioletRed2", RGB_(0xee, 0x79, 0x9f) },
+ { "PaleVioletRed3", RGB_(0xcd, 0x68, 0x89) },
+ { "PaleVioletRed4", RGB_(0x8b, 0x47, 0x5d) },
+ { "PapayaWhip", RGB_(0xff, 0xef, 0xd5) },
+ { "PeachPuff", RGB_(0xff, 0xda, 0xb9) },
+ { "PeachPuff1", RGB_(0xff, 0xda, 0xb9) },
+ { "PeachPuff2", RGB_(0xee, 0xcb, 0xad) },
+ { "PeachPuff3", RGB_(0xcd, 0xaf, 0x95) },
+ { "PeachPuff4", RGB_(0x8b, 0x77, 0x65) },
+ { "Peru", RGB_(0xcd, 0x85, 0x3f) },
+ { "Pink", RGB_(0xff, 0xc0, 0xcb) },
+ { "Pink1", RGB_(0xff, 0xb5, 0xc5) },
+ { "Pink2", RGB_(0xee, 0xa9, 0xb8) },
+ { "Pink3", RGB_(0xcd, 0x91, 0x9e) },
+ { "Pink4", RGB_(0x8b, 0x63, 0x6c) },
+ { "Plum", RGB_(0xdd, 0xa0, 0xdd) },
+ { "Plum1", RGB_(0xff, 0xbb, 0xff) },
+ { "Plum2", RGB_(0xee, 0xae, 0xee) },
+ { "Plum3", RGB_(0xcd, 0x96, 0xcd) },
+ { "Plum4", RGB_(0x8b, 0x66, 0x8b) },
+ { "PowderBlue", RGB_(0xb0, 0xe0, 0xe6) },
+ { "Purple", RGB_(0x80, 0x00, 0x80) },
+ { "Purple1", RGB_(0x9b, 0x30, 0xff) },
+ { "Purple2", RGB_(0x91, 0x2c, 0xee) },
+ { "Purple3", RGB_(0x7d, 0x26, 0xcd) },
+ { "Purple4", RGB_(0x55, 0x1a, 0x8b) },
+ { "RebeccaPurple", RGB_(0x66, 0x33, 0x99) },
+ { "Red", RGB_(0xff, 0x00, 0x00) },
+ { "Red1", RGB_(0xff, 0x0, 0x0) },
+ { "Red2", RGB_(0xee, 0x0, 0x0) },
+ { "Red3", RGB_(0xcd, 0x0, 0x0) },
+ { "Red4", RGB_(0x8b, 0x0, 0x0) },
+ { "RosyBrown", RGB_(0xbc, 0x8f, 0x8f) },
+ { "RosyBrown1", RGB_(0xff, 0xc1, 0xc1) },
+ { "RosyBrown2", RGB_(0xee, 0xb4, 0xb4) },
+ { "RosyBrown3", RGB_(0xcd, 0x9b, 0x9b) },
+ { "RosyBrown4", RGB_(0x8b, 0x69, 0x69) },
+ { "RoyalBlue", RGB_(0x41, 0x69, 0xe1) },
+ { "RoyalBlue1", RGB_(0x48, 0x76, 0xff) },
+ { "RoyalBlue2", RGB_(0x43, 0x6e, 0xee) },
+ { "RoyalBlue3", RGB_(0x3a, 0x5f, 0xcd) },
+ { "RoyalBlue4", RGB_(0x27, 0x40, 0x8b) },
+ { "SaddleBrown", RGB_(0x8b, 0x45, 0x13) },
+ { "Salmon", RGB_(0xfa, 0x80, 0x72) },
+ { "Salmon1", RGB_(0xff, 0x8c, 0x69) },
+ { "Salmon2", RGB_(0xee, 0x82, 0x62) },
+ { "Salmon3", RGB_(0xcd, 0x70, 0x54) },
+ { "Salmon4", RGB_(0x8b, 0x4c, 0x39) },
+ { "SandyBrown", RGB_(0xf4, 0xa4, 0x60) },
+ { "SeaGreen", RGB_(0x2e, 0x8b, 0x57) },
+ { "SeaGreen1", RGB_(0x54, 0xff, 0x9f) },
+ { "SeaGreen2", RGB_(0x4e, 0xee, 0x94) },
+ { "SeaGreen3", RGB_(0x43, 0xcd, 0x80) },
+ { "SeaGreen4", RGB_(0x2e, 0x8b, 0x57) },
+ { "SeaShell", RGB_(0xff, 0xf5, 0xee) },
+ { "Seashell1", RGB_(0xff, 0xf5, 0xee) },
+ { "Seashell2", RGB_(0xee, 0xe5, 0xde) },
+ { "Seashell3", RGB_(0xcd, 0xc5, 0xbf) },
+ { "Seashell4", RGB_(0x8b, 0x86, 0x82) },
+ { "Sienna", RGB_(0xa0, 0x52, 0x2d) },
+ { "Sienna1", RGB_(0xff, 0x82, 0x47) },
+ { "Sienna2", RGB_(0xee, 0x79, 0x42) },
+ { "Sienna3", RGB_(0xcd, 0x68, 0x39) },
+ { "Sienna4", RGB_(0x8b, 0x47, 0x26) },
+ { "Silver", RGB_(0xc0, 0xc0, 0xc0) },
+ { "SkyBlue", RGB_(0x87, 0xce, 0xeb) },
+ { "SkyBlue1", RGB_(0x87, 0xce, 0xff) },
+ { "SkyBlue2", RGB_(0x7e, 0xc0, 0xee) },
+ { "SkyBlue3", RGB_(0x6c, 0xa6, 0xcd) },
+ { "SkyBlue4", RGB_(0x4a, 0x70, 0x8b) },
+ { "SlateBlue", RGB_(0x6a, 0x5a, 0xcd) },
+ { "SlateBlue1", RGB_(0x83, 0x6f, 0xff) },
+ { "SlateBlue2", RGB_(0x7a, 0x67, 0xee) },
+ { "SlateBlue3", RGB_(0x69, 0x59, 0xcd) },
+ { "SlateBlue4", RGB_(0x47, 0x3c, 0x8b) },
+ { "SlateGray", RGB_(0x70, 0x80, 0x90) },
+ { "SlateGray1", RGB_(0xc6, 0xe2, 0xff) },
+ { "SlateGray2", RGB_(0xb9, 0xd3, 0xee) },
+ { "SlateGray3", RGB_(0x9f, 0xb6, 0xcd) },
+ { "SlateGray4", RGB_(0x6c, 0x7b, 0x8b) },
+ { "SlateGrey", RGB_(0x70, 0x80, 0x90) },
+ { "Snow", RGB_(0xff, 0xfa, 0xfa) },
+ { "Snow1", RGB_(0xff, 0xfa, 0xfa) },
+ { "Snow2", RGB_(0xee, 0xe9, 0xe9) },
+ { "Snow3", RGB_(0xcd, 0xc9, 0xc9) },
+ { "Snow4", RGB_(0x8b, 0x89, 0x89) },
+ { "SpringGreen", RGB_(0x00, 0xff, 0x7f) },
+ { "SpringGreen1", RGB_(0x0, 0xff, 0x7f) },
+ { "SpringGreen2", RGB_(0x0, 0xee, 0x76) },
+ { "SpringGreen3", RGB_(0x0, 0xcd, 0x66) },
+ { "SpringGreen4", RGB_(0x0, 0x8b, 0x45) },
+ { "SteelBlue", RGB_(0x46, 0x82, 0xb4) },
+ { "SteelBlue1", RGB_(0x63, 0xb8, 0xff) },
+ { "SteelBlue2", RGB_(0x5c, 0xac, 0xee) },
+ { "SteelBlue3", RGB_(0x4f, 0x94, 0xcd) },
+ { "SteelBlue4", RGB_(0x36, 0x64, 0x8b) },
+ { "Tan", RGB_(0xd2, 0xb4, 0x8c) },
+ { "Tan1", RGB_(0xff, 0xa5, 0x4f) },
+ { "Tan2", RGB_(0xee, 0x9a, 0x49) },
+ { "Tan3", RGB_(0xcd, 0x85, 0x3f) },
+ { "Tan4", RGB_(0x8b, 0x5a, 0x2b) },
+ { "Teal", RGB_(0x00, 0x80, 0x80) },
+ { "Thistle", RGB_(0xd8, 0xbf, 0xd8) },
+ { "Thistle1", RGB_(0xff, 0xe1, 0xff) },
+ { "Thistle2", RGB_(0xee, 0xd2, 0xee) },
+ { "Thistle3", RGB_(0xcd, 0xb5, 0xcd) },
+ { "Thistle4", RGB_(0x8b, 0x7b, 0x8b) },
+ { "Tomato", RGB_(0xff, 0x63, 0x47) },
+ { "Tomato1", RGB_(0xff, 0x63, 0x47) },
+ { "Tomato2", RGB_(0xee, 0x5c, 0x42) },
+ { "Tomato3", RGB_(0xcd, 0x4f, 0x39) },
+ { "Tomato4", RGB_(0x8b, 0x36, 0x26) },
+ { "Turquoise", RGB_(0x40, 0xe0, 0xd0) },
+ { "Turquoise1", RGB_(0x0, 0xf5, 0xff) },
+ { "Turquoise2", RGB_(0x0, 0xe5, 0xee) },
+ { "Turquoise3", RGB_(0x0, 0xc5, 0xcd) },
+ { "Turquoise4", RGB_(0x0, 0x86, 0x8b) },
+ { "Violet", RGB_(0xee, 0x82, 0xee) },
+ { "VioletRed", RGB_(0xd0, 0x20, 0x90) },
+ { "VioletRed1", RGB_(0xff, 0x3e, 0x96) },
+ { "VioletRed2", RGB_(0xee, 0x3a, 0x8c) },
+ { "VioletRed3", RGB_(0xcd, 0x32, 0x78) },
+ { "VioletRed4", RGB_(0x8b, 0x22, 0x52) },
+ { "WebGray", RGB_(0x80, 0x80, 0x80) },
+ { "WebGreen", RGB_(0x0, 0x80, 0x0) },
+ { "WebGrey", RGB_(0x80, 0x80, 0x80) },
+ { "WebMaroon", RGB_(0x80, 0x0, 0x0) },
+ { "WebPurple", RGB_(0x80, 0x0, 0x80) },
+ { "Wheat", RGB_(0xf5, 0xde, 0xb3) },
+ { "Wheat1", RGB_(0xff, 0xe7, 0xba) },
+ { "Wheat2", RGB_(0xee, 0xd8, 0xae) },
+ { "Wheat3", RGB_(0xcd, 0xba, 0x96) },
+ { "Wheat4", RGB_(0x8b, 0x7e, 0x66) },
+ { "White", RGB_(0xff, 0xff, 0xff) },
+ { "WhiteSmoke", RGB_(0xf5, 0xf5, 0xf5) },
+ { "X11Gray", RGB_(0xbe, 0xbe, 0xbe) },
+ { "X11Green", RGB_(0x0, 0xff, 0x0) },
+ { "X11Grey", RGB_(0xbe, 0xbe, 0xbe) },
+ { "X11Maroon", RGB_(0xb0, 0x30, 0x60) },
+ { "X11Purple", RGB_(0xa0, 0x20, 0xf0) },
+ { "Yellow", RGB_(0xff, 0xff, 0x00) },
+ { "Yellow1", RGB_(0xff, 0xff, 0x0) },
+ { "Yellow2", RGB_(0xee, 0xee, 0x0) },
+ { "Yellow3", RGB_(0xcd, 0xcd, 0x0) },
+ { "Yellow4", RGB_(0x8b, 0x8b, 0x0) },
+ { "YellowGreen", RGB_(0x9a, 0xcd, 0x32) },
{ NULL, 0 },
};
@@ -8221,7 +8489,7 @@ color_name_table_T color_name_table[] = {
///
/// @param[in] name string value to convert to RGB
/// return the hex value or -1 if could not find a correct value
-RgbValue name_to_color(const uint8_t *name)
+RgbValue name_to_color(const char_u *name)
{
if (name[0] == '#' && isxdigit(name[1]) && isxdigit(name[2])
@@ -8247,24 +8515,21 @@ RgbValue name_to_color(const uint8_t *name)
/// Gets highlight description for id `attr_id` as a map.
Dictionary hl_get_attr_by_id(Integer attr_id, Boolean rgb, Error *err)
{
- HlAttrs attrs = HLATTRS_INIT;
+ HlAttrs *aep = NULL;
Dictionary dic = ARRAY_DICT_INIT;
if (attr_id == 0) {
- goto end;
+ return dic;
}
- attrentry_T *aep = syn_cterm_attr2entry((int)attr_id);
+ aep = syn_cterm_attr2entry((int)attr_id);
if (!aep) {
api_set_error(err, kErrorTypeException,
"Invalid attribute id: %" PRId64, attr_id);
return dic;
}
- attrs = attrentry2hlattrs(aep, rgb);
-
-end:
- return hlattrs2dict(attrs);
+ return hlattrs2dict(aep, rgb);
}