Mercurial > vim
changeset 34412:b67de41ae869 v9.1.0129
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 <dylan.ah.smith@gmail.com>
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 <zeertzjq@outlook.com>
Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 24 Feb 2024 10:30:05 +0100 |
parents | 7b6e286c89cb |
children | 7c13c892deab |
files | src/drawline.c src/version.c |
diffstat | 2 files changed, 7 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- 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;