Commit 6135bf3f authored by David Lawrence Ramsey's avatar David Lawrence Ramsey
Browse files

port over more of Brand Huntsman's old patch: a color syntax specified

on the command line will now override the syntax associated with the
current file extension


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2951 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
No related merge requests found
Showing with 42 additions and 32 deletions
+42 -32
......@@ -51,7 +51,9 @@ CVS code -
color_to_short()), and parse_colors(). (DLR)
- Change color handling to save only the extension and color
regex strings constantly, and to actually compile them on an
as-needed basis. Changes to update_color(),
as-needed basis. Also, make a color syntax specified on the
command line override the syntax associated with the current
file extension. Changes to update_color(),
thanks_for_all_the_fish(), nregcomp(), parse_syntax(), and
parse_colors(). (Brand Huntsman and DLR)
- Various other color fixes. Handle unspecified foreground
......
......@@ -113,6 +113,23 @@ void color_update(void)
assert(openfile != NULL);
openfile->colorstrings = NULL;
/* If we specified a syntax override string, use it. */
if (syntaxstr != NULL) {
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
if (mbstrcasecmp(tmpsyntax->desc, syntaxstr) == 0)
openfile->colorstrings = tmpsyntax->color;
if (openfile->colorstrings != NULL)
break;
}
}
/* If we didn't specify a syntax override string, or if we did and
* there was no syntax by that name, get the syntax based on the
* file extension. */
if (openfile->colorstrings == NULL) {
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
exttype *e;
......@@ -128,8 +145,10 @@ void color_update(void)
regcomp(e->ext, e->ext_regex, REG_EXTENDED);
}
/* Set colorstrings if we matched the extension regex. */
if (regexec(e->ext, openfile->filename, 0, NULL, 0) == 0)
/* Set colorstrings if we matched the extension
* regex. */
if (regexec(e->ext, openfile->filename, 0, NULL,
0) == 0)
openfile->colorstrings = tmpsyntax->color;
if (openfile->colorstrings != NULL)
......@@ -144,17 +163,6 @@ void color_update(void)
}
}
}
/* If we haven't found a match, use the override string. */
if (openfile->colorstrings == NULL && syntaxstr != NULL) {
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
if (mbstrcasecmp(tmpsyntax->desc, syntaxstr) == 0)
openfile->colorstrings = tmpsyntax->color;
if (openfile->colorstrings != NULL)
break;
}
}
for (tmpcolor = openfile->colorstrings; tmpcolor != NULL;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment