forked from aniani/vim
Problem: Crash when BufUnload autocommands close all buffers. (Andrew
Pimlott)
Solution: Set curwin->w_buffer to curbuf to avoid NULL.
47 lines
1.2 KiB
Plaintext
47 lines
1.2 KiB
Plaintext
Test for BufWritePre autocommand that deletes or unloads the buffer.
|
||
Test for BufUnload autocommand that unloads all other buffers.
|
||
|
||
STARTTEST
|
||
:so small.vim
|
||
:au BufWritePre Xxx1 bunload
|
||
:au BufWritePre Xxx2 bwipe
|
||
/^start of
|
||
A1:.,/end of/w! Xxx1 " write test file Xxx1
|
||
$r2:.,/end of/w! Xxx2 " write test file Xxx2
|
||
:e! Xxx2 " edit Xxx2
|
||
:bdel test8.in " delete this file from the buffer list
|
||
:e Xxx1 " edit Xxx1
|
||
:w " write it, will unload it and give an error msg
|
||
:w! test.out " Write contents of this file
|
||
:e! Xxx2 " start editing Xxx2
|
||
:bwipe test.out " remove test.out from the buffer list
|
||
:w " write it, will delete the buffer and give an error msg
|
||
:w >>test.out " Append contents of this file
|
||
:au! BufWritePre
|
||
:func CloseAll()
|
||
let i = 0
|
||
while i <= bufnr('$')
|
||
if i != bufnr('%') && bufloaded(i)
|
||
exe i . "bunload"
|
||
endif
|
||
let i += 1
|
||
endwhile
|
||
endfunc
|
||
:func WriteToOut()
|
||
edit! test.out
|
||
$put ='VimLeave done'
|
||
write
|
||
endfunc
|
||
:set viminfo='100,nviminfo
|
||
:au BufUnload * call CloseAll()
|
||
:au VimLeave * call WriteToOut()
|
||
:e small.vim
|
||
:sp mbyte.vim
|
||
:q
|
||
:qa!
|
||
ENDTEST
|
||
|
||
start of Xxx
|
||
test
|
||
end of Xxx
|