vim-patch:9.0.0789: dummy buffer ends up in a window

Problem:    Dummy buffer ends up in a window.
Solution:   Disallow navigating to a dummy buffer.
8f3c3c6cd0
This commit is contained in:
zeertzjq 2022-10-19 07:10:22 +08:00
parent 22473672aa
commit 66933b45dc
2 changed files with 25 additions and 0 deletions

View File

@ -1224,6 +1224,11 @@ int do_buffer(int action, int start, int dir, int count, int forceit)
}
return FAIL;
}
if ((action == DOBUF_GOTO || action == DOBUF_SPLIT) && (buf->b_flags & BF_DUMMY)) {
// disallow navigating to the dummy buffer
semsg(_(e_nobufnr), count);
return FAIL;
}
// delete buffer "buf" from memory and/or the list
if (unload) {

View File

@ -3269,4 +3269,24 @@ func Test_noname_autocmd()
augroup! test_noname_autocmd_group
endfunc
func Test_autocmd_split_dummy()
" Autocommand trying to split a window containing a dummy buffer.
auto BufReadPre * exe "sbuf " .. expand("<abuf>")
" Avoid the "W11" prompt
au FileChangedShell * let v:fcs_choice = 'reload'
func Xautocmd_changelist()
cal writefile(['Xtestfile2:4:4'], 'Xerr')
edit Xerr
lex 'Xtestfile2:4:4'
endfunc
call Xautocmd_changelist()
call assert_fails('call Xautocmd_changelist()', 'E86:')
au! BufReadPre
au! FileChangedShell
delfunc Xautocmd_changelist
bwipe! Xerr
call delete('Xerr')
endfunc
" vim: shiftwidth=2 sts=2 expandtab