mirror of
https://github.com/neovim/neovim.git
synced 2024-12-23 20:55:18 -07:00
Merge pull request #24819 from zeertzjq/vim-8.2.4208
vim-patch:8.2.{4208,4210,4211,4212},9.0.{0077,0313}
This commit is contained in:
commit
8cd0ca1ce7
@ -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()
|
||||
|
@ -24,29 +24,29 @@ endfunc
|
||||
" Test for the CursorHold autocmd
|
||||
func Test_CursorHold_autocmd()
|
||||
CheckRunVimInTerminal
|
||||
call writefile(['one', 'two', 'three'], 'Xfile')
|
||||
call writefile(['one', 'two', 'three'], 'XoneTwoThree')
|
||||
let before =<< trim END
|
||||
set updatetime=10
|
||||
au CursorHold * call writefile([line('.')], 'Xoutput', 'a')
|
||||
au CursorHold * call writefile([line('.')], 'XCHoutput', 'a')
|
||||
END
|
||||
call writefile(before, 'Xinit')
|
||||
let buf = RunVimInTerminal('-S Xinit Xfile', {})
|
||||
call writefile(before, 'XCHinit')
|
||||
let buf = RunVimInTerminal('-S XCHinit XoneTwoThree', {})
|
||||
call term_sendkeys(buf, "G")
|
||||
call term_wait(buf, 20)
|
||||
call term_wait(buf, 50)
|
||||
call term_sendkeys(buf, "gg")
|
||||
call term_wait(buf)
|
||||
call WaitForAssert({-> assert_equal(['1'], readfile('Xoutput')[-1:-1])})
|
||||
call WaitForAssert({-> assert_equal(['1'], readfile('XCHoutput')[-1:-1])})
|
||||
call term_sendkeys(buf, "j")
|
||||
call term_wait(buf)
|
||||
call WaitForAssert({-> assert_equal(['1', '2'], readfile('Xoutput')[-2:-1])})
|
||||
call WaitForAssert({-> assert_equal(['1', '2'], readfile('XCHoutput')[-2:-1])})
|
||||
call term_sendkeys(buf, "j")
|
||||
call term_wait(buf)
|
||||
call WaitForAssert({-> assert_equal(['1', '2', '3'], readfile('Xoutput')[-3:-1])})
|
||||
call WaitForAssert({-> assert_equal(['1', '2', '3'], readfile('XCHoutput')[-3:-1])})
|
||||
call StopVimInTerminal(buf)
|
||||
|
||||
call delete('Xinit')
|
||||
call delete('Xoutput')
|
||||
call delete('Xfile')
|
||||
call delete('XCHinit')
|
||||
call delete('XCHoutput')
|
||||
call delete('XoneTwoThree')
|
||||
endfunc
|
||||
|
||||
if has('timers')
|
||||
@ -1724,21 +1724,21 @@ endfunc
|
||||
|
||||
" Test for Bufleave autocommand that deletes the buffer we are about to edit.
|
||||
func Test_BufleaveWithDelete()
|
||||
new | edit Xfile1
|
||||
new | edit XbufLeave1
|
||||
|
||||
augroup test_bufleavewithdelete
|
||||
autocmd!
|
||||
autocmd BufLeave Xfile1 bwipe Xfile2
|
||||
autocmd BufLeave XbufLeave1 bwipe XbufLeave2
|
||||
augroup END
|
||||
|
||||
call assert_fails('edit Xfile2', 'E143:')
|
||||
call assert_equal('Xfile1', bufname('%'))
|
||||
call assert_fails('edit XbufLeave2', 'E143:')
|
||||
call assert_equal('XbufLeave1', bufname('%'))
|
||||
|
||||
autocmd! test_bufleavewithdelete BufLeave Xfile1
|
||||
autocmd! test_bufleavewithdelete BufLeave XbufLeave1
|
||||
augroup! test_bufleavewithdelete
|
||||
|
||||
new
|
||||
bwipe! Xfile1
|
||||
bwipe! XbufLeave1
|
||||
endfunc
|
||||
|
||||
" Test for autocommand that changes the buffer list, when doing ":ball".
|
||||
@ -2962,7 +2962,6 @@ endfunc
|
||||
|
||||
func Test_autocmd_SafeState()
|
||||
CheckRunVimInTerminal
|
||||
let g:test_is_flaky = 1
|
||||
|
||||
let lines =<< trim END
|
||||
let g:safe = 0
|
||||
@ -3243,13 +3242,13 @@ endfunc
|
||||
func Test_BufReadPre_delfile()
|
||||
augroup TestAuCmd
|
||||
au!
|
||||
autocmd BufReadPre Xfile call delete('Xfile')
|
||||
autocmd BufReadPre XbufreadPre call delete('XbufreadPre')
|
||||
augroup END
|
||||
call writefile([], 'Xfile')
|
||||
call assert_fails('new Xfile', 'E200:')
|
||||
call assert_equal('Xfile', @%)
|
||||
call writefile([], 'XbufreadPre')
|
||||
call assert_fails('new XbufreadPre', 'E200:')
|
||||
call assert_equal('XbufreadPre', @%)
|
||||
call assert_equal(1, &readonly)
|
||||
call delete('Xfile')
|
||||
call delete('XbufreadPre')
|
||||
augroup TestAuCmd
|
||||
au!
|
||||
augroup END
|
||||
@ -3260,13 +3259,13 @@ endfunc
|
||||
func Test_BufReadPre_changebuf()
|
||||
augroup TestAuCmd
|
||||
au!
|
||||
autocmd BufReadPre Xfile edit Xsomeotherfile
|
||||
autocmd BufReadPre Xchangebuf edit Xsomeotherfile
|
||||
augroup END
|
||||
call writefile([], 'Xfile')
|
||||
call assert_fails('new Xfile', 'E201:')
|
||||
call writefile([], 'Xchangebuf')
|
||||
call assert_fails('new Xchangebuf', 'E201:')
|
||||
call assert_equal('Xsomeotherfile', @%)
|
||||
call assert_equal(1, &readonly)
|
||||
call delete('Xfile')
|
||||
call delete('Xchangebuf')
|
||||
augroup TestAuCmd
|
||||
au!
|
||||
augroup END
|
||||
|
@ -79,11 +79,11 @@ endfunc
|
||||
func Test_non_existing_backupdir()
|
||||
throw 'Skipped: Nvim auto-creates backup directory'
|
||||
set backupdir=./non_existing_dir backupskip=
|
||||
call writefile(['line1'], 'Xfile')
|
||||
new Xfile
|
||||
call writefile(['line1'], 'Xbackupdir')
|
||||
new Xbackupdir
|
||||
call assert_fails('write', 'E510:')
|
||||
set backupdir&vim backupskip&vim
|
||||
call delete('Xfile')
|
||||
call delete('Xbackupdir')
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@ -76,14 +76,14 @@ func Test_buflist_browse()
|
||||
%bwipe!
|
||||
call assert_fails('buffer 1000', 'E86:')
|
||||
|
||||
call writefile(['foo1', 'foo2', 'foo3', 'foo4'], 'Xfile1')
|
||||
call writefile(['bar1', 'bar2', 'bar3', 'bar4'], 'Xfile2')
|
||||
call writefile(['baz1', 'baz2', 'baz3', 'baz4'], 'Xfile3')
|
||||
edit Xfile1
|
||||
call writefile(['foo1', 'foo2', 'foo3', 'foo4'], 'Xbrowse1')
|
||||
call writefile(['bar1', 'bar2', 'bar3', 'bar4'], 'Xbrowse2')
|
||||
call writefile(['baz1', 'baz2', 'baz3', 'baz4'], 'Xbrowse3')
|
||||
edit Xbrowse1
|
||||
let b1 = bufnr()
|
||||
edit Xfile2
|
||||
edit Xbrowse2
|
||||
let b2 = bufnr()
|
||||
edit +/baz4 Xfile3
|
||||
edit +/baz4 Xbrowse3
|
||||
let b3 = bufnr()
|
||||
|
||||
call assert_fails('buffer ' .. b1 .. ' abc', 'E488:')
|
||||
@ -127,9 +127,9 @@ func Test_buflist_browse()
|
||||
|
||||
call assert_fails('sandbox bnext', 'E48:')
|
||||
|
||||
call delete('Xfile1')
|
||||
call delete('Xfile2')
|
||||
call delete('Xfile3')
|
||||
call delete('Xbrowse1')
|
||||
call delete('Xbrowse2')
|
||||
call delete('Xbrowse3')
|
||||
%bwipe!
|
||||
endfunc
|
||||
|
||||
@ -200,39 +200,39 @@ endfunc
|
||||
" Test for quitting the 'swapfile exists' dialog with the split buffer
|
||||
" command.
|
||||
func Test_buffer_sbuf_cleanup()
|
||||
call writefile([], 'Xfile')
|
||||
call writefile([], 'XsplitCleanup')
|
||||
" first open the file in a buffer
|
||||
new Xfile
|
||||
new XsplitCleanup
|
||||
let bnr = bufnr()
|
||||
close
|
||||
" create the swap file
|
||||
call writefile([], '.Xfile.swp')
|
||||
call writefile([], '.XsplitCleanup.swp')
|
||||
" Remove the catch-all that runtest.vim adds
|
||||
au! SwapExists
|
||||
augroup BufTest
|
||||
au!
|
||||
autocmd SwapExists Xfile let v:swapchoice='q'
|
||||
autocmd SwapExists XsplitCleanup let v:swapchoice='q'
|
||||
augroup END
|
||||
exe 'sbuf ' . bnr
|
||||
call assert_equal(1, winnr('$'))
|
||||
call assert_equal(0, getbufinfo('Xfile')[0].loaded)
|
||||
call assert_equal(0, getbufinfo('XsplitCleanup')[0].loaded)
|
||||
|
||||
" test for :sball
|
||||
sball
|
||||
call assert_equal(1, winnr('$'))
|
||||
call assert_equal(0, getbufinfo('Xfile')[0].loaded)
|
||||
call assert_equal(0, getbufinfo('XsplitCleanup')[0].loaded)
|
||||
|
||||
%bw!
|
||||
set shortmess+=F
|
||||
let v:statusmsg = ''
|
||||
edit Xfile
|
||||
edit XsplitCleanup
|
||||
call assert_equal('', v:statusmsg)
|
||||
call assert_equal(1, winnr('$'))
|
||||
call assert_equal(0, getbufinfo('Xfile')[0].loaded)
|
||||
call assert_equal(0, getbufinfo('XsplitCleanup')[0].loaded)
|
||||
set shortmess&
|
||||
|
||||
call delete('Xfile')
|
||||
call delete('.Xfile.swp')
|
||||
call delete('XsplitCleanup')
|
||||
call delete('.XsplitCleanup.swp')
|
||||
augroup BufTest
|
||||
au!
|
||||
augroup END
|
||||
@ -265,35 +265,35 @@ func Test_goto_buf_with_confirm()
|
||||
CheckUnix
|
||||
CheckNotGui
|
||||
CheckFeature dialog_con
|
||||
new Xfile
|
||||
new XgotoConf
|
||||
enew
|
||||
call setline(1, 'test')
|
||||
call assert_fails('b Xfile', 'E37:')
|
||||
call assert_fails('b XgotoConf', 'E37:')
|
||||
call feedkeys('c', 'L')
|
||||
call assert_fails('confirm b Xfile', 'E37:')
|
||||
call assert_fails('confirm b XgotoConf', 'E37:')
|
||||
call assert_equal(1, &modified)
|
||||
call assert_equal('', @%)
|
||||
call feedkeys('y', 'L')
|
||||
call assert_fails('confirm b Xfile', ['', 'E37:'])
|
||||
call assert_fails('confirm b XgotoConf', ['', 'E37:'])
|
||||
call assert_equal(1, &modified)
|
||||
call assert_equal('', @%)
|
||||
call feedkeys('n', 'L')
|
||||
confirm b Xfile
|
||||
call assert_equal('Xfile', @%)
|
||||
confirm b XgotoConf
|
||||
call assert_equal('XgotoConf', @%)
|
||||
close!
|
||||
endfunc
|
||||
|
||||
" Test for splitting buffer with 'switchbuf'
|
||||
func Test_buffer_switchbuf()
|
||||
new Xfile
|
||||
new Xswitchbuf
|
||||
wincmd w
|
||||
set switchbuf=useopen
|
||||
sbuf Xfile
|
||||
sbuf Xswitchbuf
|
||||
call assert_equal(1, winnr())
|
||||
call assert_equal(2, winnr('$'))
|
||||
set switchbuf=usetab
|
||||
tabnew
|
||||
sbuf Xfile
|
||||
sbuf Xswitchbuf
|
||||
call assert_equal(1, tabpagenr())
|
||||
call assert_equal(2, tabpagenr('$'))
|
||||
set switchbuf&
|
||||
@ -305,11 +305,11 @@ func Test_bufadd_autocmd_bwipe()
|
||||
%bw!
|
||||
augroup BufAdd_Wipe
|
||||
au!
|
||||
autocmd BufAdd Xfile %bw!
|
||||
autocmd BufAdd Xbwipe %bw!
|
||||
augroup END
|
||||
edit Xfile
|
||||
edit Xbwipe
|
||||
call assert_equal('', @%)
|
||||
call assert_equal(0, bufexists('Xfile'))
|
||||
call assert_equal(0, bufexists('Xbwipe'))
|
||||
augroup BufAdd_Wipe
|
||||
au!
|
||||
augroup END
|
||||
@ -329,40 +329,40 @@ endfunc
|
||||
" Test for using CTRL-^ to edit the alternative file keeping the cursor
|
||||
" position with 'nostartofline'. Also test using the 'buf' command.
|
||||
func Test_buffer_edit_altfile()
|
||||
call writefile(repeat(['one two'], 50), 'Xfile1')
|
||||
call writefile(repeat(['five six'], 50), 'Xfile2')
|
||||
call writefile(repeat(['one two'], 50), 'Xaltfile1')
|
||||
call writefile(repeat(['five six'], 50), 'Xaltfile2')
|
||||
set nosol
|
||||
edit Xfile1
|
||||
edit Xaltfile1
|
||||
call cursor(25, 5)
|
||||
edit Xfile2
|
||||
edit Xaltfile2
|
||||
call cursor(30, 4)
|
||||
exe "normal \<C-^>"
|
||||
call assert_equal([0, 25, 5, 0], getpos('.'))
|
||||
exe "normal \<C-^>"
|
||||
call assert_equal([0, 30, 4, 0], getpos('.'))
|
||||
buf Xfile1
|
||||
buf Xaltfile1
|
||||
call assert_equal([0, 25, 5, 0], getpos('.'))
|
||||
buf Xfile2
|
||||
buf Xaltfile2
|
||||
call assert_equal([0, 30, 4, 0], getpos('.'))
|
||||
set sol&
|
||||
call delete('Xfile1')
|
||||
call delete('Xfile2')
|
||||
call delete('Xaltfile1')
|
||||
call delete('Xaltfile2')
|
||||
endfunc
|
||||
|
||||
" Test for running the :sball command with a maximum window count and a
|
||||
" modified buffer
|
||||
func Test_sball_with_count()
|
||||
%bw!
|
||||
edit Xfile1
|
||||
edit Xcountfile1
|
||||
call setline(1, ['abc'])
|
||||
new Xfile2
|
||||
new Xfile3
|
||||
new Xfile4
|
||||
new Xcountfile2
|
||||
new Xcountfile3
|
||||
new Xcountfile4
|
||||
2sball
|
||||
call assert_equal(bufnr('Xfile4'), winbufnr(1))
|
||||
call assert_equal(bufnr('Xfile1'), winbufnr(2))
|
||||
call assert_equal(0, getbufinfo('Xfile2')[0].loaded)
|
||||
call assert_equal(0, getbufinfo('Xfile3')[0].loaded)
|
||||
call assert_equal(bufnr('Xcountfile4'), winbufnr(1))
|
||||
call assert_equal(bufnr('Xcountfile1'), winbufnr(2))
|
||||
call assert_equal(0, getbufinfo('Xcountfile2')[0].loaded)
|
||||
call assert_equal(0, getbufinfo('Xcountfile3')[0].loaded)
|
||||
%bw!
|
||||
endfunc
|
||||
|
||||
@ -456,18 +456,18 @@ func Test_buflist_alloc_failure()
|
||||
CheckFunction test_alloc_fail
|
||||
%bw!
|
||||
|
||||
edit Xfile1
|
||||
edit XallocFail1
|
||||
call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0)
|
||||
call assert_fails('edit Xfile2', 'E342:')
|
||||
call assert_fails('edit XallocFail2', 'E342:')
|
||||
|
||||
" test for bufadd()
|
||||
call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0)
|
||||
call assert_fails('call bufadd("Xbuffer")', 'E342:')
|
||||
|
||||
" test for setting the arglist
|
||||
edit Xfile2
|
||||
edit XallocFail2
|
||||
call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0)
|
||||
call assert_fails('next Xfile3', 'E342:')
|
||||
call assert_fails('next XallocFail3', 'E342:')
|
||||
|
||||
" test for setting the alternate buffer name when writing a file
|
||||
call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0)
|
||||
@ -494,17 +494,17 @@ func Test_buflist_alloc_failure()
|
||||
endif
|
||||
|
||||
" test for loading a new buffer after wiping out all the buffers
|
||||
edit Xfile4
|
||||
edit XallocFail4
|
||||
call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0)
|
||||
call assert_fails('%bw!', 'E342:')
|
||||
|
||||
" test for :checktime loading the buffer
|
||||
call writefile(['one'], 'Xfile5')
|
||||
call writefile(['one'], 'XallocFail5')
|
||||
if has('unix')
|
||||
edit Xfile5
|
||||
edit XallocFail5
|
||||
" sleep for some time to make sure the timestamp is different
|
||||
sleep 200m
|
||||
call writefile(['two'], 'Xfile5')
|
||||
call writefile(['two'], 'XallocFail5')
|
||||
set autoread
|
||||
call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0)
|
||||
call assert_fails('checktime', 'E342:')
|
||||
@ -514,12 +514,12 @@ func Test_buflist_alloc_failure()
|
||||
|
||||
" test for :vimgrep loading a dummy buffer
|
||||
call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0)
|
||||
call assert_fails('vimgrep two Xfile5', 'E342:')
|
||||
call delete('Xfile5')
|
||||
call assert_fails('vimgrep two XallocFail5', 'E342:')
|
||||
call delete('XallocFail5')
|
||||
|
||||
" test for quickfix command loading a buffer
|
||||
call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0)
|
||||
call assert_fails('cexpr "Xfile6:10:Line10"', 'E342:')
|
||||
call assert_fails('cexpr "XallocFail6:10:Line10"', 'E342:')
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@ -2009,6 +2009,32 @@ func Test_setbufvar_options()
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_setbufvar_keep_window_title()
|
||||
CheckRunVimInTerminal
|
||||
if !has('title') || empty(&t_ts)
|
||||
throw "Skipped: can't get/set title"
|
||||
endif
|
||||
|
||||
let lines =<< trim END
|
||||
set title
|
||||
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 WaitForAssert({-> assert_match('Xa.txt', term_gettitle(buf))}, 1000)
|
||||
|
||||
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 +2593,6 @@ endfunc
|
||||
|
||||
func Test_state()
|
||||
CheckRunVimInTerminal
|
||||
let g:test_is_flaky = 1
|
||||
|
||||
let getstate = ":echo 'state: ' .. g:state .. '; mode: ' .. g:mode\<CR>"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user