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
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);
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);