]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.0129: Fix truncation of text_wrap 'wrap' virt text after EOL list char v9.1.0129
authorDylan Thacker-Smith <dylan.ah.smith@gmail.com>
Sat, 24 Feb 2024 09:17:11 +0000 (10:17 +0100)
committerChristian Brabandt <cb@256bit.org>
Sat, 24 Feb 2024 09:17:11 +0000 (10:17 +0100)
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 <zeertzjq@outlook.com>
Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/drawline.c
src/version.c

index 3499d39e77c959c78ebc27f35317ac5a7482b747..0bb7ed57d529b66b8fbd3d554c027699370c81ae 100644 (file)
@@ -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;
index 9b38a34964edadd25254e31de030091764678b9d..3ea94ee92a67ced1b2a4386e454ab849bfd1907d 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    129,
 /**/
     128,
 /**/