| 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 |