softwrap: suppress the guiding stripe on unaffected chunks
When the guiding stripe (when softwrapping) will be shown in a later chunk, it shouldn't be shown in the current chunk. This fixes https://savannah.gnu.org/bugs/?57654. Bug existed since --guidestripe was introduced, in version 4.0.master
parent
8835c0d486
commit
0b54785fe5
|
@ -60,6 +60,8 @@ static bool has_more = FALSE;
|
||||||
static bool is_shorter = TRUE;
|
static bool is_shorter = TRUE;
|
||||||
/* Whether a row's text is narrower than the screen's width. */
|
/* Whether a row's text is narrower than the screen's width. */
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
|
static size_t sequel_column = 0;
|
||||||
|
/* The starting column of the next chunk when softwrapping. */
|
||||||
static bool recording = FALSE;
|
static bool recording = FALSE;
|
||||||
/* Whether we are in the process of recording a macro. */
|
/* Whether we are in the process of recording a macro. */
|
||||||
static int *macro_buffer = NULL;
|
static int *macro_buffer = NULL;
|
||||||
|
@ -2670,6 +2672,7 @@ void draw_row(int row, const char *converted, linestruct *line, size_t from_col)
|
||||||
|
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
if (stripe_column > from_col && !inhelp &&
|
if (stripe_column > from_col && !inhelp &&
|
||||||
|
(sequel_column == 0 || stripe_column <= sequel_column) &&
|
||||||
stripe_column <= from_col + editwincols) {
|
stripe_column <= from_col + editwincols) {
|
||||||
ssize_t target_column = stripe_column - from_col - 1;
|
ssize_t target_column = stripe_column - from_col - 1;
|
||||||
size_t target_x = actual_x(converted, target_column);
|
size_t target_x = actual_x(converted, target_column);
|
||||||
|
@ -2831,6 +2834,8 @@ int update_softwrapped_line(linestruct *line)
|
||||||
|
|
||||||
to_col = get_softwrap_breakpoint(line->data, from_col, &end_of_line);
|
to_col = get_softwrap_breakpoint(line->data, from_col, &end_of_line);
|
||||||
|
|
||||||
|
sequel_column = (end_of_line) ? 0 : to_col;
|
||||||
|
|
||||||
/* Convert the chunk to its displayable form and draw it. */
|
/* Convert the chunk to its displayable form and draw it. */
|
||||||
converted = display_string(line->data, from_col, to_col - from_col,
|
converted = display_string(line->data, from_col, to_col - from_col,
|
||||||
TRUE, FALSE);
|
TRUE, FALSE);
|
||||||
|
|
Loading…
Reference in New Issue