]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.2.4345: <amatch> is expanded like a file name for DirChangedPre v8.2.4345
authorBram Moolenaar <Bram@vim.org>
Fri, 11 Feb 2022 16:30:12 +0000 (16:30 +0000)
committerBram Moolenaar <Bram@vim.org>
Fri, 11 Feb 2022 16:30:12 +0000 (16:30 +0000)
Problem:    <amatch> is expanded like a file name for DirChangedPre.
Solution:   Do not expand <amatch>. (closes #9742)  Also for the User event.

src/autocmd.c
src/testdir/test_autocmd.vim
src/version.c

index 97b27effd1ef2203722c19ca0195934b09e9b21a..d1ecad944e087ec587c8774b73f1f4c2ac43d331 100644 (file)
@@ -2043,7 +2043,7 @@ apply_autocmds_group(
     {
        sfname = vim_strsave(fname);
        // Don't try expanding FileType, Syntax, FuncUndefined, WindowID,
-       // ColorScheme, QuickFixCmd* or DirChanged
+       // ColorScheme, QuickFixCmd*, DirChanged and similar.
        if (event == EVENT_FILETYPE
                || event == EVENT_SYNTAX
                || event == EVENT_CMDLINECHANGED
@@ -2061,7 +2061,9 @@ apply_autocmds_group(
                || event == EVENT_OPTIONSET
                || event == EVENT_QUICKFIXCMDPOST
                || event == EVENT_DIRCHANGED
+               || event == EVENT_DIRCHANGEDPRE
                || event == EVENT_MODECHANGED
+               || event == EVENT_USER
                || event == EVENT_WINCLOSED)
        {
            fname = vim_strsave(fname);
index 3ff4c3cf5bfd678b46ccb00a46f16932ad19a9f1..d3c9b89024dbee329847d3a22c7a7b96f13e1a19 100644 (file)
@@ -1899,6 +1899,14 @@ func Test_autocommand_all_events()
   call assert_fails('au! * x bwipe', 'E1155:')
 endfunc
 
+func Test_autocmd_user()
+  au User MyEvent let s:res = [expand("<afile>"), expand("<amatch>")]
+  doautocmd User MyEvent
+  call assert_equal(['MyEvent', 'MyEvent'], s:res)
+  au! User
+  unlet s:res
+endfunc
+
 function s:Before_test_dirchanged()
   augroup test_dirchanged
     autocmd!
@@ -1922,11 +1930,11 @@ endfunc
 
 function Test_dirchanged_global()
   call s:Before_test_dirchanged()
-  autocmd test_dirchanged DirChangedPre global call add(s:li, "pre cd " .. v:event.directory)
+  autocmd test_dirchanged DirChangedPre global call add(s:li, expand("<amatch>") .. " pre cd " .. v:event.directory)
   autocmd test_dirchanged DirChanged global call add(s:li, "cd:")
   autocmd test_dirchanged DirChanged global call add(s:li, expand("<afile>"))
   call chdir(s:dir_foo)
-  let expected = ["pre cd " .. s:dir_foo, "cd:", s:dir_foo]
+  let expected = ["global pre cd " .. s:dir_foo, "cd:", s:dir_foo]
   call assert_equal(expected, s:li)
   call chdir(s:dir_foo)
   call assert_equal(expected, s:li)
index 2c86de33eb1912552f4c7b61ffec892b6ff9c433..b70fb291a0a6b96943cd607f97bd5f065940864a 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4345,
 /**/
     4344,
 /**/