]> git.wh0rd.org Git - nano.git/commitdiff
port over more of Brand Huntsman's old patch: a color syntax specified
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Sat, 30 Jul 2005 21:24:56 +0000 (21:24 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Sat, 30 Jul 2005 21:24:56 +0000 (21:24 +0000)
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

ChangeLog
src/color.c

index 7aeca7a105b3274bd8959a020838381e7dda6445..e52576c6424bf59f1df411d8ad62c0d1f13816ad 100644 (file)
--- 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
index 79073bf80c2253ebcd21af5d155a8b8454b1bfbc..c74ee905ad393106cf56088ca7dbff6bb4c1e185 100644 (file)
@@ -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;
+               }
+           }
        }
     }