nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit b202966d3084bf89d7a8b64a72108dc58e908bf0
parent a19a7820f9e0a489af58e7ec5c7869cf932fb982
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Fri, 22 Jan 2021 11:58:53 +0100

tweaks: correct a comment, improve another, and trim some verbosity

Diffstat:
Msrc/winio.c | 27+++++++--------------------
1 file changed, 7 insertions(+), 20 deletions(-)

diff --git a/src/winio.c b/src/winio.c @@ -2432,11 +2432,10 @@ void draw_row(int row, const char *converted, linestruct *line, size_t from_col) #if !defined(NANO_TINY) || defined(ENABLE_COLOR) size_t from_x = actual_x(line->data, from_col); /* The position in the line's data of the leftmost character - * that displays at least partially on the window. */ + * that is at least partially onscreen. */ size_t till_x = actual_x(line->data, from_col + editwincols - 1) + 1; - /* The position in the line's data of the first character that - * is completely off the window to the right. Note that till_x - * might be beyond the null terminator of the string. */ + /* The position in the line's data just after the start of + * the last character that is at least partially onscreen. */ #endif #ifdef ENABLE_LINENUMBERS @@ -2506,29 +2505,17 @@ void draw_row(int row, const char *converted, linestruct *line, size_t from_col) regmatch_t startmatch, endmatch; /* The match positions of the start and end regexes. */ - /* Two notes about regexec(). A return value of zero means - * that there is a match. Also, rm_eo is the first - * non-matching character after the match. */ - wattron(edit, varnish->attributes); /* First case: varnish is a single-line expression. */ if (varnish->end == NULL) { - /* We increment index by rm_eo, to move past the end of the - * last match. Even though two matches may overlap, we - * want to ignore them, so that we can highlight e.g. C - * strings correctly. */ while (index < till_x) { - /* Note the fifth parameter to regexec(). It says - * not to match the beginning-of-line character - * unless index is zero. If regexec() returns - * REG_NOMATCH, there are no more matches in the - * line. */ + /* If there is no match, go on to the next line. */ if (regexec(varnish->start, &line->data[index], 1, &match, (index == 0) ? 0 : REG_NOTBOL) != 0) break; - /* If the match is of length zero, skip it. */ + /* If the match is of length zero, skip over it. */ if (match.rm_so == match.rm_eo) { index = step_right(line->data, index + match.rm_eo); continue; @@ -2600,7 +2587,8 @@ void draw_row(int row, const char *converted, linestruct *line, size_t from_col) start_line->multidata[varnish->id] == CSTARTENDHERE)) goto step_two; - /* Is there an uncomplemented start on the found line? */ + /* Maybe there is an end on that same line? If yes, maybe + * there is another start after it? And so on until EOL. */ while (TRUE) { /* Begin searching for an end after the start match. */ index += startmatch.rm_eo; @@ -2622,7 +2610,6 @@ void draw_row(int row, const char *converted, linestruct *line, size_t from_col) 1, &startmatch, REG_NOTBOL) == REG_NOMATCH) goto step_two; } - /* Indeed, there is a start without an end on that line. */ seek_an_end: /* We've already checked that there is no end between the start