Permalink
Browse files

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)
  • Loading branch information...
brammool committed Apr 22, 2017
1 parent 9b77016 commit f1d21c8cc83f40c815b6bf13cd2043152db533ee
Showing with 28 additions and 0 deletions.
  1. +3 −0 runtime/doc/eval.txt
  2. +4 −0 src/quickfix.c
  3. +19 −0 src/testdir/test_quickfix.vim
  4. +2 −0 src/version.c
View
@@ -6945,6 +6945,7 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()*
nr error number
text description of the error
type single-character error type, 'E', 'W', etc.
valid recognized error message
The "col", "vcol", "nr", "type" and "text" entries are
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.
If both "pattern" and "lnum" are present then "pattern" will
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
cleared.
Note that the list is not exactly the same as what
View
@@ -4779,6 +4779,10 @@ qf_add_entries(
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,
NULL, /* dir */
filename,
@@ -1201,6 +1201,25 @@ func SetXlistTests(cchar, bnum)
let l = g:Xgetlist()
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:
" Refer to a non-existing buffer and pass a non-dictionary type
call assert_fails("call g:Xsetlist([{'bufnr':998, 'lnum':4}," .
View
@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
580,
/**/
579,
/**/

0 comments on commit f1d21c8

Please sign in to comment.