]> git.wh0rd.org Git - nano.git/commitdiff
Resetting the multidata a bit less often.
authorBenno Schulenberg <bensberg@justemail.net>
Sun, 29 Nov 2015 10:14:25 +0000 (10:14 +0000)
committerBenno Schulenberg <bensberg@justemail.net>
Sun, 29 Nov 2015 10:14:25 +0000 (10:14 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5449 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/color.c

index c0b164b809a11d757ef000472142b3381bd3247f..29abf9dd26017c00826d42d620fac6575dc5c20d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 2015-11-29  Benno Schulenberg  <bensberg@justemail.net>
        * src/color.c (reset_multis): Evaluate correctly whether to reset
        the multidata cache.  This fixes Savannah bug #46543.
+       * src/color.c (reset_multis): Reset the multidata a bit less often.
 
 2015-11-28  Benno Schulenberg  <bensberg@justemail.net>
        * src/nano.c (main): Allow the user full control over the values of
index 88ff3f1eef1aa2ecbd5f41a0c6cd7587402b27a3..7f0de570112d13ce4169fd27187868a5e3038d13 100644 (file)
@@ -442,11 +442,8 @@ void reset_multis(filestruct *fileptr, bool force)
            continue;
 
        alloc_multidata_if_needed(fileptr);
-       if (force == TRUE) {
-           reset_multis_for_id(fileptr, tmpcolor->id);
-           continue;
-       }
 
+    if (force == FALSE) {
        /* Figure out where the first begin and end are to determine if
         * things changed drastically for the precalculated multi values. */
        nobegin = regexec(tmpcolor->start, fileptr->data, 1, &startmatch, 0);
@@ -458,10 +455,15 @@ void reset_multis(filestruct *fileptr, bool force)
            if (nobegin && noend)
                continue;
        }  else if (fileptr->multidata[tmpcolor->id] == CBEGINBEFORE && !noend
-         && (nobegin || endmatch.rm_eo > startmatch.rm_eo)) {
-           reset_multis_after(fileptr, tmpcolor->id);
+                       && nobegin)
            continue;
-       }
+       else if (fileptr->multidata[tmpcolor->id] == CSTARTENDHERE &&
+                       !nobegin && !noend && startmatch.rm_so < endmatch.rm_so)
+           continue;
+       else if (fileptr->multidata[tmpcolor->id] == CENDAFTER &&
+                       !nobegin && noend)
+           continue;
+    }
 
        /* If we got here, assume the worst. */
        reset_multis_for_id(fileptr, tmpcolor->id);