diff --git a/ChangeLog b/ChangeLog index 3d1af7d2..d2ea86b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,9 @@ * src/winio.c (edit_draw): Start and end regexes can be very similar; so if a found start has been qualified as an end earlier, believe it and skip to the next step. This helps with Python's docstrings. + * src/winio.c (edit_draw): When the whole line has been coloured, + don't bother looking for any more starts. This prevents some lines + from being erroneously marked as CENDAFTER instead of CWHOLELINE. 2015-06-11 Benno Schulenberg * src/winio.c (get_key_buffer): Add some debugging code to make it diff --git a/src/winio.c b/src/winio.c index 286b7504..b8f918bd 100644 --- a/src/winio.c +++ b/src/winio.c @@ -2492,7 +2492,7 @@ void edit_draw(filestruct *fileptr, const char *converted, int for (; tmpcolor != NULL; tmpcolor = tmpcolor->next) { int x_start; /* Starting column for mvwaddnstr. Zero-based. */ - int paintlen; + int paintlen = 0; /* Number of chars to paint on this line. There are * COLS characters on a whole line. */ size_t index; @@ -2673,6 +2673,10 @@ void edit_draw(filestruct *fileptr, const char *converted, int #endif } mvwaddnstr(edit, line, 0, converted, paintlen); + /* If the whole line has been painted, don't bother + * looking for any more starts. */ + if (paintlen < 0) + goto end_of_loop; step_two: /* Second step, we look for starts on this line. */ start_col = 0;