diff options
Diffstat (limited to 'data/vim/patches/8.1.0622')
-rw-r--r-- | data/vim/patches/8.1.0622 | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0622 b/data/vim/patches/8.1.0622 new file mode 100644 index 000000000..06fce113f --- /dev/null +++ b/data/vim/patches/8.1.0622 @@ -0,0 +1,176 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0622 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.0622 +Problem: Adding quickfix items marks items as valid errors. (Daniel Hahler) +Solution: Check when items are valid. (Yegappan Lakshmanan, closes #3683, + closes #3633) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + + +*** ../vim-8.1.0621/src/quickfix.c 2018-12-14 15:38:28.331597637 +0100 +--- src/quickfix.c 2018-12-22 16:42:35.335504536 +0100 +*************** +*** 6241,6254 **** + + /* + * Add a new quickfix entry to list at 'qf_idx' in the stack 'qi' from the +! * items in the dict 'd'. + */ + static int + qf_add_entry_from_dict( + qf_info_T *qi, + int qf_idx, + dict_T *d, +! int first_entry) + { + static int did_bufnr_emsg; + char_u *filename, *module, *pattern, *text, *type; +--- 6241,6256 ---- + + /* + * Add a new quickfix entry to list at 'qf_idx' in the stack 'qi' from the +! * 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_info_T *qi, + int qf_idx, + dict_T *d, +! int first_entry, +! int *valid_entry) + { + static int did_bufnr_emsg; + char_u *filename, *module, *pattern, *text, *type; +*************** +*** 6313,6318 **** +--- 6315,6323 ---- + vim_free(text); + vim_free(type); + ++ if (valid) ++ *valid_entry = TRUE; ++ + return status; + } + +*************** +*** 6333,6338 **** +--- 6338,6344 ---- + dict_T *d; + qfline_T *old_last = NULL; + int retval = OK; ++ int valid_entry = FALSE; + + if (action == ' ' || qf_idx == qi->qf_listcount) + { +*************** +*** 6359,6380 **** + if (d == NULL) + continue; + +! retval = qf_add_entry_from_dict(qi, qf_idx, d, li == list->lv_first); + if (retval == FAIL) + break; + } + +! if (qfl->qf_index == 0) + // no valid entry + qfl->qf_nonevalid = TRUE; +! else +! qfl->qf_nonevalid = FALSE; + if (action != 'a') +- { + qfl->qf_ptr = qfl->qf_start; +! if (!qf_list_empty(qi, qf_idx)) +! qfl->qf_index = 1; +! } + + // Don't update the cursor in quickfix window when appending entries + qf_update_buffer(qi, old_last); +--- 6365,6391 ---- + if (d == NULL) + continue; + +! retval = qf_add_entry_from_dict(qi, qf_idx, d, li == list->lv_first, +! &valid_entry); + if (retval == FAIL) + break; + } + +! // Check if any valid error entries are added to the list. +! if (valid_entry) +! qfl->qf_nonevalid = FALSE; +! else if (qfl->qf_index == 0) + // no valid entry + 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; +! +! // 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(qi, qf_idx)) +! qfl->qf_index = 1; + + // Don't update the cursor in quickfix window when appending entries + qf_update_buffer(qi, old_last); +*** ../vim-8.1.0621/src/testdir/test_quickfix.vim 2018-11-11 22:50:20.810297803 +0100 +--- src/testdir/test_quickfix.vim 2018-12-22 16:42:35.335504536 +0100 +*************** +*** 1299,1304 **** +--- 1299,1326 ---- + let l = g:Xgetlist() + call g:Xsetlist(l) + call assert_equal(0, g:Xgetlist()[0].valid) ++ " Adding a non-valid entry should not mark the list as having valid entries ++ call g:Xsetlist([{'bufnr':a:bnum, 'lnum':5, 'valid':0}], 'a') ++ Xwindow ++ call assert_equal(1, winnr('$')) ++ ++ " :cnext/:cprev should still work even with invalid entries in the list ++ let l = [{'bufnr' : a:bnum, 'lnum' : 1, 'text' : '1', 'valid' : 0}, ++ \ {'bufnr' : a:bnum, 'lnum' : 2, 'text' : '2', 'valid' : 0}] ++ call g:Xsetlist(l) ++ Xnext ++ call assert_equal(2, g:Xgetlist({'idx' : 0}).idx) ++ Xprev ++ call assert_equal(1, g:Xgetlist({'idx' : 0}).idx) ++ " :cnext/:cprev should still work after appending invalid entries to an ++ " empty list ++ call g:Xsetlist([]) ++ call g:Xsetlist(l, 'a') ++ Xnext ++ call assert_equal(2, g:Xgetlist({'idx' : 0}).idx) ++ Xprev ++ call assert_equal(1, g:Xgetlist({'idx' : 0}).idx) ++ + call g:Xsetlist([{'text':'Text1', 'valid':1}]) + Xwindow + call assert_equal(2, winnr('$')) +*** ../vim-8.1.0621/src/version.c 2018-12-22 15:14:45.587283340 +0100 +--- src/version.c 2018-12-22 16:45:12.206329187 +0100 +*************** +*** 801,802 **** +--- 801,804 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 622, + /**/ + +-- +The users that I support would double-click on a landmine to find out +what happens. -- A system administrator + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |