Mercurial > vim
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}," .