Mercurial > vim
diff src/buffer.c @ 28319:427600f3b1c5 v8.2.4685
patch 8.2.4685: when a swap file is found for a popup there is no dialog
Commit: https://github.com/vim/vim/commit/188639d75c363dffaf813e8e2209f7350ad1e871
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Apr 4 16:57:21 2022 +0100
patch 8.2.4685: when a swap file is found for a popup there is no dialog
Problem: When a swap file is found for a popup there is no dialog and the
buffer is loaded anyway.
Solution: Silently load the buffer read-only. (closes #10073)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 04 Apr 2022 18:00:04 +0200 |
parents | cdaff4db7760 |
children | 8bc8071928ed |
line wrap: on
line diff
--- a/src/buffer.c +++ b/src/buffer.c @@ -150,7 +150,8 @@ buffer_ensure_loaded(buf_T *buf) aco_save_T aco; aucmd_prepbuf(&aco, buf); - swap_exists_action = SEA_NONE; + if (swap_exists_action != SEA_READONLY) + swap_exists_action = SEA_NONE; open_buffer(FALSE, NULL, 0); aucmd_restbuf(&aco); } @@ -1053,10 +1054,12 @@ goto_buffer( int count) { bufref_T old_curbuf; + int save_sea = swap_exists_action; set_bufref(&old_curbuf, curbuf); - swap_exists_action = SEA_DIALOG; + if (swap_exists_action == SEA_NONE) + swap_exists_action = SEA_DIALOG; (void)do_buffer(*eap->cmd == 's' ? DOBUF_SPLIT : DOBUF_GOTO, start, dir, count, eap->forceit); if (swap_exists_action == SEA_QUIT && *eap->cmd == 's') @@ -1071,7 +1074,7 @@ goto_buffer( // Quitting means closing the split window, nothing else. win_close(curwin, TRUE); - swap_exists_action = SEA_NONE; + swap_exists_action = save_sea; swap_exists_did_quit = TRUE; #if defined(FEAT_EVAL)