summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0410
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0410')
-rw-r--r--data/vim/patches/8.1.0410307
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 ///