Mercurial > vim
changeset 21668:0843f244e547 v8.2.1384
patch 8.2.1384: no ATTENTION prompt for :vimgrep first match file
Commit: https://github.com/vim/vim/commit/8ce4b7ed85a7c6499bea5eb1312c85ee7a00e364
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Aug 7 18:12:18 2020 +0200
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 07 Aug 2020 18:15:06 +0200 |
parents | 9bf8c137308b |
children | c08f58117ac8 |
files | src/quickfix.c src/testdir/runtest.vim src/testdir/test_quickfix.vim src/version.c |
diffstat | 4 files changed, 44 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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.
--- 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.
--- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -2837,6 +2837,26 @@ func Test_vimgrep_with_no_last_search_pa 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)