commit 6135bf3f6b598582af4f69af716da39b7aaed940
parent ab73dd4816989a96d75813636dddd386522b05e1
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Sat, 30 Jul 2005 21:24:56 +0000
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
Diffstat:
M | ChangeLog | | | 4 | +++- |
M | src/color.c | | | 70 | +++++++++++++++++++++++++++++++++++++++------------------------------- |
2 files changed, 42 insertions(+), 32 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -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
diff --git a/src/color.c b/src/color.c
@@ -113,47 +113,55 @@ void color_update(void)
assert(openfile != NULL);
openfile->colorstrings = NULL;
- for (tmpsyntax = syntaxes; tmpsyntax != NULL;
- tmpsyntax = tmpsyntax->next) {
- exttype *e;
-
- for (e = tmpsyntax->extensions; e != NULL; e = e->next) {
- bool not_compiled = (e->ext == NULL);
-
- /* e->ext_regex has already been checked for validity
- * elsewhere. Compile its specified regex if we haven't
- * already. */
- if (not_compiled) {
- e->ext = (regex_t *)nmalloc(sizeof(regex_t));
- 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)
+ /* 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;
-
- /* Decompile e->ext_regex's specified regex if we aren't
- * going to use it. */
- if (not_compiled) {
- regfree(e->ext);
- free(e->ext);
- e->ext = NULL;
- }
}
}
- /* If we haven't found a match, use the override string. */
- if (openfile->colorstrings == NULL && syntaxstr != NULL) {
+ /* 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) {
- if (mbstrcasecmp(tmpsyntax->desc, syntaxstr) == 0)
- openfile->colorstrings = tmpsyntax->color;
-
- if (openfile->colorstrings != NULL)
- break;
+ exttype *e;
+
+ for (e = tmpsyntax->extensions; e != NULL; e = e->next) {
+ bool not_compiled = (e->ext == NULL);
+
+ /* e->ext_regex has already been checked for validity
+ * elsewhere. Compile its specified regex if we haven't
+ * already. */
+ if (not_compiled) {
+ e->ext = (regex_t *)nmalloc(sizeof(regex_t));
+ 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)
+ openfile->colorstrings = tmpsyntax->color;
+
+ if (openfile->colorstrings != NULL)
+ break;
+
+ /* Decompile e->ext_regex's specified regex if we aren't
+ * going to use it. */
+ if (not_compiled) {
+ regfree(e->ext);
+ free(e->ext);
+ e->ext = NULL;
+ }
+ }
}
}