tweaks: slightly speed up the change detection for multiline matches
parent
1d10d79860
commit
a8a70f0f29
19
src/color.c
19
src/color.c
|
@ -354,20 +354,21 @@ void reset_multis(filestruct *fileptr, bool force)
|
||||||
/* Check whether the multidata still matches the current situation. */
|
/* Check whether the multidata still matches the current situation. */
|
||||||
nobegin = regexec(ink->start, fileptr->data, 1, &startmatch, 0);
|
nobegin = regexec(ink->start, fileptr->data, 1, &startmatch, 0);
|
||||||
noend = regexec(ink->end, fileptr->data, 1, &endmatch, 0);
|
noend = regexec(ink->end, fileptr->data, 1, &endmatch, 0);
|
||||||
if ((fileptr->multidata[ink->id] == CWHOLELINE ||
|
if (fileptr->multidata[ink->id] == CNONE ||
|
||||||
fileptr->multidata[ink->id] == CNONE) &&
|
fileptr->multidata[ink->id] == CWHOLELINE) {
|
||||||
nobegin && noend)
|
if (nobegin && noend)
|
||||||
continue;
|
continue;
|
||||||
else if (fileptr->multidata[ink->id] == CSTARTENDHERE &&
|
} else if (fileptr->multidata[ink->id] == CSTARTENDHERE) {
|
||||||
!nobegin && !noend && startmatch.rm_so < endmatch.rm_so)
|
if (!nobegin && !noend && startmatch.rm_so < endmatch.rm_so)
|
||||||
continue;
|
continue;
|
||||||
else if (fileptr->multidata[ink->id] == CBEGINBEFORE &&
|
} else if (fileptr->multidata[ink->id] == CBEGINBEFORE) {
|
||||||
nobegin && !noend)
|
if (nobegin && !noend)
|
||||||
continue;
|
continue;
|
||||||
else if (fileptr->multidata[ink->id] == CENDAFTER &&
|
} else if (fileptr->multidata[ink->id] == CENDAFTER) {
|
||||||
!nobegin && noend)
|
if (!nobegin && noend)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* If we got here, things have changed. */
|
/* If we got here, things have changed. */
|
||||||
reset_multis_for_id(fileptr, ink->id);
|
reset_multis_for_id(fileptr, ink->id);
|
||||||
|
|
Loading…
Reference in New Issue