1" Tests for 'virtualedit'.
2
3func Test_yank_move_change()
4  new
5  call setline(1, [
6	\ "func foo() error {",
7	\ "\tif n, err := bar();",
8	\ "\terr != nil {",
9	\ "\t\treturn err",
10	\ "\t}",
11	\ "\tn = n * n",
12	\ ])
13  set virtualedit=all
14  set ts=4
15  function! MoveSelectionDown(count) abort
16    normal! m`
17    silent! exe "'<,'>move'>+".a:count
18    norm! ``
19  endfunction
20
21  xmap ]e :<C-U>call MoveSelectionDown(v:count1)<CR>
22  2
23  normal 2gg
24  normal J
25  normal jVj
26  normal ]e
27  normal ce
28  bwipe!
29  set virtualedit=
30  set ts=8
31endfunc
32
33func Test_paste_end_of_line()
34  new
35  set virtualedit=all
36  call setline(1, ['456', '123'])
37  normal! gg0"ay$
38  exe "normal! 2G$lllA\<C-O>:normal! \"agP\r"
39  call assert_equal('123456', getline(2))
40
41  bwipe!
42  set virtualedit=
43endfunc
44
45func Test_replace_end_of_line()
46  new
47  set virtualedit=all
48  call setline(1, range(20))
49  exe "normal! gg2jv10lr-"
50  call assert_equal(["1", "-----------", "3"], getline(2,4))
51  call setline(1, range(20))
52  exe "normal! gg2jv10lr\<c-k>hh"
53  call assert_equal(["1", "───────────", "3"], getline(2,4))
54
55  bwipe!
56  set virtualedit=
57endfunc
58
59func Test_edit_CTRL_G()
60  new
61  set virtualedit=insert
62  call setline(1, ['123', '1', '12'])
63  exe "normal! ggA\<c-g>jx\<c-g>jx"
64  call assert_equal(['123', '1  x', '12 x'], getline(1,'$'))
65
66  set virtualedit=all
67  %d_
68  call setline(1, ['1', '12'])
69  exe "normal! ggllix\<c-g>jx"
70  call assert_equal(['1 x', '12x'], getline(1,'$'))
71
72
73  bwipe!
74  set virtualedit=
75endfunc
76