# HG changeset patch # User Christian Brabandt # Date 1708767005 -3600 # Node ID b67de41ae869f3c412f302603f1c13d931567e0e # Parent 7b6e286c89cbe2fa91016634ba7f2530bf5b7acb patch 9.1.0129: Fix truncation of text_wrap 'wrap' virt text after EOL list char Commit: https://github.com/vim/vim/commit/f548ae7b6357c7934411df243bc987800c9b76d1 Author: Dylan Thacker-Smith Date: Sat Feb 24 10:17:11 2024 +0100 patch 9.1.0129: Fix truncation of text_wrap 'wrap' virt text after EOL list char Problem: Virtual text with text_wrap 'wrap' was effectively being truncated by a break conditional on the EOL list character being added to the screen line. (BigPeet) Solution: Remove the condition that was leading to the early break and instead fix a similar but incorrectly written outer condition that checks if there is more to add at the end of the screen line. (Dylan Thacker-Smith) Also, related: - update comment in win_line() - remove no longer necessary at_end_str variable in win_line() fixes: #12725 closes: #14079 Co-authored-by: zeertzjq Signed-off-by: Dylan Thacker-Smith Signed-off-by: Christian Brabandt diff --git a/src/drawline.c b/src/drawline.c --- a/src/drawline.c +++ b/src/drawline.c @@ -1121,8 +1121,6 @@ win_line( #if defined(FEAT_LINEBREAK) && defined(FEAT_PROP_POPUP) int in_linebreak = FALSE; // n_extra set for showing linebreak #endif - static char_u *at_end_str = (char_u *)""; // used for p_extra when - // displaying eol at end-of-line int lcs_eol_one = wp->w_lcs_chars.eol; // eol until it's been used int lcs_prec_todo = wp->w_lcs_chars.prec; // prec until it's been used @@ -3304,7 +3302,7 @@ win_line( if (!(area_highlighting && virtual_active() && wlv.tocol != MAXCOL && wlv.vcol < wlv.tocol)) - wlv.p_extra = at_end_str; + wlv.p_extra = (char_u *)""; wlv.n_extra = 0; } if (wp->w_p_list && wp->w_lcs_chars.eol > 0) @@ -4116,7 +4114,7 @@ win_line( || text_prop_next <= last_textprop_text_idx #endif || (wp->w_p_list && wp->w_lcs_chars.eol != NUL - && wlv.p_extra != at_end_str) + && lcs_eol_one != -1) || (wlv.n_extra != 0 && (wlv.c_extra != NUL || *wlv.p_extra != NUL))) ) @@ -4133,18 +4131,14 @@ win_line( ++wlv.row; ++wlv.screen_row; - // When not wrapping and finished diff lines, or when displayed - // '$' and highlighting until last column, break here. - if (((!wp->w_p_wrap + // When not wrapping and finished diff lines, break here. + if (!wp->w_p_wrap #ifdef FEAT_DIFF && wlv.filler_todo <= 0 #endif #ifdef FEAT_PROP_POPUP && !text_prop_above -#endif - ) || lcs_eol_one == -1) -#ifdef FEAT_PROP_POPUP - && !text_prop_follows + && !text_prop_follows #endif ) break; diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 129, +/**/ 128, /**/ 127,