summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1015
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1015')
-rw-r--r--data/vim/patches/8.1.1015449
1 files changed, 449 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1015 b/data/vim/patches/8.1.1015
new file mode 100644
index 000000000..fee064175
--- /dev/null
+++ b/data/vim/patches/8.1.1015
@@ -0,0 +1,449 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.1015
+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.1015
+Problem: Quickfix buffer shows up in list, can't get buffer number.
+Solution: Make the quickfix buffer unlisted when the quickfix window is
+ closed. get the quickfix buffer number with getqflist().
+ (Yegappan Lakshmanan, closes #4113)
+Files: runtime/doc/eval.txt, runtime/doc/quickfix.txt, src/quickfix.c,
+ src/testdir/test_quickfix.vim, src/window.c
+
+
+*** ../vim-8.1.1014/runtime/doc/eval.txt 2019-03-04 13:18:15.977053527 +0100
+--- runtime/doc/eval.txt 2019-03-17 16:34:27.019774609 +0100
+***************
+*** 4931,4940 ****
+ If the optional {what} dictionary argument is supplied, then
+ returns the items listed in {what} as a dictionary. Refer to
+ |getqflist()| for the supported items in {what}.
+! If {what} contains 'filewinid', then returns the id of the
+! window used to display files from the location list. This
+! field is applicable only when called from a location list
+! window.
+
+ getmatches() *getmatches()*
+ Returns a |List| with all matches previously defined by
+--- 4964,4979 ----
+ If the optional {what} dictionary argument is supplied, then
+ returns the items listed in {what} as a dictionary. Refer to
+ |getqflist()| for the supported items in {what}.
+!
+! In addition to the items supported by |getqflist()| in {what},
+! the following item is supported by |getloclist()|:
+!
+! filewinid id of the window used to display files
+! from the location list. This field is
+! applicable only when called from a
+! location list window. See
+! |location-list-file-window| for more
+! details.
+
+ getmatches() *getmatches()*
+ Returns a |List| with all matches previously defined by
+***************
+*** 5036,5041 ****
+--- 5075,5083 ----
+ nr get information for this quickfix list; zero
+ means the current quickfix list and "$" means
+ the last quickfix list
++ qfbufnr number of the buffer displayed in the quickfix
++ window. Returns 0 if the quickfix buffer is
++ not present. See |quickfix-buffer|.
+ size number of entries in the quickfix list
+ title get the list title |quickfix-title|
+ winid get the quickfix |window-ID|
+***************
+*** 5064,5069 ****
+--- 5106,5113 ----
+ items quickfix list entries. If not present, set to
+ an empty list.
+ nr quickfix list number. If not present, set to 0
++ qfbufnr number of the buffer displayed in the quickfix
++ window. If not present, set to 0.
+ size number of entries in the quickfix list. If not
+ present, set to 0.
+ title quickfix list title text. If not present, set
+*** ../vim-8.1.1014/runtime/doc/quickfix.txt 2019-01-11 14:49:25.380107431 +0100
+--- runtime/doc/quickfix.txt 2019-03-17 16:34:27.019774609 +0100
+***************
+*** 111,124 ****
+ :[count]lne[xt][!] Same as ":cnext", except the location list for the
+ current window is used instead of the quickfix list.
+
+! :[count]cN[ext][!] *:cp* *:cprevious* *:cN* *:cNext*
+ :[count]cp[revious][!] Display the [count] previous error in the list that
+ includes a file name. If there are no file names at
+ all, go to the [count] previous error. See |:cc| for
+ [!] and 'switchbuf'.
+
+
+! :[count]lN[ext][!] *:lp* *:lprevious* *:lN* *:lNext*
+ :[count]lp[revious][!] Same as ":cNext" and ":cprevious", except the location
+ list for the current window is used instead of the
+ quickfix list.
+--- 111,124 ----
+ :[count]lne[xt][!] Same as ":cnext", except the location list for the
+ current window is used instead of the quickfix list.
+
+! :[count]cN[ext][!] *:cp* *:cprevious* *:cprev* *:cN* *:cNext*
+ :[count]cp[revious][!] Display the [count] previous error in the list that
+ includes a file name. If there are no file names at
+ all, go to the [count] previous error. See |:cc| for
+ [!] and 'switchbuf'.
+
+
+! :[count]lN[ext][!] *:lp* *:lprevious* *:lprev* *:lN* *:lNext*
+ :[count]lp[revious][!] Same as ":cNext" and ":cprevious", except the location
+ list for the current window is used instead of the
+ quickfix list.
+***************
+*** 367,374 ****
+ <
+ *quickfix-index*
+ When you jump to a quickfix/location list entry using any of the quickfix
+! commands (e.g. |cc|, |cnext|, |cprev|, etc.), that entry becomes the currently
+! selected entry. The index of the currently selected entry in a
+ quickfix/location list can be obtained using the getqflist()/getloclist()
+ functions. Examples: >
+ echo getqflist({'idx' : 0}).idx
+--- 367,374 ----
+ <
+ *quickfix-index*
+ When you jump to a quickfix/location list entry using any of the quickfix
+! commands (e.g. |:cc|, |:cnext|, |:cprev|, etc.), that entry becomes the
+! currently selected entry. The index of the currently selected entry in a
+ quickfix/location list can be obtained using the getqflist()/getloclist()
+ functions. Examples: >
+ echo getqflist({'idx' : 0}).idx
+***************
+*** 496,501 ****
+--- 496,502 ----
+ second quickfix window. If [height] is given the
+ existing window will be resized to it.
+
++ *quickfix-buffer*
+ The window will contain a special buffer, with
+ 'buftype' equal to "quickfix". Don't change this!
+ The window will have the w:quickfix_title variable set
+***************
+*** 504,510 ****
+ status line if the value of 'statusline' is adjusted
+ properly. Whenever this buffer is modified by a
+ quickfix command or function, the |b:changedtick|
+! variable is incremented.
+
+ *:lop* *:lopen*
+ :lop[en] [height] Open a window to show the location list for the
+--- 505,515 ----
+ status line if the value of 'statusline' is adjusted
+ properly. Whenever this buffer is modified by a
+ quickfix command or function, the |b:changedtick|
+! variable is incremented. You can get the number of
+! this buffer using the getqflist() and getloclist()
+! functions by passing the 'qfbufnr' item. For a
+! location list, this buffer is wiped out when the
+! location list is removed.
+
+ *:lop* *:lopen*
+ :lop[en] [height] Open a window to show the location list for the
+***************
+*** 670,681 ****
+--- 675,692 ----
+ " get the quickfix list window id
+ :echo getqflist({'winid' : 0}).winid
+
++ " get the quickfix list window buffer number
++ :echo getqflist({'qfbufnr' : 0}).qfbufnr
++
+ " get the context of the current location list
+ :echo getloclist(0, {'context' : 0}).context
+
+ " get the location list window id of the third window
+ :echo getloclist(3, {'winid' : 0}).winid
+
++ " get the location list window buffer number of the third window
++ :echo getloclist(3, {'qfbufnr' : 0}).qfbufnr
++
+ " get the file window id of a location list window (winnr: 4)
+ :echo getloclist(4, {'filewinid' : 0}).filewinid
+ <
+*** ../vim-8.1.1014/src/quickfix.c 2019-03-13 06:49:20.492351919 +0100
+--- src/quickfix.c 2019-03-17 16:34:27.019774609 +0100
+***************
+*** 5907,5913 ****
+ QF_GETLIST_SIZE = 0x80,
+ QF_GETLIST_TICK = 0x100,
+ QF_GETLIST_FILEWINID = 0x200,
+! QF_GETLIST_ALL = 0x3FF,
+ };
+
+ /*
+--- 5907,5914 ----
+ QF_GETLIST_SIZE = 0x80,
+ QF_GETLIST_TICK = 0x100,
+ QF_GETLIST_FILEWINID = 0x200,
+! QF_GETLIST_QFBUFNR = 0x400,
+! QF_GETLIST_ALL = 0x7FF,
+ };
+
+ /*
+***************
+*** 5977,5982 ****
+--- 5978,5994 ----
+ }
+
+ /*
++ * Returns the number of the buffer displayed in the quickfix/location list
++ * window. If there is no buffer associated with the list, then returns 0.
++ */
++ static int
++ qf_getprop_qfbufnr(qf_info_T *qi, dict_T *retdict)
++ {
++ return dict_add_number(retdict, "qfbufnr",
++ (qi == NULL) ? 0 : qi->qf_bufnr);
++ }
++
++ /*
+ * Convert the keys in 'what' to quickfix list property flags.
+ */
+ static int
+***************
+*** 6022,6027 ****
+--- 6034,6042 ----
+ if (loclist && dict_find(what, (char_u *)"filewinid", -1) != NULL)
+ flags |= QF_GETLIST_FILEWINID;
+
++ if (dict_find(what, (char_u *)"qfbufnr", -1) != NULL)
++ flags |= QF_GETLIST_QFBUFNR;
++
+ return flags;
+ }
+
+***************
+*** 6114,6119 ****
+--- 6129,6136 ----
+ status = dict_add_number(retdict, "changedtick", 0);
+ if ((status == OK) && locstack && (flags & QF_GETLIST_FILEWINID))
+ status = dict_add_number(retdict, "filewinid", 0);
++ if ((status == OK) && (flags & QF_GETLIST_QFBUFNR))
++ status = qf_getprop_qfbufnr(qi, retdict);
+
+ return status;
+ }
+***************
+*** 6259,6264 ****
+--- 6276,6283 ----
+ status = dict_add_number(retdict, "changedtick", qfl->qf_changedtick);
+ if ((status == OK) && (wp != NULL) && (flags & QF_GETLIST_FILEWINID))
+ status = qf_getprop_filewinid(wp, qi, retdict);
++ if ((status == OK) && (flags & QF_GETLIST_QFBUFNR))
++ status = qf_getprop_qfbufnr(qi, retdict);
+
+ return status;
+ }
+*** ../vim-8.1.1014/src/testdir/test_quickfix.vim 2019-03-02 07:57:12.236395037 +0100
+--- src/testdir/test_quickfix.vim 2019-03-17 16:34:27.019774609 +0100
+***************
+*** 3110,3128 ****
+ call assert_equal(0, g:Xgetlist({'changedtick' : 0}).changedtick)
+ if a:cchar == 'c'
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0,
+! \ 'items' : [], 'nr' : 0, 'size' : 0,
+ \ 'title' : '', 'winid' : 0, 'changedtick': 0},
+ \ g:Xgetlist({'all' : 0}))
+ else
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0,
+ \ 'items' : [], 'nr' : 0, 'size' : 0, 'title' : '',
+! \ 'winid' : 0, 'changedtick': 0, 'filewinid' : 0},
+ \ g:Xgetlist({'all' : 0}))
+ endif
+
+ " Quickfix window with empty stack
+ silent! Xopen
+ let qfwinid = (a:cchar == 'c') ? win_getid() : 0
+ call assert_equal(qfwinid, g:Xgetlist({'winid' : 0}).winid)
+ Xclose
+
+--- 3110,3130 ----
+ call assert_equal(0, g:Xgetlist({'changedtick' : 0}).changedtick)
+ if a:cchar == 'c'
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0,
+! \ 'items' : [], 'nr' : 0, 'size' : 0, 'qfbufnr' : 0,
+ \ 'title' : '', 'winid' : 0, 'changedtick': 0},
+ \ g:Xgetlist({'all' : 0}))
+ else
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0,
+ \ 'items' : [], 'nr' : 0, 'size' : 0, 'title' : '',
+! \ 'winid' : 0, 'changedtick': 0, 'filewinid' : 0,
+! \ 'qfbufnr' : 0},
+ \ g:Xgetlist({'all' : 0}))
+ endif
+
+ " Quickfix window with empty stack
+ silent! Xopen
+ let qfwinid = (a:cchar == 'c') ? win_getid() : 0
++ let qfbufnr = (a:cchar == 'c') ? bufnr('') : 0
+ call assert_equal(qfwinid, g:Xgetlist({'winid' : 0}).winid)
+ Xclose
+
+***************
+*** 3154,3164 ****
+ if a:cchar == 'c'
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
+ \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
+ \ 'changedtick' : 0}, g:Xgetlist({'id' : qfid, 'all' : 0}))
+ else
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
+ \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
+! \ 'changedtick' : 0, 'filewinid' : 0},
+ \ g:Xgetlist({'id' : qfid, 'all' : 0}))
+ endif
+
+--- 3156,3167 ----
+ if a:cchar == 'c'
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
+ \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
++ \ 'qfbufnr' : qfbufnr,
+ \ 'changedtick' : 0}, g:Xgetlist({'id' : qfid, 'all' : 0}))
+ else
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
+ \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
+! \ 'changedtick' : 0, 'filewinid' : 0, 'qfbufnr' : 0},
+ \ g:Xgetlist({'id' : qfid, 'all' : 0}))
+ endif
+
+***************
+*** 3175,3185 ****
+ if a:cchar == 'c'
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
+ \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
+! \ 'changedtick' : 0}, g:Xgetlist({'nr' : 5, 'all' : 0}))
+ else
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
+ \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
+! \ 'changedtick' : 0, 'filewinid' : 0},
+ \ g:Xgetlist({'nr' : 5, 'all' : 0}))
+ endif
+ endfunc
+--- 3178,3189 ----
+ if a:cchar == 'c'
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
+ \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
+! \ 'changedtick' : 0, 'qfbufnr' : qfbufnr},
+! \ g:Xgetlist({'nr' : 5, 'all' : 0}))
+ else
+ call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
+ \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
+! \ 'changedtick' : 0, 'filewinid' : 0, 'qfbufnr' : 0},
+ \ g:Xgetlist({'nr' : 5, 'all' : 0}))
+ endif
+ endfunc
+***************
+*** 3912,3917 ****
+--- 3916,3922 ----
+ Xclose
+ " Even after the quickfix window is closed, the buffer should be loaded
+ call assert_true(bufloaded(qfbnum))
++ call assert_true(qfbnum, g:Xgetlist({'qfbufnr' : 0}).qfbufnr)
+ Xopen
+ " Buffer should be reused when opening the window again
+ call assert_equal(qfbnum, bufnr(''))
+***************
+*** 3930,3936 ****
+ close
+ " When the location list window is closed, the buffer name should not
+ " change to 'Quickfix List'
+! call assert_match(qfbnum . ' h- "\[Location List]"', execute('ls'))
+ call assert_true(bufloaded(qfbnum))
+
+ " After deleting a location list buffer using ":bdelete", opening the
+--- 3935,3941 ----
+ close
+ " When the location list window is closed, the buffer name should not
+ " change to 'Quickfix List'
+! call assert_match(qfbnum . 'u h- "\[Location List]"', execute('ls!'))
+ call assert_true(bufloaded(qfbnum))
+
+ " After deleting a location list buffer using ":bdelete", opening the
+***************
+*** 3947,3952 ****
+--- 3952,3958 ----
+ " removed
+ call setloclist(0, [], 'f')
+ call assert_false(bufexists(qfbnum))
++ call assert_equal(0, getloclist(0, {'qfbufnr' : 0}).qfbufnr)
+
+ " When the location list is freed with the location list window open, the
+ " location list buffer should not be lost. It should be reused when the
+*** ../vim-8.1.1014/src/window.c 2019-03-04 13:18:15.973053562 +0100
+--- src/window.c 2019-03-17 16:36:49.002856677 +0100
+***************
+*** 2382,2399 ****
+ }
+
+ #ifdef FEAT_GUI
+! /* Avoid trouble with scrollbars that are going to be deleted in
+! * win_free(). */
+ if (gui.in_use)
+ out_flush();
+ #endif
+
+ #ifdef FEAT_SYN_HL
+! /* Free independent synblock before the buffer is freed. */
+ if (win->w_buffer != NULL)
+ reset_synblock(win);
+ #endif
+
+ /*
+ * Close the link to the buffer.
+ */
+--- 2382,2405 ----
+ }
+
+ #ifdef FEAT_GUI
+! // Avoid trouble with scrollbars that are going to be deleted in
+! // win_free().
+ if (gui.in_use)
+ out_flush();
+ #endif
+
+ #ifdef FEAT_SYN_HL
+! // Free independent synblock before the buffer is freed.
+ if (win->w_buffer != NULL)
+ reset_synblock(win);
+ #endif
+
++ #ifdef FEAT_QUICKFIX
++ // When the quickfix/location list window is closed, unlist the buffer.
++ if (win->w_buffer != NULL && bt_quickfix(win->w_buffer))
++ win->w_buffer->b_p_bl = FALSE;
++ #endif
++
+ /*
+ * Close the link to the buffer.
+ */
+*** ../vim-8.1.1014/src/version.c 2019-03-17 15:47:22.589492071 +0100
+--- src/version.c 2019-03-17 16:33:12.068262826 +0100
+***************
+*** 781,782 ****
+--- 781,784 ----
+ { /* Add new patch number below this line */
++ /**/
++ 1015,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+79. All of your most erotic dreams have a scrollbar at the right side.
+
+ /// 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 ///