diff --git a/src/rcfile.c b/src/rcfile.c index 248c5763..ed6dd78f 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -980,15 +980,22 @@ void parse_includes(char *ptr) free(expanded); } -/* Return the short value corresponding to the color named in colorname, - * and set bright to TRUE if that color is bright. */ -short color_to_short(const char *colorname, bool *bright) +/* Return the short value corresponding to the given color name, and set + * vivid to TRUE for a lighter color, and thick for a heavier typeface. */ +short color_to_short(const char *colorname, bool *vivid, bool *thick) { if (strncmp(colorname, "bright", 6) == 0) { - *bright = TRUE; + *vivid = TRUE; + *thick = TRUE; colorname += 6; - } else - *bright = FALSE; + } else if (strncmp(colorname, "light", 5) == 0) { + *vivid = TRUE; + *thick = FALSE; + colorname += 5; + } else { + *vivid = FALSE; + *thick = FALSE; + } if (strcmp(colorname, "green") == 0) return COLOR_GREEN; @@ -1018,13 +1025,13 @@ short color_to_short(const char *colorname, bool *bright) bool parse_combination(char *combostr, short *fg, short *bg, int *attributes) { char *comma = strchr(combostr, ','); - bool bright; + bool vivid, thick; *attributes = A_NORMAL; if (comma != NULL) { - *bg = color_to_short(comma + 1, &bright); - if (bright) { + *bg = color_to_short(comma + 1, &vivid, &thick); + if (vivid) { jot_error(N_("A background color cannot be bright")); return FALSE; } @@ -1035,11 +1042,12 @@ bool parse_combination(char *combostr, short *fg, short *bg, int *attributes) *bg = USE_THE_DEFAULT; if (comma != combostr) { - *fg = color_to_short(combostr, &bright); + *fg = color_to_short(combostr, &vivid, &thick); if (*fg == BAD_COLOR) return FALSE; - - if (bright) + if (vivid && !thick && COLORS > 8) + *fg += 8; + else if (vivid) *attributes = A_BOLD; } else *fg = USE_THE_DEFAULT; diff --git a/syntax/nanorc.nanorc b/syntax/nanorc.nanorc index b6482540..903470fe 100644 --- a/syntax/nanorc.nanorc +++ b/syntax/nanorc.nanorc @@ -8,7 +8,7 @@ color brightred ".*" # Keywords color brightgreen "^[[:space:]]*(set|unset)[[:space:]]+(afterends|allow_insecure_backup|atblanks|autoindent|backup|backwards|boldtext|breaklonglines|casesensitive|constantshow|cutfromcursor|emptyline|finalnewline|historylog|indicator|jumpyscrolling|linenumbers|locking|morespace|mouse|multibuffer|noconvert|nohelp|nopauses|nonewlines|nowrap|positionlog|preserve|quickblank|quiet|rawsequences|rebinddelete|regexp|saveonexit|showcursor|smarthome|smooth|softwrap|suspendable|tabstospaces|trimblanks|unix|view|wordbounds|zap)\>" -color yellow "^[[:space:]]*set[[:space:]]+((error|function|key|number|selected|status|stripe|title)color)[[:space:]]+(bright)?(white|black|red|blue|green|yellow|magenta|cyan|normal)?(,(white|black|red|blue|green|yellow|magenta|cyan|normal))?\>" +color yellow "^[[:space:]]*set[[:space:]]+((error|function|key|number|selected|status|stripe|title)color)[[:space:]]+(bright|light)?(white|black|red|blue|green|yellow|magenta|cyan|normal)?(,(white|black|red|blue|green|yellow|magenta|cyan|normal))?\>" color brightgreen "^[[:space:]]*set[[:space:]]+(backupdir|brackets|errorcolor|functioncolor|keycolor|matchbrackets|numbercolor|operatingdir|punct|quotestr|selectedcolor|speller|statuscolor|stripecolor|titlecolor|whitespace|wordchars)[[:space:]]+" color brightgreen "^[[:space:]]*set[[:space:]]+(fill[[:space:]]+-?[[:digit:]]+|(guidestripe|tabsize)[[:space:]]+[1-9][0-9]*)\>" color brightgreen "^[[:space:]]*bind[[:space:]]+((\^([A-Za-z]|[]/@\^_`]|Space)|([Ss][Hh]-)?[Mm]-[A-Za-z]|[Mm]-([]!"#$%&'()*+,./0-9:;<=>?@\^_`{|}~-]|Space))|F([1-9]|1[0-9]|2[0-4])|Ins|Del)[[:space:]]+([a-z]+|".*")[[:space:]]+(main|help|search|replace(with)?|yesno|gotoline|writeout|insert|browser|whereisfile|gotodir|execute|spell|linter|all)([[:space:]]+#|[[:space:]]*$)" @@ -21,7 +21,7 @@ color green "^[[:space:]]*((un)?(bind|set)|include|syntax|header|magic|comment|f color brightmagenta "([[:space:]]|(start|end)=)".+"([[:space:]]|$)" # Colors -color yellow "^[[:space:]]*i?color[[:space:]]*(bright)?(white|black|red|blue|green|yellow|magenta|cyan|normal)?(,(white|black|red|blue|green|yellow|magenta|cyan|normal))?\>" +color yellow "^[[:space:]]*i?color[[:space:]]*(bright|light)?(white|black|red|blue|green|yellow|magenta|cyan|normal)?(,(white|black|red|blue|green|yellow|magenta|cyan|normal))?\>" color magenta "^[[:space:]]*i?color\>" "\<(start|end)=" # Comments