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
master
Benno Schulenberg 2015-11-29 12:31:49 +00:00
parent 9e22e8b1b5
commit e19a16f0e6
2 changed files with 11 additions and 2 deletions

View File

@ -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

View File

@ -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,