summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-01-23 15:15:01 +0100
committerBram Moolenaar <Bram@vim.org>2021-01-23 15:15:01 +0100
commitdfbc5fd879d92c2a79ced1e1d16dc89f4d55772d (patch)
treebec3b4a150b024d88522a76c864c7bc2007ed129
parent7cebe8ba7dd9a3a955e2da74014f11c42e1c6ac3 (diff)
patch 8.2.2397: Vim9: "%%" not seen as alternate file name for ":bdel"v8.2.2397
Problem: Vim9: "%%" not seen as alternate file name for commands with a buffer name argument. Solution: Recognize "%%" like "#". (closes #7732)
-rw-r--r--src/buffer.c11
-rw-r--r--src/testdir/test_vim9_cmd.vim11
-rw-r--r--src/version.c2
3 files changed, 20 insertions, 4 deletions
diff --git a/src/buffer.c b/src/buffer.c
index c347ef9a64..f9bffbf3d8 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2564,12 +2564,15 @@ buflist_findpat(
char_u *p;
int toggledollar;
- if (pattern_end == pattern + 1 && (*pattern == '%' || *pattern == '#'))
+ // "%" is current file, "%%" or "#" is alternate file
+ if ((pattern_end == pattern + 1 && (*pattern == '%' || *pattern == '#'))
+ || (in_vim9script() && pattern_end == pattern + 2
+ && pattern[0] == '%' && pattern[1] == '%'))
{
- if (*pattern == '%')
- match = curbuf->b_fnum;
- else
+ if (*pattern == '#' || pattern_end == pattern + 2)
match = curwin->w_alt_fnum;
+ else
+ match = curbuf->b_fnum;
#ifdef FEAT_DIFF
if (diffmode && !diff_mode_buf(buflist_findnr(match)))
match = -1;
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 735f48807d..2f8fd71e95 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -68,6 +68,17 @@ def Test_expand_alternate_file()
edit Xfiletwo
edit %%:r
assert_equal('Xfileone', bufname())
+
+ assert_false(bufexists('altfoo'))
+ edit altfoo
+ edit bar
+ assert_true(bufexists('altfoo'))
+ assert_true(buflisted('altfoo'))
+ bdel %%
+ assert_true(bufexists('altfoo'))
+ assert_false(buflisted('altfoo'))
+ bwipe! altfoo
+ bwipe! bar
END
CheckDefAndScriptSuccess(lines)
enddef
diff --git a/src/version.c b/src/version.c
index af1f7d2959..f63f999e1e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2397,
+/**/
2396,
/**/
2395,