vim-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 vim/vim#9613)

dff97e65eb

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq
2023-08-21 16:14:54 +08:00
parent dc01d68f27
commit 893437512c
2 changed files with 23 additions and 2 deletions

View File

@@ -49,7 +49,7 @@ describe('title', function()
end)
it('calling setbufvar() to set an option in a hidden buffer from i_CTRL-R', function()
command([[inoremap <F2> <C-R>=setbufvar(]]..buf2..[[, '&autoindent', 1) ? '' : ''<CR>]])
command([[inoremap <F2> <C-R>=setbufvar(]]..buf2..[[, '&autoindent', 1) ?? ''<CR>]])
feed('i<F2><Esc>')
command('redraw!')
screen:expect(function()

View File

@@ -2009,6 +2009,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, ... )
@@ -2567,7 +2589,6 @@ endfunc
func Test_state()
CheckRunVimInTerminal
let g:test_is_flaky = 1
let getstate = ":echo 'state: ' .. g:state .. '; mode: ' .. g:mode\<CR>"