aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/quickfix.c13
-rw-r--r--src/nvim/testdir/test_autocmd.vim14
2 files changed, 10 insertions, 17 deletions
diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c
index ea2d13761c..1aeadcec4a 100644
--- a/src/nvim/quickfix.c
+++ b/src/nvim/quickfix.c
@@ -3909,6 +3909,7 @@ load_dummy_buffer (
bufref_T newbuf_to_wipe;
int failed = true;
aco_save_T aco;
+ int readfile_result;
// Allocate a buffer without putting it in the buffer list.
newbuf = buflist_new(NULL, NULL, (linenr_T)1, BLN_DUMMY);
@@ -3922,7 +3923,9 @@ load_dummy_buffer (
/* need to open the memfile before putting the buffer in a window */
if (ml_open(newbuf) == OK) {
- /* set curwin/curbuf to buf and save a few things */
+ // Make sure this buffer isn't wiped out by auto commands.
+ newbuf->b_locked++;
+ // set curwin/curbuf to buf and save a few things
aucmd_prepbuf(&aco, newbuf);
/* Need to set the filename for autocommands. */
@@ -3936,9 +3939,11 @@ load_dummy_buffer (
curbuf->b_flags &= ~BF_DUMMY;
newbuf_to_wipe.br_buf = NULL;
- if (readfile(fname, NULL,
- (linenr_T)0, (linenr_T)0, (linenr_T)MAXLNUM,
- NULL, READ_NEW | READ_DUMMY) == OK
+ readfile_result = readfile(fname, NULL, (linenr_T)0, (linenr_T)0,
+ (linenr_T)MAXLNUM, NULL,
+ READ_NEW | READ_DUMMY);
+ newbuf->b_locked--;
+ if (readfile_result == OK
&& !got_int
&& !(curbuf->b_flags & BF_NEW)) {
failed = FALSE;
diff --git a/src/nvim/testdir/test_autocmd.vim b/src/nvim/testdir/test_autocmd.vim
index 16cf6965bd..d6ab4ff4e0 100644
--- a/src/nvim/testdir/test_autocmd.vim
+++ b/src/nvim/testdir/test_autocmd.vim
@@ -797,18 +797,6 @@ func Test_QuitPre()
endfunc
func Test_Cmdline()
- au! CmdlineChanged : let g:text = getcmdline()
- let g:text = 0
- call feedkeys(":echom 'hello'\<CR>", 'xt')
- call assert_equal("echom 'hello'", g:text)
- au! CmdlineChanged
-
- au! CmdlineChanged : let g:entered = expand('<afile>')
- let g:entered = 0
- call feedkeys(":echom 'hello'\<CR>", 'xt')
- call assert_equal(':', g:entered)
- au! CmdlineChanged
-
au! CmdlineEnter : let g:entered = expand('<afile>')
au! CmdlineLeave : let g:left = expand('<afile>')
let g:entered = 0
@@ -983,7 +971,7 @@ func Test_Cmd_Autocmds()
au BufWriteCmd XtestE call extend(g:lines, getline(0, '$'))
wall " will write other window to 'lines'
call assert_equal(4, len(g:lines), g:lines)
- call assert_equal('asdf', g:lines[2])
+ call assert_equal("\tasdf", g:lines[2])
au! BufReadCmd
au! BufWriteCmd