0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.0.0687: minor issues related to quickfix

Problem:    Minor issues related to quickfix.
Solution:   Set the proper return status for all cases in setqflist() and at
            test cases for this.  Move the "adding" flag outside of
            FEAT_WINDOWS. Minor update to the setqflist() help text. (Yegappan
            Lakshmanan)
This commit is contained in:
Bram Moolenaar
2017-06-28 21:26:27 +02:00
parent 9f5f7bf4d5
commit 86f100dc09
4 changed files with 23 additions and 10 deletions

View File

@@ -7008,7 +7008,8 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()*
title quickfix list title text title quickfix list title text
Unsupported keys in {what} are ignored. Unsupported keys in {what} are ignored.
If the "nr" item is not present, then the current quickfix list If the "nr" item is not present, then the current quickfix list
is modified. is modified. When creating a new quickfix list, "nr" can be
set to a value one greater than the quickfix stack size.
Examples: > Examples: >
:call setqflist([], 'r', {'title': 'My search'}) :call setqflist([], 'r', {'title': 'My search'})

View File

@@ -1163,8 +1163,8 @@ qf_init_ext(
qffields_T fields; qffields_T fields;
#ifdef FEAT_WINDOWS #ifdef FEAT_WINDOWS
qfline_T *old_last = NULL; qfline_T *old_last = NULL;
int adding = FALSE;
#endif #endif
int adding = FALSE;
static efm_T *fmt_first = NULL; static efm_T *fmt_first = NULL;
char_u *efm; char_u *efm;
static char_u *last_efm = NULL; static char_u *last_efm = NULL;
@@ -1199,14 +1199,15 @@ qf_init_ext(
if (newlist || qi->qf_curlist == qi->qf_listcount) if (newlist || qi->qf_curlist == qi->qf_listcount)
/* make place for a new list */ /* make place for a new list */
qf_new_list(qi, qf_title); qf_new_list(qi, qf_title);
#ifdef FEAT_WINDOWS else
else if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
{ {
/* Adding to existing list, use last entry. */ /* Adding to existing list, use last entry. */
adding = TRUE; adding = TRUE;
old_last = qi->qf_lists[qi->qf_curlist].qf_last; #ifdef FEAT_WINDOWS
} if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
old_last = qi->qf_lists[qi->qf_curlist].qf_last;
#endif #endif
}
/* Use the local value of 'errorformat' if it's set. */ /* Use the local value of 'errorformat' if it's set. */
if (errorformat == p_efm && tv == NULL && *buf->b_p_efm != NUL) if (errorformat == p_efm && tv == NULL && *buf->b_p_efm != NUL)
@@ -4785,6 +4786,8 @@ get_errorlist_properties(win_T *wp, dict_T *what, dict_T *retdict)
(void)get_errorlist(wp, qf_idx, l); (void)get_errorlist(wp, qf_idx, l);
dict_add_list(retdict, "items", l); dict_add_list(retdict, "items", l);
} }
else
status = FAIL;
} }
if ((status == OK) && (flags & QF_GETLIST_CONTEXT)) if ((status == OK) && (flags & QF_GETLIST_CONTEXT))
@@ -4795,9 +4798,12 @@ get_errorlist_properties(win_T *wp, dict_T *what, dict_T *retdict)
if (di != NULL) if (di != NULL)
{ {
copy_tv(qi->qf_lists[qf_idx].qf_ctx, &di->di_tv); copy_tv(qi->qf_lists[qf_idx].qf_ctx, &di->di_tv);
if (dict_add(retdict, di) == FAIL) status = dict_add(retdict, di);
if (status == FAIL)
dictitem_free(di); dictitem_free(di);
} }
else
status = FAIL;
} }
else else
status = dict_add_nr_str(retdict, "context", 0L, (char_u *)""); status = dict_add_nr_str(retdict, "context", 0L, (char_u *)"");
@@ -5020,6 +5026,7 @@ qf_set_properties(qf_info_T *qi, dict_T *what, int action)
if (ctx != NULL) if (ctx != NULL)
copy_tv(&di->di_tv, ctx); copy_tv(&di->di_tv, ctx);
qi->qf_lists[qf_idx].qf_ctx = ctx; qi->qf_lists[qf_idx].qf_ctx = ctx;
retval = OK;
} }
return retval; return retval;

View File

@@ -1720,7 +1720,8 @@ func Xproperty_tests(cchar)
Xopen Xopen
wincmd p wincmd p
call g:Xsetlist([{'filename':'foo', 'lnum':27}]) call g:Xsetlist([{'filename':'foo', 'lnum':27}])
call g:Xsetlist([], 'a', {'title' : 'Sample'}) let s = g:Xsetlist([], 'a', {'title' : 'Sample'})
call assert_equal(0, s)
let d = g:Xgetlist({"title":1}) let d = g:Xgetlist({"title":1})
call assert_equal('Sample', d.title) call assert_equal('Sample', d.title)
@@ -1774,7 +1775,8 @@ func Xproperty_tests(cchar)
endif endif
" Context related tests " Context related tests
call g:Xsetlist([], 'a', {'context':[1,2,3]}) let s = g:Xsetlist([], 'a', {'context':[1,2,3]})
call assert_equal(0, s)
call test_garbagecollect_now() call test_garbagecollect_now()
let d = g:Xgetlist({'context':1}) let d = g:Xgetlist({'context':1})
call assert_equal([1,2,3], d.context) call assert_equal([1,2,3], d.context)
@@ -1839,8 +1841,9 @@ func Xproperty_tests(cchar)
" Test for setting/getting items " Test for setting/getting items
Xexpr "" Xexpr ""
let qfprev = g:Xgetlist({'nr':0}) let qfprev = g:Xgetlist({'nr':0})
call g:Xsetlist([], ' ', {'title':'Green', let s = g:Xsetlist([], ' ', {'title':'Green',
\ 'items' : [{'filename':'F1', 'lnum':10}]}) \ 'items' : [{'filename':'F1', 'lnum':10}]})
call assert_equal(0, s)
let qfcur = g:Xgetlist({'nr':0}) let qfcur = g:Xgetlist({'nr':0})
call assert_true(qfcur.nr == qfprev.nr + 1) call assert_true(qfcur.nr == qfprev.nr + 1)
let l = g:Xgetlist({'items':1}) let l = g:Xgetlist({'items':1})

View File

@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
687,
/**/ /**/
686, 686,
/**/ /**/