Resetting the multidata a bit less often.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5449 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
This commit is contained in:
Benno Schulenberg 2015-11-29 10:14:25 +00:00
parent f9a6eb8bec
commit 6135e28878
2 changed files with 10 additions and 7 deletions

View File

@ -1,6 +1,7 @@
2015-11-29 Benno Schulenberg <bensberg@justemail.net> 2015-11-29 Benno Schulenberg <bensberg@justemail.net>
* src/color.c (reset_multis): Evaluate correctly whether to reset * src/color.c (reset_multis): Evaluate correctly whether to reset
the multidata cache. This fixes Savannah bug #46543. 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> 2015-11-28 Benno Schulenberg <bensberg@justemail.net>
* src/nano.c (main): Allow the user full control over the values of * src/nano.c (main): Allow the user full control over the values of

View File

@ -442,11 +442,8 @@ void reset_multis(filestruct *fileptr, bool force)
continue; continue;
alloc_multidata_if_needed(fileptr); 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 /* Figure out where the first begin and end are to determine if
* things changed drastically for the precalculated multi values. */ * things changed drastically for the precalculated multi values. */
nobegin = regexec(tmpcolor->start, fileptr->data, 1, &startmatch, 0); nobegin = regexec(tmpcolor->start, fileptr->data, 1, &startmatch, 0);
@ -458,10 +455,15 @@ void reset_multis(filestruct *fileptr, bool force)
if (nobegin && noend) if (nobegin && noend)
continue; continue;
} else if (fileptr->multidata[tmpcolor->id] == CBEGINBEFORE && !noend } else if (fileptr->multidata[tmpcolor->id] == CBEGINBEFORE && !noend
&& (nobegin || endmatch.rm_eo > startmatch.rm_eo)) { && nobegin)
reset_multis_after(fileptr, tmpcolor->id);
continue; 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. */ /* If we got here, assume the worst. */
reset_multis_for_id(fileptr, tmpcolor->id); reset_multis_for_id(fileptr, tmpcolor->id);