aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/ex_cmds2.c5
-rw-r--r--test/old/testdir/test_winfixbuf.vim11
2 files changed, 14 insertions, 2 deletions
diff --git a/src/nvim/ex_cmds2.c b/src/nvim/ex_cmds2.c
index dacdb27b08..732631b678 100644
--- a/src/nvim/ex_cmds2.c
+++ b/src/nvim/ex_cmds2.c
@@ -457,8 +457,9 @@ void ex_listdo(exarg_T *eap)
}
if (curwin->w_p_wfb) {
// Split the window, which will be 'nowinfixbuf', and set curwin to that
- win_split(0, 0);
-
+ if (win_split(0, 0) == FAIL) {
+ return; // error message already given
+ }
if (curwin->w_p_wfb) {
// Autocommands set 'winfixbuf' or sent us to another window
// with it set. Give up.
diff --git a/test/old/testdir/test_winfixbuf.vim b/test/old/testdir/test_winfixbuf.vim
index eb6d35f0af..3eb221023c 100644
--- a/test/old/testdir/test_winfixbuf.vim
+++ b/test/old/testdir/test_winfixbuf.vim
@@ -3248,4 +3248,15 @@ func Test_quickfix_changed_split_failed()
augroup! QfChanged
endfunc
+func Test_bufdo_splitwin_fails()
+ call s:reset_all_buffers()
+ let other = s:make_buffer_pairs()
+ " Make sure there is not enough room to
+ " split the winfixedbuf window
+ let &winheight=&lines
+ let &winminheight=&lines-2
+ call assert_fails(':bufdo echo 1', 'E36:')
+ set winminheight&vim winheight&vim
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab