summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-04-22 21:20:46 +0200
committerBram Moolenaar <Bram@vim.org>2017-04-22 21:20:46 +0200
commitf1d21c8cc83f40c815b6bf13cd2043152db533ee (patch)
tree7141447bfa2e1b01006d0edef62efeddae993b22
parent9b77016545d5ef1a1f4a90c9bb4b7a6693af8918 (diff)
downloadvim-f1d21c8cc83f40c815b6bf13cd2043152db533ee.zip
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)
-rw-r--r--runtime/doc/eval.txt3
-rw-r--r--src/quickfix.c4
-rw-r--r--src/testdir/test_quickfix.vim19
-rw-r--r--src/version.c2
4 files changed, 28 insertions, 0 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 83bc8f379..20297f541 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -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
diff --git a/src/quickfix.c b/src/quickfix.c
index b28a321f3..ea7f5809a 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -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,
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index c77f3c94c..fa14190f3 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -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}," .
diff --git a/src/version.c b/src/version.c
index f7d0a785a..c41cc5abb 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 580,
+/**/
579,
/**/
578,