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.0410 | |
parent | c54a909c8b5a8519130803cf55f68603c0ad3682 (diff) |
Update vim
Diffstat (limited to 'data/vim/patches/8.1.0410')
-rw-r--r-- | data/vim/patches/8.1.0410 | 307 |
1 files changed, 307 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0410 b/data/vim/patches/8.1.0410 new file mode 100644 index 000000000..0a1cac9e0 --- /dev/null +++ b/data/vim/patches/8.1.0410 @@ -0,0 +1,307 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0410 +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.0410 +Problem: The ex_copen() function is too long. +Solution: Refactor to split off two functions. (Yegappan Lakshmanan) +Files: src/quickfix.c + + +*** ../vim-8.1.0409/src/quickfix.c 2018-09-18 22:50:02.692936259 +0200 +--- src/quickfix.c 2018-09-19 21:54:26.509737127 +0200 +*************** +*** 3807,3812 **** +--- 3807,3918 ---- + } + + /* ++ * Goto a quickfix or location list window (if present). ++ * Returns OK if the window is found, FAIL otherwise. ++ */ ++ static int ++ qf_goto_cwindow(qf_info_T *qi, int resize, int sz, int vertsplit) ++ { ++ win_T *win; ++ ++ win = qf_find_win(qi); ++ if (win == NULL) ++ return FAIL; ++ ++ win_goto(win); ++ if (resize) ++ { ++ if (vertsplit) ++ { ++ if (sz != win->w_width) ++ win_setwidth(sz); ++ } ++ else if (sz != win->w_height) ++ win_setheight(sz); ++ } ++ ++ return OK; ++ } ++ ++ /* ++ * Open a new quickfix or location list window, load the quickfix buffer and ++ * set the appropriate options for the window. ++ * Returns FAIL if the window could not be opened. ++ */ ++ static int ++ qf_open_new_cwindow(qf_info_T *qi, int height) ++ { ++ buf_T *qf_buf; ++ win_T *oldwin = curwin; ++ tabpage_T *prevtab = curtab; ++ int flags = 0; ++ win_T *win; ++ ++ qf_buf = qf_find_buf(qi); ++ ++ // The current window becomes the previous window afterwards. ++ win = curwin; ++ ++ if (IS_QF_STACK(qi) && cmdmod.split == 0) ++ // Create the new quickfix window at the very bottom, except when ++ // :belowright or :aboveleft is used. ++ win_goto(lastwin); ++ // Default is to open the window below the current window ++ if (cmdmod.split == 0) ++ flags = WSP_BELOW; ++ flags |= WSP_NEWLOC; ++ if (win_split(height, flags) == FAIL) ++ return FAIL; // not enough room for window ++ RESET_BINDING(curwin); ++ ++ if (IS_LL_STACK(qi)) ++ { ++ // For the location list window, create a reference to the ++ // location list from the window 'win'. ++ curwin->w_llist_ref = win->w_llist; ++ win->w_llist->qf_refcount++; ++ } ++ ++ if (oldwin != curwin) ++ oldwin = NULL; // don't store info when in another window ++ if (qf_buf != NULL) ++ { ++ // Use the existing quickfix buffer ++ (void)do_ecmd(qf_buf->b_fnum, NULL, NULL, NULL, ECMD_ONE, ++ ECMD_HIDE + ECMD_OLDBUF, oldwin); ++ } ++ else ++ { ++ // Create a new quickfix buffer ++ (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, oldwin); ++ ++ // switch off 'swapfile' ++ set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL); ++ set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix", ++ OPT_LOCAL); ++ set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL); ++ RESET_BINDING(curwin); ++ #ifdef FEAT_DIFF ++ curwin->w_p_diff = FALSE; ++ #endif ++ #ifdef FEAT_FOLDING ++ set_option_value((char_u *)"fdm", 0L, (char_u *)"manual", ++ OPT_LOCAL); ++ #endif ++ } ++ ++ // Only set the height when still in the same tab page and there is no ++ // window to the side. ++ if (curtab == prevtab && curwin->w_width == Columns) ++ win_setheight(height); ++ curwin->w_p_wfh = TRUE; // set 'winfixheight' ++ if (win_valid(win)) ++ prevwin = win; ++ ++ return OK; ++ } ++ ++ /* + * ":copen": open a window that shows the list of errors. + * ":lopen": open a window that shows the location list. + */ +*************** +*** 3815,3824 **** + { + qf_info_T *qi = &ql_info; + int height; +! win_T *win; +! tabpage_T *prevtab = curtab; +! buf_T *qf_buf; +! win_T *oldwin = curwin; + + if (is_loclist_cmd(eap->cmdidx)) + { +--- 3921,3927 ---- + { + qf_info_T *qi = &ql_info; + int height; +! int status = FAIL; + + if (is_loclist_cmd(eap->cmdidx)) + { +*************** +*** 3835,3941 **** + else + height = QF_WINHEIGHT; + +! reset_VIsual_and_resel(); /* stop Visual mode */ + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif + +! /* +! * Find existing quickfix window, or open a new one. +! */ +! win = qf_find_win(qi); +! +! if (win != NULL && cmdmod.tab == 0) +! { +! win_goto(win); +! if (eap->addr_count != 0) +! { +! if (cmdmod.split & WSP_VERT) +! { +! if (height != win->w_width) +! win_setwidth(height); +! } +! else if (height != win->w_height) +! win_setheight(height); +! } +! } +! else +! { +! int flags = 0; +! +! qf_buf = qf_find_buf(qi); +! +! /* The current window becomes the previous window afterwards. */ +! win = curwin; +! +! if ((eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow) +! && cmdmod.split == 0) +! /* Create the new quickfix window at the very bottom, except when +! * :belowright or :aboveleft is used. */ +! win_goto(lastwin); +! /* Default is to open the window below the current window */ +! if (cmdmod.split == 0) +! flags = WSP_BELOW; +! flags |= WSP_NEWLOC; +! if (win_split(height, flags) == FAIL) +! return; /* not enough room for window */ +! RESET_BINDING(curwin); +! +! if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow) +! { +! /* +! * For the location list window, create a reference to the +! * location list from the window 'win'. +! */ +! curwin->w_llist_ref = win->w_llist; +! win->w_llist->qf_refcount++; +! } +! +! if (oldwin != curwin) +! oldwin = NULL; /* don't store info when in another window */ +! if (qf_buf != NULL) +! /* Use the existing quickfix buffer */ +! (void)do_ecmd(qf_buf->b_fnum, NULL, NULL, NULL, ECMD_ONE, +! ECMD_HIDE + ECMD_OLDBUF, oldwin); +! else +! { +! /* Create a new quickfix buffer */ +! (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, oldwin); +! /* switch off 'swapfile' */ +! set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL); +! set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix", +! OPT_LOCAL); +! set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL); +! RESET_BINDING(curwin); +! #ifdef FEAT_DIFF +! curwin->w_p_diff = FALSE; +! #endif +! #ifdef FEAT_FOLDING +! set_option_value((char_u *)"fdm", 0L, (char_u *)"manual", +! OPT_LOCAL); +! #endif +! } +! +! /* Only set the height when still in the same tab page and there is no +! * window to the side. */ +! if (curtab == prevtab && curwin->w_width == Columns) +! win_setheight(height); +! curwin->w_p_wfh = TRUE; /* set 'winfixheight' */ +! if (win_valid(win)) +! prevwin = win; +! } + + qf_set_title_var(&qi->qf_lists[qi->qf_curlist]); + +! /* +! * Fill the buffer with the quickfix list. +! */ + qf_fill_buffer(qi, curbuf, NULL); + + curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index; + curwin->w_cursor.col = 0; + check_cursor(); +! update_topline(); /* scroll to show the line */ + } + + /* +--- 3938,3965 ---- + else + height = QF_WINHEIGHT; + +! reset_VIsual_and_resel(); // stop Visual mode + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif + +! // Find an existing quickfix window, or open a new one. +! if (cmdmod.tab == 0) +! status = qf_goto_cwindow(qi, eap->addr_count != 0, height, +! cmdmod.split & WSP_VERT); +! if (status == FAIL) +! if (qf_open_new_cwindow(qi, height) == FAIL) +! return; + + qf_set_title_var(&qi->qf_lists[qi->qf_curlist]); + +! // Fill the buffer with the quickfix list. + qf_fill_buffer(qi, curbuf, NULL); + + curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index; + curwin->w_cursor.col = 0; + check_cursor(); +! update_topline(); // scroll to show the line + } + + /* +*** ../vim-8.1.0409/src/version.c 2018-09-19 21:06:28.344234982 +0200 +--- src/version.c 2018-09-19 21:54:49.149575674 +0200 +*************** +*** 796,797 **** +--- 796,799 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 410, + /**/ + +-- +You are only young once, but you can stay immature indefinitely. + + /// 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 /// |