changeset 10237:197795e3530d v8.0.0017

commit https://github.com/vim/vim/commit/890680ca6364386fabb271c85e0755bcaa6a33c1 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Sep 27 21:28:56 2016 +0200 patch 8.0.0017 Problem: Cannot get the number of the current quickfix or location list. Solution: Use the current list if "nr" in "what" is zero. (Yegappan Lakshmanan) Remove debug command from test.
author Christian Brabandt <cb@256bit.org>
date Tue, 27 Sep 2016 21:30:04 +0200
parents 4a297449804b
children 3ebcaef1252d
files runtime/doc/eval.txt src/quickfix.c src/testdir/test_quickfix.vim src/version.c
diffstat 4 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -4516,7 +4516,8 @@ getqflist([{what}])					*getqflist()*
 		If the optional {what} dictionary argument is supplied, then
 		returns only the items listed in {what} as a dictionary. The
 		following string items are supported in {what}:
-			nr	get information for this quickfix list
+			nr	get information for this quickfix list; zero
+				means the current quickfix list
 			title	get the list title
 			winid	get the |window-ID| (if opened)
 			all	all of the above quickfix properties
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -4591,9 +4591,13 @@ get_errorlist_properties(win_T *wp, dict
 	/* Use the specified quickfix/location list */
 	if (di->di_tv.v_type == VAR_NUMBER)
 	{
-	    qf_idx = di->di_tv.vval.v_number - 1;
-	    if (qf_idx < 0 || qf_idx >= qi->qf_listcount)
-		return FAIL;
+	    /* for zero use the current list */
+	    if (di->di_tv.vval.v_number != 0)
+	    {
+		qf_idx = di->di_tv.vval.v_number - 1;
+		if (qf_idx < 0 || qf_idx >= qi->qf_listcount)
+		    return FAIL;
+	    }
 	    flags |= QF_GETLIST_NR;
 	}
 	else
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -1429,12 +1429,10 @@ function! Test_two_windows()
   laddexpr 'one.txt:3:one one one'
 
   let loc_one = getloclist(one_id)
-echo string(loc_one)
   call assert_equal('Xone/a/one.txt', bufname(loc_one[1].bufnr))
   call assert_equal(3, loc_one[1].lnum)
 
   let loc_two = getloclist(two_id)
-echo string(loc_two)
   call assert_equal('Xtwo/a/two.txt', bufname(loc_two[1].bufnr))
   call assert_equal(5, loc_two[1].lnum)
 
@@ -1534,6 +1532,11 @@ function Xproperty_tests(cchar)
     call assert_equal('N1', g:Xgetlist({'all':1}).title)
     call g:Xsetlist([], ' ', {'title' : 'N2'})
     call assert_equal(qfnr + 1, g:Xgetlist({'all':1}).nr)
+
+    let res = g:Xgetlist({'nr': 0})
+    call assert_equal(qfnr + 1, res.nr)
+    call assert_equal(['nr'], keys(res))
+
     call g:Xsetlist([], ' ', {'title' : 'N3'})
     call assert_equal('N2', g:Xgetlist({'nr':2, 'title':1}).title)
 
@@ -1546,7 +1549,7 @@ function Xproperty_tests(cchar)
     call assert_equal({}, g:Xgetlist({'abc':1}))
 
     if a:cchar == 'l'
-	call assert_equal({}, getloclist(99, ['title']))
+	call assert_equal({}, getloclist(99, {'title': 1}))
     endif
 endfunction
 
--- 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 */
 /**/
+    17,
+/**/
     16,
 /**/
     15,