Revert "vim-patch:8.1.1015: quickfix buffer shows up in list, can't get buffer number"

This reverts commit 4cd69151cf.
This commit is contained in:
Jan Edmund Lazo 2020-10-20 21:56:36 -04:00
parent 87f31b4c86
commit 7b2fd21560
No known key found for this signature in database
GPG Key ID: 64915E6E9F735B15
5 changed files with 21 additions and 72 deletions

View File

@ -3171,7 +3171,7 @@ complete_info([{what}])
< <
*confirm()* *confirm()*
confirm({msg} [, {choices} [, {default} [, {type}]]]) confirm({msg} [, {choices} [, {default} [, {type}]]])
confirm() offers the user a dialog, from which a choice can be Confirm() offers the user a dialog, from which a choice can be
made. It returns the number of the choice. For the first made. It returns the number of the choice. For the first
choice this is 1. choice this is 1.
@ -4640,16 +4640,10 @@ getloclist({nr},[, {what}]) *getloclist()*
If the optional {what} dictionary argument is supplied, then If the optional {what} dictionary argument is supplied, then
returns the items listed in {what} as a dictionary. Refer to returns the items listed in {what} as a dictionary. Refer to
|getqflist()| for the supported items in {what}. |getqflist()| for the supported items in {what}.
If {what} contains 'filewinid', then returns the id of the
In addition to the items supported by |getqflist()| in {what}, window used to display files from the location list. This
the following item is supported by |getloclist()|: field is applicable only when called from a location list
window. See |location-list-file-window| for more details.
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([{win}]) *getmatches()* getmatches([{win}]) *getmatches()*
Returns a |List| with all matches previously defined for the Returns a |List| with all matches previously defined for the
@ -4751,9 +4745,6 @@ getqflist([{what}]) *getqflist()*
nr get information for this quickfix list; zero nr get information for this quickfix list; zero
means the current quickfix list and "$" means means the current quickfix list and "$" means
the last quickfix list 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 size number of entries in the quickfix list
title get the list title |quickfix-title| title get the list title |quickfix-title|
winid get the quickfix |window-ID| winid get the quickfix |window-ID|
@ -4782,8 +4773,6 @@ getqflist([{what}]) *getqflist()*
items quickfix list entries. If not present, set to items quickfix list entries. If not present, set to
an empty list. an empty list.
nr quickfix list number. If not present, set to 0 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 size number of entries in the quickfix list. If not
present, set to 0. present, set to 0.
title quickfix list title text. If not present, set title quickfix list title text. If not present, set
@ -10397,14 +10386,14 @@ text...
commands are skipped. commands are skipped.
When {pattern} is omitted all errors are caught. When {pattern} is omitted all errors are caught.
Examples: > Examples: >
:catch /^Vim:Interrupt$/ " catch interrupts (CTRL-C) :catch /^Vim:Interrupt$/ " catch interrupts (CTRL-C)
:catch /^Vim\%((\a\+)\)\=:E/ " catch all Vim errors :catch /^Vim\%((\a\+)\)\=:E/ " catch all Vim errors
:catch /^Vim\%((\a\+)\)\=:/ " catch errors and interrupts :catch /^Vim\%((\a\+)\)\=:/ " catch errors and interrupts
:catch /^Vim(write):/ " catch all errors in :write :catch /^Vim(write):/ " catch all errors in :write
:catch /^Vim\%((\a\+)\)\=:E123:/ " catch error E123 :catch /^Vim\%((\a\+)\)\=:E123/ " catch error E123
:catch /my-exception/ " catch user exception :catch /my-exception/ " catch user exception
:catch /.*/ " catch everything :catch /.*/ " catch everything
:catch " same as /.*/ :catch " same as /.*/
< <
Another character can be used instead of / around the Another character can be used instead of / around the
{pattern}, so long as it does not have a special {pattern}, so long as it does not have a special

View File

