mirror of
https://github.com/vim/vim.git
synced 2025-10-17 07:44:28 -04:00
patch 9.0.2144: Text properties causes wrong line wrapping
Problem: Text properties causes wrong line wrapping to be drawn. Solution: Find the index of the last text property that inserts text. closes: #13611 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
c089c3816b
commit
4e26a9aab6
@@ -1149,6 +1149,7 @@ win_line(
|
||||
#ifdef FEAT_PROP_POPUP
|
||||
int did_line = FALSE; // set to TRUE when line text done
|
||||
int text_prop_count;
|
||||
int last_textprop_text_idx = -1;
|
||||
int text_prop_next = 0; // next text property to use
|
||||
textprop_T *text_props = NULL;
|
||||
int *text_prop_idxs = NULL;
|
||||
@@ -1616,6 +1617,11 @@ win_line(
|
||||
area_highlighting = TRUE;
|
||||
extra_check = TRUE;
|
||||
|
||||
/* Find the last text property that inserts text. */
|
||||
for (int i = 0; i < text_prop_count; ++i)
|
||||
if (text_props[i].tp_id < 0)
|
||||
last_textprop_text_idx = i;
|
||||
|
||||
// When skipping virtual text the props need to be sorted. The
|
||||
// order is reversed!
|
||||
if (lnum == wp->w_topline && wp->w_skipcol > 0)
|
||||
@@ -3791,7 +3797,7 @@ win_line(
|
||||
|| (wlv.n_extra > 0 && (wlv.c_extra != NUL
|
||||
|| *wlv.p_extra != NUL))
|
||||
#ifdef FEAT_PROP_POPUP
|
||||
|| text_prop_next < text_prop_count
|
||||
|| text_prop_next <= last_textprop_text_idx
|
||||
#endif
|
||||
))
|
||||
{
|
||||
@@ -4083,7 +4089,7 @@ win_line(
|
||||
#endif
|
||||
#ifdef FEAT_PROP_POPUP
|
||||
|| text_prop_above || text_prop_follows
|
||||
|| text_prop_next < text_prop_count
|
||||
|| text_prop_next <= last_textprop_text_idx
|
||||
#endif
|
||||
|| (wp->w_p_list && wp->w_lcs_chars.eol != NUL
|
||||
&& wlv.p_extra != at_end_str)
|
||||
|
Reference in New Issue
Block a user