changeset 11390:73cfcf11d983 v8.0.0580

patch 8.0.0580: cannot set the valid flag with setqflist() commit https://github.com/vim/vim/commit/f1d21c8cc83f40c815b6bf13cd2043152db533ee Author: Bram Moolenaar <Bram@vim.org> Date: Sat Apr 22 21:20:46 2017 +0200 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 https://github.com/vim/vim/issues/1642)
author Christian Brabandt <cb@256bit.org>
date Sat, 22 Apr 2017 21:30:03 +0200
parents 430269fac9e3
children 553eb2299827
files runtime/doc/eval.txt src/quickfix.c src/testdir/test_quickfix.vim src/version.c
diffstat 4 files changed, 28 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -6945,6 +6945,7 @@ setqflist({list} [, {action}[, {what}]])
 		    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}]])
 		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
--- 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,
--- 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}," .
--- 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,