1 2func Test_yank_shows_register() 3 enew 4 set report=0 5 call setline(1, ['foo', 'bar']) 6 " Line-wise 7 exe 'norm! yy' 8 call assert_equal('1 line yanked', v:statusmsg) 9 exe 'norm! "zyy' 10 call assert_equal('1 line yanked into "z', v:statusmsg) 11 exe 'norm! yj' 12 call assert_equal('2 lines yanked', v:statusmsg) 13 exe 'norm! "zyj' 14 call assert_equal('2 lines yanked into "z', v:statusmsg) 15 16 " Block-wise 17 exe "norm! \<C-V>y" 18 call assert_equal('block of 1 line yanked', v:statusmsg) 19 exe "norm! \<C-V>\"zy" 20 call assert_equal('block of 1 line yanked into "z', v:statusmsg) 21 exe "norm! \<C-V>jy" 22 call assert_equal('block of 2 lines yanked', v:statusmsg) 23 exe "norm! \<C-V>j\"zy" 24 call assert_equal('block of 2 lines yanked into "z', v:statusmsg) 25 26 bwipe! 27endfunc 28 29func Test_display_registers() 30 e file1 31 e file2 32 call setline(1, ['foo', 'bar']) 33 /bar 34 exe 'norm! y2l"axx' 35 call feedkeys("i\<C-R>=2*4\n\<esc>") 36 call feedkeys(":ls\n", 'xt') 37 38 let a = execute('display') 39 let b = execute('registers') 40 41 call assert_equal(a, b) 42 call assert_match('^\n--- Registers ---\n' 43 \ . '"" a\n' 44 \ . '"0 ba\n' 45 \ . '"a b\n' 46 \ . '.*' 47 \ . '"- a\n' 48 \ . '.*' 49 \ . '": ls\n' 50 \ . '"% file2\n' 51 \ . '"# file1\n' 52 \ . '"/ bar\n' 53 \ . '"= 2\*4', a) 54 55 let a = execute('registers a') 56 call assert_match('^\n--- Registers ---\n' 57 \ . '"a b', a) 58 59 let a = execute('registers :') 60 call assert_match('^\n--- Registers ---\n' 61 \ . '": ls', a) 62 63 bwipe! 64endfunc 65 66func Test_register_one() 67 " delete a line goes into register one 68 new 69 call setline(1, "one") 70 normal dd 71 call assert_equal("one\n", @1) 72 73 " delete a word does not change register one, does change "- 74 call setline(1, "two") 75 normal de 76 call assert_equal("one\n", @1) 77 call assert_equal("two", @-) 78 79 " delete a word with a register does not change register one 80 call setline(1, "three") 81 normal "ade 82 call assert_equal("three", @a) 83 call assert_equal("one\n", @1) 84 85 " delete a word with register DOES change register one with one of a list of 86 " operators 87 " % 88 call setline(1, ["(12)3"]) 89 normal "ad% 90 call assert_equal("(12)", @a) 91 call assert_equal("(12)", @1) 92 93 " ( 94 call setline(1, ["first second"]) 95 normal $"ad( 96 call assert_equal("first secon", @a) 97 call assert_equal("first secon", @1) 98 99 " ) 100 call setline(1, ["First Second."]) 101 normal gg0"ad) 102 call assert_equal("First Second.", @a) 103 call assert_equal("First Second.", @1) 104 105 " ` 106 call setline(1, ["start here."]) 107 normal gg0fhmx0"ad`x 108 call assert_equal("start ", @a) 109 call assert_equal("start ", @1) 110 111 " / 112 call setline(1, ["searchX"]) 113 exe "normal gg0\"ad/X\<CR>" 114 call assert_equal("search", @a) 115 call assert_equal("search", @1) 116 117 " ? 118 call setline(1, ["Ysearch"]) 119 exe "normal gg$\"ad?Y\<CR>" 120 call assert_equal("Ysearc", @a) 121 call assert_equal("Ysearc", @1) 122 123 " n 124 call setline(1, ["Ynext"]) 125 normal gg$"adn 126 call assert_equal("Ynex", @a) 127 call assert_equal("Ynex", @1) 128 129 " N 130 call setline(1, ["prevY"]) 131 normal gg0"adN 132 call assert_equal("prev", @a) 133 call assert_equal("prev", @1) 134 135 " } 136 call setline(1, ["one", ""]) 137 normal gg0"ad} 138 call assert_equal("one\n", @a) 139 call assert_equal("one\n", @1) 140 141 " { 142 call setline(1, ["", "two"]) 143 normal 2G$"ad{ 144 call assert_equal("\ntw", @a) 145 call assert_equal("\ntw", @1) 146 147 bwipe! 148endfunc 149 150" Check that replaying a typed sequence does not use an Esc and following 151" characters as an escape sequence. 152func Test_recording_esc_sequence() 153 new 154 try 155 let save_F2 = &t_F2 156 catch 157 endtry 158 let t_F2 = "\<Esc>OQ" 159 call feedkeys("qqiTest\<Esc>", "xt") 160 call feedkeys("OQuirk\<Esc>q", "xt") 161 call feedkeys("Go\<Esc>@q", "xt") 162 call assert_equal(['Quirk', 'Test', 'Quirk', 'Test'], getline(1, 4)) 163 bwipe! 164 if exists('save_F2') 165 let &t_F2 = save_F2 166 else 167 set t_F2= 168 endif 169endfunc 170