diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-11-12 00:24:25 -0500 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-11-11 21:24:25 -0800 |
commit | 8d70335b00484055fba6e3c1e1bb90acef0bb1ae (patch) | |
tree | bd35a5b2a7c08b219328f325970534af00503f52 /src/nvim/quickfix.c | |
parent | 122426966e1046f45801103eace2887ea59d4941 (diff) | |
download | rneovim-8d70335b00484055fba6e3c1e1bb90acef0bb1ae.tar.gz rneovim-8d70335b00484055fba6e3c1e1bb90acef0bb1ae.tar.bz2 rneovim-8d70335b00484055fba6e3c1e1bb90acef0bb1ae.zip |
vim-patch:8.1.0622: adding quickfix items marks items as valid errors #11373
Problem: Adding quickfix items marks items as valid errors. (Daniel Hahler)
Solution: Check when items are valid. (Yegappan Lakshmanan, closes vim/vim#3683,
closes vim/vim#3633)
https://github.com/vim/vim/commit/9752c72f492312acd1c84e673864faed31a3bc97
Diffstat (limited to 'src/nvim/quickfix.c')
-rw-r--r-- | src/nvim/quickfix.c | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c index da315252b5..276427f216 100644 --- a/src/nvim/quickfix.c +++ b/src/nvim/quickfix.c @@ -5779,11 +5779,13 @@ int qf_get_properties(win_T *wp, dict_T *what, dict_T *retdict) } /// Add a new quickfix entry to list at 'qf_idx' in the stack 'qi' from the -/// items in the dict 'd'. +/// items in the dict 'd'. If it is a valid error entry, then set 'valid_entry' +/// to true. static int qf_add_entry_from_dict( qf_list_T *qfl, const dict_T *d, - bool first_entry) + bool first_entry, + bool *valid_entry) FUNC_ATTR_NONNULL_ALL { static bool did_bufnr_emsg; @@ -5846,6 +5848,10 @@ static int qf_add_entry_from_dict( xfree(pattern); xfree(text); + if (valid) { + *valid_entry = true; + } + return status; } @@ -5857,6 +5863,7 @@ static int qf_add_entries(qf_info_T *qi, int qf_idx, list_T *list, qf_list_T *qfl = qf_get_list(qi, qf_idx); qfline_T *old_last = NULL; int retval = OK; + bool valid_entry = false; if (action == ' ' || qf_idx == qi->qf_listcount) { // make place for a new list @@ -5881,23 +5888,30 @@ static int qf_add_entries(qf_info_T *qi, int qf_idx, list_T *list, continue; } - retval = qf_add_entry_from_dict(qfl, d, li == tv_list_first(list)); + retval = qf_add_entry_from_dict(qfl, d, li == tv_list_first(list), + &valid_entry); if (retval == QF_FAIL) { break; } }); - if (qfl->qf_index == 0) { - // no valid entry - qfl->qf_nonevalid = true; - } else { + // Check if any valid error entries are added to the list. + if (valid_entry) { qfl->qf_nonevalid = false; + } else if (qfl->qf_index == 0) { + qfl->qf_nonevalid = true; } + + // If not appending to the list, set the current error to the first entry if (action != 'a') { qfl->qf_ptr = qfl->qf_start; - if (!qf_list_empty(qfl)) { - qfl->qf_index = 1; - } + } + + // Update the current error index if not appending to the list or if the + // list was empty before and it is not empty now. + if ((action != 'a' || qfl->qf_index == 0) + && !qf_list_empty(qfl)) { + qfl->qf_index = 1; } // Don't update the cursor in quickfix window when appending entries |