diff options
author | Sam Bingner <sam@bingner.com> | 2018-12-13 15:11:52 -1000 |
---|---|---|
committer | Sam Bingner <sam@bingner.com> | 2018-12-13 15:11:52 -1000 |
commit | 957aa75d05c00731d7112bed7b68ce4568667d0c (patch) | |
tree | 0445216818495a7864eaa3acde1a1570d34b958d /data/vim/patches/8.1.0434 | |
parent | c54a909c8b5a8519130803cf55f68603c0ad3682 (diff) |
Update vim
Diffstat (limited to 'data/vim/patches/8.1.0434')
-rw-r--r-- | data/vim/patches/8.1.0434 | 335 |
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 /// |