annotate src/testdir/test_put.vim @ 34686:83875247fbc0 v9.1.0224

patch 9.1.0224: cursor may move too many lines over "right" & "below" virt text Commit: https://github.com/vim/vim/commit/515f734e687f28f7199b2a8042197624d9f3ec15 Author: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Date: Thu Mar 28 12:01:14 2024 +0100 patch 9.1.0224: cursor may move too many lines over "right" & "below" virt text Problem: If a line has "right" & "below" virtual text properties, where the "below" property may be stored first due to lack of ordering between them, then the line height is calculated to be 1 more and causes the cursor to far over the line. Solution: Remove some unnecessary setting of a `next_right_goes_below = TRUE` flag for "below" and "above" text properties. (Dylan Thacker-Smith) I modified a regression test I recently added to cover this case, leveraging the fact that "after", "right" & "below" text properties are being stored in the reverse of the order they are added in. The previous version of this regression test was crafted to workaround this issue so it can be addressed by this separate patch. closes: #14317 Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 28 Mar 2024 12:15:03 +0100
parents e21d2759a5c2
children 1e6f45f5ca23
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14202
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
1 " Tests for put commands, e.g. ":put", "p", "gp", "P", "gP", etc.
10664
94db9c08e206 patch 8.0.0222: blockwise put on multi-byte character misplaced
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2
25927
2e82629dbd90 patch 8.2.3497: put test fails when run by itself
Bram Moolenaar <Bram@vim.org>
parents: 25919
diff changeset
3 source check.vim
32288
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
4 source screendump.vim
25927
2e82629dbd90 patch 8.2.3497: put test fails when run by itself
Bram Moolenaar <Bram@vim.org>
parents: 25919
diff changeset
5
10664
94db9c08e206 patch 8.0.0222: blockwise put on multi-byte character misplaced
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6 func Test_put_block()
94db9c08e206 patch 8.0.0222: blockwise put on multi-byte character misplaced
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 new
94db9c08e206 patch 8.0.0222: blockwise put on multi-byte character misplaced
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 call feedkeys("i\<C-V>u2500\<CR>x\<ESC>", 'x')
94db9c08e206 patch 8.0.0222: blockwise put on multi-byte character misplaced
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 call feedkeys("\<C-V>y", 'x')
94db9c08e206 patch 8.0.0222: blockwise put on multi-byte character misplaced
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 call feedkeys("gg0p", 'x')
94db9c08e206 patch 8.0.0222: blockwise put on multi-byte character misplaced
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 call assert_equal("\u2500x", getline(1))
94db9c08e206 patch 8.0.0222: blockwise put on multi-byte character misplaced
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 bwipe!
94db9c08e206 patch 8.0.0222: blockwise put on multi-byte character misplaced
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 endfunc
10670
bce3eccea39a patch 8.0.0225: put in Visual block mode terminates early
Christian Brabandt <cb@256bit.org>
parents: 10664
diff changeset
14
34215
8b0648002604 patch 9.1.0056: wrong number of trailing spaces inserted after blockwise put
Christian Brabandt <cb@256bit.org>
parents: 32531
diff changeset
15 func Test_put_block_unicode()
8b0648002604 patch 9.1.0056: wrong number of trailing spaces inserted after blockwise put
Christian Brabandt <cb@256bit.org>
parents: 32531
diff changeset
16 new
8b0648002604 patch 9.1.0056: wrong number of trailing spaces inserted after blockwise put
Christian Brabandt <cb@256bit.org>
parents: 32531
diff changeset
17 call setreg('a', "À\nÀÀ\naaaaaaaaaaaa", "\<C-V>")
8b0648002604 patch 9.1.0056: wrong number of trailing spaces inserted after blockwise put
Christian Brabandt <cb@256bit.org>
parents: 32531
diff changeset
18 call setline(1, [' 1', ' 2', ' 3'])
8b0648002604 patch 9.1.0056: wrong number of trailing spaces inserted after blockwise put
Christian Brabandt <cb@256bit.org>
parents: 32531
diff changeset
19 exe "norm! \<C-V>jj\"ap"
8b0648002604 patch 9.1.0056: wrong number of trailing spaces inserted after blockwise put
Christian Brabandt <cb@256bit.org>
parents: 32531
diff changeset
20 let expected = ['À 1', 'ÀÀ 2', 'aaaaaaaaaaaa3']
8b0648002604 patch 9.1.0056: wrong number of trailing spaces inserted after blockwise put
Christian Brabandt <cb@256bit.org>
parents: 32531
diff changeset
21 call assert_equal(expected, getline(1, 3))
8b0648002604 patch 9.1.0056: wrong number of trailing spaces inserted after blockwise put
Christian Brabandt <cb@256bit.org>
parents: 32531
diff changeset
22 bw!
8b0648002604 patch 9.1.0056: wrong number of trailing spaces inserted after blockwise put
Christian Brabandt <cb@256bit.org>
parents: 32531
diff changeset
23 endfunc
8b0648002604 patch 9.1.0056: wrong number of trailing spaces inserted after blockwise put
Christian Brabandt <cb@256bit.org>
parents: 32531
diff changeset
24
10670
bce3eccea39a patch 8.0.0225: put in Visual block mode terminates early
Christian Brabandt <cb@256bit.org>
parents: 10664
diff changeset
25 func Test_put_char_block()
bce3eccea39a patch 8.0.0225: put in Visual block mode terminates early
Christian Brabandt <cb@256bit.org>
parents: 10664
diff changeset
26 new
bce3eccea39a patch 8.0.0225: put in Visual block mode terminates early
Christian Brabandt <cb@256bit.org>
parents: 10664
diff changeset
27 call setline(1, ['Line 1', 'Line 2'])
bce3eccea39a patch 8.0.0225: put in Visual block mode terminates early
Christian Brabandt <cb@256bit.org>
parents: 10664
diff changeset
28 f Xfile_put
bce3eccea39a patch 8.0.0225: put in Visual block mode terminates early
Christian Brabandt <cb@256bit.org>
parents: 10664
diff changeset
29 " visually select both lines and put the cursor at the top of the visual
bce3eccea39a patch 8.0.0225: put in Visual block mode terminates early
Christian Brabandt <cb@256bit.org>
parents: 10664
diff changeset
30 " selection and then put the buffer name over it
bce3eccea39a patch 8.0.0225: put in Visual block mode terminates early
Christian Brabandt <cb@256bit.org>
parents: 10664
diff changeset
31 exe "norm! G0\<c-v>ke\"%p"
bce3eccea39a patch 8.0.0225: put in Visual block mode terminates early
Christian Brabandt <cb@256bit.org>
parents: 10664
diff changeset
32 call assert_equal(['Xfile_put 1', 'Xfile_put 2'], getline(1,2))
bce3eccea39a patch 8.0.0225: put in Visual block mode terminates early
Christian Brabandt <cb@256bit.org>
parents: 10664
diff changeset
33 bw!
bce3eccea39a patch 8.0.0225: put in Visual block mode terminates early
Christian Brabandt <cb@256bit.org>
parents: 10664
diff changeset
34 endfunc
10688
3d1872fbecc4 patch 8.0.0234: crash when using put in Visual mode
Christian Brabandt <cb@256bit.org>
parents: 10670
diff changeset
35
3d1872fbecc4 patch 8.0.0234: crash when using put in Visual mode
Christian Brabandt <cb@256bit.org>
parents: 10670
diff changeset
36 func Test_put_char_block2()
3d1872fbecc4 patch 8.0.0234: crash when using put in Visual mode
Christian Brabandt <cb@256bit.org>
parents: 10670
diff changeset
37 new
3d1872fbecc4 patch 8.0.0234: crash when using put in Visual mode
Christian Brabandt <cb@256bit.org>
parents: 10670
diff changeset
38 call setreg('a', ' one ', 'v')
3d1872fbecc4 patch 8.0.0234: crash when using put in Visual mode
Christian Brabandt <cb@256bit.org>
parents: 10670
diff changeset
39 call setline(1, ['Line 1', '', 'Line 3', ''])
3d1872fbecc4 patch 8.0.0234: crash when using put in Visual mode
Christian Brabandt <cb@256bit.org>
parents: 10670
diff changeset
40 " visually select the first 3 lines and put register a over it
3d1872fbecc4 patch 8.0.0234: crash when using put in Visual mode
Christian Brabandt <cb@256bit.org>
parents: 10670
diff changeset
41 exe "norm! ggl\<c-v>2j2l\"ap"
21996
808edde1e97d patch 8.2.1547: various comment problems
Bram Moolenaar <Bram@vim.org>
parents: 19625
diff changeset
42 call assert_equal(['L one 1', '', 'L one 3', ''], getline(1, 4))
10688
3d1872fbecc4 patch 8.0.0234: crash when using put in Visual mode
Christian Brabandt <cb@256bit.org>
parents: 10670
diff changeset
43 " clean up
3d1872fbecc4 patch 8.0.0234: crash when using put in Visual mode
Christian Brabandt <cb@256bit.org>
parents: 10670
diff changeset
44 bw!
3d1872fbecc4 patch 8.0.0234: crash when using put in Visual mode
Christian Brabandt <cb@256bit.org>
parents: 10670
diff changeset
45 endfunc
11597
72b20190dce6 patch 8.0.0681: unnamed register only contains the last deleted text
Christian Brabandt <cb@256bit.org>
parents: 10688
diff changeset
46
72b20190dce6 patch 8.0.0681: unnamed register only contains the last deleted text
Christian Brabandt <cb@256bit.org>
parents: 10688
diff changeset
47 func Test_put_lines()
72b20190dce6 patch 8.0.0681: unnamed register only contains the last deleted text
Christian Brabandt <cb@256bit.org>
parents: 10688
diff changeset
48 new
72b20190dce6 patch 8.0.0681: unnamed register only contains the last deleted text
Christian Brabandt <cb@256bit.org>
parents: 10688
diff changeset
49 let a = [ getreg('a'), getregtype('a') ]
72b20190dce6 patch 8.0.0681: unnamed register only contains the last deleted text
Christian Brabandt <cb@256bit.org>
parents: 10688
diff changeset
50 call setline(1, ['Line 1', 'Line2', 'Line 3', ''])
72b20190dce6 patch 8.0.0681: unnamed register only contains the last deleted text
Christian Brabandt <cb@256bit.org>
parents: 10688
diff changeset
51 exe 'norm! gg"add"AddG""p'
21996
808edde1e97d patch 8.2.1547: various comment problems
Bram Moolenaar <Bram@vim.org>
parents: 19625
diff changeset
52 call assert_equal(['Line 3', '', 'Line 1', 'Line2'], getline(1, '$'))
11597
72b20190dce6 patch 8.0.0681: unnamed register only contains the last deleted text
Christian Brabandt <cb@256bit.org>
parents: 10688
diff changeset
53 " clean up
72b20190dce6 patch 8.0.0681: unnamed register only contains the last deleted text
Christian Brabandt <cb@256bit.org>
parents: 10688
diff changeset
54 bw!
18000
7a19c8d6bb9e patch 8.1.1996: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17857
diff changeset
55 eval a[0]->setreg('a', a[1])
11597
72b20190dce6 patch 8.0.0681: unnamed register only contains the last deleted text
Christian Brabandt <cb@256bit.org>
parents: 10688
diff changeset
56 endfunc
14009
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
57
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
58 func Test_put_expr()
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
59 new
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
60 call setline(1, repeat(['A'], 6))
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
61 exec "1norm! \"=line('.')\<cr>p"
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
62 norm! j0.
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
63 norm! j0.
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
64 exec "4norm! \"=\<cr>P"
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
65 norm! j0.
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
66 norm! j0.
21996
808edde1e97d patch 8.2.1547: various comment problems
Bram Moolenaar <Bram@vim.org>
parents: 19625
diff changeset
67 call assert_equal(['A1','A2','A3','4A','5A','6A'], getline(1, '$'))
14009
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
68 bw!
830a47e48791 patch 8.1.0022: repeating put from expression register fails
Christian Brabandt <cb@256bit.org>
parents: 11597
diff changeset
69 endfunc
14202
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
70
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
71 func Test_put_fails_when_nomodifiable()
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
72 new
14204
1b9f3932a130 patch 8.1.0119: failing test goes unnoticed because messages is not written
Christian Brabandt <cb@256bit.org>
parents: 14202
diff changeset
73 setlocal nomodifiable
14202
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
74
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
75 normal! yy
22087
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21996
diff changeset
76 call assert_fails(':put', 'E21:')
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21996
diff changeset
77 call assert_fails(':put!', 'E21:')
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21996
diff changeset
78 call assert_fails(':normal! p', 'E21:')
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21996
diff changeset
79 call assert_fails(':normal! gp', 'E21:')
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21996
diff changeset
80 call assert_fails(':normal! P', 'E21:')
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21996
diff changeset
81 call assert_fails(':normal! gP', 'E21:')
14202
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
82
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
83 if has('mouse')
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
84 set mouse=n
22087
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21996
diff changeset
85 call assert_fails('execute "normal! \<MiddleMouse>"', 'E21:')
14202
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
86 set mouse&
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
87 endif
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
88
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
89 bwipeout!
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
90 endfunc
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
91
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
92 " A bug was discovered where the Normal mode put commands (e.g., "p") would
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
93 " output duplicate error messages when invoked in a non-modifiable buffer.
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
94 func Test_put_p_errmsg_nodup()
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
95 new
14204
1b9f3932a130 patch 8.1.0119: failing test goes unnoticed because messages is not written
Christian Brabandt <cb@256bit.org>
parents: 14202
diff changeset
96 setlocal nomodifiable
14202
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
97
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
98 normal! yy
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
99
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
100 func Capture_p_error()
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
101 redir => s:p_err
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
102 normal! p
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
103 redir END
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
104 endfunc
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
105
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
106 silent! call Capture_p_error()
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
107
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
108 " Error message output within a function should be three lines (the function
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
109 " name, the line number, and the error message).
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
110 call assert_equal(3, count(s:p_err, "\n"))
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
111
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
112 delfunction Capture_p_error
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
113 bwipeout!
51693b1a640e patch 8.1.0118: duplicate error message for put command
Christian Brabandt <cb@256bit.org>
parents: 14009
diff changeset
114 endfunc
16742
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
115
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
116 func Test_put_p_indent_visual()
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
117 new
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
118 call setline(1, ['select this text', 'select that text'])
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
119 " yank "that" from the second line
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
120 normal 2Gwvey
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
121 " select "this" in the first line and put
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
122 normal k0wve[p
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
123 call assert_equal('select that text', getline(1))
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
124 call assert_equal('select that text', getline(2))
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
125 bwipe!
75b5d77bbbab patch 8.1.1373: "[p" in Visual mode puts in wrong line
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
126 endfunc
19625
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
127
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
128 " Test for deleting all the contents of a buffer with a put
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
129 func Test_put_visual_delete_all_lines()
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
130 new
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
131 call setline(1, ['one', 'two', 'three'])
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
132 let @r = ''
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
133 normal! VG"rgp
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
134 call assert_equal(1, line('$'))
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
135 close!
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
136 endfunc
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
137
25840
8ff483b86d9b patch 8.2.3454: using a count with "gp" leave cursor in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
138 func Test_gp_with_count_leaves_cursor_at_end()
8ff483b86d9b patch 8.2.3454: using a count with "gp" leave cursor in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
139 new
8ff483b86d9b patch 8.2.3454: using a count with "gp" leave cursor in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
140 call setline(1, '<---->')
8ff483b86d9b patch 8.2.3454: using a count with "gp" leave cursor in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
141 call setreg('@', "foo\nbar", 'c')
25842
196f75cf6983 patch 8.2.3455: using a count with "gp" leaves '] in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 25840
diff changeset
142 normal 1G3|3gp
196f75cf6983 patch 8.2.3455: using a count with "gp" leaves '] in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 25840
diff changeset
143 call assert_equal([0, 4, 4, 0], getpos("."))
196f75cf6983 patch 8.2.3455: using a count with "gp" leaves '] in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 25840
diff changeset
144 call assert_equal(['<--foo', 'barfoo', 'barfoo', 'bar-->'], getline(1, '$'))
196f75cf6983 patch 8.2.3455: using a count with "gp" leaves '] in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 25840
diff changeset
145 call assert_equal([0, 4, 3, 0], getpos("']"))
25840
8ff483b86d9b patch 8.2.3454: using a count with "gp" leave cursor in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
146
8ff483b86d9b patch 8.2.3454: using a count with "gp" leave cursor in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
147 bwipe!
8ff483b86d9b patch 8.2.3454: using a count with "gp" leave cursor in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
148 endfunc
8ff483b86d9b patch 8.2.3454: using a count with "gp" leave cursor in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
149
26012
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
150 func Test_p_with_count_leaves_mark_at_end()
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
151 new
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
152 call setline(1, '<---->')
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
153 call setreg('@', "start\nend", 'c')
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
154 normal 1G3|3p
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
155 call assert_equal([0, 1, 4, 0], getpos("."))
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
156 call assert_equal(['<--start', 'endstart', 'endstart', 'end-->'], getline(1, '$'))
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
157 call assert_equal([0, 4, 3, 0], getpos("']"))
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
158
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
159 bwipe!
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
160 endfunc
b863efc63397 patch 8.2.3540: the mark '] is wrong after put with a count
Bram Moolenaar <Bram@vim.org>
parents: 25927
diff changeset
161
25919
db5b5c38d222 patch 8.2.3493: large count test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 25917
diff changeset
162 func Test_very_large_count()
26137
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
163 new
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
164 " total put-length (21474837 * 100) brings 32 bit int overflow
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
165 let @" = repeat('x', 100)
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
166 call assert_fails('norm 21474837p', 'E1240:')
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
167 bwipe!
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
168 endfunc
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
169
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
170 func Test_very_large_count_64bit()
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
171 if v:sizeoflong < 8
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
172 throw 'Skipped: only works with 64 bit long ints'
26087
945bdfc3c00f patch 8.2.3577: overflow check fails with 32 ints
Bram Moolenaar <Bram@vim.org>
parents: 26079
diff changeset
173 endif
945bdfc3c00f patch 8.2.3577: overflow check fails with 32 ints
Bram Moolenaar <Bram@vim.org>
parents: 26079
diff changeset
174
25917
79a5c8238a5d patch 8.2.3492: crash when pasting too many times
Bram Moolenaar <Bram@vim.org>
parents: 25842
diff changeset
175 new
26260
164db42130ec patch 8.2.3661: test for put with large count fails
Bram Moolenaar <Bram@vim.org>
parents: 26137
diff changeset
176 let @" = repeat('x', 100)
164db42130ec patch 8.2.3661: test for put with large count fails
Bram Moolenaar <Bram@vim.org>
parents: 26137
diff changeset
177 call assert_fails('norm 999999999p', 'E1240:')
25917
79a5c8238a5d patch 8.2.3492: crash when pasting too many times
Bram Moolenaar <Bram@vim.org>
parents: 25842
diff changeset
178 bwipe!
79a5c8238a5d patch 8.2.3492: crash when pasting too many times
Bram Moolenaar <Bram@vim.org>
parents: 25842
diff changeset
179 endfunc
79a5c8238a5d patch 8.2.3492: crash when pasting too many times
Bram Moolenaar <Bram@vim.org>
parents: 25842
diff changeset
180
26137
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
181 func Test_very_large_count_block()
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
182 new
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
183 " total put-length (21474837 * 100) brings 32 bit int overflow
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
184 call setline(1, repeat('x', 100))
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
185 exe "norm \<C-V>99ly"
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
186 call assert_fails('norm 21474837p', 'E1240:')
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
187 bwipe!
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
188 endfunc
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
189
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
190 func Test_very_large_count_block_64bit()
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
191 if v:sizeoflong < 8
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
192 throw 'Skipped: only works with 64 bit long ints'
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
193 endif
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
194
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
195 new
26260
164db42130ec patch 8.2.3661: test for put with large count fails
Bram Moolenaar <Bram@vim.org>
parents: 26137
diff changeset
196 call setline(1, repeat('x', 100))
164db42130ec patch 8.2.3661: test for put with large count fails
Bram Moolenaar <Bram@vim.org>
parents: 26137
diff changeset
197 exe "norm \<C-V>$y"
164db42130ec patch 8.2.3661: test for put with large count fails
Bram Moolenaar <Bram@vim.org>
parents: 26137
diff changeset
198 call assert_fails('norm 999999999p', 'E1240:')
26137
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
199 bwipe!
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
200 endfunc
14a55d1520f2 patch 8.2.3601: check for overflow in put count does not work well
Bram Moolenaar <Bram@vim.org>
parents: 26096
diff changeset
201
26096
e353ace59e62 patch 8.2.3581: reading character past end of line
Bram Moolenaar <Bram@vim.org>
parents: 26087
diff changeset
202 func Test_put_above_first_line()
e353ace59e62 patch 8.2.3581: reading character past end of line
Bram Moolenaar <Bram@vim.org>
parents: 26087
diff changeset
203 new
e353ace59e62 patch 8.2.3581: reading character past end of line
Bram Moolenaar <Bram@vim.org>
parents: 26087
diff changeset
204 let @" = 'text'
e353ace59e62 patch 8.2.3581: reading character past end of line
Bram Moolenaar <Bram@vim.org>
parents: 26087
diff changeset
205 silent! normal 0o00
e353ace59e62 patch 8.2.3581: reading character past end of line
Bram Moolenaar <Bram@vim.org>
parents: 26087
diff changeset
206 0put
e353ace59e62 patch 8.2.3581: reading character past end of line
Bram Moolenaar <Bram@vim.org>
parents: 26087
diff changeset
207 call assert_equal('text', getline(1))
e353ace59e62 patch 8.2.3581: reading character past end of line
Bram Moolenaar <Bram@vim.org>
parents: 26087
diff changeset
208 bwipe!
e353ace59e62 patch 8.2.3581: reading character past end of line
Bram Moolenaar <Bram@vim.org>
parents: 26087
diff changeset
209 endfunc
e353ace59e62 patch 8.2.3581: reading character past end of line
Bram Moolenaar <Bram@vim.org>
parents: 26087
diff changeset
210
26292
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
211 func Test_multibyte_op_end_mark()
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
212 new
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
213 call setline(1, 'тест')
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
214 normal viwdp
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
215 call assert_equal([0, 1, 7, 0], getpos("'>"))
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
216 call assert_equal([0, 1, 7, 0], getpos("']"))
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
217
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
218 normal Vyp
26881
fb67cd7d30a7 patch 8.2.3969: value of MAXCOL not available in Vim script
Bram Moolenaar <Bram@vim.org>
parents: 26292
diff changeset
219 call assert_equal([0, 1, v:maxcol, 0], getpos("'>"))
26292
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
220 call assert_equal([0, 2, 7, 0], getpos("']"))
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
221 bwipe!
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
222 endfunc
b79f122c6bd8 patch 8.2.3677: after a put the '] mark is on the last byte
Bram Moolenaar <Bram@vim.org>
parents: 26260
diff changeset
223
28988
e6f486df5cc9 patch 8.2.5016: access before start of text with a put command
Bram Moolenaar <Bram@vim.org>
parents: 26881
diff changeset
224 " this was putting a mark before the start of a line
e6f486df5cc9 patch 8.2.5016: access before start of text with a put command
Bram Moolenaar <Bram@vim.org>
parents: 26881
diff changeset
225 func Test_put_empty_register()
e6f486df5cc9 patch 8.2.5016: access before start of text with a put command
Bram Moolenaar <Bram@vim.org>
parents: 26881
diff changeset
226 new
e6f486df5cc9 patch 8.2.5016: access before start of text with a put command
Bram Moolenaar <Bram@vim.org>
parents: 26881
diff changeset
227 norm yy
e6f486df5cc9 patch 8.2.5016: access before start of text with a put command
Bram Moolenaar <Bram@vim.org>
parents: 26881
diff changeset
228 norm [Pi00ggv)s0
e6f486df5cc9 patch 8.2.5016: access before start of text with a put command
Bram Moolenaar <Bram@vim.org>
parents: 26881
diff changeset
229 sil! norm [P
e6f486df5cc9 patch 8.2.5016: access before start of text with a put command
Bram Moolenaar <Bram@vim.org>
parents: 26881
diff changeset
230 bwipe!
e6f486df5cc9 patch 8.2.5016: access before start of text with a put command
Bram Moolenaar <Bram@vim.org>
parents: 26881
diff changeset
231 endfunc
e6f486df5cc9 patch 8.2.5016: access before start of text with a put command
Bram Moolenaar <Bram@vim.org>
parents: 26881
diff changeset
232
29336
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
233 " this was putting the end mark after the end of the line
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
234 func Test_put_visual_mode()
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
235 edit! SomeNewBuffer
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
236 set selection=exclusive
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
237 exe "norm o\t"
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
238 m0
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
239 sil! norm  p p
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
240
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
241 bwipe!
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
242 set selection&
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
243 endfunc
575bc8eaa593 patch 9.0.0011: reading beyond the end of the line with put command
Bram Moolenaar <Bram@vim.org>
parents: 28988
diff changeset
244
32090
327f8a3e0040 patch 9.0.1376: accessing invalid memory with put in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 29336
diff changeset
245 func Test_put_visual_block_mode()
327f8a3e0040 patch 9.0.1376: accessing invalid memory with put in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 29336
diff changeset
246 enew
327f8a3e0040 patch 9.0.1376: accessing invalid memory with put in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 29336
diff changeset
247 exe "norm 0R\<CR>\<C-C>V"
327f8a3e0040 patch 9.0.1376: accessing invalid memory with put in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 29336
diff changeset
248 sil exe "norm \<C-V>c \<MiddleDrag>"
327f8a3e0040 patch 9.0.1376: accessing invalid memory with put in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 29336
diff changeset
249 set ve=all
327f8a3e0040 patch 9.0.1376: accessing invalid memory with put in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 29336
diff changeset
250 sil norm vz=p
327f8a3e0040 patch 9.0.1376: accessing invalid memory with put in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 29336
diff changeset
251
327f8a3e0040 patch 9.0.1376: accessing invalid memory with put in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 29336
diff changeset
252 bwipe!
327f8a3e0040 patch 9.0.1376: accessing invalid memory with put in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 29336
diff changeset
253 set ve=
327f8a3e0040 patch 9.0.1376: accessing invalid memory with put in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 29336
diff changeset
254 endfunc
327f8a3e0040 patch 9.0.1376: accessing invalid memory with put in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 29336
diff changeset
255
32288
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
256 func Test_put_other_window()
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
257 CheckRunVimInTerminal
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
258
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
259 let lines =<< trim END
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
260 40vsplit
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
261 0put ='some text at the top'
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
262 put =' one more text'
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
263 put =' two more text'
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
264 put =' three more text'
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
265 put =' four more text'
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
266 END
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
267 call writefile(lines, 'Xtest_put_other', 'D')
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
268 let buf = RunVimInTerminal('-S Xtest_put_other', #{rows: 10})
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
269
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
270 call VerifyScreenDump(buf, 'Test_put_other_window_1', {})
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
271
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
272 call StopVimInTerminal(buf)
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
273 endfunc
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 32090
diff changeset
274
32531
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
275 func Test_put_in_last_displayed_line()
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
276 CheckRunVimInTerminal
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
277
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
278 let lines =<< trim END
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
279 vim9script
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
280 autocmd CursorMoved * eval line('w$')
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
281 @a = 'x'->repeat(&columns * 2 - 2)
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
282 range(&lines)->setline(1)
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
283 feedkeys('G"ap')
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
284 END
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
285 call writefile(lines, 'Xtest_put_last_line', 'D')
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
286 let buf = RunVimInTerminal('-S Xtest_put_last_line', #{rows: 10})
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
287
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
288 call VerifyScreenDump(buf, 'Test_put_in_last_displayed_line_1', {})
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
289
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
290 call StopVimInTerminal(buf)
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
291 endfunc
c8b28054caec patch 9.0.1597: cursor ends up below the window after a put
Bram Moolenaar <Bram@vim.org>
parents: 32288
diff changeset
292
34448
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
293 func Test_put_visual_replace_whole_fold()
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
294 new
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
295 let lines = repeat(['{{{1', 'foo', 'bar', ''], 2)
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
296 call setline(1, lines)
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
297 setlocal foldmethod=marker
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
298 call setreg('"', 'baz')
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
299 call setreg('1', '')
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
300 normal! Vp
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
301 call assert_equal("{{{1\nfoo\nbar\n\n", getreg('1'))
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
302 call assert_equal(['baz', '{{{1', 'foo', 'bar', ''], getline(1, '$'))
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
303
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
304 bwipe!
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
305 endfunc
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
306
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
307 func Test_put_visual_replace_fold_marker()
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
308 new
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
309 let lines = repeat(['{{{1', 'foo', 'bar', ''], 4)
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
310 call setline(1, lines)
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
311 setlocal foldmethod=marker
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
312 normal! Gkzo
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
313 call setreg('"', '{{{1')
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
314 call setreg('1', '')
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
315 normal! Vp
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
316 call assert_equal("{{{1\n", getreg('1'))
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
317 call assert_equal(lines, getline(1, '$'))
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
318
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
319 bwipe!
e21d2759a5c2 patch 9.1.0141: Put in Visual mode wrong if it replaces fold marker
Christian Brabandt <cb@256bit.org>
parents: 34215
diff changeset
320 endfunc
25917
79a5c8238a5d patch 8.2.3492: crash when pasting too many times
Bram Moolenaar <Bram@vim.org>
parents: 25842
diff changeset
321
19625
f70a3c1000bb patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 18000
diff changeset
322 " vim: shiftwidth=2 sts=2 expandtab