aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/autocmd.c3
-rw-r--r--src/nvim/window.c5
2 files changed, 8 insertions, 0 deletions
diff --git a/src/nvim/autocmd.c b/src/nvim/autocmd.c
index 9117dde089..cdaa120644 100644
--- a/src/nvim/autocmd.c
+++ b/src/nvim/autocmd.c
@@ -1147,6 +1147,7 @@ void aucmd_prepbuf(aco_save_T *aco, buf_T *buf)
globaldir = NULL;
block_autocmds(); // We don't want BufEnter/WinEnter autocommands.
+ make_snapshot(SNAP_AUCMD_IDX);
if (need_append) {
win_append(lastwin, aucmd_win);
pmap_put(handle_T)(&window_handles, aucmd_win->handle, aucmd_win);
@@ -1212,6 +1213,8 @@ win_found:
close_tabpage(curtab);
}
+ restore_snapshot(SNAP_AUCMD_IDX, false);
+ win_comp_pos(); // recompute window positions
unblock_autocmds();
win_T *const save_curwin = win_find_by_handle(aco->save_curwin_handle);
diff --git a/src/nvim/window.c b/src/nvim/window.c
index 43667377c5..549dd18e4f 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -958,6 +958,11 @@ int win_split_ins(int size, int flags, win_T *new_wp, int dir)
int wmh1;
bool did_set_fraction = false;
+ // aucmd_win should always remain floating
+ if (new_wp != NULL && new_wp == aucmd_win) {
+ return FAIL;
+ }
+
if (flags & WSP_TOP) {
oldwin = firstwin;
} else if (flags & WSP_BOT || curwin->w_floating) {