diff options
Diffstat (limited to 'src/quickfix.c')
-rw-r--r-- | src/quickfix.c | 20 |
1 files changed, 19 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. |