diff options
author | Sean Dewar <6256228+seandewar@users.noreply.github.com> | 2024-02-24 23:18:50 +0000 |
---|---|---|
committer | Sean Dewar <6256228+seandewar@users.noreply.github.com> | 2024-03-08 23:24:04 +0000 |
commit | 24dfa47e4f4ca41d0c5f8c1c0f851602362c81d3 (patch) | |
tree | e4992e2be9104db0ccd7b6c89448f4897b7c8f5f /src | |
parent | 66f331fef7ad3df480bd02f1705e176d1a07c785 (diff) | |
download | rneovim-24dfa47e4f4ca41d0c5f8c1c0f851602362c81d3.tar.gz rneovim-24dfa47e4f4ca41d0c5f8c1c0f851602362c81d3.tar.bz2 rneovim-24dfa47e4f4ca41d0c5f8c1c0f851602362c81d3.zip |
vim-patch:partial:9.1.0117: Stop split-moving from firing WinNew and WinNewPre autocommands
Problem: win_splitmove fires WinNewPre and possibly WinNew when moving
windows, even though no new windows are created.
Solution: don't fire WinNew and WinNewPre when inserting an existing
window, even if it isn't the current window. Improve the
accuracy of related documentation. (Sean Dewar)
https://github.com/vim/vim/commit/96cc4aef3d47d0fd70e68908af3d48a0dce8ea70
Partial as WinNewPre has not been ported yet (it currently has problems anyway).
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/eval.lua | 8 | ||||
-rw-r--r-- | src/nvim/window.c | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua index b7120d5dd5..febd022254 100644 --- a/src/nvim/eval.lua +++ b/src/nvim/eval.lua @@ -12699,10 +12699,10 @@ M.funcs = { args = { 2, 3 }, base = 1, desc = [=[ - Move the window {nr} to a new split of the window {target}. - This is similar to moving to {target}, creating a new window - using |:split| but having the same contents as window {nr}, and - then closing {nr}. + Temporarily switch to window {target}, then move window {nr} + to a new split adjacent to {target}. + Unlike commands such as |:split|, no new windows are created + (the |window-ID| of window {nr} is unchanged after the move). Both {nr} and {target} can be window numbers or |window-ID|s. Both must be in the current tab page. diff --git a/src/nvim/window.c b/src/nvim/window.c index cfa28bbc1f..b1135d59fc 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -987,6 +987,8 @@ int win_split(int size, int flags) /// When "new_wp" is NULL: split the current window in two. /// When "new_wp" is not NULL: insert this window at the far /// top/left/right/bottom. +/// On failure, if "new_wp" was not NULL, no changes will have been made to the +/// window layout or sizes. /// @return NULL for failure, or pointer to new window win_T *win_split_ins(int size, int flags, win_T *new_wp, int dir) { @@ -1494,7 +1496,7 @@ win_T *win_split_ins(int size, int flags, win_T *new_wp, int dir) if (!(flags & WSP_NOENTER)) { // make the new window the current window - win_enter_ext(wp, WEE_TRIGGER_NEW_AUTOCMDS | WEE_TRIGGER_ENTER_AUTOCMDS + win_enter_ext(wp, (new_wp == NULL ? WEE_TRIGGER_NEW_AUTOCMDS : 0) | WEE_TRIGGER_ENTER_AUTOCMDS | WEE_TRIGGER_LEAVE_AUTOCMDS); } if (vertical) { |