aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2017-12-18 21:40:34 -0500
committerJames McCoy <jamessan@jamessan.com>2017-12-18 21:44:42 -0500
commit4d2d844c12e1a94a5d3cbe93794bb04ef6fb8377 (patch)
tree5cca26337cd4853b088a6a9af0035b21f2556032 /src
parent9fb7926a0dbc08daf19fca5eb93f95ae83a6303c (diff)
downloadrneovim-4d2d844c12e1a94a5d3cbe93794bb04ef6fb8377.tar.gz
rneovim-4d2d844c12e1a94a5d3cbe93794bb04ef6fb8377.tar.bz2
rneovim-4d2d844c12e1a94a5d3cbe93794bb04ef6fb8377.zip
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 vim/vim#1642) https://github.com/vim/vim/commit/f1d21c8cc83f40c815b6bf13cd2043152db533ee
Diffstat (limited to 'src')
-rw-r--r--src/nvim/quickfix.c5
-rw-r--r--src/nvim/testdir/test_quickfix.vim19
2 files changed, 24 insertions, 0 deletions
diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c
index ee3bb1dfba..d77cec4fd8 100644
--- a/src/nvim/quickfix.c
+++ b/src/nvim/quickfix.c
@@ -4189,6 +4189,11 @@ static int qf_add_entries(qf_info_T *qi, list_T *list, char_u *title,
bufnum = 0;
}
+ // If the 'valid' field is present it overrules the detected value.
+ if (tv_dict_find(d, "valid", -1) != NULL) {
+ valid = (int)tv_dict_get_number(d, "valid");
+ }
+
int status = qf_add_entry(qi,
NULL, // dir
(char_u *)filename,
diff --git a/src/nvim/testdir/test_quickfix.vim b/src/nvim/testdir/test_quickfix.vim
index 7e4100cca0..dd64e37ce3 100644
--- a/src/nvim/testdir/test_quickfix.vim
+++ b/src/nvim/testdir/test_quickfix.vim
@@ -1183,6 +1183,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}," .