aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/api/win_config.c2
-rw-r--r--test/functional/api/window_spec.lua10
2 files changed, 11 insertions, 1 deletions
diff --git a/src/nvim/api/win_config.c b/src/nvim/api/win_config.c
index 9d63a1997c..238ec5df1e 100644
--- a/src/nvim/api/win_config.c
+++ b/src/nvim/api/win_config.c
@@ -294,7 +294,7 @@ Window nvim_open_win(Buffer buffer, Boolean enter, Dict(win_config) *config, Err
tp = win_find_tabpage(wp);
}
if (tp && buf != wp->w_buffer) {
- const bool noautocmd = !enter || fconfig.noautocmd;
+ const bool noautocmd = curwin != wp || fconfig.noautocmd;
win_set_buf(wp, buf, noautocmd, err);
if (!noautocmd) {
tp = win_find_tabpage(wp);
diff --git a/test/functional/api/window_spec.lua b/test/functional/api/window_spec.lua
index 8966c3b086..e0cb66de41 100644
--- a/test/functional/api/window_spec.lua
+++ b/test/functional/api/window_spec.lua
@@ -1571,6 +1571,16 @@ describe('API/win', function()
)
eq(false, eval('fired'))
end)
+
+ it('fires Buf* autocommands when `!enter` if window is entered via autocommands', function()
+ exec([[
+ autocmd WinNew * ++once only!
+ let fired = v:false
+ autocmd BufEnter * ++once let fired = v:true
+ ]])
+ api.nvim_open_win(api.nvim_create_buf(true, true), false, { split = 'left' })
+ eq(true, eval('fired'))
+ end)
end)
describe('set_config', function()