forked from aniani/vim
patch 7.4.1837
Problem: The BufUnload event is triggered twice, when :bunload is used with set to or . Solution: Do not trigger the event when ml_mfp is NULL. (Hirohito Higashi)
This commit is contained in:
@@ -574,9 +574,12 @@ buf_freeall(buf_T *buf, int flags)
|
||||
int is_curbuf = (buf == curbuf);
|
||||
|
||||
buf->b_closing = TRUE;
|
||||
if (buf->b_ml.ml_mfp != NULL)
|
||||
{
|
||||
apply_autocmds(EVENT_BUFUNLOAD, buf->b_fname, buf->b_fname, FALSE, buf);
|
||||
if (!buf_valid(buf)) /* autocommands may delete the buffer */
|
||||
return;
|
||||
}
|
||||
if ((flags & BFA_DEL) && buf->b_p_bl)
|
||||
{
|
||||
apply_autocmds(EVENT_BUFDELETE, buf->b_fname, buf->b_fname, FALSE, buf);
|
||||
|
@@ -7,10 +7,7 @@ func Test_vim_did_enter()
|
||||
" becomes one.
|
||||
endfunc
|
||||
|
||||
if !has('timers')
|
||||
finish
|
||||
endif
|
||||
|
||||
if has('timers')
|
||||
func ExitInsertMode(id)
|
||||
call feedkeys("\<Esc>")
|
||||
endfunc
|
||||
@@ -33,3 +30,33 @@ func Test_cursorhold_insert_ctrl_x()
|
||||
call feedkeys("a\<C-X>", 'x!')
|
||||
call assert_equal(0, g:triggered)
|
||||
endfunc
|
||||
endif
|
||||
|
||||
function Test_bufunload()
|
||||
augroup test_bufunload_group
|
||||
autocmd!
|
||||
autocmd BufUnload * call add(s:li, "bufunload")
|
||||
autocmd BufDelete * call add(s:li, "bufdelete")
|
||||
autocmd BufWipeout * call add(s:li, "bufwipeout")
|
||||
augroup END
|
||||
|
||||
let s:li=[]
|
||||
new
|
||||
setlocal bufhidden=
|
||||
bunload
|
||||
call assert_equal(["bufunload", "bufdelete"], s:li)
|
||||
|
||||
let s:li=[]
|
||||
new
|
||||
setlocal bufhidden=delete
|
||||
bunload
|
||||
call assert_equal(["bufunload", "bufdelete"], s:li)
|
||||
|
||||
let s:li=[]
|
||||
new
|
||||
setlocal bufhidden=unload
|
||||
bwipeout
|
||||
call assert_equal(["bufunload", "bufdelete", "bufwipeout"], s:li)
|
||||
|
||||
augroup! test_bufunload_group
|
||||
endfunc
|
||||
|
@@ -753,6 +753,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1837,
|
||||
/**/
|
||||
1836,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user