mirror of
https://github.com/vim/vim
synced 2025-09-15 00:19:42 +00:00
patch 9.1.0223: code duplication in loop to add active text properties
Problem: There are two dense conditions with duplication that needs to be kept in sync between the while loop break condition and the condition to skip certain text properties. Solution: Refactor the loop by moving while loop conditions into the body of the while loop so they can be shared with skip conditions. `break` and an `active` variable are used to handle the outcome of these merged conditions. (Dylan Thacker-Smith) closes: #14307 Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
fe0a76b2bc
commit
b33b613308
@@ -2073,29 +2073,34 @@ win_line(
|
||||
--bcol;
|
||||
# endif
|
||||
// Add any text property that starts in this column.
|
||||
while (text_prop_next < text_prop_count
|
||||
&& (text_props[text_prop_next].tp_col == MAXCOL
|
||||
? (*ptr == NUL
|
||||
|| (bcol == 0
|
||||
&& (text_props[text_prop_next].tp_flags
|
||||
& TP_FLAG_ALIGN_ABOVE)))
|
||||
: bcol >= text_props[text_prop_next].tp_col - 1))
|
||||
while (text_prop_next < text_prop_count)
|
||||
{
|
||||
// With 'nowrap' and not in the first screen line only "below"
|
||||
// text prop can show.
|
||||
if (text_props[text_prop_next].tp_col == MAXCOL
|
||||
? (wp->w_p_wrap
|
||||
|| wlv.row == startrow
|
||||
|| (text_props[text_prop_next].tp_flags
|
||||
& TP_FLAG_ALIGN_BELOW)
|
||||
|| (bcol == 0
|
||||
&& (text_props[text_prop_next].tp_flags
|
||||
& TP_FLAG_ALIGN_ABOVE)))
|
||||
: bcol <= text_props[text_prop_next].tp_col - 1
|
||||
+ text_props[text_prop_next].tp_len)
|
||||
int active;
|
||||
textprop_T *tp = &text_props[text_prop_next];
|
||||
if (tp->tp_col == MAXCOL)
|
||||
{
|
||||
text_prop_idxs[text_props_active++] = text_prop_next;
|
||||
if (bcol == 0 && (tp->tp_flags & TP_FLAG_ALIGN_ABOVE))
|
||||
active = TRUE;
|
||||
else if (*ptr != NUL)
|
||||
break;
|
||||
else
|
||||
{
|
||||
// With 'nowrap' and not in the first screen line only "below"
|
||||
// text prop can show.
|
||||
active = wp->w_p_wrap
|
||||
|| wlv.row == startrow
|
||||
|| (tp->tp_flags & TP_FLAG_ALIGN_BELOW);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bcol < tp->tp_col - 1)
|
||||
break;
|
||||
active = bcol <= tp->tp_col - 1 + tp->tp_len;
|
||||
}
|
||||
|
||||
if (active)
|
||||
text_prop_idxs[text_props_active++] = text_prop_next;
|
||||
++text_prop_next;
|
||||
}
|
||||
|
||||
|
@@ -704,6 +704,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
223,
|
||||
/**/
|
||||
222,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user