commit a8a70f0f290355a52ff0157af2187d5892492233
parent 1d10d79860b574f31daa283e200acef6e138ad2e
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Sat, 21 Jan 2017 19:55:05 +0100
tweaks: slightly speed up the change detection for multiline matches
Diffstat:
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/src/color.c b/src/color.c
@@ -354,19 +354,20 @@ 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)
- continue;
- else if (fileptr->multidata[ink->id] == CSTARTENDHERE &&
- !nobegin && !noend && startmatch.rm_so < endmatch.rm_so)
- continue;
- else if (fileptr->multidata[ink->id] == CBEGINBEFORE &&
- nobegin && !noend)
- continue;
- else if (fileptr->multidata[ink->id] == CENDAFTER &&
- !nobegin && noend)
- continue;
+ if (fileptr->multidata[ink->id] == CNONE ||
+ fileptr->multidata[ink->id] == CWHOLELINE) {
+ if (nobegin && noend)
+ continue;
+ } else if (fileptr->multidata[ink->id] == CSTARTENDHERE) {
+ if (!nobegin && !noend && startmatch.rm_so < endmatch.rm_so)
+ continue;
+ } else if (fileptr->multidata[ink->id] == CBEGINBEFORE) {
+ if (nobegin && !noend)
+ continue;
+ } else if (fileptr->multidata[ink->id] == CENDAFTER) {
+ if (!nobegin && noend)
+ continue;
+ }
}
/* If we got here, things have changed. */