nano

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

commit e19a16f0e6abcf49104e907897c70a7310c372dc
parent 9e22e8b1b5a14714df9a245bc741a416fd02ee45
Author: Benno Schulenberg <bensberg@justemail.net>
Date:   Sun, 29 Nov 2015 12:31:49 +0000

Always setting the multidata to CBEGINBEFORE when an end is found,
also when the coloured part is horizontally scrolled off.


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5451 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

Diffstat:
MChangeLog | 3+++
Msrc/winio.c | 10++++++++--
2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -3,6 +3,9 @@ the multidata cache. This fixes Savannah bug #46543. * src/color.c (reset_multis): Reset the multidata a bit less often. * src/color.c (reset_multis): Adjust whitespace and comments. + * src/winio.c (edit_draw): When an end is found but nothing is painted + (because the coloured part is horizontally scrolled off), nevertheless + set the multidata to CBEGINBEFORE. This fixes Savannah bug #46545. 2015-11-28 Benno Schulenberg <bensberg@justemail.net> * src/nano.c (main): Allow the user full control over the values of diff --git a/src/winio.c b/src/winio.c @@ -2585,6 +2585,9 @@ void edit_draw(filestruct *fileptr, const char *converted, int goto end_of_loop; } else if (md == CBEGINBEFORE) { regexec(tmpcolor->end, fileptr->data, 1, &endmatch, 0); + /* If the coloured part is scrolled off, skip it. */ + if (endmatch.rm_eo <= startpos) + goto end_of_loop; paintlen = actual_x(converted, strnlenpt(fileptr->data, endmatch.rm_eo) - start); mvwaddnstr(edit, line, 0, converted, paintlen); @@ -2649,9 +2652,12 @@ void edit_draw(filestruct *fileptr, const char *converted, int end_line = end_line->next; /* If no end was found, or it is too early, next step. */ - if (end_line == NULL || (end_line == fileptr && - endmatch.rm_eo <= startpos)) + if (end_line == NULL) + goto step_two; + if (end_line == fileptr && endmatch.rm_eo <= startpos) { + fileptr->multidata[tmpcolor->id] = CBEGINBEFORE; goto step_two; + } /* Now paint the start of fileptr. If the start of * fileptr is on a different line from the end,