@@ -103,6 +103,44 @@ func Test_window_vertical_split()
103103 bw
104104endfunc
105105
106+ func Test_window_curwin ()
107+ call assert_equal (1 , winnr (' $' ))
108+ split
109+ split
110+ split
111+ call assert_equal (4 , winnr (' $' ))
112+
113+ 2 wincmd w
114+ curwin help
115+ call assert_equal (2 , winnr ())
116+ 3 curwin sp
117+ call assert_equal (3 , winnr ())
118+ + curwin sp
119+ call assert_equal (4 , winnr ())
120+ 1 curwin sp
121+ call assert_equal (1 , winnr ())
122+ call assert_equal (4 , winnr (' $' ))
123+
124+ bw
125+
126+ " Now test whether :curwin! works in discarding changes
127+ new
128+ new
129+ put = ' text'
130+ let l: bufnr = bufnr (' %' )
131+
132+ 2 wincmd w
133+ call assert_fails (' 1curwin sp' , ' E37:' )
134+ call assert_true (bufloaded (l: bufnr ))
135+ 1 curwin! sp
136+ call assert_false (bufloaded (l: bufnr ))
137+ call assert_equal (1 , winnr ())
138+ call assert_equal (3 , winnr (' $' ))
139+
140+ bw !
141+ call assert_equal (1 , winnr (' $' ))
142+ endfunc
143+
106144func Test_window_split_edit_alternate ()
107145 e Xa
108146 e Xb
@@ -322,7 +360,7 @@ func Test_equalalways_on_close()
322360 set equalalways
323361 vsplit
324362 windo split
325- split
363+ split
326364 wincmd J
327365 " now we have a frame top-left with two windows, a frame top-right with two
328366 " windows and a frame at the bottom, full-width.
0 commit comments