From 26ae9dbd12638f638e03240b5a8239e9080f0789 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sun, 14 Jun 2015 18:06:36 +0000 Subject: [PATCH] Not bothering to look for any starting matches on the current line when the whole line has already been coloured. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5248 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 3 +++ src/winio.c | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) 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;