annotate src/testdir/test_visual.vim @ 28893:aa44d5842d6c v8.2.4969

patch 8.2.4969: changing text in Visual mode may cause invalid memory access Commit: https://github.com/vim/vim/commit/7ce5b2b590256ce53d6af28c1d203fb3bc1d2d97 Author: Bram Moolenaar <Bram@vim.org> Date: Mon May 16 19:40:59 2022 +0100 patch 8.2.4969: changing text in Visual mode may cause invalid memory access Problem: Changing text in Visual mode may cause invalid memory access. Solution: Check the Visual position after making a change.
author Bram Moolenaar <Bram@vim.org>
date Mon, 16 May 2022 20:45:03 +0200
parents 5eea8a249f86
children 05ac4ab2c282
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18825
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1 " Tests for various Visual modes.
11091
ae45d497868f patch 8.0.0433: beeps when running tests
Christian Brabandt <cb@256bit.org>
parents: 10900
diff changeset
2
22502
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
3 source shared.vim
25070
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
4 source check.vim
25102
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
5 source screendump.vim
22502
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
6
8401
98955c2ffd9f commit https://github.com/vim/vim/commit/019b9c644e92742e37efc08fef47c2620a01b6b3
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 func Test_block_shift_multibyte()
10494
1e700d72561d commit https://github.com/vim/vim/commit/f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
8 " Uses double-wide character.
8401
98955c2ffd9f commit https://github.com/vim/vim/commit/019b9c644e92742e37efc08fef47c2620a01b6b3
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 split
98955c2ffd9f commit https://github.com/vim/vim/commit/019b9c644e92742e37efc08fef47c2620a01b6b3
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 call setline(1, ['xヹxxx', 'ヹxxx'])
98955c2ffd9f commit https://github.com/vim/vim/commit/019b9c644e92742e37efc08fef47c2620a01b6b3
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 exe "normal 1G0l\<C-V>jl>"
98955c2ffd9f commit https://github.com/vim/vim/commit/019b9c644e92742e37efc08fef47c2620a01b6b3
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 call assert_equal('x ヹxxx', getline(1))
98955c2ffd9f commit https://github.com/vim/vim/commit/019b9c644e92742e37efc08fef47c2620a01b6b3
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 call assert_equal(' ヹxxx', getline(2))
98955c2ffd9f commit https://github.com/vim/vim/commit/019b9c644e92742e37efc08fef47c2620a01b6b3
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 q!
98955c2ffd9f commit https://github.com/vim/vim/commit/019b9c644e92742e37efc08fef47c2620a01b6b3
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 endfunc
10494
1e700d72561d commit https://github.com/vim/vim/commit/f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
16
11997
66b677c77467 patch 8.0.0879: crash when shifting with huge number
Christian Brabandt <cb@256bit.org>
parents: 11091
diff changeset
17 func Test_block_shift_overflow()
66b677c77467 patch 8.0.0879: crash when shifting with huge number
Christian Brabandt <cb@256bit.org>
parents: 11091
diff changeset
18 " This used to cause a multiplication overflow followed by a crash.
66b677c77467 patch 8.0.0879: crash when shifting with huge number
Christian Brabandt <cb@256bit.org>
parents: 11091
diff changeset
19 new
66b677c77467 patch 8.0.0879: crash when shifting with huge number
Christian Brabandt <cb@256bit.org>
parents: 11091
diff changeset
20 normal ii
66b677c77467 patch 8.0.0879: crash when shifting with huge number
Christian Brabandt <cb@256bit.org>
parents: 11091
diff changeset
21 exe "normal \<C-V>876543210>"
66b677c77467 patch 8.0.0879: crash when shifting with huge number
Christian Brabandt <cb@256bit.org>
parents: 11091
diff changeset
22 q!
66b677c77467 patch 8.0.0879: crash when shifting with huge number
Christian Brabandt <cb@256bit.org>
parents: 11091
diff changeset
23 endfunc
66b677c77467 patch 8.0.0879: crash when shifting with huge number
Christian Brabandt <cb@256bit.org>
parents: 11091
diff changeset
24
10494
1e700d72561d commit https://github.com/vim/vim/commit/f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
25 func Test_dotregister_paste()
1e700d72561d commit https://github.com/vim/vim/commit/f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
26 new
1e700d72561d commit https://github.com/vim/vim/commit/f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
27 exe "norm! ihello world\<esc>"
1e700d72561d commit https://github.com/vim/vim/commit/f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
28 norm! 0ve".p
1e700d72561d commit https://github.com/vim/vim/commit/f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
29 call assert_equal('hello world world', getline(1))
1e700d72561d commit https://github.com/vim/vim/commit/f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
30 q!
1e700d72561d commit https://github.com/vim/vim/commit/f8eb9c51e5bbd10e59c9b1247f8f6c7f5b77ccd0
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
31 endfunc
10803
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
32
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
33 func Test_Visual_ctrl_o()
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
34 new
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
35 call setline(1, ['one', 'two', 'three'])
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
36 call cursor(1,2)
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
37 set noshowmode
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
38 set tw=0
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
39 call feedkeys("\<c-v>jjlIa\<c-\>\<c-o>:set tw=88\<cr>\<esc>", 'tx')
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
40 call assert_equal(['oane', 'tawo', 'tahree'], getline(1, 3))
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
41 call assert_equal(88, &tw)
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
42 set tw&
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
43 bw!
065da86ca6d2 patch 8.0.0291: Visual block insertion does not insert in all lines
Christian Brabandt <cb@256bit.org>
parents: 10494
diff changeset
44 endfu
10881
8f6df2f6d2fc patch 8.0.0330: illegal memory access after "vapo"
Christian Brabandt <cb@256bit.org>
parents: 10803
diff changeset
45
8f6df2f6d2fc patch 8.0.0330: illegal memory access after "vapo"
Christian Brabandt <cb@256bit.org>
parents: 10803
diff changeset
46 func Test_Visual_vapo()
8f6df2f6d2fc patch 8.0.0330: illegal memory access after "vapo"
Christian Brabandt <cb@256bit.org>
parents: 10803
diff changeset
47 new
8f6df2f6d2fc patch 8.0.0330: illegal memory access after "vapo"
Christian Brabandt <cb@256bit.org>
parents: 10803
diff changeset
48 normal oxx
8f6df2f6d2fc patch 8.0.0330: illegal memory access after "vapo"
Christian Brabandt <cb@256bit.org>
parents: 10803
diff changeset
49 normal vapo
8f6df2f6d2fc patch 8.0.0330: illegal memory access after "vapo"
Christian Brabandt <cb@256bit.org>
parents: 10803
diff changeset
50 bwipe!
8f6df2f6d2fc patch 8.0.0330: illegal memory access after "vapo"
Christian Brabandt <cb@256bit.org>
parents: 10803
diff changeset
51 endfunc
10900
9b4574d95571 patch 8.0.0339: illegal memory access with vi'
Christian Brabandt <cb@256bit.org>
parents: 10881
diff changeset
52
9b4574d95571 patch 8.0.0339: illegal memory access with vi'
Christian Brabandt <cb@256bit.org>
parents: 10881
diff changeset
53 func Test_Visual_inner_quote()
9b4574d95571 patch 8.0.0339: illegal memory access with vi'
Christian Brabandt <cb@256bit.org>
parents: 10881
diff changeset
54 new
9b4574d95571 patch 8.0.0339: illegal memory access with vi'
Christian Brabandt <cb@256bit.org>
parents: 10881
diff changeset
55 normal oxX
9b4574d95571 patch 8.0.0339: illegal memory access with vi'
Christian Brabandt <cb@256bit.org>
parents: 10881
diff changeset
56 normal vki'
9b4574d95571 patch 8.0.0339: illegal memory access with vi'
Christian Brabandt <cb@256bit.org>
parents: 10881
diff changeset
57 bwipe!
9b4574d95571 patch 8.0.0339: illegal memory access with vi'
Christian Brabandt <cb@256bit.org>
parents: 10881
diff changeset
58 endfunc
12019
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
59
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
60 " Test for Visual mode not being reset causing E315 error.
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
61 func TriggerTheProblem()
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
62 " At this point there is no visual selection because :call reset it.
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
63 " Let's restore the selection:
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
64 normal gv
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
65 '<,'>del _
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
66 try
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
67 exe "normal \<Esc>"
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
68 catch /^Vim\%((\a\+)\)\=:E315/
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
69 echom 'Snap! E315 error!'
13402
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
70 let g:msg = 'Snap! E315 error!'
12019
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
71 endtry
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
72 endfunc
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
73
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
74 func Test_visual_mode_reset()
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
75 enew
13402
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
76 let g:msg = "Everything's fine."
12019
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
77 enew
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
78 setl buftype=nofile
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
79 call append(line('$'), 'Delete this line.')
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
80
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
81 " NOTE: this has to be done by a call to a function because executing :del
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
82 " the ex-way will require the colon operator which resets the visual mode
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
83 " thus preventing the problem:
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
84 exe "normal! GV:call TriggerTheProblem()\<CR>"
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
85 call assert_equal("Everything's fine.", g:msg)
7d7835ab8b37 patch 8.0.0890: still many old style tests
Christian Brabandt <cb@256bit.org>
parents: 11997
diff changeset
86 endfunc
12644
1fad9675d8fd patch 8.0.1200: tests switch the bell off twice
Christian Brabandt <cb@256bit.org>
parents: 12019
diff changeset
87
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
88 " Test for visual block shift and tab characters.
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
89 func Test_block_shift_tab()
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
90 new
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
91 call append(0, repeat(['one two three'], 5))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
92 call cursor(1,1)
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
93 exe "normal i\<C-G>u"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
94 exe "normal fe\<C-V>4jR\<Esc>ugvr1"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
95 call assert_equal('on1 two three', getline(1))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
96 call assert_equal('on1 two three', getline(2))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
97 call assert_equal('on1 two three', getline(5))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
98
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
99 %d _
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
100 call append(0, repeat(['abcdefghijklmnopqrstuvwxyz'], 5))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
101 call cursor(1,1)
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
102 exe "normal \<C-V>4jI \<Esc>j<<11|D"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
103 exe "normal j7|a\<Tab>\<Tab>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
104 exe "normal j7|a\<Tab>\<Tab> "
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
105 exe "normal j7|a\<Tab> \<Tab>\<Esc>4k13|\<C-V>4j<"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
106 call assert_equal(' abcdefghijklmnopqrstuvwxyz', getline(1))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
107 call assert_equal('abcdefghij', getline(2))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
108 call assert_equal(" abc\<Tab> defghijklmnopqrstuvwxyz", getline(3))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
109 call assert_equal(" abc\<Tab> defghijklmnopqrstuvwxyz", getline(4))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
110 call assert_equal(" abc\<Tab> defghijklmnopqrstuvwxyz", getline(5))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
111
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
112 %s/\s\+//g
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
113 call cursor(1,1)
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
114 exe "normal \<C-V>4jI \<Esc>j<<"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
115 exe "normal j7|a\<Tab>\<Tab>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
116 exe "normal j7|a\<Tab>\<Tab>\<Tab>\<Tab>\<Tab>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
117 exe "normal j7|a\<Tab> \<Tab>\<Tab>\<Esc>4k13|\<C-V>4j3<"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
118 call assert_equal(' abcdefghijklmnopqrstuvwxyz', getline(1))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
119 call assert_equal('abcdefghij', getline(2))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
120 call assert_equal(" abc\<Tab> defghijklmnopqrstuvwxyz", getline(3))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
121 call assert_equal(" abc\<Tab>\<Tab>defghijklmnopqrstuvwxyz", getline(4))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
122 call assert_equal(" abc\<Tab> defghijklmnopqrstuvwxyz", getline(5))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
123
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
124 " Test for block shift with space characters at the beginning and with
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
125 " 'noexpandtab' and 'expandtab'
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
126 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
127 call setline(1, [" 1", " 2", " 3"])
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
128 setlocal shiftwidth=2 noexpandtab
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
129 exe "normal gg\<C-V>3j>"
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
130 call assert_equal(["\t1", "\t2", "\t3"], getline(1, '$'))
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
131 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
132 call setline(1, [" 1", " 2", " 3"])
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
133 setlocal shiftwidth=2 expandtab
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
134 exe "normal gg\<C-V>3j>"
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
135 call assert_equal([" 1", " 2", " 3"], getline(1, '$'))
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
136 setlocal shiftwidth&
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
137
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
138 bw!
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
139 endfunc
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
140
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
141 " Tests Blockwise Visual when there are TABs before the text.
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
142 func Test_blockwise_visual()
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
143 new
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
144 call append(0, ['123456',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
145 \ '234567',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
146 \ '345678',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
147 \ '',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
148 \ 'test text test tex start here',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
149 \ "\t\tsome text",
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
150 \ "\t\ttest text",
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
151 \ 'test text'])
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
152 call cursor(1,1)
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
153 exe "normal /start here$\<CR>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
154 exe 'normal "by$' . "\<C-V>jjlld"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
155 exe "normal /456$\<CR>"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
156 exe "normal \<C-V>jj" . '"bP'
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
157 call assert_equal(['123start here56',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
158 \ '234start here67',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
159 \ '345start here78',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
160 \ '',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
161 \ 'test text test tex rt here',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
162 \ "\t\tsomext",
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
163 \ "\t\ttesext"], getline(1, 7))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
164
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
165 bw!
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
166 endfunc
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
167
13978
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
168 " Test swapping corners in blockwise visual mode with o and O
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
169 func Test_blockwise_visual_o_O()
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
170 new
13978
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
171
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
172 exe "norm! 10i.\<Esc>Y4P3lj\<C-V>4l2jr "
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
173 exe "norm! gvO\<Esc>ra"
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
174 exe "norm! gvO\<Esc>rb"
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
175 exe "norm! gvo\<C-c>rc"
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
176 exe "norm! gvO\<C-c>rd"
19625
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
177 set selection=exclusive
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
178 exe "norm! gvOo\<C-c>re"
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
179 call assert_equal('...a be.', getline(4))
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
180 exe "norm! gvOO\<C-c>rf"
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
181 set selection&
13978
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
182
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
183 call assert_equal(['..........',
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
184 \ '...c d..',
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
185 \ '... ..',
19625
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
186 \ '...a bf.',
13978
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
187 \ '..........'], getline(1, '$'))
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
188
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
189 bw!
13978
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
190 endfun
81c324144452 patch 8.1.0007: no test for "o" and "O" in Visual block mode
Christian Brabandt <cb@256bit.org>
parents: 13410
diff changeset
191
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
192 " Test Virtual replace mode.
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
193 func Test_virtual_replace()
13410
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
194 if exists('&t_kD')
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
195 let save_t_kD = &t_kD
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
196 endif
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
197 if exists('&t_kb')
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
198 let save_t_kb = &t_kb
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
199 endif
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
200 exe "set t_kD=\<C-V>x7f t_kb=\<C-V>x08"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
201 enew!
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
202 exe "normal a\nabcdefghi\njk\tlmn\n opq rst\n\<C-D>uvwxyz"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
203 call cursor(1,1)
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
204 set ai bs=2
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
205 exe "normal gR0\<C-D> 1\nA\nBCDEFGHIJ\n\tKL\nMNO\nPQR"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
206 call assert_equal([' 1',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
207 \ ' A',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
208 \ ' BCDEFGHIJ',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
209 \ ' KL',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
210 \ ' MNO',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
211 \ ' PQR',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
212 \ ], getline(1, 6))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
213 normal G
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
214 mark a
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
215 exe "normal o0\<C-D>\nabcdefghi\njk\tlmn\n opq\trst\n\<C-D>uvwxyz\n"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
216 exe "normal 'ajgR0\<C-D> 1\nA\nBCDEFGHIJ\n\tKL\nMNO\nPQR" . repeat("\<BS>", 29)
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
217 call assert_equal([' 1',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
218 \ 'abcdefghi',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
219 \ 'jk lmn',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
220 \ ' opq rst',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
221 \ 'uvwxyz'], getline(7, 11))
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
222 normal G
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
223 exe "normal iab\tcdefghi\tjkl"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
224 exe "normal 0gRAB......CDEFGHI.J\<Esc>o"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
225 exe "normal iabcdefghijklmnopqrst\<Esc>0gRAB\tIJKLMNO\tQR"
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
226 call assert_equal(['AB......CDEFGHI.Jkl',
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
227 \ 'AB IJKLMNO QRst'], getline(12, 13))
20941
505d97ea54da patch 8.2.1022: various parts of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 20199
diff changeset
228
505d97ea54da patch 8.2.1022: various parts of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 20199
diff changeset
229 " Test inserting Tab with 'noexpandtab' and 'softabstop' set to 4
505d97ea54da patch 8.2.1022: various parts of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 20199
diff changeset
230 %d
505d97ea54da patch 8.2.1022: various parts of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 20199
diff changeset
231 call setline(1, 'aaaaaaaaaaaaa')
505d97ea54da patch 8.2.1022: various parts of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 20199
diff changeset
232 set softtabstop=4
505d97ea54da patch 8.2.1022: various parts of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 20199
diff changeset
233 exe "normal gggR\<Tab>\<Tab>x"
505d97ea54da patch 8.2.1022: various parts of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 20199
diff changeset
234 call assert_equal("\txaaaa", getline(1))
505d97ea54da patch 8.2.1022: various parts of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 20199
diff changeset
235 set softtabstop&
505d97ea54da patch 8.2.1022: various parts of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 20199
diff changeset
236
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
237 enew!
13406
4e30f3f4cb78 patch 8.0.1577: virtual replace test fails on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 13402
diff changeset
238 set noai bs&vim
13410
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
239 if exists('save_t_kD')
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
240 let &t_kD = save_t_kD
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
241 endif
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
242 if exists('save_t_kb')
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
243 let &t_kb = save_t_kb
c571356c65bd patch 8.0.1579: virtual replace test fails in GUI
Christian Brabandt <cb@256bit.org>
parents: 13406
diff changeset
244 endif
12686
aa658b33f25a patch 8.0.1221: still too many old style tests
Christian Brabandt <cb@256bit.org>
parents: 12644
diff changeset
245 endfunc
13402
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
246
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
247 " Test Virtual replace mode.
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
248 func Test_virtual_replace2()
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
249 enew!
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
250 set bs=2
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
251 exe "normal a\nabcdefghi\njk\tlmn\n opq rst\n\<C-D>uvwxyz"
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
252 call cursor(1,1)
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
253 " Test 1: Test that del deletes the newline
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
254 exe "normal gR0\<del> 1\nA\nBCDEFGHIJ\n\tKL\nMNO\nPQR"
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
255 call assert_equal(['0 1',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
256 \ 'A',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
257 \ 'BCDEFGHIJ',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
258 \ ' KL',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
259 \ 'MNO',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
260 \ 'PQR',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
261 \ ], getline(1, 6))
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
262 " Test 2:
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
263 " a newline is not deleted, if no newline has been added in virtual replace mode
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
264 %d_
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
265 call setline(1, ['abcd', 'efgh', 'ijkl'])
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
266 call cursor(2,1)
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
267 exe "norm! gR1234\<cr>5\<bs>\<bs>\<bs>"
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
268 call assert_equal(['abcd',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
269 \ '123h',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
270 \ 'ijkl'], getline(1, '$'))
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
271 " Test 3:
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
272 " a newline is deleted, if a newline has been inserted before in virtual replace mode
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
273 %d_
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
274 call setline(1, ['abcd', 'efgh', 'ijkl'])
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
275 call cursor(2,1)
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
276 exe "norm! gR1234\<cr>\<cr>56\<bs>\<bs>\<bs>"
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
277 call assert_equal(['abcd',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
278 \ '1234',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
279 \ 'ijkl'], getline(1, '$'))
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
280 " Test 4:
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
281 " delete add a newline, delete it, add it again and check undo
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
282 %d_
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
283 call setline(1, ['abcd', 'efgh', 'ijkl'])
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
284 call cursor(2,1)
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
285 " break undo sequence explicitly
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
286 let &ul = &ul
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
287 exe "norm! gR1234\<cr>\<bs>\<del>56\<cr>"
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
288 let &ul = &ul
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
289 call assert_equal(['abcd',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
290 \ '123456',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
291 \ ''], getline(1, '$'))
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
292 norm! u
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
293 call assert_equal(['abcd',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
294 \ 'efgh',
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
295 \ 'ijkl'], getline(1, '$'))
19852
12518b40c161 patch 8.2.0482: channel and sandbox code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19738
diff changeset
296
12518b40c161 patch 8.2.0482: channel and sandbox code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19738
diff changeset
297 " Test for truncating spaces in a newly added line using 'autoindent' if
12518b40c161 patch 8.2.0482: channel and sandbox code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19738
diff changeset
298 " characters are not added to that line.
12518b40c161 patch 8.2.0482: channel and sandbox code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19738
diff changeset
299 %d_
12518b40c161 patch 8.2.0482: channel and sandbox code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19738
diff changeset
300 call setline(1, [' app', ' bee', ' cat'])
12518b40c161 patch 8.2.0482: channel and sandbox code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19738
diff changeset
301 setlocal autoindent
12518b40c161 patch 8.2.0482: channel and sandbox code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19738
diff changeset
302 exe "normal gg$gRt\n\nr"
12518b40c161 patch 8.2.0482: channel and sandbox code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19738
diff changeset
303 call assert_equal([' apt', '', ' rat'], getline(1, '$'))
12518b40c161 patch 8.2.0482: channel and sandbox code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19738
diff changeset
304
13402
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
305 " clean up
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
306 %d_
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
307 set bs&vim
338b15c63e2c patch 8.0.1575: crash when using virtual replace
Christian Brabandt <cb@256bit.org>
parents: 12686
diff changeset
308 endfunc
15359
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
309
15462
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
310 func Test_Visual_word_textobject()
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
311 new
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
312 call setline(1, ['First sentence. Second sentence.'])
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
313
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
314 " When start and end of visual area are identical, 'aw' or 'iw' select
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
315 " the whole word.
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
316 norm! 1go2fcvawy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
317 call assert_equal('Second ', @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
318 norm! 1go2fcviwy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
319 call assert_equal('Second', @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
320
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
321 " When start and end of visual area are not identical, 'aw' or 'iw'
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
322 " extend the word in direction of the end of the visual area.
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
323 norm! 1go2fcvlawy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
324 call assert_equal('cond ', @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
325 norm! gv2awy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
326 call assert_equal('cond sentence.', @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
327
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
328 norm! 1go2fcvliwy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
329 call assert_equal('cond', @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
330 norm! gv2iwy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
331 call assert_equal('cond sentence', @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
332
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
333 " Extend visual area in opposite direction.
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
334 norm! 1go2fcvhawy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
335 call assert_equal(' Sec', @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
336 norm! gv2awy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
337 call assert_equal(' sentence. Sec', @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
338
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
339 norm! 1go2fcvhiwy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
340 call assert_equal('Sec', @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
341 norm! gv2iwy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
342 call assert_equal('. Sec', @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
343
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
344 bwipe!
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
345 endfunc
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
346
15359
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
347 func Test_Visual_sentence_textobject()
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
348 new
15462
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
349 call setline(1, ['First sentence. Second sentence. Third', 'sentence. Fourth sentence'])
15359
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
350
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
351 " When start and end of visual area are identical, 'as' or 'is' select
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
352 " the whole sentence.
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
353 norm! 1gofdvasy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
354 call assert_equal('Second sentence. ', @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
355 norm! 1gofdvisy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
356 call assert_equal('Second sentence.', @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
357
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
358 " When start and end of visual area are not identical, 'as' or 'is'
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
359 " extend the sentence in direction of the end of the visual area.
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
360 norm! 1gofdvlasy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
361 call assert_equal('d sentence. ', @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
362 norm! gvasy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
363 call assert_equal("d sentence. Third\nsentence. ", @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
364
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
365 norm! 1gofdvlisy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
366 call assert_equal('d sentence.', @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
367 norm! gvisy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
368 call assert_equal('d sentence. ', @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
369 norm! gvisy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
370 call assert_equal("d sentence. Third\nsentence.", @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
371
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
372 " Extend visual area in opposite direction.
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
373 norm! 1gofdvhasy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
374 call assert_equal(' Second', @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
375 norm! gvasy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
376 call assert_equal("First sentence. Second", @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
377
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
378 norm! 1gofdvhisy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
379 call assert_equal('Second', @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
380 norm! gvisy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
381 call assert_equal(' Second', @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
382 norm! gvisy
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
383 call assert_equal('First sentence. Second', @")
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
384
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
385 bwipe!
bdf5f546eba0 patch 8.1.0687: sentence text object in Visual mode is not tested
Bram Moolenaar <Bram@vim.org>
parents: 13978
diff changeset
386 endfunc
15462
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
387
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
388 func Test_Visual_paragraph_textobject()
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
389 new
22476
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
390 let lines =<< trim [END]
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
391 First line.
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
392
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
393 Second line.
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
394 Third line.
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
395 Fourth line.
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
396 Fifth line.
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
397
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
398 Sixth line.
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
399 [END]
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
400 call setline(1, lines)
15462
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
401
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
402 " When start and end of visual area are identical, 'ap' or 'ip' select
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
403 " the whole paragraph.
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
404 norm! 4ggvapy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
405 call assert_equal("Second line.\nThird line.\nFourth line.\nFifth line.\n\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
406 norm! 4ggvipy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
407 call assert_equal("Second line.\nThird line.\nFourth line.\nFifth line.\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
408
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
409 " When start and end of visual area are not identical, 'ap' or 'ip'
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
410 " extend the sentence in direction of the end of the visual area.
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
411 " FIXME: actually, it is not sufficient to have different start and
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
412 " end of visual selection, the start line and end line have to differ,
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
413 " which is not consistent with the documentation.
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
414 norm! 4ggVjapy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
415 call assert_equal("Third line.\nFourth line.\nFifth line.\n\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
416 norm! gvapy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
417 call assert_equal("Third line.\nFourth line.\nFifth line.\n\nSixth line.\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
418 norm! 4ggVjipy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
419 call assert_equal("Third line.\nFourth line.\nFifth line.\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
420 norm! gvipy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
421 call assert_equal("Third line.\nFourth line.\nFifth line.\n\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
422 norm! gvipy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
423 call assert_equal("Third line.\nFourth line.\nFifth line.\n\nSixth line.\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
424
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
425 " Extend visual area in opposite direction.
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
426 norm! 5ggVkapy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
427 call assert_equal("\nSecond line.\nThird line.\nFourth line.\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
428 norm! gvapy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
429 call assert_equal("First line.\n\nSecond line.\nThird line.\nFourth line.\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
430 norm! 5ggVkipy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
431 call assert_equal("Second line.\nThird line.\nFourth line.\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
432 norma gvipy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
433 call assert_equal("\nSecond line.\nThird line.\nFourth line.\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
434 norm! gvipy
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
435 call assert_equal("First line.\n\nSecond line.\nThird line.\nFourth line.\n", @")
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
436
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
437 bwipe!
2c44001e7e13 patch 8.1.0739: text objects in not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 15359
diff changeset
438 endfunc
15985
e91750e8adb5 patch 8.1.0998: getcurpos() unexpectedly changes "curswant"
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
439
e91750e8adb5 patch 8.1.0998: getcurpos() unexpectedly changes "curswant"
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
440 func Test_curswant_not_changed()
e91750e8adb5 patch 8.1.0998: getcurpos() unexpectedly changes "curswant"
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
441 new
e91750e8adb5 patch 8.1.0998: getcurpos() unexpectedly changes "curswant"
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
442 call setline(1, ['one', 'two'])
e91750e8adb5 patch 8.1.0998: getcurpos() unexpectedly changes "curswant"
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
443 au InsertLeave * call getcurpos()
e91750e8adb5 patch 8.1.0998: getcurpos() unexpectedly changes "curswant"
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
444 call feedkeys("gg0\<C-V>jI123 \<Esc>j", 'xt')
e91750e8adb5 patch 8.1.0998: getcurpos() unexpectedly changes "curswant"
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
445 call assert_equal([0, 2, 1, 0, 1], getcurpos())
e91750e8adb5 patch 8.1.0998: getcurpos() unexpectedly changes "curswant"
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
446
e91750e8adb5 patch 8.1.0998: getcurpos() unexpectedly changes "curswant"
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
447 bwipe!
e91750e8adb5 patch 8.1.0998: getcurpos() unexpectedly changes "curswant"
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
448 au! InsertLeave
e91750e8adb5 patch 8.1.0998: getcurpos() unexpectedly changes "curswant"
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
449 endfunc
16419
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
450
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
451 " Tests for "vaBiB", end could be wrong.
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
452 func Test_Visual_Block()
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
453 new
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
454 a
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
455 - Bug in "vPPPP" on this text:
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
456 {
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
457 cmd;
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
458 {
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
459 cmd;\t/* <-- Start cursor here */
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
460 {
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
461 }
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
462 }
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
463 }
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
464 .
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
465 normal gg
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
466 call search('Start cursor here')
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
467 normal vaBiBD
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
468 call assert_equal(['- Bug in "vPPPP" on this text:',
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
469 \ "\t{",
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
470 \ "\t}"], getline(1, '$'))
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
471
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
472 close!
aebcd20a8a3f patch 8.1.1214: old style tests
Bram Moolenaar <Bram@vim.org>
parents: 15985
diff changeset
473 endfunc
18771
50fde4e20790 patch 8.1.2375: no suffucient testing for registers
Bram Moolenaar <Bram@vim.org>
parents: 16419
diff changeset
474
50fde4e20790 patch 8.1.2375: no suffucient testing for registers
Bram Moolenaar <Bram@vim.org>
parents: 16419
diff changeset
475 " Test for 'p'ut in visual block mode
50fde4e20790 patch 8.1.2375: no suffucient testing for registers
Bram Moolenaar <Bram@vim.org>
parents: 16419
diff changeset
476 func Test_visual_block_put()
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
477 new
18771
50fde4e20790 patch 8.1.2375: no suffucient testing for registers
Bram Moolenaar <Bram@vim.org>
parents: 16419
diff changeset
478 call append(0, ['One', 'Two', 'Three'])
50fde4e20790 patch 8.1.2375: no suffucient testing for registers
Bram Moolenaar <Bram@vim.org>
parents: 16419
diff changeset
479 normal gg
50fde4e20790 patch 8.1.2375: no suffucient testing for registers
Bram Moolenaar <Bram@vim.org>
parents: 16419
diff changeset
480 yank
50fde4e20790 patch 8.1.2375: no suffucient testing for registers
Bram Moolenaar <Bram@vim.org>
parents: 16419
diff changeset
481 call feedkeys("jl\<C-V>ljp", 'xt')
50fde4e20790 patch 8.1.2375: no suffucient testing for registers
Bram Moolenaar <Bram@vim.org>
parents: 16419
diff changeset
482 call assert_equal(['One', 'T', 'Tee', 'One', ''], getline(1, '$'))
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
483 bw!
18771
50fde4e20790 patch 8.1.2375: no suffucient testing for registers
Bram Moolenaar <Bram@vim.org>
parents: 16419
diff changeset
484 endfunc
50fde4e20790 patch 8.1.2375: no suffucient testing for registers
Bram Moolenaar <Bram@vim.org>
parents: 16419
diff changeset
485
18804
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
486 " Visual modes (v V CTRL-V) followed by an operator; count; repeating
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
487 func Test_visual_mode_op()
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
488 new
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
489 call append(0, '')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
490
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
491 call setline(1, 'apple banana cherry')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
492 call cursor(1, 1)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
493 normal lvld.l3vd.
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
494 call assert_equal('a y', getline(1))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
495
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
496 call setline(1, ['line 1 line 1', 'line 2 line 2', 'line 3 line 3',
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
497 \ 'line 4 line 4', 'line 5 line 5', 'line 6 line 6'])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
498 call cursor(1, 1)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
499 exe "normal Vcnewline\<Esc>j.j2Vd."
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
500 call assert_equal(['newline', 'newline'], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
501
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
502 call deletebufline('', 1, '$')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
503 call setline(1, ['xxxxxxxxxxxxx', 'xxxxxxxxxxxxx', 'xxxxxxxxxxxxx',
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
504 \ 'xxxxxxxxxxxxx'])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
505 exe "normal \<C-V>jlc \<Esc>l.l2\<C-V>c----\<Esc>l."
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
506 call assert_equal([' --------x',
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
507 \ ' --------x',
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
508 \ 'xxxx--------x',
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
509 \ 'xxxx--------x'], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
510
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
511 bwipe!
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
512 endfunc
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
513
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
514 " Visual mode maps (movement and text object)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
515 " Visual mode maps; count; repeating
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
516 " - Simple
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
517 " - With an Ex command (custom text object)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
518 func Test_visual_mode_maps()
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
519 new
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
520 call append(0, '')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
521
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
522 func SelectInCaps()
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
523 let [line1, col1] = searchpos('\u', 'bcnW')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
524 let [line2, col2] = searchpos('.\u', 'nW')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
525 call setpos("'<", [0, line1, col1, 0])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
526 call setpos("'>", [0, line2, col2, 0])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
527 normal! gv
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
528 endfunction
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
529
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
530 vnoremap W /\u/s-1<CR>
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
531 vnoremap iW :<C-U>call SelectInCaps()<CR>
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
532
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
533 call setline(1, 'KiwiRaspberryDateWatermelonPeach')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
534 call cursor(1, 1)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
535 exe "normal vWcNo\<Esc>l.fD2vd."
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
536 call assert_equal('NoNoberryach', getline(1))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
537
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
538 call setline(1, 'JambuRambutanBananaTangerineMango')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
539 call cursor(1, 1)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
540 exe "normal llviWc-\<Esc>l.l2vdl."
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
541 call assert_equal('--ago', getline(1))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
542
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
543 vunmap W
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
544 vunmap iW
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
545 bwipe!
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
546 delfunc SelectInCaps
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
547 endfunc
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
548
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
549 " Operator-pending mode maps (movement and text object)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
550 " - Simple
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
551 " - With Ex command moving the cursor
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
552 " - With Ex command and Visual selection (custom text object)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
553 func Test_visual_oper_pending_mode_maps()
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
554 new
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
555 call append(0, '')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
556
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
557 func MoveToCap()
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
558 call search('\u', 'W')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
559 endfunction
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
560
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
561 func SelectInCaps()
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
562 let [line1, col1] = searchpos('\u', 'bcnW')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
563 let [line2, col2] = searchpos('.\u', 'nW')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
564 call setpos("'<", [0, line1, col1, 0])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
565 call setpos("'>", [0, line2, col2, 0])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
566 normal! gv
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
567 endfunction
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
568
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
569 onoremap W /\u/<CR>
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
570 onoremap <Leader>W :<C-U>call MoveToCap()<CR>
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
571 onoremap iW :<C-U>call SelectInCaps()<CR>
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
572
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
573 call setline(1, 'PineappleQuinceLoganberryOrangeGrapefruitKiwiZ')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
574 call cursor(1, 1)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
575 exe "normal cW-\<Esc>l.l2.l."
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
576 call assert_equal('----Z', getline(1))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
577
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
578 call setline(1, 'JuniperDurianZ')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
579 call cursor(1, 1)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
580 exe "normal g?\WfD."
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
581 call assert_equal('WhavcreQhevnaZ', getline(1))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
582
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
583 call setline(1, 'LemonNectarineZ')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
584 call cursor(1, 1)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
585 exe "normal yiWPlciWNew\<Esc>fr."
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
586 call assert_equal('LemonNewNewZ', getline(1))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
587
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
588 ounmap W
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
589 ounmap <Leader>W
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
590 ounmap iW
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
591 bwipe!
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
592 delfunc MoveToCap
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
593 delfunc SelectInCaps
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
594 endfunc
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
595
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
596 " Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
597 func Test_op_pend_mode_abort()
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
598 new
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
599 call append(0, '')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
600
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
601 call setline(1, ['zzzz', 'zzzz'])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
602 call cursor(1, 1)
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
603
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
604 exe "normal dV:\<CR>dv:\<CR>"
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
605 call assert_equal(['zzz'], getline(1, 2))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
606 set nomodifiable
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
607 call assert_fails('exe "normal d:\<CR>"', 'E21:')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
608 set modifiable
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
609 call feedkeys("dv:\<Esc>dV:\<Esc>", 'xt')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
610 call assert_equal(['zzz'], getline(1, 2))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
611 set nomodifiable
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
612 let v:errmsg = ''
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
613 call feedkeys("d:\<Esc>", 'xt')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
614 call assert_true(v:errmsg !~# '^E21:')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
615 set modifiable
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
616
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
617 bwipe!
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
618 endfunc
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
619
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
620 func Test_characterwise_visual_mode()
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
621 new
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
622
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
623 " characterwise visual mode: replace last line
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
624 $put ='a'
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
625 let @" = 'x'
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
626 normal v$p
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
627 call assert_equal('x', getline('$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
628
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
629 " characterwise visual mode: delete middle line
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
630 call deletebufline('', 1, '$')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
631 call append('$', ['a', 'b', 'c'])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
632 normal G
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
633 normal kkv$d
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
634 call assert_equal(['', 'b', 'c'], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
635
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
636 " characterwise visual mode: delete middle two lines
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
637 call deletebufline('', 1, '$')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
638 call append('$', ['a', 'b', 'c'])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
639 normal Gkkvj$d
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
640 call assert_equal(['', 'c'], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
641
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
642 " characterwise visual mode: delete last line
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
643 call deletebufline('', 1, '$')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
644 call append('$', ['a', 'b', 'c'])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
645 normal Gv$d
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
646 call assert_equal(['', 'a', 'b', ''], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
647
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
648 " characterwise visual mode: delete last two lines
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
649 call deletebufline('', 1, '$')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
650 call append('$', ['a', 'b', 'c'])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
651 normal Gkvj$d
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
652 call assert_equal(['', 'a', ''], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
653
22476
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
654 " characterwise visual mode: use a count with the visual mode from the last
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
655 " line in the buffer
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
656 %d _
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
657 call setline(1, ['one', 'two', 'three', 'four'])
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
658 norm! vj$y
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
659 norm! G1vy
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
660 call assert_equal('four', @")
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21923
diff changeset
661
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
662 " characterwise visual mode: replace a single character line and the eol
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
663 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
664 call setline(1, "a")
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
665 normal v$rx
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
666 call assert_equal(['x'], getline(1, '$'))
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
667
26587
b2bbc72183a5 patch 8.2.3823: test for visual replace is in wrong function
Bram Moolenaar <Bram@vim.org>
parents: 26581
diff changeset
668 " replace a character with composing characters
b2bbc72183a5 patch 8.2.3823: test for visual replace is in wrong function
Bram Moolenaar <Bram@vim.org>
parents: 26581
diff changeset
669 call setline(1, "xã̳x")
b2bbc72183a5 patch 8.2.3823: test for visual replace is in wrong function
Bram Moolenaar <Bram@vim.org>
parents: 26581
diff changeset
670 normal gg0lvrb
b2bbc72183a5 patch 8.2.3823: test for visual replace is in wrong function
Bram Moolenaar <Bram@vim.org>
parents: 26581
diff changeset
671 call assert_equal("xbx", getline(1))
b2bbc72183a5 patch 8.2.3823: test for visual replace is in wrong function
Bram Moolenaar <Bram@vim.org>
parents: 26581
diff changeset
672
18804
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
673 bwipe!
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
674 endfunc
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
675
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
676 func Test_visual_mode_put()
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
677 new
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
678
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
679 " v_p: replace last character with line register at middle line
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
680 call append('$', ['aaa', 'bbb', 'ccc'])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
681 normal G
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
682 -2yank
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
683 normal k$vp
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
684 call assert_equal(['', 'aaa', 'bb', 'aaa', '', 'ccc'], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
685
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
686 " v_p: replace last character with line register at middle line selecting
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
687 " newline
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
688 call deletebufline('', 1, '$')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
689 call append('$', ['aaa', 'bbb', 'ccc'])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
690 normal G
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
691 -2yank
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
692 normal k$v$p
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
693 call assert_equal(['', 'aaa', 'bb', 'aaa', 'ccc'], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
694
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
695 " v_p: replace last character with line register at last line
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
696 call deletebufline('', 1, '$')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
697 call append('$', ['aaa', 'bbb', 'ccc'])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
698 normal G
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
699 -2yank
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
700 normal $vp
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
701 call assert_equal(['', 'aaa', 'bbb', 'cc', 'aaa', ''], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
702
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
703 " v_p: replace last character with line register at last line selecting
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
704 " newline
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
705 call deletebufline('', 1, '$')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
706 call append('$', ['aaa', 'bbb', 'ccc'])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
707 normal G
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
708 -2yank
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
709 normal $v$p
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
710 call assert_equal(['', 'aaa', 'bbb', 'cc', 'aaa', ''], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
711
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
712 bwipe!
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
713 endfunc
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
714
19738
0208534b8a84 patch 8.2.0425: code for modeless selection not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19625
diff changeset
715 func Test_gv_with_exclusive_selection()
18804
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
716 new
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
717
19738
0208534b8a84 patch 8.2.0425: code for modeless selection not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19625
diff changeset
718 " gv with exclusive selection after an operation
18804
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
719 call append('$', ['zzz ', 'äà '])
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
720 set selection=exclusive
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
721 normal Gkv3lyjv3lpgvcxxx
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
722 call assert_equal(['', 'zzz ', 'xxx '], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
723
19738
0208534b8a84 patch 8.2.0425: code for modeless selection not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19625
diff changeset
724 " gv with exclusive selection without an operation
18804
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
725 call deletebufline('', 1, '$')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
726 call append('$', 'zzz ')
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
727 set selection=exclusive
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
728 exe "normal G0v3l\<Esc>gvcxxx"
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
729 call assert_equal(['', 'xxx '], getline(1, '$'))
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
730
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
731 set selection&vim
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
732 bwipe!
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
733 endfunc
2d41b63f52de patch 8.1.2390: test94 is old style, fix 7.4.441 not tested
Bram Moolenaar <Bram@vim.org>
parents: 18771
diff changeset
734
18825
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
735 " Tests for the visual block mode commands
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
736 func Test_visual_block_mode()
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
737 new
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
738 call append(0, '')
19625
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
739 call setline(1, repeat(['abcdefghijklm'], 5))
18825
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
740 call cursor(1, 1)
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
741
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
742 " Test shift-right of a block
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
743 exe "normal jllll\<C-V>jj>wll\<C-V>jlll>"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
744 " Test shift-left of a block
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
745 exe "normal G$hhhh\<C-V>kk<"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
746 " Test block-insert
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
747 exe "normal Gkl\<C-V>kkkIxyz"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
748 " Test block-replace
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
749 exe "normal Gllll\<C-V>kkklllrq"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
750 " Test block-change
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
751 exe "normal G$khhh\<C-V>hhkkcmno"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
752 call assert_equal(['axyzbcdefghijklm',
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
753 \ 'axyzqqqq mno ghijklm',
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
754 \ 'axyzqqqqef mno ghijklm',
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
755 \ 'axyzqqqqefgmnoklm',
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
756 \ 'abcdqqqqijklm'], getline(1, 5))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
757
19625
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
758 " Test 'C' to change till the end of the line
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
759 call cursor(3, 4)
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
760 exe "normal! \<C-V>j3lCooo"
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
761 call assert_equal(['axyooo', 'axyooo'], getline(3, 4))
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
762
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
763 " Test 'D' to delete till the end of the line
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
764 call cursor(3, 3)
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
765 exe "normal! \<C-V>j2lD"
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
766 call assert_equal(['ax', 'ax'], getline(3, 4))
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19613
diff changeset
767
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
768 " Test block insert with a short line that ends before the block
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
769 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
770 call setline(1, [" one", "a", " two"])
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
771 exe "normal gg\<C-V>2jIx"
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
772 call assert_equal([" xone", "a", " xtwo"], getline(1, '$'))
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
773
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
774 " Test block append at EOL with '$' and without '$'
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
775 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
776 call setline(1, ["one", "a", "two"])
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
777 exe "normal gg$\<C-V>2jAx"
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
778 call assert_equal(["onex", "ax", "twox"], getline(1, '$'))
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
779 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
780 call setline(1, ["one", "a", "two"])
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
781 exe "normal gg3l\<C-V>2jAx"
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
782 call assert_equal(["onex", "a x", "twox"], getline(1, '$'))
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
783
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
784 " Test block replace with an empty line in the middle and use $ to jump to
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
785 " the end of the line.
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
786 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
787 call setline(1, ['one', '', 'two'])
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
788 exe "normal gg$\<C-V>2jrx"
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
789 call assert_equal(["onx", "", "twx"], getline(1, '$'))
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
790
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
791 " Test block replace with an empty line in the middle and move cursor to the
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
792 " end of the line
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
793 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
794 call setline(1, ['one', '', 'two'])
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
795 exe "normal gg2l\<C-V>2jrx"
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
796 call assert_equal(["onx", "", "twx"], getline(1, '$'))
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
797
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
798 " Replace odd number of characters with a multibyte character
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
799 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
800 call setline(1, ['abcd', 'efgh'])
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
801 exe "normal ggl\<C-V>2ljr\u1100"
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
802 call assert_equal(["a\u1100 ", "e\u1100 "], getline(1, '$'))
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
803
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
804 " During visual block append, if the cursor moved outside of the selected
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
805 " range, then the edit should not be applied to the block.
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
806 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
807 call setline(1, ['aaa', 'bbb', 'ccc'])
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
808 exe "normal 2G\<C-V>jAx\<Up>"
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
809 call assert_equal(['aaa', 'bxbb', 'ccc'], getline(1, '$'))
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
810
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
811 " During visual block append, if the cursor is moved before the start of the
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
812 " block, then the new text should be appended there.
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
813 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
814 call setline(1, ['aaa', 'bbb', 'ccc'])
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
815 exe "normal $\<C-V>2jA\<Left>x"
25072
bd46322bea66 patch 8.2.3073: when cursor is move for block append wrong text is inserted
Bram Moolenaar <Bram@vim.org>
parents: 25070
diff changeset
816 call assert_equal(['aaxa', 'bbxb', 'ccxc'], getline(1, '$'))
24814
4c5eec1ef612 patch 8.2.2945: some buffer related code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 24800
diff changeset
817 " Repeat the previous test but use 'l' to move the cursor instead of '$'
4c5eec1ef612 patch 8.2.2945: some buffer related code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 24800
diff changeset
818 call setline(1, ['aaa', 'bbb', 'ccc'])
4c5eec1ef612 patch 8.2.2945: some buffer related code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 24800
diff changeset
819 exe "normal! gg2l\<C-V>2jA\<Left>x"
4c5eec1ef612 patch 8.2.2945: some buffer related code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 24800
diff changeset
820 call assert_equal(['aaxa', 'bbxb', 'ccxc'], getline(1, '$'))
24725
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
821
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
822 " Change a characterwise motion to a blockwise motion using CTRL-V
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
823 %d _
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
824 call setline(1, ['123', '456', '789'])
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
825 exe "normal ld\<C-V>j"
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
826 call assert_equal(['13', '46', '789'], getline(1, '$'))
3cdbce5ba73f patch 8.2.2901: some operators not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22502
diff changeset
827
24756
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
828 " Test from ':help v_b_I_example'
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
829 %d _
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
830 setlocal tabstop=8 shiftwidth=4
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
831 let lines =<< trim END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
832 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
833 abc defghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
834 abcdef ghi jklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
835 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
836 END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
837 call setline(1, lines)
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
838 exe "normal ggfo\<C-V>3jISTRING"
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
839 let expected =<< trim END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
840 abcdefghijklmnSTRINGopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
841 abc STRING defghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
842 abcdef ghi STRING jklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
843 abcdefghijklmnSTRINGopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
844 END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
845 call assert_equal(expected, getline(1, '$'))
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
846
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
847 " Test from ':help v_b_A_example'
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
848 %d _
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
849 let lines =<< trim END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
850 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
851 abc defghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
852 abcdef ghi jklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
853 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
854 END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
855 call setline(1, lines)
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
856 exe "normal ggfo\<C-V>3j$ASTRING"
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
857 let expected =<< trim END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
858 abcdefghijklmnopqrstuvwxyzSTRING
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
859 abc defghijklmnopqrstuvwxyzSTRING
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
860 abcdef ghi jklmnopqrstuvwxyzSTRING
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
861 abcdefghijklmnopqrstuvwxyzSTRING
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
862 END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
863 call assert_equal(expected, getline(1, '$'))
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
864
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
865 " Test from ':help v_b_<_example'
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
866 %d _
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
867 let lines =<< trim END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
868 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
869 abc defghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
870 abcdef ghi jklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
871 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
872 END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
873 call setline(1, lines)
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
874 exe "normal ggfo\<C-V>3j3l<.."
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
875 let expected =<< trim END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
876 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
877 abc defghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
878 abcdef ghi jklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
879 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
880 END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
881 call assert_equal(expected, getline(1, '$'))
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
882
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
883 " Test from ':help v_b_>_example'
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
884 %d _
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
885 let lines =<< trim END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
886 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
887 abc defghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
888 abcdef ghi jklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
889 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
890 END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
891 call setline(1, lines)
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
892 exe "normal ggfo\<C-V>3j>.."
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
893 let expected =<< trim END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
894 abcdefghijklmn opqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
895 abc defghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
896 abcdef ghi jklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
897 abcdefghijklmn opqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
898 END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
899 call assert_equal(expected, getline(1, '$'))
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
900
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
901 " Test from ':help v_b_r_example'
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
902 %d _
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
903 let lines =<< trim END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
904 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
905 abc defghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
906 abcdef ghi jklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
907 abcdefghijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
908 END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
909 call setline(1, lines)
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
910 exe "normal ggfo\<C-V>5l3jrX"
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
911 let expected =<< trim END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
912 abcdefghijklmnXXXXXXuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
913 abc XXXXXXhijklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
914 abcdef ghi XXXXXX jklmnopqrstuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
915 abcdefghijklmnXXXXXXuvwxyz
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
916 END
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
917 call assert_equal(expected, getline(1, '$'))
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
918
18825
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
919 bwipe!
24756
ac7ad168caed patch 8.2.2916: operators are not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 24752
diff changeset
920 set tabstop& shiftwidth&
18825
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
921 endfunc
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
922
24800
b032da736676 patch 8.2.2938: after using motion force from feedkeys() it sticks
Bram Moolenaar <Bram@vim.org>
parents: 24756
diff changeset
923 func Test_visual_force_motion_feedkeys()
b032da736676 patch 8.2.2938: after using motion force from feedkeys() it sticks
Bram Moolenaar <Bram@vim.org>
parents: 24756
diff changeset
924 onoremap <expr> i- execute('let g:mode = mode(1)')->slice(0, 0)
b032da736676 patch 8.2.2938: after using motion force from feedkeys() it sticks
Bram Moolenaar <Bram@vim.org>
parents: 24756
diff changeset
925 call feedkeys('dvi-', 'x')
b032da736676 patch 8.2.2938: after using motion force from feedkeys() it sticks
Bram Moolenaar <Bram@vim.org>
parents: 24756
diff changeset
926 call assert_equal('nov', g:mode)
b032da736676 patch 8.2.2938: after using motion force from feedkeys() it sticks
Bram Moolenaar <Bram@vim.org>
parents: 24756
diff changeset
927 call feedkeys('di-', 'x')
b032da736676 patch 8.2.2938: after using motion force from feedkeys() it sticks
Bram Moolenaar <Bram@vim.org>
parents: 24756
diff changeset
928 call assert_equal('no', g:mode)
b032da736676 patch 8.2.2938: after using motion force from feedkeys() it sticks
Bram Moolenaar <Bram@vim.org>
parents: 24756
diff changeset
929 ounmap i-
b032da736676 patch 8.2.2938: after using motion force from feedkeys() it sticks
Bram Moolenaar <Bram@vim.org>
parents: 24756
diff changeset
930 endfunc
b032da736676 patch 8.2.2938: after using motion force from feedkeys() it sticks
Bram Moolenaar <Bram@vim.org>
parents: 24756
diff changeset
931
18825
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
932 " Test block-insert using cursor keys for movement
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
933 func Test_visual_block_insert_cursor_keys()
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
934 new
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
935 call append(0, ['aaaaaa', 'bbbbbb', 'cccccc', 'dddddd'])
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
936 call cursor(1, 1)
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
937
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
938 exe "norm! l\<C-V>jjjlllI\<Right>\<Right> \<Esc>"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
939 call assert_equal(['aaa aaa', 'bbb bbb', 'ccc ccc', 'ddd ddd'],
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
940 \ getline(1, 4))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
941
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
942 call deletebufline('', 1, '$')
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
943 call setline(1, ['xaaa', 'bbbb', 'cccc', 'dddd'])
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
944 call cursor(1, 1)
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
945 exe "norm! \<C-V>jjjI<>\<Left>p\<Esc>"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
946 call assert_equal(['<p>xaaa', '<p>bbbb', '<p>cccc', '<p>dddd'],
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
947 \ getline(1, 4))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
948 bwipe!
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
949 endfunc
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
950
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
951 func Test_visual_block_create()
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
952 new
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
953 call append(0, '')
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
954 " Test for Visual block was created with the last <C-v>$
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
955 call setline(1, ['A23', '4567'])
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
956 call cursor(1, 1)
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
957 exe "norm! l\<C-V>j$Aab\<Esc>"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
958 call assert_equal(['A23ab', '4567ab'], getline(1, 2))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
959
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
960 " Test for Visual block was created with the middle <C-v>$ (1)
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
961 call deletebufline('', 1, '$')
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
962 call setline(1, ['B23', '4567'])
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
963 call cursor(1, 1)
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
964 exe "norm! l\<C-V>j$hAab\<Esc>"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
965 call assert_equal(['B23 ab', '4567ab'], getline(1, 2))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
966
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
967 " Test for Visual block was created with the middle <C-v>$ (2)
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
968 call deletebufline('', 1, '$')
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
969 call setline(1, ['C23', '4567'])
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
970 call cursor(1, 1)
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
971 exe "norm! l\<C-V>j$hhAab\<Esc>"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
972 call assert_equal(['C23ab', '456ab7'], getline(1, 2))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
973 bwipe!
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
974 endfunc
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
975
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
976 " Test for Visual block insert when virtualedit=all
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
977 func Test_virtualedit_visual_block()
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
978 set ve=all
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
979 new
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
980 call append(0, ["\t\tline1", "\t\tline2", "\t\tline3"])
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
981 call cursor(1, 1)
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
982 exe "norm! 07l\<C-V>jjIx\<Esc>"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
983 call assert_equal([" x \tline1",
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
984 \ " x \tline2",
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
985 \ " x \tline3"], getline(1, 3))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
986
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
987 " Test for Visual block append when virtualedit=all
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
988 exe "norm! 012l\<C-v>jjAx\<Esc>"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
989 call assert_equal([' x x line1',
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
990 \ ' x x line2',
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
991 \ ' x x line3'], getline(1, 3))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
992 set ve=
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
993 bwipe!
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
994 endfunc
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
995
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
996 " Test for changing case
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
997 func Test_visual_change_case()
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
998 new
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
999 " gUe must uppercase a whole word, also when ß changes to SS
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1000 exe "normal Gothe youtußeuu end\<Esc>Ypk0wgUe\r"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1001 " gUfx must uppercase until x, inclusive.
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1002 exe "normal O- youßtußexu -\<Esc>0fogUfx\r"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1003 " VU must uppercase a whole line
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1004 exe "normal YpkVU\r"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1005 " same, when it's the last line in the buffer
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1006 exe "normal YPGi111\<Esc>VUddP\r"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1007 " Uppercase two lines
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1008 exe "normal Oblah di\rdoh dut\<Esc>VkUj\r"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1009 " Uppercase part of two lines
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1010 exe "normal ddppi333\<Esc>k0i222\<Esc>fyllvjfuUk"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1011 call assert_equal(['the YOUTUSSEUU end', '- yOUSSTUSSEXu -',
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1012 \ 'THE YOUTUSSEUU END', '111THE YOUTUSSEUU END', 'BLAH DI', 'DOH DUT',
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1013 \ '222the yoUTUSSEUU END', '333THE YOUTUßeuu end'], getline(2, '$'))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1014 bwipe!
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1015 endfunc
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1016
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1017 " Test for Visual replace using Enter or NL
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1018 func Test_visual_replace_crnl()
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1019 new
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1020 exe "normal G3o123456789\e2k05l\<C-V>2jr\r"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1021 exe "normal G3o98765\e2k02l\<C-V>2jr\<C-V>\r\n"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1022 exe "normal G3o123456789\e2k05l\<C-V>2jr\n"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1023 exe "normal G3o98765\e2k02l\<C-V>2jr\<C-V>\n"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1024 call assert_equal(['12345', '789', '12345', '789', '12345', '789', "98\r65",
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1025 \ "98\r65", "98\r65", '12345', '789', '12345', '789', '12345', '789',
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1026 \ "98\n65", "98\n65", "98\n65"], getline(2, '$'))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1027 bwipe!
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1028 endfunc
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1029
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1030 func Test_ve_block_curpos()
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1031 new
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1032 " Test cursor position. When ve=block and Visual block mode and $gj
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1033 call append(0, ['12345', '789'])
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1034 call cursor(1, 3)
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1035 set virtualedit=block
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1036 exe "norm! \<C-V>$gj\<Esc>"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1037 call assert_equal([0, 2, 4, 0], getpos("'>"))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1038 set virtualedit=
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1039 bwipe!
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1040 endfunc
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1041
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1042 " Test for block_insert when replacing spaces in front of the a with tabs
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1043 func Test_block_insert_replace_tabs()
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1044 new
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1045 set ts=8 sts=4 sw=4
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1046 call append(0, ["#define BO_ALL\t 0x0001",
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1047 \ "#define BO_BS\t 0x0002",
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1048 \ "#define BO_CRSR\t 0x0004"])
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1049 call cursor(1, 1)
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1050 exe "norm! f0\<C-V>2jI\<tab>\<esc>"
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1051 call assert_equal([
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1052 \ "#define BO_ALL\t\t0x0001",
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1053 \ "#define BO_BS\t \t0x0002",
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1054 \ "#define BO_CRSR\t \t0x0004", ''], getline(1, '$'))
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1055 set ts& sts& sw&
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1056 bwipe!
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1057 endfunc
70f1e352d599 patch 8.1.2400: test39 is old style
Bram Moolenaar <Bram@vim.org>
parents: 18804
diff changeset
1058
19425
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1059 " Test for * register in :
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1060 func Test_star_register()
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1061 call assert_fails('*bfirst', 'E16:')
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1062 new
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1063 call setline(1, ['foo', 'bar', 'baz', 'qux'])
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1064 exe "normal jVj\<ESC>"
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1065 *yank r
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1066 call assert_equal("bar\nbaz\n", @r)
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1067
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1068 delmarks < >
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1069 call assert_fails('*yank', 'E20:')
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1070 close!
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1071 endfunc
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18825
diff changeset
1072
19613
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1073 " Test for changing text in visual mode with 'exclusive' selection
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1074 func Test_exclusive_selection()
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1075 new
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1076 call setline(1, ['one', 'two'])
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1077 set selection=exclusive
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1078 call feedkeys("vwcabc", 'xt')
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1079 call assert_equal('abctwo', getline(1))
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1080 call setline(1, ["\tone"])
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1081 set virtualedit=all
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1082 call feedkeys('0v2lcl', 'xt')
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1083 call assert_equal('l one', getline(1))
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1084 set virtualedit&
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1085 set selection&
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1086 close!
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1087 endfunc
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1088
22502
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1089 " Test for starting linewise visual with a count.
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1090 " This test needs to be run without any previous visual mode. Otherwise the
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1091 " count will use the count from the previous visual mode.
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1092 func Test_linewise_visual_with_count()
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1093 let after =<< trim [CODE]
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1094 call setline(1, ['one', 'two', 'three', 'four'])
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1095 norm! 3Vy
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1096 call assert_equal("one\ntwo\nthree\n", @")
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1097 call writefile(v:errors, 'Xtestout')
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1098 qall!
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1099 [CODE]
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1100 if RunVim([], after, '')
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1101 call assert_equal([], readfile('Xtestout'))
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1102 call delete('Xtestout')
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1103 endif
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1104 endfunc
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1105
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1106 " Test for starting characterwise visual with a count.
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1107 " This test needs to be run without any previous visual mode. Otherwise the
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1108 " count will use the count from the previous visual mode.
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1109 func Test_characterwise_visual_with_count()
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1110 let after =<< trim [CODE]
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1111 call setline(1, ['one two', 'three'])
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1112 norm! l5vy
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1113 call assert_equal("ne tw", @")
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1114 call writefile(v:errors, 'Xtestout')
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1115 qall!
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1116 [CODE]
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1117 if RunVim([], after, '')
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1118 call assert_equal([], readfile('Xtestout'))
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1119 call delete('Xtestout')
1503ecd54f8a patch 8.2.1799: some Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
1120 endif
19613
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1121 endfunc
9c15be376631 patch 8.2.0363: some Normal mode commands not tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
1122
20199
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1123 " Test for visually selecting an inner block (iB)
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1124 func Test_visual_inner_block()
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1125 new
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1126 call setline(1, ['one', '{', 'two', '{', 'three', '}', 'four', '}', 'five'])
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1127 call cursor(5, 1)
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1128 " visually select all the lines in the block and then execute iB
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1129 call feedkeys("ViB\<C-C>", 'xt')
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1130 call assert_equal([0, 5, 1, 0], getpos("'<"))
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1131 call assert_equal([0, 5, 6, 0], getpos("'>"))
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1132 " visually select two inner blocks
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1133 call feedkeys("ViBiB\<C-C>", 'xt')
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1134 call assert_equal([0, 3, 1, 0], getpos("'<"))
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1135 call assert_equal([0, 7, 5, 0], getpos("'>"))
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1136 " try to select non-existing inner block
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1137 call cursor(5, 1)
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1138 call assert_beeps('normal ViBiBiB')
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1139 " try to select a unclosed inner block
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1140 8,9d
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1141 call cursor(5, 1)
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1142 call assert_beeps('normal ViBiB')
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1143 close!
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1144 endfunc
a4bd28e2cf1d patch 8.2.0655: search code not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19852
diff changeset
1145
21923
2626306efe44 patch 8.2.1511: putting a string in Visual block mode ignores multi-byte
Bram Moolenaar <Bram@vim.org>
parents: 20941
diff changeset
1146 func Test_visual_put_in_block()
2626306efe44 patch 8.2.1511: putting a string in Visual block mode ignores multi-byte
Bram Moolenaar <Bram@vim.org>
parents: 20941
diff changeset
1147 new
2626306efe44 patch 8.2.1511: putting a string in Visual block mode ignores multi-byte
Bram Moolenaar <Bram@vim.org>
parents: 20941
diff changeset
1148 call setline(1, ['xxxx', 'y∞yy', 'zzzz'])
2626306efe44 patch 8.2.1511: putting a string in Visual block mode ignores multi-byte
Bram Moolenaar <Bram@vim.org>
parents: 20941
diff changeset
1149 normal 1G2yl
2626306efe44 patch 8.2.1511: putting a string in Visual block mode ignores multi-byte
Bram Moolenaar <Bram@vim.org>
parents: 20941
diff changeset
1150 exe "normal 1G2l\<C-V>jjlp"
2626306efe44 patch 8.2.1511: putting a string in Visual block mode ignores multi-byte
Bram Moolenaar <Bram@vim.org>
parents: 20941
diff changeset
1151 call assert_equal(['xxxx', 'y∞xx', 'zzxx'], getline(1, 3))
2626306efe44 patch 8.2.1511: putting a string in Visual block mode ignores multi-byte
Bram Moolenaar <Bram@vim.org>
parents: 20941
diff changeset
1152 bwipe!
2626306efe44 patch 8.2.1511: putting a string in Visual block mode ignores multi-byte
Bram Moolenaar <Bram@vim.org>
parents: 20941
diff changeset
1153 endfunc
2626306efe44 patch 8.2.1511: putting a string in Visual block mode ignores multi-byte
Bram Moolenaar <Bram@vim.org>
parents: 20941
diff changeset
1154
24752
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1155 func Test_visual_put_in_block_using_zp()
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1156 new
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1157 " paste using zP
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1158 call setline(1, ['/path;text', '/path;text', '/path;text', '',
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1159 \ '/subdir',
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1160 \ '/longsubdir',
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1161 \ '/longlongsubdir'])
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1162 exe "normal! 5G\<c-v>2j$y"
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1163 norm! 1Gf;zP
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1164 call assert_equal(['/path/subdir;text', '/path/longsubdir;text', '/path/longlongsubdir;text'], getline(1, 3))
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1165 %d
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1166 " paste using zP
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1167 call setline(1, ['/path;text', '/path;text', '/path;text', '',
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1168 \ '/subdir',
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1169 \ '/longsubdir',
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1170 \ '/longlongsubdir'])
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1171 exe "normal! 5G\<c-v>2j$y"
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1172 norm! 1Gf;hzp
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1173 call assert_equal(['/path/subdir;text', '/path/longsubdir;text', '/path/longlongsubdir;text'], getline(1, 3))
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1174 bwipe!
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1175 endfunc
1ce39e257f1b patch 8.2.2914: cannot paste a block without adding padding
Bram Moolenaar <Bram@vim.org>
parents: 24725
diff changeset
1176
24866
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1177 func Test_visual_put_in_block_using_zy_and_zp()
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1178 new
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1179
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1180 " Test 1) Paste using zp - after the cursor without trailing spaces
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1181 call setline(1, ['/path;text', '/path;text', '/path;text', '',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1182 \ 'texttext /subdir columntext',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1183 \ 'texttext /longsubdir columntext',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1184 \ 'texttext /longlongsubdir columntext'])
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1185 exe "normal! 5G0f/\<c-v>2jezy"
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1186 norm! 1G0f;hzp
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1187 call assert_equal(['/path/subdir;text', '/path/longsubdir;text', '/path/longlongsubdir;text'], getline(1, 3))
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1188
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1189 " Test 2) Paste using zP - in front of the cursor without trailing spaces
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1190 %d
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1191 call setline(1, ['/path;text', '/path;text', '/path;text', '',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1192 \ 'texttext /subdir columntext',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1193 \ 'texttext /longsubdir columntext',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1194 \ 'texttext /longlongsubdir columntext'])
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1195 exe "normal! 5G0f/\<c-v>2jezy"
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1196 norm! 1G0f;zP
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1197 call assert_equal(['/path/subdir;text', '/path/longsubdir;text', '/path/longlongsubdir;text'], getline(1, 3))
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1198
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1199 " Test 3) Paste using p - with trailing spaces
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1200 %d
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1201 call setline(1, ['/path;text', '/path;text', '/path;text', '',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1202 \ 'texttext /subdir columntext',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1203 \ 'texttext /longsubdir columntext',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1204 \ 'texttext /longlongsubdir columntext'])
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1205 exe "normal! 5G0f/\<c-v>2jezy"
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1206 norm! 1G0f;hp
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1207 call assert_equal(['/path/subdir ;text', '/path/longsubdir ;text', '/path/longlongsubdir;text'], getline(1, 3))
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1208
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1209 " Test 4) Paste using P - with trailing spaces
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1210 %d
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1211 call setline(1, ['/path;text', '/path;text', '/path;text', '',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1212 \ 'texttext /subdir columntext',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1213 \ 'texttext /longsubdir columntext',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1214 \ 'texttext /longlongsubdir columntext'])
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1215 exe "normal! 5G0f/\<c-v>2jezy"
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1216 norm! 1G0f;P
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1217 call assert_equal(['/path/subdir ;text', '/path/longsubdir ;text', '/path/longlongsubdir;text'], getline(1, 3))
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1218
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1219 " Test 5) Yank with spaces inside the block
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1220 %d
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1221 call setline(1, ['/path;text', '/path;text', '/path;text', '',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1222 \ 'texttext /sub dir/ columntext',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1223 \ 'texttext /lon gsubdir/ columntext',
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1224 \ 'texttext /lon glongsubdir/ columntext'])
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1225 exe "normal! 5G0f/\<c-v>2jf/zy"
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1226 norm! 1G0f;zP
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1227 call assert_equal(['/path/sub dir/;text', '/path/lon gsubdir/;text', '/path/lon glongsubdir/;text'], getline(1, 3))
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1228 bwipe!
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1229 endfunc
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1230
25070
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1231 func Test_visual_put_blockedit_zy_and_zp()
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1232 new
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1233
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1234 call setline(1, ['aa', 'bbbbb', 'ccc', '', 'XX', 'GGHHJ', 'RTZU'])
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1235 exe "normal! gg0\<c-v>2j$zy"
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1236 norm! 5gg0zP
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1237 call assert_equal(['aa', 'bbbbb', 'ccc', '', 'aaXX', 'bbbbbGGHHJ', 'cccRTZU'], getline(1, 7))
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1238 "
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1239 " now with blockmode editing
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1240 sil %d
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1241 :set ve=block
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1242 call setline(1, ['aa', 'bbbbb', 'ccc', '', 'XX', 'GGHHJ', 'RTZU'])
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1243 exe "normal! gg0\<c-v>2j$zy"
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1244 norm! 5gg0zP
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1245 call assert_equal(['aa', 'bbbbb', 'ccc', '', 'aaXX', 'bbbbbGGHHJ', 'cccRTZU'], getline(1, 7))
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1246 set ve&vim
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1247 bw!
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1248 endfunc
f397a21b3e4c patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Bram Moolenaar <Bram@vim.org>
parents: 24866
diff changeset
1249
27382
123b0747fa10 patch 8.2.4219: reading before the start of the line
Bram Moolenaar <Bram@vim.org>
parents: 27378
diff changeset
1250 func Test_visual_block_yank_zy()
123b0747fa10 patch 8.2.4219: reading before the start of the line
Bram Moolenaar <Bram@vim.org>
parents: 27378
diff changeset
1251 new
123b0747fa10 patch 8.2.4219: reading before the start of the line
Bram Moolenaar <Bram@vim.org>
parents: 27378
diff changeset
1252 " this was reading before the start of the line
123b0747fa10 patch 8.2.4219: reading before the start of the line
Bram Moolenaar <Bram@vim.org>
parents: 27378
diff changeset
1253 exe "norm o\<C-T>\<Esc>\<C-V>zy"
123b0747fa10 patch 8.2.4219: reading before the start of the line
Bram Moolenaar <Bram@vim.org>
parents: 27378
diff changeset
1254 bwipe!
123b0747fa10 patch 8.2.4219: reading before the start of the line
Bram Moolenaar <Bram@vim.org>
parents: 27378
diff changeset
1255 endfunc
123b0747fa10 patch 8.2.4219: reading before the start of the line
Bram Moolenaar <Bram@vim.org>
parents: 27378
diff changeset
1256
25102
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1257 func Test_visual_block_with_virtualedit()
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1258 CheckScreendump
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1259
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1260 let lines =<< trim END
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1261 call setline(1, ['aaaaaa', 'bbbb', 'cc'])
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1262 set virtualedit=block
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1263 normal G
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1264 END
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1265 call writefile(lines, 'XTest_block')
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1266
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1267 let buf = RunVimInTerminal('-S XTest_block', {'rows': 8, 'cols': 50})
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1268 call term_sendkeys(buf, "\<C-V>gg$")
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1269 call VerifyScreenDump(buf, 'Test_visual_block_with_virtualedit', {})
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1270
25116
56817e74d106 patch 8.2.3095: with 'virtualedit' set to "block" block selection is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25102
diff changeset
1271 call term_sendkeys(buf, "\<Esc>gg\<C-V>G$")
56817e74d106 patch 8.2.3095: with 'virtualedit' set to "block" block selection is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25102
diff changeset
1272 call VerifyScreenDump(buf, 'Test_visual_block_with_virtualedit2', {})
56817e74d106 patch 8.2.3095: with 'virtualedit' set to "block" block selection is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25102
diff changeset
1273
25102
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1274 " clean up
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1275 call term_sendkeys(buf, "\<Esc>")
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1276 call StopVimInTerminal(buf)
25118
12fd67997953 patch 8.2.3096: temp files remain after running tests
Bram Moolenaar <Bram@vim.org>
parents: 25116
diff changeset
1277 call delete('XTest_block')
25102
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1278 endfunc
b7062becbfb5 patch 8.2.3088: with 'virtualedit' set to "block" Visual highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 25072
diff changeset
1279
26159
34606aec52b3 patch 8.2.3611: crash when using CTRL-W f without finding a file name
Bram Moolenaar <Bram@vim.org>
parents: 25921
diff changeset
1280 func Test_visual_block_ctrl_w_f()
34606aec52b3 patch 8.2.3611: crash when using CTRL-W f without finding a file name
Bram Moolenaar <Bram@vim.org>
parents: 25921
diff changeset
1281 " Emtpy block selected in new buffer should not result in an error.
34606aec52b3 patch 8.2.3611: crash when using CTRL-W f without finding a file name
Bram Moolenaar <Bram@vim.org>
parents: 25921
diff changeset
1282 au! BufNew foo sil norm f
34606aec52b3 patch 8.2.3611: crash when using CTRL-W f without finding a file name
Bram Moolenaar <Bram@vim.org>
parents: 25921
diff changeset
1283 edit foo
34606aec52b3 patch 8.2.3611: crash when using CTRL-W f without finding a file name
Bram Moolenaar <Bram@vim.org>
parents: 25921
diff changeset
1284
34606aec52b3 patch 8.2.3611: crash when using CTRL-W f without finding a file name
Bram Moolenaar <Bram@vim.org>
parents: 25921
diff changeset
1285 au! BufNew
34606aec52b3 patch 8.2.3611: crash when using CTRL-W f without finding a file name
Bram Moolenaar <Bram@vim.org>
parents: 25921
diff changeset
1286 endfunc
34606aec52b3 patch 8.2.3611: crash when using CTRL-W f without finding a file name
Bram Moolenaar <Bram@vim.org>
parents: 25921
diff changeset
1287
27183
be5e01f3ee3b patch 8.2.4120: block insert goes over the end of the line
Bram Moolenaar <Bram@vim.org>
parents: 26587
diff changeset
1288 func Test_visual_block_append_invalid_char()
be5e01f3ee3b patch 8.2.4120: block insert goes over the end of the line
Bram Moolenaar <Bram@vim.org>
parents: 26587
diff changeset
1289 " this was going over the end of the line
27185
353b71688c9d patch 8.2.4121: Visual test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 27183
diff changeset
1290 set isprint=@,161-255
27183
be5e01f3ee3b patch 8.2.4120: block insert goes over the end of the line
Bram Moolenaar <Bram@vim.org>
parents: 26587
diff changeset
1291 new
be5e01f3ee3b patch 8.2.4120: block insert goes over the end of the line
Bram Moolenaar <Bram@vim.org>
parents: 26587
diff changeset
1292 call setline(1, [' let xxx', 'xxxxxˆ', 'xxxxxxxxxxx'])
be5e01f3ee3b patch 8.2.4120: block insert goes over the end of the line
Bram Moolenaar <Bram@vim.org>
parents: 26587
diff changeset
1293 exe "normal 0\<C-V>jjA-\<Esc>"
be5e01f3ee3b patch 8.2.4120: block insert goes over the end of the line
Bram Moolenaar <Bram@vim.org>
parents: 26587
diff changeset
1294 call assert_equal([' - let xxx', 'xxxxx -ˆ', 'xxxxxxxx-xxx'], getline(1, 3))
be5e01f3ee3b patch 8.2.4120: block insert goes over the end of the line
Bram Moolenaar <Bram@vim.org>
parents: 26587
diff changeset
1295 bwipe!
27185
353b71688c9d patch 8.2.4121: Visual test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 27183
diff changeset
1296 set isprint&
27183
be5e01f3ee3b patch 8.2.4120: block insert goes over the end of the line
Bram Moolenaar <Bram@vim.org>
parents: 26587
diff changeset
1297 endfunc
be5e01f3ee3b patch 8.2.4120: block insert goes over the end of the line
Bram Moolenaar <Bram@vim.org>
parents: 26587
diff changeset
1298
28893
aa44d5842d6c patch 8.2.4969: changing text in Visual mode may cause invalid memory access
Bram Moolenaar <Bram@vim.org>
parents: 28714
diff changeset
1299 func Test_visual_block_with_substitute()
aa44d5842d6c patch 8.2.4969: changing text in Visual mode may cause invalid memory access
Bram Moolenaar <Bram@vim.org>
parents: 28714
diff changeset
1300 " this was reading beyond the end of the line
aa44d5842d6c patch 8.2.4969: changing text in Visual mode may cause invalid memory access
Bram Moolenaar <Bram@vim.org>
parents: 28714
diff changeset
1301 new
aa44d5842d6c patch 8.2.4969: changing text in Visual mode may cause invalid memory access
Bram Moolenaar <Bram@vim.org>
parents: 28714
diff changeset
1302 norm a0)
aa44d5842d6c patch 8.2.4969: changing text in Visual mode may cause invalid memory access
Bram Moolenaar <Bram@vim.org>
parents: 28714
diff changeset
1303 sil! norm  O
aa44d5842d6c patch 8.2.4969: changing text in Visual mode may cause invalid memory access
Bram Moolenaar <Bram@vim.org>
parents: 28714
diff changeset
1304 s/)
aa44d5842d6c patch 8.2.4969: changing text in Visual mode may cause invalid memory access
Bram Moolenaar <Bram@vim.org>
parents: 28714
diff changeset
1305 sil! norm 
aa44d5842d6c patch 8.2.4969: changing text in Visual mode may cause invalid memory access
Bram Moolenaar <Bram@vim.org>
parents: 28714
diff changeset
1306 bwipe!
aa44d5842d6c patch 8.2.4969: changing text in Visual mode may cause invalid memory access
Bram Moolenaar <Bram@vim.org>
parents: 28714
diff changeset
1307 endfunc
aa44d5842d6c patch 8.2.4969: changing text in Visual mode may cause invalid memory access
Bram Moolenaar <Bram@vim.org>
parents: 28714
diff changeset
1308
25921
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1309 func Test_visual_reselect_with_count()
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1310 " this was causing an illegal memory access
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1311 let lines =<< trim END
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1312
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1313
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1314
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1315 :
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1316 r<sfile>
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1317 exe "%norm e3\<c-v>kr\t"
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1318 :
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1319
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1320 :
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1321 END
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1322 call writefile(lines, 'XvisualReselect')
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1323 source XvisualReselect
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1324
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1325 bwipe!
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1326 call delete('XvisualReselect')
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1327 endfunc
203b0f3a741a patch 8.2.3494: illegal memory access in utf_head_off
Bram Moolenaar <Bram@vim.org>
parents: 25118
diff changeset
1328
27245
776db9e02b61 patch 8.2.4151: reading beyond the end of a line
Bram Moolenaar <Bram@vim.org>
parents: 27185
diff changeset
1329 func Test_visual_block_insert_round_off()
776db9e02b61 patch 8.2.4151: reading beyond the end of a line
Bram Moolenaar <Bram@vim.org>
parents: 27185
diff changeset
1330 new
776db9e02b61 patch 8.2.4151: reading beyond the end of a line
Bram Moolenaar <Bram@vim.org>
parents: 27185
diff changeset
1331 " The number of characters are tuned to fill a 4096 byte allocated block,
776db9e02b61 patch 8.2.4151: reading beyond the end of a line
Bram Moolenaar <Bram@vim.org>
parents: 27185
diff changeset
1332 " so that valgrind reports going over the end.
776db9e02b61 patch 8.2.4151: reading beyond the end of a line
Bram Moolenaar <Bram@vim.org>
parents: 27185
diff changeset
1333 call setline(1, ['xxxxx', repeat('0', 1350), "\t", repeat('x', 60)])
776db9e02b61 patch 8.2.4151: reading beyond the end of a line
Bram Moolenaar <Bram@vim.org>
parents: 27185
diff changeset
1334 exe "normal gg0\<C-V>GI" .. repeat('0', 1320) .. "\<Esc>"
776db9e02b61 patch 8.2.4151: reading beyond the end of a line
Bram Moolenaar <Bram@vim.org>
parents: 27185
diff changeset
1335 bwipe!
776db9e02b61 patch 8.2.4151: reading beyond the end of a line
Bram Moolenaar <Bram@vim.org>
parents: 27185
diff changeset
1336 endfunc
776db9e02b61 patch 8.2.4151: reading beyond the end of a line
Bram Moolenaar <Bram@vim.org>
parents: 27185
diff changeset
1337
27251
85f56e16da9b patch 8.2.4154: ml_get error when exchanging windows in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27245
diff changeset
1338 " this was causing an ml_get error
85f56e16da9b patch 8.2.4154: ml_get error when exchanging windows in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27245
diff changeset
1339 func Test_visual_exchange_windows()
85f56e16da9b patch 8.2.4154: ml_get error when exchanging windows in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27245
diff changeset
1340 enew!
85f56e16da9b patch 8.2.4154: ml_get error when exchanging windows in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27245
diff changeset
1341 new
85f56e16da9b patch 8.2.4154: ml_get error when exchanging windows in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27245
diff changeset
1342 call setline(1, ['foo', 'bar'])
85f56e16da9b patch 8.2.4154: ml_get error when exchanging windows in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27245
diff changeset
1343 exe "normal G\<C-V>gg\<C-W>\<C-X>OO\<Esc>"
85f56e16da9b patch 8.2.4154: ml_get error when exchanging windows in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27245
diff changeset
1344 bwipe!
85f56e16da9b patch 8.2.4154: ml_get error when exchanging windows in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27245
diff changeset
1345 bwipe!
85f56e16da9b patch 8.2.4154: ml_get error when exchanging windows in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27245
diff changeset
1346 endfunc
85f56e16da9b patch 8.2.4154: ml_get error when exchanging windows in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27245
diff changeset
1347
27374
c9a6c79998b2 patch 8.2.4215: illegal memory access when copying lines in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27251
diff changeset
1348 " this was leaving the end of the Visual area beyond the end of a line
c9a6c79998b2 patch 8.2.4215: illegal memory access when copying lines in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27251
diff changeset
1349 func Test_visual_ex_copy_line()
c9a6c79998b2 patch 8.2.4215: illegal memory access when copying lines in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27251
diff changeset
1350 new
c9a6c79998b2 patch 8.2.4215: illegal memory access when copying lines in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27251
diff changeset
1351 call setline(1, ["aaa", "bbbbbbbbbxbb"])
c9a6c79998b2 patch 8.2.4215: illegal memory access when copying lines in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27251
diff changeset
1352 /x
c9a6c79998b2 patch 8.2.4215: illegal memory access when copying lines in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27251
diff changeset
1353 exe "normal ggvjfxO"
c9a6c79998b2 patch 8.2.4215: illegal memory access when copying lines in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27251
diff changeset
1354 t0
c9a6c79998b2 patch 8.2.4215: illegal memory access when copying lines in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27251
diff changeset
1355 normal gNU
c9a6c79998b2 patch 8.2.4215: illegal memory access when copying lines in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27251
diff changeset
1356 bwipe!
c9a6c79998b2 patch 8.2.4215: illegal memory access when copying lines in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27251
diff changeset
1357 endfunc
c9a6c79998b2 patch 8.2.4215: illegal memory access when copying lines in Visual mode
Bram Moolenaar <Bram@vim.org>
parents: 27251
diff changeset
1358
27378
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1359 " This was leaving the end of the Visual area beyond the end of a line.
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1360 " Set 'undolevels' to start a new undo block.
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1361 func Test_visual_undo_deletes_last_line()
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1362 new
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1363 call setline(1, ["aaa", "ccc", "dyd"])
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1364 set undolevels=100
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1365 exe "normal obbbbbbbbbxbb\<Esc>"
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1366 set undolevels=100
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1367 /y
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1368 exe "normal ggvjfxO"
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1369 undo
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1370 normal gNU
27428
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1371
27378
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1372 bwipe!
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1373 endfunc
a4746d1a3cf3 patch 8.2.4217: illegal memory access when undo makes Visual area invalid
Bram Moolenaar <Bram@vim.org>
parents: 27374
diff changeset
1374
27428
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1375 func Test_visual_paste()
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1376 new
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1377
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1378 " v_p overwrites unnamed register.
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1379 call setline(1, ['xxxx'])
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1380 call setreg('"', 'foo')
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1381 call setreg('-', 'bar')
27577
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1382 normal gg0vp
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1383 call assert_equal('x', @")
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1384 call assert_equal('x', @-)
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1385 call assert_equal('fooxxx', getline(1))
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1386 normal $vp
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1387 call assert_equal('x', @")
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1388 call assert_equal('x', @-)
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1389 call assert_equal('fooxxx', getline(1))
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1390 " Test with a different register as unnamed register.
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1391 call setline(2, ['baz'])
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1392 normal 2gg0"rD
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1393 call assert_equal('baz', @")
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1394 normal gg0vp
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1395 call assert_equal('f', @")
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1396 call assert_equal('f', @-)
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1397 call assert_equal('bazooxxx', getline(1))
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1398 normal $vp
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1399 call assert_equal('x', @")
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1400 call assert_equal('x', @-)
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1401 call assert_equal('bazooxxf', getline(1))
27428
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1402
28714
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1403 bwipe!
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1404 endfunc
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1405
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1406 func Test_visual_paste_clipboard()
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1407 CheckFeature clipboard_working
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1408
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1409 if has('gui')
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1410 " auto select feature breaks tests
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1411 set guioptions-=a
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1412 endif
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1413
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1414 " v_P does not overwrite unnamed register.
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1415 call setline(1, ['xxxx'])
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1416 call setreg('"', 'foo')
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1417 call setreg('-', 'bar')
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1418 normal gg0vP
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1419 call assert_equal('foo', @")
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1420 call assert_equal('bar', @-)
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1421 call assert_equal('fooxxx', getline(1))
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1422 normal $vP
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1423 call assert_equal('foo', @")
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1424 call assert_equal('bar', @-)
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1425 call assert_equal('fooxxfoo', getline(1))
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1426 " Test with a different register as unnamed register.
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1427 call setline(2, ['baz'])
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1428 normal 2gg0"rD
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1429 call assert_equal('baz', @")
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1430 normal gg0vP
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1431 call assert_equal('baz', @")
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1432 call assert_equal('bar', @-)
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1433 call assert_equal('bazooxxfoo', getline(1))
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1434 normal $vP
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1435 call assert_equal('baz', @")
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1436 call assert_equal('bar', @-)
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1437 call assert_equal('bazooxxfobaz', getline(1))
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1438
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1439 " Test for unnamed clipboard
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1440 set clipboard=unnamed
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1441 call setline(1, ['xxxx'])
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1442 call setreg('"', 'foo')
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1443 call setreg('-', 'bar')
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1444 call setreg('*', 'baz')
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1445 normal gg0vP
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1446 call assert_equal('foo', @")
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1447 call assert_equal('bar', @-)
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1448 call assert_equal('baz', @*)
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1449 call assert_equal('bazxxx', getline(1))
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1450
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1451 " Test for unnamedplus clipboard
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1452 if has('unnamedplus')
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1453 set clipboard=unnamedplus
27428
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1454 call setline(1, ['xxxx'])
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1455 call setreg('"', 'foo')
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1456 call setreg('-', 'bar')
28714
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1457 call setreg('+', 'baz')
27577
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1458 normal gg0vP
40d844af56a5 patch 8.2.4315: put in Visual mode not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 27428
diff changeset
1459 call assert_equal('foo', @")
28714
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1460 call assert_equal('bar', @-)
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1461 call assert_equal('baz', @+)
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1462 call assert_equal('bazxxx', getline(1))
27428
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1463 endif
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1464
28714
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1465 set clipboard&
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1466 if has('gui')
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1467 set guioptions&
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1468 endif
27428
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1469 bwipe!
3f8a57b8c7d8 patch 8.2.4242: put in Visual mode cannot be repeated
Bram Moolenaar <Bram@vim.org>
parents: 27382
diff changeset
1470 endfunc
24866
f1121eb17e14 patch 8.2.2971: cannot yank a block without trailing spaces
Bram Moolenaar <Bram@vim.org>
parents: 24814
diff changeset
1471
28714
5eea8a249f86 patch 8.2.4881: "P" in Visual mode still changes some registers
Bram Moolenaar <Bram@vim.org>
parents: 27577
diff changeset
1472
18771
50fde4e20790 patch 8.1.2375: no suffucient testing for registers
Bram Moolenaar <Bram@vim.org>
parents: 16419
diff changeset
1473 " vim: shiftwidth=2 sts=2 expandtab