summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDylan Thacker-Smith <dylan.ah.smith@gmail.com>2024-03-28 11:49:46 +0100
committerChristian Brabandt <cb@256bit.org>2024-03-28 11:51:10 +0100
commit1134fdd1b369119d0d6992e3120bb5f7c788b697 (patch)
tree7c1950fd1e4790b4f610b172261fd9b58ba2298e
parentfe0a76b2bca12b13982ad66bafadc0d6c1681d00 (diff)
patch 9.1.0223: code duplication in loop to add active text propertiesv9.1.0223
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>
-rw-r--r--src/drawline.c43
-rw-r--r--src/version.c2
2 files changed, 26 insertions, 19 deletions
diff --git a/src/drawline.c b/src/drawline.c
index 8ec9e5f280..81577be42a 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -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
+ int active;
+ textprop_T *tp = &text_props[text_prop_next];
+ if (tp->tp_col == MAXCOL)
+ {
+ 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
- || (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)
+ || (tp->tp_flags & TP_FLAG_ALIGN_BELOW);
+ }
+ }
+ else
{
- text_prop_idxs[text_props_active++] = text_prop_next;
+ 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;
}
diff --git a/src/version.c b/src/version.c
index 3fcbb99811..7176d67b06 100644
--- 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 */
/**/
+ 223,
+/**/
222,
/**/
221,