neovim/test/functional/api
Sean Dewar a873f33993
fix(api): open_win fire BufWinEnter for other buffer when !enter && !noautocmd
Problem: BufWinEnter is not fired when not entering a new window, even when a
different buffer is specified and buffer-related autocommands are unblocked
(!noautocmd).

Solution: fire it in the context of the new window and buffer. Do not do it if
the buffer is unchanged, like :{s}buffer.

Be wary of autocommands! For example, it's possible for nvim_win_set_config to
be used in an autocommand to move a window to a different tabpage (in contrast,
things like wincmd T actually create a *new* window, so it may not have been
possible before, meaning other parts of Nvim could assume windows can't do
this... I'd be especially cautious of logic that restores curwin and curtab
without checking if curwin is still valid in curtab, if any such logic exists).

Also, bail early from win_set_buf if setting the temp curwin fails; this
shouldn't be possible, as the callers check that wp is valid, but in case that's
not true, win_set_buf will no longer continue setting a buffer for the wrong
window.

Note that pum_create_float_preview also uses win_set_buf, but from a glance,
doesn't look like it properly checks for autocmds screwing things up (win_enter,
nvim_create_buf...). I haven't addressed that here.

Also adds some test coverage for nvim_open_win autocommands.

Closes #27121.
2024-03-08 23:23:55 +00:00
..
autocmd_spec.lua test: rename (meths, funcs) -> (api, fn) 2024-01-12 18:59:14 +00:00
buffer_spec.lua test: use integers for API Buffer/Window/Tabpage EXT types 2024-01-16 19:11:49 +00:00
buffer_updates_spec.lua refactor(tests): get channel id via nvim_get_chan_info #27441 2024-02-12 05:50:39 -08:00
command_spec.lua test: rename (meths, funcs) -> (api, fn) 2024-01-12 18:59:14 +00:00
extmark_spec.lua feat(extmarks): subpriorities (relative to declaration order) (#27131) 2024-01-28 21:13:58 -06:00
highlight_spec.lua test: rename (meths, funcs) -> (api, fn) 2024-01-12 18:59:14 +00:00
keymap_spec.lua feat(api): support getting abbreviations (#26868) 2024-01-20 08:08:44 +08:00
menu_spec.lua refactor: format test/* 2024-01-03 02:09:29 +01:00
proc_spec.lua test: rename (meths, funcs) -> (api, fn) 2024-01-12 18:59:14 +00:00
rpc_fixture.lua refactor: format test/* 2024-01-03 02:09:29 +01:00
server_notifications_spec.lua refactor(tests): get channel id via nvim_get_chan_info #27441 2024-02-12 05:50:39 -08:00
server_requests_spec.lua refactor(tests): get channel id via nvim_get_chan_info #27441 2024-02-12 05:50:39 -08:00
tabpage_spec.lua feat(api): add nvim_tabpage_set_win (#27222) 2024-01-29 15:18:33 +08:00
ui_spec.lua test: rename (meths, funcs) -> (api, fn) 2024-01-12 18:59:14 +00:00
version_spec.lua test: rename (meths, funcs) -> (api, fn) 2024-01-12 18:59:14 +00:00
vim_spec.lua test: more tests for nvim_eval_statusline "fillchar" (#27502) 2024-02-17 08:45:35 +08:00
window_spec.lua fix(api): open_win fire BufWinEnter for other buffer when !enter && !noautocmd 2024-03-08 23:23:55 +00:00