tweaks: slightly speed up the change detection for multiline matches

master
Benno Schulenberg 2017-01-21 19:55:05 +01:00
parent 1d10d79860
commit a8a70f0f29
1 changed files with 14 additions and 13 deletions

View File

@ -354,20 +354,21 @@ void reset_multis(filestruct *fileptr, bool force)
/* Check whether the multidata still matches the current situation. */
nobegin = regexec(ink->start, fileptr->data, 1, &startmatch, 0);
noend = regexec(ink->end, fileptr->data, 1, &endmatch, 0);
if ((fileptr->multidata[ink->id] == CWHOLELINE ||
fileptr->multidata[ink->id] == CNONE) &&
nobegin && noend)
if (fileptr->multidata[ink->id] == CNONE ||
fileptr->multidata[ink->id] == CWHOLELINE) {
if (nobegin && noend)
continue;
else if (fileptr->multidata[ink->id] == CSTARTENDHERE &&
!nobegin && !noend && startmatch.rm_so < endmatch.rm_so)
} else if (fileptr->multidata[ink->id] == CSTARTENDHERE) {
if (!nobegin && !noend && startmatch.rm_so < endmatch.rm_so)
continue;
else if (fileptr->multidata[ink->id] == CBEGINBEFORE &&
nobegin && !noend)
} else if (fileptr->multidata[ink->id] == CBEGINBEFORE) {
if (nobegin && !noend)
continue;
else if (fileptr->multidata[ink->id] == CENDAFTER &&
!nobegin && noend)
} else if (fileptr->multidata[ink->id] == CENDAFTER) {
if (!nobegin && noend)
continue;
}
}
/* If we got here, things have changed. */
reset_multis_for_id(fileptr, ink->id);