changeset 27360:dfaba853a792 v8.2.4208

patch 8.2.4208: using setbufvar() may change the window title Commit: https://github.com/vim/vim/commit/dff97e65eb1bb24c44c2b7430a480888d8afb3f4 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Jan 24 20:00:55 2022 +0000 patch 8.2.4208: using setbufvar() may change the window title Problem: Using setbufvar() may change the window title. Solution: Do not redraw when creating the autocommand window. (closes https://github.com/vim/vim/issues/9613)
author Bram Moolenaar <Bram@vim.org>
date Mon, 24 Jan 2022 21:15:03 +0100
parents e5c83812d173
children 73508f35e8ab
files src/autocmd.c src/testdir/test_functions.vim src/version.c
diffstat 3 files changed, 27 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -1518,7 +1518,10 @@ aucmd_prepbuf(
 	p_acd = FALSE;
 #endif
 
+	// no redrawing and don't set the window title
+	++RedrawingDisabled;
 	(void)win_split_ins(0, WSP_TOP, aucmd_win, 0);
+	--RedrawingDisabled;
 	(void)win_comp_pos();   // recompute window positions
 	p_ea = save_ea;
 #ifdef FEAT_AUTOCHDIR
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -1630,6 +1630,28 @@ func Test_setbufvar_options()
   bwipe!
 endfunc
 
+func Test_setbufvar_keep_window_title()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+      edit Xa.txt
+      let g:buf = bufadd('Xb.txt')
+      inoremap <F2> <C-R>=setbufvar(g:buf, '&autoindent', 1) ?? ''<CR>
+  END
+  call writefile(lines, 'Xsetbufvar')
+  let buf = RunVimInTerminal('-S Xsetbufvar', {})
+  call assert_match('Xa.txt', term_gettitle(buf))
+
+  call term_sendkeys(buf, "i\<F2>")
+  call TermWait(buf)
+  call term_sendkeys(buf, "\<Esc>")
+  call TermWait(buf)
+  call assert_match('Xa.txt', term_gettitle(buf))
+
+  call StopVimInTerminal(buf)
+  call delete('Xsetbufvar')
+endfunc
+
 func Test_redo_in_nested_functions()
   nnoremap g. :set opfunc=Operator<CR>g@
   function Operator( type, ... )
@@ -2308,7 +2330,6 @@ endfunc
 
 func Test_state()
   CheckRunVimInTerminal
-  let g:test_is_flaky = 1
 
   let getstate = ":echo 'state: ' .. g:state .. '; mode: ' .. g:mode\<CR>"
 
--- 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 */
 /**/
+    4208,
+/**/
     4207,
 /**/
     4206,