diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-08-07 18:12:18 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-08-07 18:12:18 +0200 |
commit | 8ce4b7ed85a7c6499bea5eb1312c85ee7a00e364 (patch) | |
tree | 5c531adcb869614cd6ed9d7e26fb4c7a9f198275 | |
parent | 9470a4d88acf948af1596101527b3a505f8c14e9 (diff) |
patch 8.2.1384: no ATTENTION prompt for :vimgrep first match filev8.2.1384
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)
-rw-r--r-- | src/quickfix.c | 20 | ||||
-rw-r--r-- | src/testdir/runtest.vim | 3 | ||||
-rw-r--r-- | src/testdir/test_quickfix.vim | 20 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 44 insertions, 1 deletions
diff --git a/src/quickfix.c b/src/quickfix.c index 1901e3806d..99b0169ea5 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -6016,6 +6016,23 @@ vgr_process_args( } /* + * 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 f3609f8514..f431748e1e 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 8ca55785d1..e71a3dfdec 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 e6b8a893f1..98e408014b 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1384, +/**/ 1383, /**/ 1382, |