summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-01-24 20:00:55 +0000
committerBram Moolenaar <Bram@vim.org>2022-01-24 20:00:55 +0000
commitdff97e65eb1bb24c44c2b7430a480888d8afb3f4 (patch)
tree68e5fc1a4ce83826c7933cdbf91abb4bf497a894 /src
parent50e05254450954f04183efc7bc871527a67868b8 (diff)
patch 8.2.4208: using setbufvar() may change the window titlev8.2.4208
Problem: Using setbufvar() may change the window title. Solution: Do not redraw when creating the autocommand window. (closes #9613)
Diffstat (limited to 'src')
-rw-r--r--src/autocmd.c3
-rw-r--r--src/testdir/test_functions.vim23
-rw-r--r--src/version.c2
3 files changed, 27 insertions, 1 deletions
diff --git a/src/autocmd.c b/src/autocmd.c
index 37f2480a88..a10be9b928 100644
--- 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
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 156a75277a..3f197ca3d3 100644
--- 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>"
diff --git a/src/version.c b/src/version.c
index 6703e8fafe..3b7cddd9f2 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 */
/**/
+ 4208,
+/**/
4207,
/**/
4206,