1
0
forked from aniani/vim

patch 8.0.0580: cannot set the valid flag with setqflist()

Problem:    Cannot set the valid flag with setqflist().
Solution:   Add the "valid" argument. (Yegappan Lakshmanan, closes #1642)
This commit is contained in:
Bram Moolenaar
2017-04-22 21:20:46 +02:00
parent 9b77016545
commit f1d21c8cc8
4 changed files with 28 additions and 0 deletions

View File

@@ -6945,6 +6945,7 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()*
nr error number nr error number
text description of the error text description of the error
type single-character error type, 'E', 'W', etc. type single-character error type, 'E', 'W', etc.
valid recognized error message
The "col", "vcol", "nr", "type" and "text" entries are The "col", "vcol", "nr", "type" and "text" entries are
optional. Either "lnum" or "pattern" entry can be used to optional. Either "lnum" or "pattern" entry can be used to
@@ -6954,6 +6955,8 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()*
item will not be handled as an error line. item will not be handled as an error line.
If both "pattern" and "lnum" are present then "pattern" will If both "pattern" and "lnum" are present then "pattern" will
be used. be used.
If the "valid" entry is not supplied, then the valid flag is
set when "bufnr" is a valid buffer or "filename" exists.
If you supply an empty {list}, the quickfix list will be If you supply an empty {list}, the quickfix list will be
cleared. cleared.
Note that the list is not exactly the same as what Note that the list is not exactly the same as what

View File

@@ -4779,6 +4779,10 @@ qf_add_entries(
bufnum = 0; bufnum = 0;
} }
/* If the 'valid' field is present it overrules the detected value. */
if ((dict_find(d, (char_u *)"valid", -1)) != NULL)
valid = (int)get_dict_number(d, (char_u *)"valid");
status = qf_add_entry(qi, status = qf_add_entry(qi,
NULL, /* dir */ NULL, /* dir */
filename, filename,

View File

@@ -1201,6 +1201,25 @@ func SetXlistTests(cchar, bnum)
let l = g:Xgetlist() let l = g:Xgetlist()
call assert_equal(0, len(l)) call assert_equal(0, len(l))
" Tests for setting the 'valid' flag
call g:Xsetlist([{'bufnr':a:bnum, 'lnum':4, 'valid':0}])
Xwindow
call assert_equal(1, winnr('$'))
let l = g:Xgetlist()
call g:Xsetlist(l)
call assert_equal(0, g:Xgetlist()[0].valid)
call g:Xsetlist([{'text':'Text1', 'valid':1}])
Xwindow
call assert_equal(2, winnr('$'))
Xclose
let save_efm = &efm
set efm=%m
Xgetexpr 'TestMessage'
let l = g:Xgetlist()
call g:Xsetlist(l)
call assert_equal(1, g:Xgetlist()[0].valid)
let &efm = save_efm
" Error cases: " Error cases:
" Refer to a non-existing buffer and pass a non-dictionary type " Refer to a non-existing buffer and pass a non-dictionary type
call assert_fails("call g:Xsetlist([{'bufnr':998, 'lnum':4}," . call assert_fails("call g:Xsetlist([{'bufnr':998, 'lnum':4}," .

View File

@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
580,
/**/ /**/
579, 579,
/**/ /**/