diff options
author | Sam Bingner <sam@bingner.com> | 2019-06-05 22:02:50 -1000 |
---|---|---|
committer | Sam Bingner <sam@bingner.com> | 2019-06-05 22:02:50 -1000 |
commit | a255618e22152ca2e5fd361a3d0762e9db20dd80 (patch) | |
tree | 5c98f76c0de0785b8d5b58ac622da34f0d024a8f /data/vim/patches/8.1.1006 | |
parent | 1b1fa61507a809a66f053a8523f883b2b6a2f487 (diff) |
Update vim to 8.1.1471
Diffstat (limited to 'data/vim/patches/8.1.1006')
-rw-r--r-- | data/vim/patches/8.1.1006 | 730 |
1 files changed, 730 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1006 b/data/vim/patches/8.1.1006 new file mode 100644 index 000000000..ddc8001b5 --- /dev/null +++ b/data/vim/patches/8.1.1006 @@ -0,0 +1,730 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.1006 +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.1006 +Problem: Repeated code in quickfix support. +Solution: Move code to functions. (Yegappan Lakshmanan, closes #4091) +Files: src/quickfix.c + + +*** ../vim-8.1.1006/src/quickfix.c 2019-03-02 07:57:12.236395037 +0100 +--- src/quickfix.c 2019-03-13 06:47:54.581059538 +0100 +*************** +*** 172,178 **** + static win_T *qf_find_win(qf_info_T *qi); + static buf_T *qf_find_buf(qf_info_T *qi); + static void qf_update_buffer(qf_info_T *qi, qfline_T *old_last); +! static void qf_fill_buffer(qf_info_T *qi, buf_T *buf, qfline_T *old_last); + static buf_T *load_dummy_buffer(char_u *fname, char_u *dirname_start, char_u *resulting_dir); + static void wipe_dummy_buffer(buf_T *buf, char_u *dirname_start); + static void unload_dummy_buffer(buf_T *buf, char_u *dirname_start); +--- 172,178 ---- + static win_T *qf_find_win(qf_info_T *qi); + static buf_T *qf_find_buf(qf_info_T *qi); + static void qf_update_buffer(qf_info_T *qi, qfline_T *old_last); +! static void qf_fill_buffer(qf_list_T *qfl, buf_T *buf, qfline_T *old_last); + static buf_T *load_dummy_buffer(char_u *fname, char_u *dirname_start, char_u *resulting_dir); + static void wipe_dummy_buffer(buf_T *buf, char_u *dirname_start); + static void unload_dummy_buffer(buf_T *buf, char_u *dirname_start); +*************** +*** 1803,1808 **** +--- 1803,1817 ---- + } + + /* ++ * Return a pointer to the current list in the specified quickfix stack ++ */ ++ static qf_list_T * ++ qf_get_curlist(qf_info_T *qi) ++ { ++ return &qi->qf_lists[qi->qf_curlist]; ++ } ++ ++ /* + * Prepare for adding a new quickfix list. If the current list is in the + * middle of the stack, then all the following lists are freed and then + * the new list is added. +*************** +*** 1830,1836 **** + } + else + qi->qf_curlist = qi->qf_listcount++; +! qfl = &qi->qf_lists[qi->qf_curlist]; + vim_memset(qfl, 0, (size_t)(sizeof(qf_list_T))); + qf_store_title(qfl, qf_title); + qfl->qfl_type = qi->qfl_type; +--- 1839,1845 ---- + } + else + qi->qf_curlist = qi->qf_listcount++; +! qfl = qf_get_curlist(qi); + vim_memset(qfl, 0, (size_t)(sizeof(qf_list_T))); + qf_store_title(qfl, qf_title); + qfl->qfl_type = qi->qfl_type; +*************** +*** 2726,2731 **** +--- 2735,2750 ---- + } + + /* ++ * Set the location list for the specified window to 'qi'. ++ */ ++ static void ++ win_set_loclist(win_T *wp, qf_info_T *qi) ++ { ++ wp->w_llist = qi; ++ qi->qf_refcount++; ++ } ++ ++ /* + * Find a help window or open one. If 'newwin' is TRUE, then open a new help + * window. + */ +*************** +*** 2766,2775 **** + // location list. If the user asks to open a new window, then the new + // window will get a copy of the location list. + if (IS_LL_STACK(qi) && !newwin) +! { +! curwin->w_llist = qi; +! qi->qf_refcount++; +! } + } + + if (!p_im) +--- 2785,2791 ---- + // location list. If the user asks to open a new window, then the new + // window will get a copy of the location list. + if (IS_LL_STACK(qi) && !newwin) +! win_set_loclist(curwin, qi); + } + + if (!p_im) +*************** +*** 2848,2859 **** + swb_flags = 0; + RESET_BINDING(curwin); + if (ll_ref != NULL) +- { + // The new window should use the location list from the + // location list window +! curwin->w_llist = ll_ref; +! ll_ref->qf_refcount++; +! } + return OK; + } + +--- 2864,2872 ---- + swb_flags = 0; + RESET_BINDING(curwin); + if (ll_ref != NULL) + // The new window should use the location list from the + // location list window +! win_set_loclist(curwin, ll_ref); + return OK; + } + +*************** +*** 2894,2904 **** + // If the location list for the window is not set, then set it + // to the location list from the location window + if (win->w_llist == NULL) +! { +! win->w_llist = ll_ref; +! if (ll_ref != NULL) +! ll_ref->qf_refcount++; +! } + } + + /* +--- 2907,2913 ---- + // If the location list for the window is not set, then set it + // to the location list from the location window + if (win->w_llist == NULL) +! win_set_loclist(win, ll_ref); + } + + /* +*************** +*** 3022,3028 **** + int prev_winid, + int *opened_window) + { +! qf_list_T *qfl = &qi->qf_lists[qi->qf_curlist]; + qfltype_T qfl_type = qfl->qfl_type; + int retval = OK; + int old_qf_curlist = qi->qf_curlist; +--- 3031,3037 ---- + int prev_winid, + int *opened_window) + { +! qf_list_T *qfl = qf_get_curlist(qi); + qfltype_T qfl_type = qfl->qfl_type; + int retval = OK; + int old_qf_curlist = qi->qf_curlist; +*************** +*** 3146,3152 **** + if (!msg_scrolled) + update_topline_redraw(); + sprintf((char *)IObuff, _("(%d of %d)%s%s: "), qf_index, +! qi->qf_lists[qi->qf_curlist].qf_count, + qf_ptr->qf_cleared ? _(" (line deleted)") : "", + (char *)qf_types(qf_ptr->qf_type, qf_ptr->qf_nr)); + // Add the message, skipping leading whitespace and newlines. +--- 3155,3161 ---- + if (!msg_scrolled) + update_topline_redraw(); + sprintf((char *)IObuff, _("(%d of %d)%s%s: "), qf_index, +! qf_get_curlist(qi)->qf_count, + qf_ptr->qf_cleared ? _(" (line deleted)") : "", + (char *)qf_types(qf_ptr->qf_type, qf_ptr->qf_nr)); + // Add the message, skipping leading whitespace and newlines. +*************** +*** 3311,3317 **** + + incr_quickfix_busy(); + +! qfl = &qi->qf_lists[qi->qf_curlist]; + + qf_ptr = qfl->qf_ptr; + old_qf_ptr = qf_ptr; +--- 3320,3326 ---- + + incr_quickfix_busy(); + +! qfl = qf_get_curlist(qi); + + qf_ptr = qfl->qf_ptr; + old_qf_ptr = qf_ptr; +*************** +*** 3512,3518 **** + emsg(_(e_trailing)); + return; + } +! qfl = &qi->qf_lists[qi->qf_curlist]; + if (plus) + { + i = qfl->qf_index; +--- 3521,3527 ---- + emsg(_(e_trailing)); + return; + } +! qfl = qf_get_curlist(qi); + if (plus) + { + i = qfl->qf_index; +*************** +*** 3900,3906 **** + return; + } + +! qfl = &qi->qf_lists[qi->qf_curlist]; + + // Look for an existing quickfix window. + win = qf_find_win(qi); +--- 3909,3915 ---- + return; + } + +! qfl = qf_get_curlist(qi); + + // Look for an existing quickfix window. + win = qf_find_win(qi); +*************** +*** 4120,4133 **** + return; + } + +! qfl = &qi->qf_lists[qi->qf_curlist]; + qf_set_title_var(qfl); + // Save the current index here, as updating the quickfix buffer may free + // the quickfix list + lnum = qfl->qf_index; + + // Fill the buffer with the quickfix list. +! qf_fill_buffer(qi, curbuf, NULL); + + decr_quickfix_busy(); + +--- 4129,4142 ---- + return; + } + +! qfl = qf_get_curlist(qi); + qf_set_title_var(qfl); + // Save the current index here, as updating the quickfix buffer may free + // the quickfix list + lnum = qfl->qf_index; + + // Fill the buffer with the quickfix list. +! qf_fill_buffer(qfl, curbuf, NULL); + + decr_quickfix_busy(); + +*************** +*** 4195,4201 **** + // In the location list window, use the referenced location list + qi = wp->w_llist_ref; + +! return qi->qf_lists[qi->qf_curlist].qf_index; + } + + /* +--- 4204,4210 ---- + // In the location list window, use the referenced location list + qi = wp->w_llist_ref; + +! return qf_get_curlist(qi)->qf_index; + } + + /* +*************** +*** 4208,4214 **** + int old_qf_index) // previous qf_index or zero + { + win_T *win; +! int qf_index = qi->qf_lists[qi->qf_curlist].qf_index; + + // Put the cursor on the current error in the quickfix window, so that + // it's viewable. +--- 4217,4223 ---- + int old_qf_index) // previous qf_index or zero + { + win_T *win; +! int qf_index = qf_get_curlist(qi)->qf_index; + + // Put the cursor on the current error in the quickfix window, so that + // it's viewable. +*************** +*** 4306,4312 **** + { + curwin_save = curwin; + curwin = win; +! qf_set_title_var(&qi->qf_lists[qi->qf_curlist]); + curwin = curwin_save; + } + } +--- 4315,4321 ---- + { + curwin_save = curwin; + curwin = win; +! qf_set_title_var(qf_get_curlist(qi)); + curwin = curwin_save; + } + } +*************** +*** 4333,4339 **** + + qf_update_win_titlevar(qi); + +! qf_fill_buffer(qi, buf, old_last); + ++CHANGEDTICK(buf); + + if (old_last == NULL) +--- 4342,4348 ---- + + qf_update_win_titlevar(qi); + +! qf_fill_buffer(qf_get_curlist(qi), buf, old_last); + ++CHANGEDTICK(buf); + + if (old_last == NULL) +*************** +*** 4433,4439 **** + * ml_delete() is used and autocommands will be triggered. + */ + static void +! qf_fill_buffer(qf_info_T *qi, buf_T *buf, qfline_T *old_last) + { + linenr_T lnum; + qfline_T *qfp; +--- 4442,4448 ---- + * ml_delete() is used and autocommands will be triggered. + */ + static void +! qf_fill_buffer(qf_list_T *qfl, buf_T *buf, qfline_T *old_last) + { + linenr_T lnum; + qfline_T *qfp; +*************** +*** 4453,4461 **** + } + + // Check if there is anything to display +! if (!qf_stack_empty(qi)) + { +- qf_list_T *qfl = &qi->qf_lists[qi->qf_curlist]; + char_u dirname[MAXPATHL]; + + *dirname = NUL; +--- 4462,4469 ---- + } + + // Check if there is anything to display +! if (qfl != NULL) + { + char_u dirname[MAXPATHL]; + + *dirname = NUL; +*************** +*** 4551,4557 **** + { + int curlist; + +! if (qi->qf_lists[qi->qf_curlist].qf_id != save_qfid) + { + curlist = qf_id2nr(qi, save_qfid); + if (curlist < 0) +--- 4559,4565 ---- + { + int curlist; + +! if (qf_get_curlist(qi)->qf_id != save_qfid) + { + curlist = qf_id2nr(qi, save_qfid); + if (curlist < 0) +*************** +*** 4769,4779 **** + goto cleanup; + } + if (res >= 0) +! qf_list_changed(&qi->qf_lists[qi->qf_curlist]); + + // Remember the current quickfix list identifier, so that we can + // check for autocommands changing the current quickfix list. +! save_qfid = qi->qf_lists[qi->qf_curlist].qf_id; + if (au_name != NULL) + apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, + curbuf->b_fname, TRUE, curbuf); +--- 4777,4787 ---- + goto cleanup; + } + 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) + apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, + curbuf->b_fname, TRUE, curbuf); +*************** +*** 4808,4814 **** + return 0; + } + +! qfl = &qi->qf_lists[qi->qf_curlist]; + for (i = 0, qfp = qfl->qf_start; i < qfl->qf_count && qfp != NULL; + ++i, qfp = qfp->qf_next) + { +--- 4816,4822 ---- + return 0; + } + +! qfl = qf_get_curlist(qi); + for (i = 0, qfp = qfl->qf_start; i < qfl->qf_count && qfp != NULL; + ++i, qfp = qfp->qf_next) + { +*************** +*** 4845,4851 **** + return 0; + } + +! return qi->qf_lists[qi->qf_curlist].qf_index; + } + + /* +--- 4853,4859 ---- + return 0; + } + +! return qf_get_curlist(qi)->qf_index; + } + + /* +*************** +*** 4869,4875 **** + return 1; + } + +! qfl = &qi->qf_lists[qi->qf_curlist]; + qfp = qfl->qf_start; + + // check if the list has valid errors +--- 4877,4883 ---- + return 1; + } + +! qfl = qf_get_curlist(qi); + qfp = qfl->qf_start; + + // check if the list has valid errors +*************** +*** 4985,4991 **** + // For cfdo and lfdo commands, jump to the nth valid file entry. + if (eap->cmdidx == CMD_cdo || eap->cmdidx == CMD_ldo + || eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo) +! errornr = qf_get_nth_valid_entry(&qi->qf_lists[qi->qf_curlist], + eap->addr_count > 0 ? (int)eap->line1 : 1, + eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo); + +--- 4993,4999 ---- + // For cfdo and lfdo commands, jump to the nth valid file entry. + if (eap->cmdidx == CMD_cdo || eap->cmdidx == CMD_ldo + || eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo) +! errornr = qf_get_nth_valid_entry(qf_get_curlist(qi), + eap->addr_count > 0 ? (int)eap->line1 : 1, + eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo); + +*************** +*** 5114,5121 **** + } + } + if (res >= 0) +! qf_list_changed(&qi->qf_lists[qi->qf_curlist]); +! save_qfid = qi->qf_lists[qi->qf_curlist].qf_id; + if (au_name != NULL) + apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf); + +--- 5122,5129 ---- + } + } + if (res >= 0) +! qf_list_changed(qf_get_curlist(qi)); +! save_qfid = qf_get_curlist(qi)->qf_id; + if (au_name != NULL) + apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf); + +*************** +*** 5236,5244 **** + } + + /* +! * Check whether a quickfix/location list valid. Autocmds may remove or change +! * a quickfix list when vimgrep is running. If the list is not found, create a +! * new list. + */ + static int + vgr_qflist_valid( +--- 5244,5252 ---- + } + + /* +! * Check whether a quickfix/location list is valid. Autocmds may remove or +! * change a quickfix list when vimgrep is running. If the list is not found, +! * create a new list. + */ + static int + vgr_qflist_valid( +*************** +*** 5479,5485 **** + + // Remember the current quickfix list identifier, so that we can check for + // autocommands changing the current quickfix list. +! save_qfid = qi->qf_lists[qi->qf_curlist].qf_id; + + seconds = (time_t)0; + for (fi = 0; fi < fcount && !got_int && tomatch > 0; ++fi) +--- 5487,5493 ---- + + // 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; + + seconds = (time_t)0; + for (fi = 0; fi < fcount && !got_int && tomatch > 0; ++fi) +*************** +*** 5515,5521 **** + decr_quickfix_busy(); + goto theend; + } +! save_qfid = qi->qf_lists[qi->qf_curlist].qf_id; + + if (buf == NULL) + { +--- 5523,5529 ---- + decr_quickfix_busy(); + goto theend; + } +! save_qfid = qf_get_curlist(qi)->qf_id; + + if (buf == NULL) + { +*************** +*** 5595,5601 **** + + FreeWild(fcount, fnames); + +! qfl = &qi->qf_lists[qi->qf_curlist]; + qfl->qf_nonevalid = FALSE; + qfl->qf_ptr = qfl->qf_start; + qfl->qf_index = 1; +--- 5603,5609 ---- + + FreeWild(fcount, fnames); + +! qfl = qf_get_curlist(qi); + qfl->qf_nonevalid = FALSE; + qfl->qf_ptr = qfl->qf_start; + qfl->qf_index = 1; +*************** +*** 6602,6608 **** + + // If the current list is modified and it is displayed in the quickfix + // window, then Update it. +! if (qi->qf_lists[qi->qf_curlist].qf_id == qfl->qf_id) + qf_win_pos_update(qi, old_qfidx); + + return OK; +--- 6610,6616 ---- + + // If the current list is modified and it is displayed in the quickfix + // window, then Update it. +! if (qf_get_curlist(qi)->qf_id == qfl->qf_id) + qf_win_pos_update(qi, old_qfidx); + + return OK; +*************** +*** 6668,6674 **** + { + // If the quickfix/location list window is open, then clear it + if (qi->qf_curlist < qi->qf_listcount) +! qf_free(&qi->qf_lists[qi->qf_curlist]); + qf_update_buffer(qi, NULL); + } + +--- 6676,6682 ---- + { + // If the quickfix/location list window is open, then clear it + if (qi->qf_curlist < qi->qf_listcount) +! qf_free(qf_get_curlist(qi)); + qf_update_buffer(qi, NULL); + } + +*************** +*** 6700,6709 **** + + qfwin->w_llist_ref = new_ll; + if (wp != qfwin) +! { +! wp->w_llist = new_ll; +! new_ll->qf_refcount++; +! } + } + } + +--- 6708,6714 ---- + + qfwin->w_llist_ref = new_ll; + if (wp != qfwin) +! win_set_loclist(wp, new_ll); + } + } + +*************** +*** 6745,6751 **** + { + retval = qf_add_entries(qi, qi->qf_curlist, list, title, action); + if (retval == OK) +! qf_list_changed(&qi->qf_lists[qi->qf_curlist]); + } + + decr_quickfix_busy(); +--- 6750,6756 ---- + { + retval = qf_add_entries(qi, qi->qf_curlist, list, title, action); + if (retval == OK) +! qf_list_changed(qf_get_curlist(qi)); + } + + decr_quickfix_busy(); +*************** +*** 6900,6910 **** + return; + } + if (res >= 0) +! qf_list_changed(&qi->qf_lists[qi->qf_curlist]); + + // Remember the current quickfix list identifier, so that we can + // check for autocommands changing the current quickfix list. +! save_qfid = qi->qf_lists[qi->qf_curlist].qf_id; + if (au_name != NULL) + { + buf_T *curbuf_old = curbuf; +--- 6905,6915 ---- + 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; +*************** +*** 6991,7001 **** + goto cleanup; + } + if (res >= 0) +! qf_list_changed(&qi->qf_lists[qi->qf_curlist]); + + // Remember the current quickfix list identifier, so that we can + // check for autocommands changing the current quickfix list. +! save_qfid = qi->qf_lists[qi->qf_curlist].qf_id; + if (au_name != NULL) + apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, + curbuf->b_fname, TRUE, curbuf); +--- 6996,7006 ---- + goto cleanup; + } + 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) + apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, + curbuf->b_fname, TRUE, curbuf); +*************** +*** 7259,7265 **** + + vim_regfree(regmatch.regprog); + +! qfl = &qi->qf_lists[qi->qf_curlist]; + qfl->qf_nonevalid = FALSE; + qfl->qf_ptr = qfl->qf_start; + qfl->qf_index = 1; +--- 7264,7270 ---- + + vim_regfree(regmatch.regprog); + +! qfl = qf_get_curlist(qi); + qfl->qf_nonevalid = FALSE; + qfl->qf_ptr = qfl->qf_start; + qfl->qf_index = 1; +*** ../vim-8.1.1006/src/version.c 2019-03-11 08:05:02.203622705 +0100 +--- src/version.c 2019-03-13 06:47:34.877223961 +0100 +*************** +*** 781,782 **** +--- 781,784 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1006, + /**/ + +-- +Never go to the toilet in a paperless office. + + /// 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 /// |