aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSean Dewar <6256228+seandewar@users.noreply.github.com>2024-02-24 23:18:50 +0000
committerSean Dewar <6256228+seandewar@users.noreply.github.com>2024-03-08 23:24:04 +0000
commit24dfa47e4f4ca41d0c5f8c1c0f851602362c81d3 (patch)
treee4992e2be9104db0ccd7b6c89448f4897b7c8f5f /src
parent66f331fef7ad3df480bd02f1705e176d1a07c785 (diff)
downloadrneovim-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.lua8
-rw-r--r--src/nvim/window.c4
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) {