patch 9.1.1287: quickfix code can be further improved
Problem: quickfix code can be further improved (after v9.1.1283)
Solution: slightly refactor quickfix.c (Hirohito Higashi)
- remove error message output
- adjust comments
- rename functions:
- qf_init_quickfix_stack() --> qf_init_stack()
- qf_resize_quickfix_stack() --> qf_resize_stack()
- qf_resize_stack() --> qf_resize_stack_base()
Now qf_alloc_stack() can handle both quickfix/location lists.
closes: #17068
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/quickfix.c b/src/quickfix.c
index 9722058..decc01b 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -174,7 +174,7 @@
static void qf_pop_stack(qf_info_T *qi, int adjust);
static void qf_new_list(qf_info_T *qi, char_u *qf_title);
static int qf_add_entry(qf_list_T *qfl, char_u *dir, char_u *fname, char_u *module, int bufnum, char_u *mesg, long lnum, long end_lnum, int col, int end_col, int vis_col, char_u *pattern, int nr, int type, typval_T *user_data, int valid);
-static int qf_resize_stack(qf_info_T *qi, int n);
+static int qf_resize_stack_base(qf_info_T *qi, int n);
static void qf_sync_llw_to_win(win_T *llw);
static void qf_sync_win_to_llw(win_T *pwp);
static qf_info_T *qf_alloc_stack(qfltype_T qfltype, int n);
@@ -2343,19 +2343,16 @@
}
/*
- * Resize global quickfix stack to be able to hold n amount of lists.
+ * Resize quickfix stack to be able to hold n amount of lists.
* returns FAIL on failure and OK on success.
*/
int
-qf_resize_quickfix_stack(int n)
+qf_resize_stack(int n)
{
if (ql_info == NULL)
- {
- emsg(_(e_no_quickfix_stack));
return FAIL;
- }
- if (qf_resize_stack(ql_info, n) == FAIL)
+ if (qf_resize_stack_base(ql_info, n) == FAIL)
return FAIL;
return OK;
@@ -2376,22 +2373,28 @@
qf_sync_win_to_llw(wp);
qf_info_T *qi = ll_get_or_alloc_list(wp);
+ if (qi == NULL)
+ return FAIL;
- if (qf_resize_stack(qi, n) == FAIL)
+ if (qf_resize_stack_base(qi, n) == FAIL)
return FAIL;
return OK;
}
/*
- * Resize quickfix stack to be able to hold n amount of quickfix lists.
+ * Resize quickfix/location lists stack to be able to hold n amount of lists.
* Returns FAIL on failure and OK on success.
*/
static int
-qf_resize_stack(qf_info_T *qi, int n)
+qf_resize_stack_base(qf_info_T *qi, int n)
{
qf_list_T *new;
int amount_to_rm = 0, i;
+
+ if (qi == NULL)
+ return FAIL;
+
size_t lsz = sizeof(*qi->qf_lists);
if (n == qi->qf_maxcount)
@@ -2424,21 +2427,12 @@
}
/*
- * Initialize global quickfix list, should only be called once.
- * Returns FAIL on failure and OK on success.
+ * Initialize quickfix list, should only be called once.
*/
- int
-qf_init_quickfix_stack(void)
+ void
+qf_init_stack(void)
{
- ql_info_actual.qf_lists = qf_alloc_list_stack(p_chi);
-
- if (ql_info_actual.qf_lists == NULL)
- return FAIL;
-
- ql_info = &ql_info_actual;
- ql_info->qfl_type = QFLT_QUICKFIX;
- ql_info->qf_maxcount = p_chi;
- return OK;
+ ql_info = qf_alloc_stack(QFLT_QUICKFIX, p_chi);
}
/*
@@ -2480,22 +2474,24 @@
{
qf_info_T *qi;
- qi = ALLOC_CLEAR_ONE_ID(qf_info_T, aid_qf_qfinfo);
- if (qi == NULL)
- return NULL;
-
- qi->qf_refcount++;
+ if (qfltype == QFLT_QUICKFIX)
+ qi = &ql_info_actual;
+ else
+ {
+ qi = ALLOC_CLEAR_ONE_ID(qf_info_T, aid_qf_qfinfo);
+ if (qi == NULL)
+ return NULL;
+ qi->qf_refcount++;
+ }
qi->qfl_type = qfltype;
qi->qf_bufnr = INVALID_QFBUFNR;
-
qi->qf_lists = qf_alloc_list_stack(n);
-
if (qi->qf_lists == NULL)
{
- vim_free(qi);
+ if (qfltype != QFLT_QUICKFIX)
+ vim_free(qi);
return NULL;
}
-
qi->qf_maxcount = n;
return qi;
@@ -8259,20 +8255,15 @@
char_u *title,
dict_T *what)
{
- qf_info_T *qi = ql_info;
+ qf_info_T *qi;
int retval = OK;
if (wp != NULL)
- {
qi = ll_get_or_alloc_list(wp);
- if (qi == NULL)
- return FAIL;
- }
- else if (qi == NULL)
- {
- emsg(_(e_no_quickfix_stack));
+ else
+ qi = ql_info;
+ if (qi == NULL)
return FAIL;
- }
if (action == 'f')
{