0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.0.1763: :argedit does not reuse an empty unnamed buffer

Problem:    :argedit does not reuse an empty unnamed buffer.
Solution:   Add the BLN_CURBUF flag and fix all the side effects. (Christian
            Brabandt, closes #2713)
This commit is contained in:
Bram Moolenaar
2018-04-24 21:58:51 +02:00
parent b255b90503
commit 46a53dfc29
6 changed files with 37 additions and 9 deletions

View File

@@ -1841,6 +1841,20 @@ no_write_message_nobang(buf_T *buf UNUSED)
static int top_file_num = 1; /* highest file number */
/*
* Return TRUE if the current buffer is empty, unnamed, unmodified and used in
* only one window. That means it can be re-used.
*/
int
curbuf_reusable(void)
{
return (curbuf != NULL
&& curbuf->b_ffname == NULL
&& curbuf->b_nwindows <= 1
&& (curbuf->b_ml.ml_mfp == NULL || BUFEMPTY())
&& !curbufIsChanged());
}
/*
* Add a file name to the buffer list. Return a pointer to the buffer.
* If the same file name already exists return a pointer to that buffer.
@@ -1921,11 +1935,7 @@ buflist_new(
* buffer.)
*/
buf = NULL;
if ((flags & BLN_CURBUF)
&& curbuf != NULL
&& curbuf->b_ffname == NULL
&& curbuf->b_nwindows <= 1
&& (curbuf->b_ml.ml_mfp == NULL || BUFEMPTY()))
if ((flags & BLN_CURBUF) && curbuf_reusable())
{
buf = curbuf;
/* It's like this buffer is deleted. Watch out for autocommands that