From 1ef4340f22b915dc7ae2afdb2e88599133a20537 Mon Sep 17 00:00:00 2001 From: "Andy K. Massimino" Date: Thu, 18 Mar 2021 21:51:20 -0400 Subject: vim-patch:8.1.2020: it is not easy to change the window layout Problem: It is not easy to change the window layout. Solution: Add win_splitmove(). (Andy Massimino, closes vim/vim#4561) https://github.com/vim/vim/commit/d20dcb3d011da6111153109f6e46fbd5c7fe9fb6 --- src/nvim/testdir/test_window_cmd.vim | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/nvim/testdir/test_window_cmd.vim') diff --git a/src/nvim/testdir/test_window_cmd.vim b/src/nvim/testdir/test_window_cmd.vim index 969b75d424..b57c4e27da 100644 --- a/src/nvim/testdir/test_window_cmd.vim +++ b/src/nvim/testdir/test_window_cmd.vim @@ -808,6 +808,39 @@ func Test_winnr() only | tabonly endfunc +func Test_win_splitmove() + edit a + leftabove split b + leftabove vsplit c + leftabove split d + call assert_equal(0, win_splitmove(winnr(), winnr('l'))) + call assert_equal(bufname(winbufnr(1)), 'c') + call assert_equal(bufname(winbufnr(2)), 'd') + call assert_equal(bufname(winbufnr(3)), 'b') + call assert_equal(bufname(winbufnr(4)), 'a') + call assert_equal(0, win_splitmove(winnr(), winnr('j'), {'vertical': 1})) + call assert_equal(0, win_splitmove(winnr(), winnr('j'), {'vertical': 1})) + call assert_equal(bufname(winbufnr(1)), 'c') + call assert_equal(bufname(winbufnr(2)), 'b') + call assert_equal(bufname(winbufnr(3)), 'd') + call assert_equal(bufname(winbufnr(4)), 'a') + call assert_equal(0, win_splitmove(winnr(), winnr('k'), {'vertical': 1})) + call assert_equal(bufname(winbufnr(1)), 'd') + call assert_equal(bufname(winbufnr(2)), 'c') + call assert_equal(bufname(winbufnr(3)), 'b') + call assert_equal(bufname(winbufnr(4)), 'a') + call assert_equal(0, win_splitmove(winnr(), winnr('j'), {'rightbelow': v:true})) + call assert_equal(bufname(winbufnr(1)), 'c') + call assert_equal(bufname(winbufnr(2)), 'b') + call assert_equal(bufname(winbufnr(3)), 'a') + call assert_equal(bufname(winbufnr(4)), 'd') + only | bd + + call assert_fails('call win_splitmove(winnr(), 123)', 'E957:') + call assert_fails('call win_splitmove(123, winnr())', 'E957:') + call assert_fails('call win_splitmove(winnr(), winnr())', 'E957:') +endfunc + func Test_window_resize() " Vertical :resize (absolute, relative, min and max size). vsplit -- cgit From b2ec77007081cf9c63f935115f69c718db248226 Mon Sep 17 00:00:00 2001 From: "Andy K. Massimino" Date: Thu, 18 Mar 2021 22:57:27 -0400 Subject: vim-patch:8.2.0093: win_splitmove() can make Vim hang Problem: win_splitmove() can make Vim hang. Solution: Check windows exists in the current tab page. (closes vim/vim#5444) https://github.com/vim/vim/commit/7b94e77132eabdf0e43abca57e2ffeb961545174 --- src/nvim/testdir/test_window_cmd.vim | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/nvim/testdir/test_window_cmd.vim') diff --git a/src/nvim/testdir/test_window_cmd.vim b/src/nvim/testdir/test_window_cmd.vim index b57c4e27da..402c2c3eb7 100644 --- a/src/nvim/testdir/test_window_cmd.vim +++ b/src/nvim/testdir/test_window_cmd.vim @@ -839,6 +839,10 @@ func Test_win_splitmove() call assert_fails('call win_splitmove(winnr(), 123)', 'E957:') call assert_fails('call win_splitmove(123, winnr())', 'E957:') call assert_fails('call win_splitmove(winnr(), winnr())', 'E957:') + + tabnew + call assert_fails('call win_splitmove(1, win_getid(1, 1))', 'E957:') + tabclose endfunc func Test_window_resize() -- cgit From 0cec2d39c995f8aaeac95edb0ce463c6fcd19645 Mon Sep 17 00:00:00 2001 From: "Andy K. Massimino" Date: Thu, 18 Mar 2021 22:40:18 -0400 Subject: vim-patch:8.2.0422: crash when passing popup window to win_splitmove() Problem: Crash when passing popup window to win_splitmove(). (john Devin) Solution: Disallow moving a popup window. (closes vim/vim#5816) https://github.com/vim/vim/commit/0f1563ffee4397f5b379517c41b7c9a977fd2e22 Add translated test for 8.2.0422 (popup->floating) --- src/nvim/testdir/test_window_cmd.vim | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/nvim/testdir/test_window_cmd.vim') diff --git a/src/nvim/testdir/test_window_cmd.vim b/src/nvim/testdir/test_window_cmd.vim index 402c2c3eb7..86682cca4f 100644 --- a/src/nvim/testdir/test_window_cmd.vim +++ b/src/nvim/testdir/test_window_cmd.vim @@ -845,6 +845,18 @@ func Test_win_splitmove() tabclose endfunc +func Test_floatwin_splitmove() + vsplit + let win2 = win_getid() + let popup_winid = nvim_open_win(0, 0, {'relative': 'win', + \ 'row': 3, 'col': 3, 'width': 12, 'height': 3}) + call assert_fails('call win_splitmove(popup_winid, win2)', 'E957:') + call assert_fails('call win_splitmove(win2, popup_winid)', 'E957:') + + call nvim_win_close(popup_winid, 1) + bwipe +endfunc + func Test_window_resize() " Vertical :resize (absolute, relative, min and max size). vsplit -- cgit