aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/_meta/api.lua
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2024-02-04 02:59:26 +0000
committerSean Dewar <6256228+seandewar@users.noreply.github.com>2024-03-08 23:23:55 +0000
commita873f33993ef84e3f954127038e559e1ac1cac43 (patch)
tree732e38f3a4db9af8403ee9633bbc88f53e16d570 /runtime/lua/vim/_meta/api.lua
parent233649bc757743f7677b2ae414779192a94aa2ae (diff)
downloadrneovim-a873f33993ef84e3f954127038e559e1ac1cac43.tar.gz
rneovim-a873f33993ef84e3f954127038e559e1ac1cac43.tar.bz2
rneovim-a873f33993ef84e3f954127038e559e1ac1cac43.zip
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.
Diffstat (limited to 'runtime/lua/vim/_meta/api.lua')
0 files changed, 0 insertions, 0 deletions