From: Bram Moolenaar Date: Fri, 7 Aug 2020 16:12:18 +0000 (+0200) Subject: patch 8.2.1384: no ATTENTION prompt for :vimgrep first match file X-Git-Tag: v8.2.1384 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8ce4b7ed85a7c6499bea5eb1312c85ee7a00e364;p=vim patch 8.2.1384: no ATTENTION prompt for :vimgrep first match file Problem: No ATTENTION prompt for :vimgrep first match file. Solution: When there is an existing swap file do not keep the dummy buffer. (closes #6649) --- diff --git a/src/quickfix.c b/src/quickfix.c index 1901e3806..99b0169ea 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -6015,6 +6015,23 @@ vgr_process_args( return OK; } +/* + * Return TRUE if "buf" had an existing swap file, the current swap file does + * not end in ".swp". + */ + static int +existing_swapfile(buf_T *buf) +{ + if (buf->b_ml.ml_mfp != NULL) + { + char_u *fname = buf->b_ml.ml_mfp->mf_fname; + size_t len = STRLEN(fname); + + return fname[len - 1] != 'p' || fname[len - 2] != 'w'; + } + return FALSE; +} + /* * Search for a pattern in a list of files and populate the quickfix list with * the matches. @@ -6125,7 +6142,8 @@ vgr_process_files( buf = NULL; } else if (buf != *first_match_buf - || (cmd_args->flags & VGR_NOJUMP)) + || (cmd_args->flags & VGR_NOJUMP) + || existing_swapfile(buf)) { unload_dummy_buffer(buf, dirname_start); // Keeping the buffer, remove the dummy flag. diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim index f3609f851..f431748e1 100644 --- a/src/testdir/runtest.vim +++ b/src/testdir/runtest.vim @@ -91,6 +91,9 @@ set encoding=utf-8 let s:test_script_fname = expand('%') au! SwapExists * call HandleSwapExists() func HandleSwapExists() + if exists('g:ignoreSwapExists') + return + endif " Ignore finding a swap file for the test script (the user might be " editing it and do ":make test_name") and the output file. " Report finding another swap file and chose 'q' to avoid getting stuck. diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim index 8ca55785d..e71a3dfde 100644 --- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -2837,6 +2837,26 @@ func Test_vimgrep_with_no_last_search_pat() call delete('Xresult') endfunc +func Test_vimgrep_existing_swapfile() + call writefile(['match apple with apple'], 'Xapple') + call writefile(['swapfile'], '.Xapple.swp') + let g:foundSwap = 0 + let g:ignoreSwapExists = 1 + augroup grep + au SwapExists * let foundSwap = 1 | let v:swapchoice = 'e' + augroup END + vimgrep apple Xapple + call assert_equal(1, g:foundSwap) + call assert_match('.Xapple.swo', swapname('')) + + call delete('Xapple') + call delete('Xapple.swp') + augroup grep + au! SwapExists + augroup END + unlet g:ignoreSwapExists +endfunc + func XfreeTests(cchar) call s:setup_commands(a:cchar) diff --git a/src/version.c b/src/version.c index e6b8a893f..98e408014 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1384, /**/ 1383, /**/