@ -540,7 +540,6 @@ location list.
second quickfix window. If [height] is given the second quickfix window. If [height] is given the
existing window will be resized to it. existing window will be resized to it.
*quickfix-buffer*
The window will contain a special buffer, with The window will contain a special buffer, with
'buftype' equal to "quickfix". Don't change this! 'buftype' equal to "quickfix". Don't change this!
The window will have the w:quickfix_title variable set The window will have the w:quickfix_title variable set
@ -549,11 +548,7 @@ location list.
status line if the value of 'statusline' is adjusted status line if the value of 'statusline' is adjusted
properly. Whenever this buffer is modified by a properly. Whenever this buffer is modified by a
quickfix command or function, the |b:changedtick| quickfix command or function, the |b:changedtick|
variable is incremented. You can get the number of variable is incremented.
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* *:lopen*
:lop[en] [height] Open a window to show the location list for the :lop[en] [height] Open a window to show the location list for the
@ -719,18 +714,12 @@ using these functions are below:
" get the quickfix list window id " get the quickfix list window id
:echo getqflist({'winid' : 0}).winid :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 " get the context of the current location list
:echo getloclist(0, {'context' : 0}).context :echo getloclist(0, {'context' : 0}).context
" get the location list window id of the third window " get the location list window id of the third window
:echo getloclist(3, {'winid' : 0}).winid :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) " get the file window id of a location list window (winnr: 4)
:echo getloclist(4, {'filewinid' : 0}).filewinid :echo getloclist(4, {'filewinid' : 0}).filewinid
< <

View File

@ -5596,8 +5596,7 @@ enum {
QF_GETLIST_SIZE = 0x80, QF_GETLIST_SIZE = 0x80,
QF_GETLIST_TICK = 0x100, QF_GETLIST_TICK = 0x100,
QF_GETLIST_FILEWINID = 0x200, QF_GETLIST_FILEWINID = 0x200,
QF_GETLIST_QFBUFNR = 0x400, QF_GETLIST_ALL = 0x3FF,
QF_GETLIST_ALL = 0x7FF,
}; };
/// Parse text from 'di' and return the quickfix list items. /// Parse text from 'di' and return the quickfix list items.
@ -5652,15 +5651,6 @@ static int qf_winid(qf_info_T *qi)
return 0; return 0;
} }
// 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(const qf_info_T *qi, dict_T *retdict)
FUNC_ATTR_NONNULL_ARG(2)
{
return tv_dict_add_nr(retdict, S_LEN("qfbufnr"),
(qi == NULL) ? 0 : qi->qf_bufnr);
}
/// Convert the keys in 'what' to quickfix list property flags. /// Convert the keys in 'what' to quickfix list property flags.
static int qf_getprop_keys2flags(const dict_T *what, bool loclist) static int qf_getprop_keys2flags(const dict_T *what, bool loclist)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
@ -5704,9 +5694,6 @@ static int qf_getprop_keys2flags(const dict_T *what, bool loclist)
if (loclist && tv_dict_find(what, S_LEN("filewinid")) != NULL) { if (loclist && tv_dict_find(what, S_LEN("filewinid")) != NULL) {
flags |= QF_GETLIST_FILEWINID; flags |= QF_GETLIST_FILEWINID;
} }
if (tv_dict_find(what, S_LEN("qfbufnr")) != NULL) {
flags |= QF_GETLIST_QFBUFNR;
}
return flags; return flags;
} }
@ -5798,9 +5785,6 @@ static int qf_getprop_defaults(qf_info_T *qi,
if ((status == OK) && locstack && (flags & QF_GETLIST_FILEWINID)) { if ((status == OK) && locstack && (flags & QF_GETLIST_FILEWINID)) {
status = tv_dict_add_nr(retdict, S_LEN("filewinid"), 0); status = tv_dict_add_nr(retdict, S_LEN("filewinid"), 0);
} }
if ((status == OK) && (flags & QF_GETLIST_QFBUFNR)) {
status = qf_getprop_qfbufnr(qi, retdict);
}
return status; return status;
} }
@ -5935,9 +5919,6 @@ int qf_get_properties(win_T *wp, dict_T *what, dict_T *retdict)
if ((status == OK) && (wp != NULL) && (flags & QF_GETLIST_FILEWINID)) { if ((status == OK) && (wp != NULL) && (flags & QF_GETLIST_FILEWINID)) {
status = qf_getprop_filewinid(wp, qi, retdict); status = qf_getprop_filewinid(wp, qi, retdict);
} }
if ((status == OK) && (flags & QF_GETLIST_QFBUFNR)) {
status = qf_getprop_qfbufnr(qi, retdict);
}
return status; return status;
} }

View File

@ -3254,21 +3254,19 @@ func Xgetlist_empty_tests(cchar)
call assert_equal(0, g:Xgetlist({'changedtick' : 0}).changedtick) call assert_equal(0, g:Xgetlist({'changedtick' : 0}).changedtick)
if a:cchar == 'c' if a:cchar == 'c'
call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, call assert_equal({'context' : '', 'id' : 0, 'idx' : 0,
\ 'items' : [], 'nr' : 0, 'size' : 0, 'qfbufnr' : 0, \ 'items' : [], 'nr' : 0, 'size' : 0,
\ 'title' : '', 'winid' : 0, 'changedtick': 0}, \ 'title' : '', 'winid' : 0, 'changedtick': 0},
\ g:Xgetlist({'all' : 0})) \ g:Xgetlist({'all' : 0}))
else else
call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, call assert_equal({'context' : '', 'id' : 0, 'idx' : 0,
\ 'items' : [], 'nr' : 0, 'size' : 0, 'title' : '', \ 'items' : [], 'nr' : 0, 'size' : 0, 'title' : '',
\ 'winid' : 0, 'changedtick': 0, 'filewinid' : 0, \ 'winid' : 0, 'changedtick': 0, 'filewinid' : 0},
\ 'qfbufnr' : 0},
\ g:Xgetlist({'all' : 0})) \ g:Xgetlist({'all' : 0}))
endif endif
" Quickfix window with empty stack " Quickfix window with empty stack
silent! Xopen silent! Xopen
let qfwinid = (a:cchar == 'c') ? win_getid() : 0 let qfwinid = (a:cchar == 'c') ? win_getid() : 0
let qfbufnr = (a:cchar == 'c') ? bufnr('') : 0
call assert_equal(qfwinid, g:Xgetlist({'winid' : 0}).winid) call assert_equal(qfwinid, g:Xgetlist({'winid' : 0}).winid)
Xclose Xclose
@ -3300,12 +3298,11 @@ func Xgetlist_empty_tests(cchar)
if a:cchar == 'c' if a:cchar == 'c'
call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
\ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
\ 'qfbufnr' : qfbufnr,
\ 'changedtick' : 0}, g:Xgetlist({'id' : qfid, 'all' : 0})) \ 'changedtick' : 0}, g:Xgetlist({'id' : qfid, 'all' : 0}))
else else
call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
\ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
\ 'changedtick' : 0, 'filewinid' : 0, 'qfbufnr' : 0}, \ 'changedtick' : 0, 'filewinid' : 0},
\ g:Xgetlist({'id' : qfid, 'all' : 0})) \ g:Xgetlist({'id' : qfid, 'all' : 0}))
endif endif
@ -3322,12 +3319,11 @@ func Xgetlist_empty_tests(cchar)
if a:cchar == 'c' if a:cchar == 'c'
call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
\ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
\ 'changedtick' : 0, 'qfbufnr' : qfbufnr}, \ 'changedtick' : 0}, g:Xgetlist({'nr' : 5, 'all' : 0}))
\ g:Xgetlist({'nr' : 5, 'all' : 0}))
else else
call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [],
\ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0,
\ 'changedtick' : 0, 'filewinid' : 0, 'qfbufnr' : 0}, \ 'changedtick' : 0, 'filewinid' : 0},
\ g:Xgetlist({'nr' : 5, 'all' : 0})) \ g:Xgetlist({'nr' : 5, 'all' : 0}))
endif endif
endfunc endfunc
@ -4096,7 +4092,6 @@ func Xqfbuf_test(cchar)
Xclose Xclose
" Even after the quickfix window is closed, the buffer should be loaded " Even after the quickfix window is closed, the buffer should be loaded
call assert_true(bufloaded(qfbnum)) call assert_true(bufloaded(qfbnum))
call assert_true(qfbnum, g:Xgetlist({'qfbufnr' : 0}).qfbufnr)
Xopen Xopen
" Buffer should be reused when opening the window again " Buffer should be reused when opening the window again
call assert_equal(qfbnum, bufnr('')) call assert_equal(qfbnum, bufnr(''))
@ -4115,7 +4110,7 @@ func Xqfbuf_test(cchar)
close close
" When the location list window is closed, the buffer name should not " When the location list window is closed, the buffer name should not
" change to 'Quickfix List' " change to 'Quickfix List'
call assert_match(qfbnum . 'u h- "\[Location List]"', execute('ls!')) call assert_match(qfbnum . ' h- "\[Location List]"', execute('ls'))
call assert_true(bufloaded(qfbnum)) call assert_true(bufloaded(qfbnum))
" After deleting a location list buffer using ":bdelete", opening the " After deleting a location list buffer using ":bdelete", opening the
@ -4132,7 +4127,6 @@ func Xqfbuf_test(cchar)
" removed " removed
call setloclist(0, [], 'f') call setloclist(0, [], 'f')
call assert_false(bufexists(qfbnum)) 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 " 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 " location list buffer should not be lost. It should be reused when the

View File

@ -2582,10 +2582,6 @@ int win_close(win_T *win, bool free_buf)
if (win->w_buffer != NULL) { if (win->w_buffer != NULL) {
reset_synblock(win); reset_synblock(win);
} }
// 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;
}
/* /*
* Close the link to the buffer. * Close the link to the buffer.