summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1062
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1062')
-rw-r--r--data/vim/patches/8.1.1062620
1 files changed, 0 insertions, 620 deletions
diff --git a/data/vim/patches/8.1.1062 b/data/vim/patches/8.1.1062
deleted file mode 100644
index f3d34777e..000000000
--- a/data/vim/patches/8.1.1062
+++ /dev/null
@@ -1,620 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.1062
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 8.1.1062
-Problem: Quickfix code is repeated.
-Solution: Define FOR_ALL_QFL_ITEMS(). Move some code to separate functions.
- (Yegappan Lakshmanan, closes #4166)
-Files: src/quickfix.c
-
-
-*** ../vim-8.1.1061/src/quickfix.c 2019-03-22 14:16:02.877160892 +0100
---- src/quickfix.c 2019-03-28 20:29:41.737770187 +0100
-***************
-*** 195,200 ****
---- 195,205 ----
- */
- #define GET_LOC_LIST(wp) (IS_LL_WINDOW(wp) ? wp->w_llist_ref : wp->w_llist)
-
-+ #define FOR_ALL_QFL_ITEMS(qfl, qfp, i) \
-+ for (i = 0, qfp = qfl->qf_start; \
-+ !got_int && i < qfl->qf_count && qfp != NULL; \
-+ ++i, qfp = qfp->qf_next)
-+
- /*
- * Looking up a buffer can be slow if there are many. Remember the last one
- * to make this a lot faster if there are multiple matches in the same file.
-***************
-*** 2148,2156 ****
- qfline_T *prevp;
-
- // copy all the location entries in this list
-! for (i = 0, from_qfp = from_qfl->qf_start;
-! i < from_qfl->qf_count && from_qfp != NULL;
-! ++i, from_qfp = from_qfp->qf_next)
- {
- if (qf_add_entry(to_qfl,
- NULL,
---- 2153,2159 ----
- qfline_T *prevp;
-
- // copy all the location entries in this list
-! FOR_ALL_QFL_ITEMS(from_qfl, from_qfp, i)
- {
- if (qf_add_entry(to_qfl,
- NULL,
-***************
-*** 2544,2552 ****
- int i;
-
- // Search for the entry in the current list
-! for (i = 0, qfp = qfl->qf_start; i < qfl->qf_count;
-! ++i, qfp = qfp->qf_next)
-! if (qfp == NULL || qfp == qf_ptr)
- break;
-
- if (i == qfl->qf_count) // Entry is not found
---- 2547,2554 ----
- int i;
-
- // Search for the entry in the current list
-! FOR_ALL_QFL_ITEMS(qfl, qfp, i)
-! if (qfp == qf_ptr)
- break;
-
- if (i == qfl->qf_count) // Entry is not found
-***************
-*** 3792,3800 ****
- qf_list_T *qfl = qf_get_list(qi, idx);
-
- if (!qf_list_empty(qfl))
-! for (i = 0, qfp = qfl->qf_start;
-! i < qfl->qf_count && qfp != NULL;
-! ++i, qfp = qfp->qf_next)
- if (qfp->qf_fnum == curbuf->b_fnum)
- {
- found_one = TRUE;
---- 3794,3800 ----
- qf_list_T *qfl = qf_get_list(qi, idx);
-
- if (!qf_list_empty(qfl))
-! FOR_ALL_QFL_ITEMS(qfl, qfp, i)
- if (qfp->qf_fnum == curbuf->b_fnum)
- {
- found_one = TRUE;
-***************
-*** 4819,4826 ****
- }
-
- qfl = qf_get_curlist(qi);
-! for (i = 0, qfp = qfl->qf_start; i < qfl->qf_count && qfp != NULL;
-! ++i, qfp = qfp->qf_next)
- {
- if (qfp->qf_valid)
- {
---- 4819,4825 ----
- }
-
- qfl = qf_get_curlist(qi);
-! FOR_ALL_QFL_ITEMS(qfl, qfp, i)
- {
- if (qfp->qf_valid)
- {
-***************
-*** 5056,5061 ****
---- 5055,5078 ----
- }
-
- /*
-+ * Return the autocmd name for the :cfile Ex commands
-+ */
-+ static char_u *
-+ cfile_get_auname(cmdidx_T cmdidx)
-+ {
-+ switch (cmdidx)
-+ {
-+ case CMD_cfile: return (char_u *)"cfile";
-+ case CMD_cgetfile: return (char_u *)"cgetfile";
-+ case CMD_caddfile: return (char_u *)"caddfile";
-+ case CMD_lfile: return (char_u *)"lfile";
-+ case CMD_lgetfile: return (char_u *)"lgetfile";
-+ case CMD_laddfile: return (char_u *)"laddfile";
-+ default: return NULL;
-+ }
-+ }
-+
-+ /*
- * ":cfile"/":cgetfile"/":caddfile" commands.
- * ":lfile"/":lgetfile"/":laddfile" commands.
- */
-***************
-*** 5069,5086 ****
- int_u save_qfid = 0; // init for gcc
- int res;
-
-! switch (eap->cmdidx)
-! {
-! case CMD_cfile: au_name = (char_u *)"cfile"; break;
-! case CMD_cgetfile: au_name = (char_u *)"cgetfile"; break;
-! case CMD_caddfile: au_name = (char_u *)"caddfile"; break;
-! case CMD_lfile: au_name = (char_u *)"lfile"; break;
-! case CMD_lgetfile: au_name = (char_u *)"lgetfile"; break;
-! case CMD_laddfile: au_name = (char_u *)"laddfile"; break;
-! default: break;
-! }
- if (au_name != NULL)
- apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, NULL, FALSE, curbuf);
- enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
- #ifdef FEAT_BROWSE
- if (cmdmod.browse)
---- 5086,5095 ----
- int_u save_qfid = 0; // init for gcc
- int res;
-
-! au_name = cfile_get_auname(eap->cmdidx);
- if (au_name != NULL)
- apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, NULL, FALSE, curbuf);
-+
- enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
- #ifdef FEAT_BROWSE
- if (cmdmod.browse)
-***************
-*** 5832,5837 ****
---- 5841,5884 ----
-
- #if defined(FEAT_EVAL) || defined(PROTO)
- /*
-+ * Copy the specified quickfix entry items into a new dict and appened the dict
-+ * to 'list'. Returns OK on success.
-+ */
-+ static int
-+ get_qfline_items(qfline_T *qfp, list_T *list)
-+ {
-+ int bufnum;
-+ dict_T *dict;
-+ char_u buf[2];
-+
-+ // Handle entries with a non-existing buffer number.
-+ bufnum = qfp->qf_fnum;
-+ if (bufnum != 0 && (buflist_findnr(bufnum) == NULL))
-+ bufnum = 0;
-+
-+ if ((dict = dict_alloc()) == NULL)
-+ return FAIL;
-+ if (list_append_dict(list, dict) == FAIL)
-+ return FAIL;
-+
-+ buf[0] = qfp->qf_type;
-+ buf[1] = NUL;
-+ if (dict_add_number(dict, "bufnr", (long)bufnum) == FAIL
-+ || dict_add_number(dict, "lnum", (long)qfp->qf_lnum) == FAIL
-+ || dict_add_number(dict, "col", (long)qfp->qf_col) == FAIL
-+ || dict_add_number(dict, "vcol", (long)qfp->qf_viscol) == FAIL
-+ || dict_add_number(dict, "nr", (long)qfp->qf_nr) == FAIL
-+ || dict_add_string(dict, "module", qfp->qf_module) == FAIL
-+ || dict_add_string(dict, "pattern", qfp->qf_pattern) == FAIL
-+ || dict_add_string(dict, "text", qfp->qf_text) == FAIL
-+ || dict_add_string(dict, "type", buf) == FAIL
-+ || dict_add_number(dict, "valid", (long)qfp->qf_valid) == FAIL)
-+ return FAIL;
-+
-+ return OK;
-+ }
-+
-+ /*
- * Add each quickfix error to list "list" as a dictionary.
- * If qf_idx is -1, use the current list. Otherwise, use the specified list.
- */
-***************
-*** 5840,5850 ****
- {
- qf_info_T *qi = qi_arg;
- qf_list_T *qfl;
-- dict_T *dict;
-- char_u buf[2];
- qfline_T *qfp;
- int i;
-- int bufnum;
-
- if (qi == NULL)
- {
---- 5887,5894 ----
-***************
-*** 5867,5903 ****
- if (qf_list_empty(qfl))
- return FAIL;
-
-! qfp = qfl->qf_start;
-! for (i = 1; !got_int && i <= qfl->qf_count; ++i)
- {
-! // Handle entries with a non-existing buffer number.
-! bufnum = qfp->qf_fnum;
-! if (bufnum != 0 && (buflist_findnr(bufnum) == NULL))
-! bufnum = 0;
-!
-! if ((dict = dict_alloc()) == NULL)
- return FAIL;
-- if (list_append_dict(list, dict) == FAIL)
-- return FAIL;
--
-- buf[0] = qfp->qf_type;
-- buf[1] = NUL;
-- if ( dict_add_number(dict, "bufnr", (long)bufnum) == FAIL
-- || dict_add_number(dict, "lnum", (long)qfp->qf_lnum) == FAIL
-- || dict_add_number(dict, "col", (long)qfp->qf_col) == FAIL
-- || dict_add_number(dict, "vcol", (long)qfp->qf_viscol) == FAIL
-- || dict_add_number(dict, "nr", (long)qfp->qf_nr) == FAIL
-- || dict_add_string(dict, "module", qfp->qf_module) == FAIL
-- || dict_add_string(dict, "pattern", qfp->qf_pattern) == FAIL
-- || dict_add_string(dict, "text", qfp->qf_text) == FAIL
-- || dict_add_string(dict, "type", buf) == FAIL
-- || dict_add_number(dict, "valid", (long)qfp->qf_valid) == FAIL)
-- return FAIL;
--
-- qfp = qfp->qf_next;
-- if (qfp == NULL)
-- break;
- }
- return OK;
- }
-
---- 5911,5922 ----
- if (qf_list_empty(qfl))
- return FAIL;
-
-! FOR_ALL_QFL_ITEMS(qfl, qfp, i)
- {
-! if (get_qfline_items(qfp, list) == FAIL)
- return FAIL;
- }
-+
- return OK;
- }
-
-***************
-*** 6842,6847 ****
---- 6861,6934 ----
- #endif
-
- /*
-+ * Return the autocmd name for the :cbuffer Ex commands
-+ */
-+ static char_u *
-+ cbuffer_get_auname(cmdidx_T cmdidx)
-+ {
-+ switch (cmdidx)
-+ {
-+ case CMD_cbuffer: return (char_u *)"cbuffer";
-+ case CMD_cgetbuffer: return (char_u *)"cgetbuffer";
-+ case CMD_caddbuffer: return (char_u *)"caddbuffer";
-+ case CMD_lbuffer: return (char_u *)"lbuffer";
-+ case CMD_lgetbuffer: return (char_u *)"lgetbuffer";
-+ case CMD_laddbuffer: return (char_u *)"laddbuffer";
-+ default: return NULL;
-+ }
-+ }
-+
-+ /*
-+ * Process and validate the arguments passed to the :cbuffer, :caddbuffer,
-+ * :cgetbuffer, :lbuffer, :laddbuffer, :lgetbuffer Ex commands.
-+ */
-+ static int
-+ cbuffer_process_args(
-+ exarg_T *eap,
-+ buf_T **bufp,
-+ linenr_T *line1,
-+ linenr_T *line2)
-+ {
-+ buf_T *buf = NULL;
-+
-+ if (*eap->arg == NUL)
-+ buf = curbuf;
-+ else if (*skipwhite(skipdigits(eap->arg)) == NUL)
-+ buf = buflist_findnr(atoi((char *)eap->arg));
-+
-+ if (buf == NULL)
-+ {
-+ emsg(_(e_invarg));
-+ return FAIL;
-+ }
-+
-+ if (buf->b_ml.ml_mfp == NULL)
-+ {
-+ emsg(_("E681: Buffer is not loaded"));
-+ return FAIL;
-+ }
-+
-+ if (eap->addr_count == 0)
-+ {
-+ eap->line1 = 1;
-+ eap->line2 = buf->b_ml.ml_line_count;
-+ }
-+
-+ if (eap->line1 < 1 || eap->line1 > buf->b_ml.ml_line_count
-+ || eap->line2 < 1 || eap->line2 > buf->b_ml.ml_line_count)
-+ {
-+ emsg(_(e_invrange));
-+ return FAIL;
-+ }
-+
-+ *line1 = eap->line1;
-+ *line2 = eap->line2;
-+ *bufp = buf;
-+
-+ return OK;
-+ }
-+
-+ /*
- * ":[range]cbuffer [bufnr]" command.
- * ":[range]caddbuffer [bufnr]" command.
- * ":[range]cgetbuffer [bufnr]" command.
-***************
-*** 6858,6876 ****
- int res;
- int_u save_qfid;
- win_T *wp = NULL;
-
-! switch (eap->cmdidx)
-! {
-! case CMD_cbuffer: au_name = (char_u *)"cbuffer"; break;
-! case CMD_cgetbuffer: au_name = (char_u *)"cgetbuffer"; break;
-! case CMD_caddbuffer: au_name = (char_u *)"caddbuffer"; break;
-! case CMD_lbuffer: au_name = (char_u *)"lbuffer"; break;
-! case CMD_lgetbuffer: au_name = (char_u *)"lgetbuffer"; break;
-! case CMD_laddbuffer: au_name = (char_u *)"laddbuffer"; break;
-! default: break;
-! }
- if (au_name != NULL && apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
-! curbuf->b_fname, TRUE, curbuf))
- {
- #ifdef FEAT_EVAL
- if (aborting())
---- 6945,6957 ----
- int res;
- int_u save_qfid;
- win_T *wp = NULL;
-+ char_u *qf_title;
-+ linenr_T line1;
-+ linenr_T line2;
-
-! au_name = cbuffer_get_auname(eap->cmdidx);
- if (au_name != NULL && apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
-! curbuf->b_fname, TRUE, curbuf))
- {
- #ifdef FEAT_EVAL
- if (aborting())
-***************
-*** 6887,6965 ****
- wp = curwin;
- }
-
-! if (*eap->arg == NUL)
-! buf = curbuf;
-! else if (*skipwhite(skipdigits(eap->arg)) == NUL)
-! buf = buflist_findnr(atoi((char *)eap->arg));
-! if (buf == NULL)
-! emsg(_(e_invarg));
-! else if (buf->b_ml.ml_mfp == NULL)
-! emsg(_("E681: Buffer is not loaded"));
-! else
-! {
-! if (eap->addr_count == 0)
-! {
-! eap->line1 = 1;
-! eap->line2 = buf->b_ml.ml_line_count;
-! }
-! if (eap->line1 < 1 || eap->line1 > buf->b_ml.ml_line_count
-! || eap->line2 < 1 || eap->line2 > buf->b_ml.ml_line_count)
-! emsg(_(e_invrange));
-! else
-! {
-! char_u *qf_title = qf_cmdtitle(*eap->cmdlinep);
-
-! if (buf->b_sfname)
-! {
-! vim_snprintf((char *)IObuff, IOSIZE, "%s (%s)",
-! (char *)qf_title, (char *)buf->b_sfname);
-! qf_title = IObuff;
-! }
-
-! incr_quickfix_busy();
-
-! res = qf_init_ext(qi, qi->qf_curlist, NULL, buf, NULL, p_efm,
-! (eap->cmdidx != CMD_caddbuffer
-! && eap->cmdidx != CMD_laddbuffer),
-! eap->line1, eap->line2,
-! qf_title, NULL);
-! if (qf_stack_empty(qi))
-! {
-! decr_quickfix_busy();
-! return;
-! }
-! if (res >= 0)
-! qf_list_changed(qf_get_curlist(qi));
-
-! // Remember the current quickfix list identifier, so that we can
-! // check for autocommands changing the current quickfix list.
-! save_qfid = qf_get_curlist(qi)->qf_id;
-! if (au_name != NULL)
-! {
-! buf_T *curbuf_old = curbuf;
-
-! apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
-! curbuf->b_fname, TRUE, curbuf);
-! if (curbuf != curbuf_old)
-! // Autocommands changed buffer, don't jump now, "qi" may
-! // be invalid.
-! res = 0;
-! }
-! // Jump to the first error for a new list and if autocmds didn't
-! // free the list.
-! if (res > 0 && (eap->cmdidx == CMD_cbuffer ||
-! eap->cmdidx == CMD_lbuffer)
-! && qflist_valid(wp, save_qfid))
-! // display the first error
-! qf_jump_first(qi, save_qfid, eap->forceit);
-
-! decr_quickfix_busy();
-! }
- }
- }
-
- #if defined(FEAT_EVAL) || defined(PROTO)
- /*
- * ":cexpr {expr}", ":cgetexpr {expr}", ":caddexpr {expr}" command.
- * ":lexpr {expr}", ":lgetexpr {expr}", ":laddexpr {expr}" command.
- */
---- 6968,7045 ----
- wp = curwin;
- }
-
-! if (cbuffer_process_args(eap, &buf, &line1, &line2) == FAIL)
-! return;
-
-! qf_title = qf_cmdtitle(*eap->cmdlinep);
-
-! if (buf->b_sfname)
-! {
-! vim_snprintf((char *)IObuff, IOSIZE, "%s (%s)",
-! (char *)qf_title, (char *)buf->b_sfname);
-! qf_title = IObuff;
-! }
-
-! incr_quickfix_busy();
-
-! res = qf_init_ext(qi, qi->qf_curlist, NULL, buf, NULL, p_efm,
-! (eap->cmdidx != CMD_caddbuffer
-! && eap->cmdidx != CMD_laddbuffer),
-! line1, line2,
-! qf_title, NULL);
-! if (qf_stack_empty(qi))
-! {
-! decr_quickfix_busy();
-! return;
-! }
-! if (res >= 0)
-! qf_list_changed(qf_get_curlist(qi));
-
-! // Remember the current quickfix list identifier, so that we can
-! // check for autocommands changing the current quickfix list.
-! save_qfid = qf_get_curlist(qi)->qf_id;
-! if (au_name != NULL)
-! {
-! buf_T *curbuf_old = curbuf;
-
-! apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, curbuf->b_fname,
-! TRUE, curbuf);
-! if (curbuf != curbuf_old)
-! // Autocommands changed buffer, don't jump now, "qi" may
-! // be invalid.
-! res = 0;
- }
-+ // Jump to the first error for a new list and if autocmds didn't
-+ // free the list.
-+ if (res > 0 && (eap->cmdidx == CMD_cbuffer ||
-+ eap->cmdidx == CMD_lbuffer)
-+ && qflist_valid(wp, save_qfid))
-+ // display the first error
-+ qf_jump_first(qi, save_qfid, eap->forceit);
-+
-+ decr_quickfix_busy();
- }
-
- #if defined(FEAT_EVAL) || defined(PROTO)
- /*
-+ * Return the autocmd name for the :cexpr Ex commands.
-+ */
-+ static char_u *
-+ cexpr_get_auname(cmdidx_T cmdidx)
-+ {
-+ switch (cmdidx)
-+ {
-+ case CMD_cexpr: return (char_u *)"cexpr";
-+ case CMD_cgetexpr: return (char_u *)"cgetexpr";
-+ case CMD_caddexpr: return (char_u *)"caddexpr";
-+ case CMD_lexpr: return (char_u *)"lexpr";
-+ case CMD_lgetexpr: return (char_u *)"lgetexpr";
-+ case CMD_laddexpr: return (char_u *)"laddexpr";
-+ default: return NULL;
-+ }
-+ }
-+
-+ /*
- * ":cexpr {expr}", ":cgetexpr {expr}", ":caddexpr {expr}" command.
- * ":lexpr {expr}", ":lgetexpr {expr}", ":laddexpr {expr}" command.
- */
-***************
-*** 6973,6988 ****
- int_u save_qfid;
- win_T *wp = NULL;
-
-! switch (eap->cmdidx)
-! {
-! case CMD_cexpr: au_name = (char_u *)"cexpr"; break;
-! case CMD_cgetexpr: au_name = (char_u *)"cgetexpr"; break;
-! case CMD_caddexpr: au_name = (char_u *)"caddexpr"; break;
-! case CMD_lexpr: au_name = (char_u *)"lexpr"; break;
-! case CMD_lgetexpr: au_name = (char_u *)"lgetexpr"; break;
-! case CMD_laddexpr: au_name = (char_u *)"laddexpr"; break;
-! default: break;
-! }
- if (au_name != NULL && apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
- curbuf->b_fname, TRUE, curbuf))
- {
---- 7053,7059 ----
- int_u save_qfid;
- win_T *wp = NULL;
-
-! au_name = cexpr_get_auname(eap->cmdidx);
- if (au_name != NULL && apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
- curbuf->b_fname, TRUE, curbuf))
- {
-***************
-*** 7257,7266 ****
- #endif
- }
-
-- // Make 'cpoptions' empty, the 'l' flag should not be used here.
-- save_cpo = p_cpo;
-- p_cpo = empty_option;
--
- if (is_loclist_cmd(eap->cmdidx))
- {
- qi = hgr_get_ll(&new_qi);
---- 7328,7333 ----
-***************
-*** 7268,7273 ****
---- 7335,7344 ----
- return;
- }
-
-+ // Make 'cpoptions' empty, the 'l' flag should not be used here.
-+ save_cpo = p_cpo;
-+ p_cpo = empty_option;
-+
- incr_quickfix_busy();
-
- #ifdef FEAT_MULTI_LANG
-*** ../vim-8.1.1061/src/version.c 2019-03-27 22:53:49.919226659 +0100
---- src/version.c 2019-03-28 20:30:09.001593202 +0100
-***************
-*** 777,778 ****
---- 777,780 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 1062,
- /**/
-
---
-The coffee just wasn't strong enough to defend itself -- Tom Waits
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
-/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///