]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.1287: quickfix code can be further improved v9.1.1287
authorHirohito Higashi <h.east.727@gmail.com>
Mon, 7 Apr 2025 19:19:07 +0000 (21:19 +0200)
committerChristian Brabandt <cb@256bit.org>
Mon, 7 Apr 2025 19:19:07 +0000 (21:19 +0200)
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>
src/main.c
src/option.c
src/proto/quickfix.pro
src/quickfix.c
src/version.c

index a3caac8fb520b8eb8e665edfdcf7bfb283aca43f..9a862c4be9dcb43a76ddf7e88686769e58ef9fc7 100644 (file)
@@ -1026,10 +1026,10 @@ common_init_2(mparm_T *paramp)
 #endif
 
 #ifdef FEAT_QUICKFIX
-    // initialize global quickfix list
+    // initialize quickfix list
     // don't send an error message when memory allocation fails
     // do it when the user tries to access the quickfix list
-    qf_init_quickfix_stack();
+    qf_init_stack();
 #endif
 }
 
index 5c28c801f5607163a9a685abc117939190b741e6..cfdeb44e10bfff35b71a93459ef87c8a2c321c0e 100644 (file)
@@ -4762,7 +4762,7 @@ did_set_xhistory(optset_T *args)
     }
 
     if (is_p_chi)
-       err = qf_resize_quickfix_stack(*arg);
+       err = qf_resize_stack(*arg);
     else
        err = ll_resize_stack(curwin, *arg);
 
index 8102a8f1ae5b5c6215650749abb548f1e475bbd3..6cd7cfcc0441f2977dc796ad451224a0f4edab4a 100644 (file)
@@ -3,9 +3,9 @@ int qf_init(win_T *wp, char_u *efile, char_u *errorformat, int newlist, char_u *
 int qf_stack_get_bufnr(void);
 void qf_free_all(win_T *wp);
 void check_quickfix_busy(void);
-int qf_resize_quickfix_stack(int n);
+int qf_resize_stack(int n);
 int ll_resize_stack(win_T *wp, int n);
-int qf_init_quickfix_stack(void);
+void qf_init_stack(void);
 void copy_loclist_stack(win_T *from, win_T *to);
 void qf_jump(qf_info_T *qi, int dir, int errornr, int forceit);
 void qf_list(exarg_T *eap);
index 9722058e38d44d66c9f94870b3c6fde03869b403..decc01b413ef446939d73118af377d8a6c4d867b 100644 (file)
@@ -174,7 +174,7 @@ static callback_T qftf_cb;
 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 @@ qf_add_entry(
 }
 
 /*
- * 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 @@ ll_resize_stack(win_T *wp, int n)
        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 @@ qf_resize_stack(qf_info_T *qi, int n)
 }
 
 /*
- * 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_alloc_stack(qfltype_T qfltype, int n)
 {
     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 @@ set_errorlist(
        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')
     {
index 259fbc0e8505329200a9e88ad44f3c5ac8045b43..62b1cf770c90cb8af3abf99701570509c847a597 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1287,
 /**/
     1286,
 /**/