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
