patch 8.2.0500: using the same loop in many places
Problem: Using the same loop in many places.
Solution: Define more FOR_ALL macros. (Yegappan Lakshmanan, closes #5339)
diff --git a/src/sign.c b/src/sign.c
index 1964c83..fb7d569 100644
--- a/src/sign.c
+++ b/src/sign.c
@@ -57,6 +57,9 @@
# define SIGNCMD_LAST 6
};
+#define FOR_ALL_SIGNS(sp) \
+ for ((sp) = first_sign; (sp) != NULL; (sp) = (sp)->sn_next)
+
static hashtab_T sg_table; // sign group (signgroup_T) hashtable
static int next_sign_id = 1; // next sign id in the global group
@@ -294,7 +297,7 @@
{
sign_T *sp;
- for (sp = first_sign; sp != NULL; sp = sp->sn_next)
+ FOR_ALL_SIGNS(sp)
if (sp->sn_typenr == typenr)
return sp;
return NULL;
@@ -308,7 +311,7 @@
{
sign_T *sp;
- for (sp = first_sign; sp != NULL; sp = sp->sn_next)
+ FOR_ALL_SIGNS(sp)
if (sp->sn_typenr == typenr)
return sp->sn_name;
return (char_u *)_("[Deleted]");
@@ -880,7 +883,7 @@
if (sp_prev != NULL)
*sp_prev = NULL;
- for (sp = first_sign; sp != NULL; sp = sp->sn_next)
+ FOR_ALL_SIGNS(sp)
{
if (STRCMP(sp->sn_name, name) == 0)
break;
@@ -1153,7 +1156,7 @@
if (sign_group != NULL && (*sign_group == '*' || *sign_group == '\0'))
return FAIL;
- for (sp = first_sign; sp != NULL; sp = sp->sn_next)
+ FOR_ALL_SIGNS(sp)
if (STRCMP(sp->sn_name, sign_name) == 0)
break;
if (sp == NULL)
@@ -1830,7 +1833,7 @@
{
sign_T *sp;
- for (sp = first_sign; sp != NULL; sp = sp->sn_next)
+ FOR_ALL_SIGNS(sp)
if (sp->sn_icon != NULL)
sp->sn_image = gui_mch_register_sign(sp->sn_icon);
}
@@ -1911,7 +1914,7 @@
{
sign_T *sp;
- for (sp = first_sign; sp != NULL; sp = sp->sn_next)
+ FOR_ALL_SIGNS(sp)
if (sp->sn_typenr == typenr)
return sp->sn_image;
return NULL;
@@ -1950,7 +1953,7 @@
// Complete with name of signs already defined
current_idx = 0;
- for (sp = first_sign; sp != NULL; sp = sp->sn_next)
+ FOR_ALL_SIGNS(sp)
if (current_idx++ == idx)
return sp->sn_name;
return NULL;
@@ -2212,7 +2215,7 @@
listitem_T *li;
int retval;
- for (li = l->lv_first; li != NULL; li = li->li_next)
+ FOR_ALL_LIST_ITEMS(l, li)
{
retval = -1;
if (li->li_tv.v_type == VAR_DICT)
@@ -2547,7 +2550,7 @@
}
// Process the List of sign attributes
- for (li = argvars[0].vval.v_list->lv_first; li != NULL; li = li->li_next)
+ FOR_ALL_LIST_ITEMS(argvars[0].vval.v_list, li)
{
sign_id = -1;
if (li->li_tv.v_type == VAR_DICT)
@@ -2569,7 +2572,7 @@
listitem_T *li;
int retval;
- for (li = l->lv_first; li != NULL; li = li->li_next)
+ FOR_ALL_LIST_ITEMS(l, li)
{
retval = -1;
name = tv_get_string_chk(&li->li_tv);
@@ -2765,7 +2768,7 @@
return;
}
- for (li = argvars[0].vval.v_list->lv_first; li != NULL; li = li->li_next)
+ FOR_ALL_LIST_ITEMS(argvars[0].vval.v_list, li)
{
retval = -1;
if (li->li_tv.v_type == VAR_DICT)