summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0434
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0434')
-rw-r--r--data/vim/patches/8.1.0434335
1 files changed, 335 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0434 b/data/vim/patches/8.1.0434
new file mode 100644
index 000000000..4fd7d7394
--- /dev/null
+++ b/data/vim/patches/8.1.0434
@@ -0,0 +1,335 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0434
+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.0434
+Problem: copy_loclist() is too long.
+Solution: Split in multiple functions. (Yegappan Lakshmanan)
+Files: src/proto/quickfix.pro, src/quickfix.c, src/window.c
+
+
+*** ../vim-8.1.0433/src/proto/quickfix.pro 2018-07-25 22:36:48.987518583 +0200
+--- src/proto/quickfix.pro 2018-09-25 22:06:03.183095511 +0200
+***************
+*** 1,7 ****
+ /* quickfix.c */
+ int qf_init(win_T *wp, char_u *efile, char_u *errorformat, int newlist, char_u *qf_title, char_u *enc);
+ void qf_free_all(win_T *wp);
+! void copy_loclist(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);
+ void qf_age(exarg_T *eap);
+--- 1,7 ----
+ /* quickfix.c */
+ int qf_init(win_T *wp, char_u *efile, char_u *errorformat, int newlist, char_u *qf_title, char_u *enc);
+ void qf_free_all(win_T *wp);
+! 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);
+ void qf_age(exarg_T *eap);
+*** ../vim-8.1.0433/src/quickfix.c 2018-09-24 21:50:08.932086794 +0200
+--- src/quickfix.c 2018-09-25 22:06:03.187095471 +0200
+***************
+*** 2044,2165 ****
+ }
+
+ /*
+! * Copy the location list from window "from" to window "to".
+ */
+ void
+! copy_loclist(win_T *from, win_T *to)
+ {
+ qf_info_T *qi;
+ int idx;
+- int i;
+
+! /*
+! * When copying from a location list window, copy the referenced
+! * location list. For other windows, copy the location list for
+! * that window.
+! */
+ if (IS_LL_WINDOW(from))
+ qi = from->w_llist_ref;
+ else
+ qi = from->w_llist;
+
+! if (qi == NULL) /* no location list to copy */
+ return;
+
+! /* allocate a new location list */
+ if ((to->w_llist = ll_new_list()) == NULL)
+ return;
+
+ to->w_llist->qf_listcount = qi->qf_listcount;
+
+! /* Copy the location lists one at a time */
+ for (idx = 0; idx < qi->qf_listcount; ++idx)
+ {
+- qf_list_T *from_qfl;
+- qf_list_T *to_qfl;
+-
+ to->w_llist->qf_curlist = idx;
+
+! from_qfl = &qi->qf_lists[idx];
+! to_qfl = &to->w_llist->qf_lists[idx];
+!
+! /* Some of the fields are populated by qf_add_entry() */
+! to_qfl->qf_nonevalid = from_qfl->qf_nonevalid;
+! to_qfl->qf_count = 0;
+! to_qfl->qf_index = 0;
+! to_qfl->qf_start = NULL;
+! to_qfl->qf_last = NULL;
+! to_qfl->qf_ptr = NULL;
+! if (from_qfl->qf_title != NULL)
+! to_qfl->qf_title = vim_strsave(from_qfl->qf_title);
+! else
+! to_qfl->qf_title = NULL;
+! if (from_qfl->qf_ctx != NULL)
+! {
+! to_qfl->qf_ctx = alloc_tv();
+! if (to_qfl->qf_ctx != NULL)
+! copy_tv(from_qfl->qf_ctx, to_qfl->qf_ctx);
+! }
+! else
+! to_qfl->qf_ctx = NULL;
+!
+! if (from_qfl->qf_count)
+! {
+! qfline_T *from_qfp;
+! 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->w_llist,
+! to->w_llist->qf_curlist,
+! NULL,
+! NULL,
+! from_qfp->qf_module,
+! 0,
+! from_qfp->qf_text,
+! from_qfp->qf_lnum,
+! from_qfp->qf_col,
+! from_qfp->qf_viscol,
+! from_qfp->qf_pattern,
+! from_qfp->qf_nr,
+! 0,
+! from_qfp->qf_valid) == FAIL)
+! {
+! qf_free_all(to);
+! return;
+! }
+! /*
+! * qf_add_entry() will not set the qf_num field, as the
+! * directory and file names are not supplied. So the qf_fnum
+! * field is copied here.
+! */
+! prevp = to->w_llist->qf_lists[to->w_llist->qf_curlist].qf_last;
+! prevp->qf_fnum = from_qfp->qf_fnum; /* file number */
+! prevp->qf_type = from_qfp->qf_type; /* error type */
+! if (from_qfl->qf_ptr == from_qfp)
+! to_qfl->qf_ptr = prevp; /* current location */
+! }
+! }
+!
+! to_qfl->qf_index = from_qfl->qf_index; /* current index in the list */
+!
+! /* Assign a new ID for the location list */
+! to_qfl->qf_id = ++last_qf_id;
+! to_qfl->qf_changedtick = 0L;
+!
+! /* When no valid entries are present in the list, qf_ptr points to
+! * the first item in the list */
+! if (to_qfl->qf_nonevalid)
+ {
+! to_qfl->qf_ptr = to_qfl->qf_start;
+! to_qfl->qf_index = 1;
+ }
+ }
+
+! to->w_llist->qf_curlist = qi->qf_curlist; /* current list */
+ }
+
+ /*
+--- 2044,2179 ----
+ }
+
+ /*
+! * Copy location list entries from 'from_qfl' to 'to_qfl'.
+! */
+! static int
+! copy_loclist_entries(qf_list_T *from_qfl, qf_list_T *to_qfl, qf_info_T *to_qi)
+! {
+! int i;
+! qfline_T *from_qfp;
+! 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_qi,
+! to_qi->qf_curlist,
+! NULL,
+! NULL,
+! from_qfp->qf_module,
+! 0,
+! from_qfp->qf_text,
+! from_qfp->qf_lnum,
+! from_qfp->qf_col,
+! from_qfp->qf_viscol,
+! from_qfp->qf_pattern,
+! from_qfp->qf_nr,
+! 0,
+! from_qfp->qf_valid) == FAIL)
+! return FAIL;
+!
+! // qf_add_entry() will not set the qf_num field, as the
+! // directory and file names are not supplied. So the qf_fnum
+! // field is copied here.
+! prevp = to_qfl->qf_last;
+! prevp->qf_fnum = from_qfp->qf_fnum; // file number
+! prevp->qf_type = from_qfp->qf_type; // error type
+! if (from_qfl->qf_ptr == from_qfp)
+! to_qfl->qf_ptr = prevp; // current location
+! }
+!
+! return OK;
+! }
+!
+! /*
+! * Copy the specified location list 'from_qfl' to 'to_qfl'.
+! */
+! static int
+! copy_loclist(qf_list_T *from_qfl, qf_list_T *to_qfl, qf_info_T *to_qi)
+! {
+! // Some of the fields are populated by qf_add_entry()
+! to_qfl->qf_nonevalid = from_qfl->qf_nonevalid;
+! to_qfl->qf_count = 0;
+! to_qfl->qf_index = 0;
+! to_qfl->qf_start = NULL;
+! to_qfl->qf_last = NULL;
+! to_qfl->qf_ptr = NULL;
+! if (from_qfl->qf_title != NULL)
+! to_qfl->qf_title = vim_strsave(from_qfl->qf_title);
+! else
+! to_qfl->qf_title = NULL;
+! if (from_qfl->qf_ctx != NULL)
+! {
+! to_qfl->qf_ctx = alloc_tv();
+! if (to_qfl->qf_ctx != NULL)
+! copy_tv(from_qfl->qf_ctx, to_qfl->qf_ctx);
+! }
+! else
+! to_qfl->qf_ctx = NULL;
+!
+! if (from_qfl->qf_count)
+! if (copy_loclist_entries(from_qfl, to_qfl, to_qi) == FAIL)
+! return FAIL;
+!
+! to_qfl->qf_index = from_qfl->qf_index; // current index in the list
+!
+! // Assign a new ID for the location list
+! to_qfl->qf_id = ++last_qf_id;
+! to_qfl->qf_changedtick = 0L;
+!
+! // When no valid entries are present in the list, qf_ptr points to
+! // the first item in the list
+! if (to_qfl->qf_nonevalid)
+! {
+! to_qfl->qf_ptr = to_qfl->qf_start;
+! to_qfl->qf_index = 1;
+! }
+!
+! return OK;
+! }
+!
+! /*
+! * Copy the location list stack 'from' window to 'to' window.
+ */
+ void
+! copy_loclist_stack(win_T *from, win_T *to)
+ {
+ qf_info_T *qi;
+ int idx;
+
+! // When copying from a location list window, copy the referenced
+! // location list. For other windows, copy the location list for
+! // that window.
+ if (IS_LL_WINDOW(from))
+ qi = from->w_llist_ref;
+ else
+ qi = from->w_llist;
+
+! if (qi == NULL) // no location list to copy
+ return;
+
+! // allocate a new location list
+ if ((to->w_llist = ll_new_list()) == NULL)
+ return;
+
+ to->w_llist->qf_listcount = qi->qf_listcount;
+
+! // Copy the location lists one at a time
+ for (idx = 0; idx < qi->qf_listcount; ++idx)
+ {
+ to->w_llist->qf_curlist = idx;
+
+! if (copy_loclist(&qi->qf_lists[idx],
+! &to->w_llist->qf_lists[idx], to->w_llist) == FAIL)
+ {
+! qf_free_all(to);
+! return;
+ }
+ }
+
+! to->w_llist->qf_curlist = qi->qf_curlist; // current list
+ }
+
+ /*
+*** ../vim-8.1.0433/src/window.c 2018-09-13 15:33:39.609712174 +0200
+--- src/window.c 2018-09-25 22:06:03.187095471 +0200
+***************
+*** 1308,1314 ****
+ newp->w_llist_ref = NULL;
+ }
+ else
+! copy_loclist(oldp, newp);
+ #endif
+ newp->w_localdir = (oldp->w_localdir == NULL)
+ ? NULL : vim_strsave(oldp->w_localdir);
+--- 1308,1314 ----
+ newp->w_llist_ref = NULL;
+ }
+ else
+! copy_loclist_stack(oldp, newp);
+ #endif
+ newp->w_localdir = (oldp->w_localdir == NULL)
+ ? NULL : vim_strsave(oldp->w_localdir);
+*** ../vim-8.1.0433/src/version.c 2018-09-25 20:48:53.882887698 +0200
+--- src/version.c 2018-09-25 22:07:03.802483924 +0200
+***************
+*** 796,797 ****
+--- 796,799 ----
+ { /* Add new patch number below this line */
++ /**/
++ 434,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+100. The most exciting sporting events you noticed during summer 1996
+ was Netscape vs. Microsoft.
+
+ /// 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 ///