changeset 23784:34a95c4bd647 v8.2.2433

patch 8.2.2433: opening cmdline window gives error in BufLeave autocommand Commit: https://github.com/vim/vim/commit/b63f3ca66db20f7b135aae706d36be538f91f8cc Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 30 21:40:03 2021 +0100 patch 8.2.2433: opening cmdline window gives error in BufLeave autocommand Problem: Opening cmdline window gives error in BufLeave autocommand. Solution: Reset cmdwin_type when triggering the autocommand.
author Bram Moolenaar <Bram@vim.org>
date Sat, 30 Jan 2021 21:45:03 +0100
parents de88fbcda74a
children 186b22ebe68d
files src/ex_cmds.c src/testdir/test_cmdline.vim src/version.c
diffstat 3 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2710,6 +2710,12 @@ do_ecmd(
 	 */
 	if (buf != curbuf)
 	{
+#ifdef FEAT_CMDWIN
+	    int save_cmdwin_type = cmdwin_type;
+
+	    // BufLeave applies to the old buffer.
+	    cmdwin_type = 0;
+#endif
 	    /*
 	     * Be careful: The autocommands may delete any buffer and change
 	     * the current buffer.
@@ -2724,6 +2730,9 @@ do_ecmd(
 		new_name = vim_strsave(buf->b_fname);
 	    set_bufref(&au_new_curbuf, buf);
 	    apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
+#ifdef FEAT_CMDWIN
+	    cmdwin_type = save_cmdwin_type;
+#endif
 	    if (!bufref_valid(&au_new_curbuf))
 	    {
 		// new buffer has been deleted
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -1237,6 +1237,7 @@ func Test_cmdwin_autocmd()
 
   augroup CmdWin
     au!
+    autocmd BufLeave * if &buftype == '' | update | endif
     autocmd CmdwinEnter * startinsert
   augroup END
 
--- 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 */
 /**/
+    2433,
+/**/
     2432,
 /**/
     2431,