patch 8.0.1844: superfluous quickfix code, missing examples
Problem: Superfluous quickfix code, missing examples.
Solution: Remove unneeded code. Add a few examples. Add a bit more
testing. (Yegappan Lakshmanan, closes #2916)
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index 83379b8..5f2a4dd 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -608,6 +608,12 @@
" get the identifier of the current quickfix list
:let qfid = getqflist({'id' : 0}).id
+ " get the identifier of the fourth quickfix list in the stack
+ :let qfid = getqflist({'nr' : 4, 'id' : 0}).id
+
+ " check whether a quickfix list with a specific identifier exists
+ :if getqflist({'id' : qfid}).id == qfid
+
" get the index of the current quickfix list in the stack
:let qfnum = getqflist({'nr' : 0}).nr
@@ -653,6 +659,11 @@
attributes of a quickfix and location list respectively. Some examples for
using these functions are below:
>
+ " create an empty quickfix list with a title and a context
+ :let t = 'Search results'
+ :let c = {'cmd' : 'grep'}
+ :call setqflist([], ' ', {'title' : t, 'context' : c})
+
" set the title of the current quickfix list
:call setqflist([], 'a', {'title' : 'Mytitle'})
@@ -671,6 +682,9 @@
\ {'filename' : 'b.txt', 'lnum' : 20, 'text' : "Orange"}]
:call setqflist([], 'a', {'id' : qfid, 'items' : newItems})
+ " empty a quickfix list specified by an identifier
+ :call setqflist([], 'r', {'id' : qfid, 'items' : []})
+
" free all the quickfix lists in the stack
:call setqflist([], 'f')
diff --git a/src/quickfix.c b/src/quickfix.c
index 98360d0..f8bfa41 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -5798,16 +5798,6 @@
title_save = vim_strsave(qi->qf_lists[qf_idx].qf_title);
retval = qf_add_entries(qi, qf_idx, di->di_tv.vval.v_list,
title_save, action == ' ' ? 'a' : action);
- if (action == 'r')
- {
- /*
- * When replacing the quickfix list entries using
- * qf_add_entries(), the title is set with a ':' prefix.
- * Restore the title with the saved title.
- */
- vim_free(qi->qf_lists[qf_idx].qf_title);
- qi->qf_lists[qf_idx].qf_title = vim_strsave(title_save);
- }
vim_free(title_save);
return retval;
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 985b281..c3850ce 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -1185,6 +1185,13 @@
call assert_equal(1, len(l), string(l))
call assert_equal('|| msg2', l[0].text)
+ " When matching error lines, case should be ignored. Test for this.
+ set noignorecase
+ let l=getqflist({'lines' : ['Xtest:FOO10:Line 20'], 'efm':'%f:foo%l:%m'})
+ call assert_equal(10, l.items[0].lnum)
+ call assert_equal('Line 20', l.items[0].text)
+ set ignorecase&
+
new | only
let &efm = save_efm
endfunc
diff --git a/src/version.c b/src/version.c
index 788ba24..145167d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1844,
+/**/
1843,
/**/
1842,