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  if has('multi_byte')
52    call setline(1, range(20))
53    exe "normal! gg2jv10lr\<c-k>hh"
54    call assert_equal(["1", "───────────", "3"], getline(2,4))
55  endif
56
57  bwipe!
58  set virtualedit=
59endfunc
60
61func Test_edit_CTRL_G()
62  new
63  set virtualedit=insert
64  call setline(1, ['123', '1', '12'])
65  exe "normal! ggA\<c-g>jx\<c-g>jx"
66  call assert_equal(['123', '1  x', '12 x'], getline(1,'$'))
67
68  set virtualedit=all
69  %d_
70  call setline(1, ['1', '12'])
71  exe "normal! ggllix\<c-g>jx"
72  call assert_equal(['1 x', '12x'], getline(1,'$'))
73
74
75  bwipe!
76  set virtualedit=
77endfunc
78