171136db1SBram Moolenaar" Tests for register operations 271136db1SBram Moolenaar 354c8d229SBram Moolenaarsource check.vim 411a5b19aSBram Moolenaarsource view_util.vim 554c8d229SBram Moolenaar 671136db1SBram Moolenaar" This test must be executed first to check for empty and unset registers. 771136db1SBram Moolenaarfunc Test_aaa_empty_reg_test() 871136db1SBram Moolenaar call assert_fails('normal @@', 'E748:') 971136db1SBram Moolenaar call assert_fails('normal @%', 'E354:') 1071136db1SBram Moolenaar call assert_fails('normal @#', 'E354:') 1171136db1SBram Moolenaar call assert_fails('normal @!', 'E354:') 1271136db1SBram Moolenaar call assert_fails('normal @:', 'E30:') 1371136db1SBram Moolenaar call assert_fails('normal @.', 'E29:') 146f1f0ca3SBram Moolenaar call assert_fails('put /', 'E35:') 156f1f0ca3SBram Moolenaar call assert_fails('put .', 'E29:') 1671136db1SBram Moolenaarendfunc 17e45deb79SBram Moolenaar 18e45deb79SBram Moolenaarfunc Test_yank_shows_register() 19e45deb79SBram Moolenaar enew 20e45deb79SBram Moolenaar set report=0 21e45deb79SBram Moolenaar call setline(1, ['foo', 'bar']) 22e45deb79SBram Moolenaar " Line-wise 23e45deb79SBram Moolenaar exe 'norm! yy' 24e45deb79SBram Moolenaar call assert_equal('1 line yanked', v:statusmsg) 25e45deb79SBram Moolenaar exe 'norm! "zyy' 26e45deb79SBram Moolenaar call assert_equal('1 line yanked into "z', v:statusmsg) 27e45deb79SBram Moolenaar exe 'norm! yj' 28e45deb79SBram Moolenaar call assert_equal('2 lines yanked', v:statusmsg) 29e45deb79SBram Moolenaar exe 'norm! "zyj' 30e45deb79SBram Moolenaar call assert_equal('2 lines yanked into "z', v:statusmsg) 31e45deb79SBram Moolenaar 32e45deb79SBram Moolenaar " Block-wise 33e45deb79SBram Moolenaar exe "norm! \<C-V>y" 34e45deb79SBram Moolenaar call assert_equal('block of 1 line yanked', v:statusmsg) 35e45deb79SBram Moolenaar exe "norm! \<C-V>\"zy" 36e45deb79SBram Moolenaar call assert_equal('block of 1 line yanked into "z', v:statusmsg) 37e45deb79SBram Moolenaar exe "norm! \<C-V>jy" 38e45deb79SBram Moolenaar call assert_equal('block of 2 lines yanked', v:statusmsg) 39e45deb79SBram Moolenaar exe "norm! \<C-V>j\"zy" 40e45deb79SBram Moolenaar call assert_equal('block of 2 lines yanked into "z', v:statusmsg) 41e45deb79SBram Moolenaar 42e45deb79SBram Moolenaar bwipe! 43e45deb79SBram Moolenaarendfunc 447ce551f3SBram Moolenaar 457ce551f3SBram Moolenaarfunc Test_display_registers() 467ce551f3SBram Moolenaar e file1 477ce551f3SBram Moolenaar e file2 487ce551f3SBram Moolenaar call setline(1, ['foo', 'bar']) 497ce551f3SBram Moolenaar /bar 507ce551f3SBram Moolenaar exe 'norm! y2l"axx' 517ce551f3SBram Moolenaar call feedkeys("i\<C-R>=2*4\n\<esc>") 527ce551f3SBram Moolenaar call feedkeys(":ls\n", 'xt') 537ce551f3SBram Moolenaar 547ce551f3SBram Moolenaar let a = execute('display') 557ce551f3SBram Moolenaar let b = execute('registers') 567ce551f3SBram Moolenaar 577ce551f3SBram Moolenaar call assert_equal(a, b) 583691f1eeSBram Moolenaar call assert_match('^\nType Name Content\n' 593691f1eeSBram Moolenaar \ . ' c "" a\n' 603691f1eeSBram Moolenaar \ . ' c "0 ba\n' 613691f1eeSBram Moolenaar \ . ' c "a b\n' 627ce551f3SBram Moolenaar \ . '.*' 633691f1eeSBram Moolenaar \ . ' c "- a\n' 647ce551f3SBram Moolenaar \ . '.*' 653691f1eeSBram Moolenaar \ . ' c ": ls\n' 663691f1eeSBram Moolenaar \ . ' c "% file2\n' 673691f1eeSBram Moolenaar \ . ' c "# file1\n' 683691f1eeSBram Moolenaar \ . ' c "/ bar\n' 693691f1eeSBram Moolenaar \ . ' c "= 2\*4', a) 707ce551f3SBram Moolenaar 717ce551f3SBram Moolenaar let a = execute('registers a') 723691f1eeSBram Moolenaar call assert_match('^\nType Name Content\n' 733691f1eeSBram Moolenaar \ . ' c "a b', a) 747ce551f3SBram Moolenaar 757ce551f3SBram Moolenaar let a = execute('registers :') 763691f1eeSBram Moolenaar call assert_match('^\nType Name Content\n' 773691f1eeSBram Moolenaar \ . ' c ": ls', a) 787ce551f3SBram Moolenaar 797ce551f3SBram Moolenaar bwipe! 807ce551f3SBram Moolenaarendfunc 819d7fdd40SBram Moolenaar 829d7fdd40SBram Moolenaarfunc Test_register_one() 839d7fdd40SBram Moolenaar " delete a line goes into register one 849d7fdd40SBram Moolenaar new 859d7fdd40SBram Moolenaar call setline(1, "one") 869d7fdd40SBram Moolenaar normal dd 879d7fdd40SBram Moolenaar call assert_equal("one\n", @1) 889d7fdd40SBram Moolenaar 899d7fdd40SBram Moolenaar " delete a word does not change register one, does change "- 909d7fdd40SBram Moolenaar call setline(1, "two") 919d7fdd40SBram Moolenaar normal de 929d7fdd40SBram Moolenaar call assert_equal("one\n", @1) 939d7fdd40SBram Moolenaar call assert_equal("two", @-) 949d7fdd40SBram Moolenaar 959d7fdd40SBram Moolenaar " delete a word with a register does not change register one 969d7fdd40SBram Moolenaar call setline(1, "three") 979d7fdd40SBram Moolenaar normal "ade 989d7fdd40SBram Moolenaar call assert_equal("three", @a) 999d7fdd40SBram Moolenaar call assert_equal("one\n", @1) 1009d7fdd40SBram Moolenaar 1019d7fdd40SBram Moolenaar " delete a word with register DOES change register one with one of a list of 1029d7fdd40SBram Moolenaar " operators 1039d7fdd40SBram Moolenaar " % 1049d7fdd40SBram Moolenaar call setline(1, ["(12)3"]) 1059d7fdd40SBram Moolenaar normal "ad% 1069d7fdd40SBram Moolenaar call assert_equal("(12)", @a) 1079d7fdd40SBram Moolenaar call assert_equal("(12)", @1) 1089d7fdd40SBram Moolenaar 1099d7fdd40SBram Moolenaar " ( 1109d7fdd40SBram Moolenaar call setline(1, ["first second"]) 1119d7fdd40SBram Moolenaar normal $"ad( 1129d7fdd40SBram Moolenaar call assert_equal("first secon", @a) 1139d7fdd40SBram Moolenaar call assert_equal("first secon", @1) 1149d7fdd40SBram Moolenaar 1159d7fdd40SBram Moolenaar " ) 1169d7fdd40SBram Moolenaar call setline(1, ["First Second."]) 1179d7fdd40SBram Moolenaar normal gg0"ad) 1189d7fdd40SBram Moolenaar call assert_equal("First Second.", @a) 1199d7fdd40SBram Moolenaar call assert_equal("First Second.", @1) 1209d7fdd40SBram Moolenaar 1219d7fdd40SBram Moolenaar " ` 1229d7fdd40SBram Moolenaar call setline(1, ["start here."]) 1239d7fdd40SBram Moolenaar normal gg0fhmx0"ad`x 1249d7fdd40SBram Moolenaar call assert_equal("start ", @a) 1259d7fdd40SBram Moolenaar call assert_equal("start ", @1) 1269d7fdd40SBram Moolenaar 1279d7fdd40SBram Moolenaar " / 1289d7fdd40SBram Moolenaar call setline(1, ["searchX"]) 1299d7fdd40SBram Moolenaar exe "normal gg0\"ad/X\<CR>" 1309d7fdd40SBram Moolenaar call assert_equal("search", @a) 1319d7fdd40SBram Moolenaar call assert_equal("search", @1) 1329d7fdd40SBram Moolenaar 1339d7fdd40SBram Moolenaar " ? 1349d7fdd40SBram Moolenaar call setline(1, ["Ysearch"]) 1359d7fdd40SBram Moolenaar exe "normal gg$\"ad?Y\<CR>" 1369d7fdd40SBram Moolenaar call assert_equal("Ysearc", @a) 1379d7fdd40SBram Moolenaar call assert_equal("Ysearc", @1) 1389d7fdd40SBram Moolenaar 1399d7fdd40SBram Moolenaar " n 1409d7fdd40SBram Moolenaar call setline(1, ["Ynext"]) 1419d7fdd40SBram Moolenaar normal gg$"adn 1429d7fdd40SBram Moolenaar call assert_equal("Ynex", @a) 1439d7fdd40SBram Moolenaar call assert_equal("Ynex", @1) 1449d7fdd40SBram Moolenaar 1459d7fdd40SBram Moolenaar " N 1469d7fdd40SBram Moolenaar call setline(1, ["prevY"]) 1479d7fdd40SBram Moolenaar normal gg0"adN 1489d7fdd40SBram Moolenaar call assert_equal("prev", @a) 1499d7fdd40SBram Moolenaar call assert_equal("prev", @1) 1509d7fdd40SBram Moolenaar 1519d7fdd40SBram Moolenaar " } 1529d7fdd40SBram Moolenaar call setline(1, ["one", ""]) 1539d7fdd40SBram Moolenaar normal gg0"ad} 1549d7fdd40SBram Moolenaar call assert_equal("one\n", @a) 1559d7fdd40SBram Moolenaar call assert_equal("one\n", @1) 1569d7fdd40SBram Moolenaar 1579d7fdd40SBram Moolenaar " { 1589d7fdd40SBram Moolenaar call setline(1, ["", "two"]) 1599d7fdd40SBram Moolenaar normal 2G$"ad{ 1609d7fdd40SBram Moolenaar call assert_equal("\ntw", @a) 1619d7fdd40SBram Moolenaar call assert_equal("\ntw", @1) 1629d7fdd40SBram Moolenaar 1639d7fdd40SBram Moolenaar bwipe! 1649d7fdd40SBram Moolenaarendfunc 1656edbbd81SBram Moolenaar 16611a5b19aSBram Moolenaarfunc Test_recording_status_in_ex_line() 16711a5b19aSBram Moolenaar norm qx 16811a5b19aSBram Moolenaar redraw! 16911a5b19aSBram Moolenaar call assert_equal('recording @x', Screenline(&lines)) 17011a5b19aSBram Moolenaar set shortmess=q 17111a5b19aSBram Moolenaar redraw! 17211a5b19aSBram Moolenaar call assert_equal('recording', Screenline(&lines)) 17311a5b19aSBram Moolenaar set shortmess& 17411a5b19aSBram Moolenaar norm q 17511a5b19aSBram Moolenaar redraw! 17611a5b19aSBram Moolenaar call assert_equal('', Screenline(&lines)) 17711a5b19aSBram Moolenaarendfunc 17811a5b19aSBram Moolenaar 1796edbbd81SBram Moolenaar" Check that replaying a typed sequence does not use an Esc and following 1806edbbd81SBram Moolenaar" characters as an escape sequence. 1816edbbd81SBram Moolenaarfunc Test_recording_esc_sequence() 1826edbbd81SBram Moolenaar new 18355d81cd2SBram Moolenaar try 1846edbbd81SBram Moolenaar let save_F2 = &t_F2 18555d81cd2SBram Moolenaar catch 18655d81cd2SBram Moolenaar endtry 1876edbbd81SBram Moolenaar let t_F2 = "\<Esc>OQ" 1886edbbd81SBram Moolenaar call feedkeys("qqiTest\<Esc>", "xt") 1896edbbd81SBram Moolenaar call feedkeys("OQuirk\<Esc>q", "xt") 1906edbbd81SBram Moolenaar call feedkeys("Go\<Esc>@q", "xt") 1916edbbd81SBram Moolenaar call assert_equal(['Quirk', 'Test', 'Quirk', 'Test'], getline(1, 4)) 1926edbbd81SBram Moolenaar bwipe! 19355d81cd2SBram Moolenaar if exists('save_F2') 194a5e44600SBram Moolenaar let &t_F2 = save_F2 195037c54f2SBram Moolenaar else 196037c54f2SBram Moolenaar set t_F2= 19755d81cd2SBram Moolenaar endif 1986edbbd81SBram Moolenaarendfunc 19971136db1SBram Moolenaar 20071136db1SBram Moolenaar" Test for executing the last used register (@) 20171136db1SBram Moolenaarfunc Test_last_used_exec_reg() 20271136db1SBram Moolenaar " Test for the @: command 20371136db1SBram Moolenaar let a = '' 20471136db1SBram Moolenaar call feedkeys(":let a ..= 'Vim'\<CR>", 'xt') 20571136db1SBram Moolenaar normal @: 20671136db1SBram Moolenaar call assert_equal('VimVim', a) 20771136db1SBram Moolenaar 20871136db1SBram Moolenaar " Test for the @= command 20971136db1SBram Moolenaar let x = '' 21071136db1SBram Moolenaar let a = ":let x ..= 'Vim'\<CR>" 21171136db1SBram Moolenaar exe "normal @=a\<CR>" 21271136db1SBram Moolenaar normal @@ 21371136db1SBram Moolenaar call assert_equal('VimVim', x) 21471136db1SBram Moolenaar 21571136db1SBram Moolenaar " Test for the @. command 21671136db1SBram Moolenaar let a = '' 21771136db1SBram Moolenaar call feedkeys("i:let a ..= 'Edit'\<CR>", 'xt') 21871136db1SBram Moolenaar normal @. 21971136db1SBram Moolenaar normal @@ 22071136db1SBram Moolenaar call assert_equal('EditEdit', a) 22171136db1SBram Moolenaar 2226f1f0ca3SBram Moolenaar " Test for repeating the last command-line in visual mode 2236f1f0ca3SBram Moolenaar call append(0, 'register') 2246f1f0ca3SBram Moolenaar normal gg 2256f1f0ca3SBram Moolenaar let @r = '' 2266f1f0ca3SBram Moolenaar call feedkeys("v:yank R\<CR>", 'xt') 2276f1f0ca3SBram Moolenaar call feedkeys("v@:", 'xt') 2286f1f0ca3SBram Moolenaar call assert_equal("\nregister\nregister\n", @r) 2296f1f0ca3SBram Moolenaar 23071136db1SBram Moolenaar enew! 23171136db1SBram Moolenaarendfunc 23271136db1SBram Moolenaar 23371136db1SBram Moolenaarfunc Test_get_register() 23471136db1SBram Moolenaar enew 23571136db1SBram Moolenaar edit Xfile1 23671136db1SBram Moolenaar edit Xfile2 23771136db1SBram Moolenaar call assert_equal('Xfile2', getreg('%')) 23871136db1SBram Moolenaar call assert_equal('Xfile1', getreg('#')) 23971136db1SBram Moolenaar 24071136db1SBram Moolenaar call feedkeys("iTwo\<Esc>", 'xt') 24171136db1SBram Moolenaar call assert_equal('Two', getreg('.')) 24271136db1SBram Moolenaar call assert_equal('', getreg('_')) 24371136db1SBram Moolenaar call assert_beeps('normal ":yy') 24471136db1SBram Moolenaar call assert_beeps('normal "%yy') 24571136db1SBram Moolenaar call assert_beeps('normal ".yy') 24671136db1SBram Moolenaar 24771136db1SBram Moolenaar call assert_equal('', getreg("\<C-F>")) 24871136db1SBram Moolenaar call assert_equal('', getreg("\<C-W>")) 24971136db1SBram Moolenaar call assert_equal('', getreg("\<C-L>")) 2500e05de46SBram Moolenaar " Change the last used register to '"' for the next test 2510e05de46SBram Moolenaar normal! ""yy 2520e05de46SBram Moolenaar let @" = 'happy' 2530e05de46SBram Moolenaar call assert_equal('happy', getreg()) 2540e05de46SBram Moolenaar call assert_equal('happy', getreg('')) 25571136db1SBram Moolenaar 25671136db1SBram Moolenaar call assert_equal('', getregtype('!')) 2570e05de46SBram Moolenaar call assert_fails('echo getregtype([])', 'E730:') 2580e05de46SBram Moolenaar call assert_equal('v', getregtype()) 2590e05de46SBram Moolenaar call assert_equal('v', getregtype('')) 26071136db1SBram Moolenaar 2616f1f0ca3SBram Moolenaar " Test for inserting an invalid register content 2626f1f0ca3SBram Moolenaar call assert_beeps('exe "normal i\<C-R>!"') 2636f1f0ca3SBram Moolenaar 2646f1f0ca3SBram Moolenaar " Test for inserting a register with multiple lines 2656f1f0ca3SBram Moolenaar call deletebufline('', 1, '$') 2666f1f0ca3SBram Moolenaar call setreg('r', ['a', 'b']) 2676f1f0ca3SBram Moolenaar exe "normal i\<C-R>r" 2686f1f0ca3SBram Moolenaar call assert_equal(['a', 'b', ''], getline(1, '$')) 2696f1f0ca3SBram Moolenaar 2706f1f0ca3SBram Moolenaar " Test for inserting a multi-line register in the command line 2716f1f0ca3SBram Moolenaar call feedkeys(":\<C-R>r\<Esc>", 'xt') 2726f1f0ca3SBram Moolenaar call assert_equal("a\rb\r", histget(':', -1)) 2736f1f0ca3SBram Moolenaar 27499fa7219SBram Moolenaar call assert_fails('let r = getreg("=", [])', 'E745:') 27599fa7219SBram Moolenaar call assert_fails('let r = getreg("=", 1, [])', 'E745:') 27671136db1SBram Moolenaar enew! 277d1ad99b6SBram Moolenaar 278d1ad99b6SBram Moolenaar " Using a register in operator-pending mode should fail 279d1ad99b6SBram Moolenaar call assert_beeps('norm! c"') 28071136db1SBram Moolenaarendfunc 28171136db1SBram Moolenaar 28271136db1SBram Moolenaarfunc Test_set_register() 28371136db1SBram Moolenaar call assert_fails("call setreg('#', 200)", 'E86:') 28434fcb697SYegappan Lakshmanan call assert_fails("call setreg('a', test_unknown())", 'E908:') 28571136db1SBram Moolenaar 28671136db1SBram Moolenaar edit Xfile_alt_1 28771136db1SBram Moolenaar let b1 = bufnr('') 28871136db1SBram Moolenaar edit Xfile_alt_2 28971136db1SBram Moolenaar let b2 = bufnr('') 29071136db1SBram Moolenaar edit Xfile_alt_3 29171136db1SBram Moolenaar let b3 = bufnr('') 29271136db1SBram Moolenaar call setreg('#', 'alt_1') 29371136db1SBram Moolenaar call assert_equal('Xfile_alt_1', getreg('#')) 29471136db1SBram Moolenaar call setreg('#', b2) 29571136db1SBram Moolenaar call assert_equal('Xfile_alt_2', getreg('#')) 29671136db1SBram Moolenaar 29771136db1SBram Moolenaar let ab = 'regwrite' 29871136db1SBram Moolenaar call setreg('=', '') 29971136db1SBram Moolenaar call setreg('=', 'a', 'a') 30071136db1SBram Moolenaar call setreg('=', 'b', 'a') 30171136db1SBram Moolenaar call assert_equal('regwrite', getreg('=')) 30271136db1SBram Moolenaar 3034b96df5aSBram Moolenaar " Test for setting a list of lines to special registers 3046f1f0ca3SBram Moolenaar call setreg('/', []) 3056f1f0ca3SBram Moolenaar call assert_equal('', @/) 3066f1f0ca3SBram Moolenaar call setreg('=', []) 3076f1f0ca3SBram Moolenaar call assert_equal('', @=) 3086f1f0ca3SBram Moolenaar call assert_fails("call setreg('/', ['a', 'b'])", 'E883:') 3096f1f0ca3SBram Moolenaar call assert_fails("call setreg('=', ['a', 'b'])", 'E883:') 3106f1f0ca3SBram Moolenaar call assert_equal(0, setreg('_', ['a', 'b'])) 3116f1f0ca3SBram Moolenaar 3126f1f0ca3SBram Moolenaar " Test for recording to a invalid register 3136f1f0ca3SBram Moolenaar call assert_beeps('normal q$') 3146f1f0ca3SBram Moolenaar 3156f1f0ca3SBram Moolenaar " Appending to a register when recording 3166f1f0ca3SBram Moolenaar call append(0, "text for clipboard test") 3176f1f0ca3SBram Moolenaar normal gg 3186f1f0ca3SBram Moolenaar call feedkeys('qrllq', 'xt') 3196f1f0ca3SBram Moolenaar call feedkeys('qRhhq', 'xt') 3206f1f0ca3SBram Moolenaar call assert_equal('llhh', getreg('r')) 3216f1f0ca3SBram Moolenaar 32254c8d229SBram Moolenaar " Appending a list of characters to a register from different lines 32354c8d229SBram Moolenaar let @r = '' 32454c8d229SBram Moolenaar call append(0, ['abcdef', '123456']) 32554c8d229SBram Moolenaar normal gg"ry3l 32654c8d229SBram Moolenaar call cursor(2, 4) 32754c8d229SBram Moolenaar normal "Ry3l 32854c8d229SBram Moolenaar call assert_equal('abc456', @r) 32954c8d229SBram Moolenaar 33054c8d229SBram Moolenaar " Test for gP with multiple lines selected using characterwise motion 33154c8d229SBram Moolenaar %delete 33254c8d229SBram Moolenaar call append(0, ['vim editor', 'vim editor']) 33354c8d229SBram Moolenaar let @r = '' 33454c8d229SBram Moolenaar exe "normal ggwy/vim /e\<CR>gP" 33554c8d229SBram Moolenaar call assert_equal(['vim editor', 'vim editor', 'vim editor'], getline(1, 3)) 33654c8d229SBram Moolenaar 33754c8d229SBram Moolenaar " Test for gP with . register 33854c8d229SBram Moolenaar %delete 33954c8d229SBram Moolenaar normal iabc 34054c8d229SBram Moolenaar normal ".gp 34154c8d229SBram Moolenaar call assert_equal('abcabc', getline(1)) 34254c8d229SBram Moolenaar normal 0".gP 34354c8d229SBram Moolenaar call assert_equal('abcabcabc', getline(1)) 34454c8d229SBram Moolenaar 3450e05de46SBram Moolenaar let @"='' 3460e05de46SBram Moolenaar call setreg('', '1') 3470e05de46SBram Moolenaar call assert_equal('1', @") 3480e05de46SBram Moolenaar call setreg('@', '2') 3490e05de46SBram Moolenaar call assert_equal('2', @") 3500e05de46SBram Moolenaar 35171136db1SBram Moolenaar enew! 35271136db1SBram Moolenaarendfunc 35371136db1SBram Moolenaar 35454c8d229SBram Moolenaar" Test for clipboard registers (* and +) 35554c8d229SBram Moolenaarfunc Test_clipboard_regs() 35654c8d229SBram Moolenaar CheckNotGui 35754c8d229SBram Moolenaar CheckFeature clipboard_working 35854c8d229SBram Moolenaar 35954c8d229SBram Moolenaar new 36054c8d229SBram Moolenaar call append(0, "text for clipboard test") 36154c8d229SBram Moolenaar normal gg"*yiw 36254c8d229SBram Moolenaar call assert_equal('text', getreg('*')) 36354c8d229SBram Moolenaar normal gg2w"+yiw 36454c8d229SBram Moolenaar call assert_equal('clipboard', getreg('+')) 36554c8d229SBram Moolenaar 36654c8d229SBram Moolenaar " Test for replacing the clipboard register contents 36754c8d229SBram Moolenaar set clipboard=unnamed 36854c8d229SBram Moolenaar let @* = 'food' 36954c8d229SBram Moolenaar normal ggviw"*p 37054c8d229SBram Moolenaar call assert_equal('text', getreg('*')) 37154c8d229SBram Moolenaar call assert_equal('food for clipboard test', getline(1)) 37254c8d229SBram Moolenaar normal ggviw"*p 37354c8d229SBram Moolenaar call assert_equal('food', getreg('*')) 37454c8d229SBram Moolenaar call assert_equal('text for clipboard test', getline(1)) 37554c8d229SBram Moolenaar 37654c8d229SBram Moolenaar " Test for replacing the selection register contents 37754c8d229SBram Moolenaar set clipboard=unnamedplus 37854c8d229SBram Moolenaar let @+ = 'food' 37954c8d229SBram Moolenaar normal ggviw"+p 38054c8d229SBram Moolenaar call assert_equal('text', getreg('+')) 38154c8d229SBram Moolenaar call assert_equal('food for clipboard test', getline(1)) 38254c8d229SBram Moolenaar normal ggviw"+p 38354c8d229SBram Moolenaar call assert_equal('food', getreg('+')) 38454c8d229SBram Moolenaar call assert_equal('text for clipboard test', getline(1)) 38554c8d229SBram Moolenaar 38654c8d229SBram Moolenaar " Test for auto copying visually selected text to clipboard register 38754c8d229SBram Moolenaar call setline(1, "text for clipboard test") 38854c8d229SBram Moolenaar let @* = '' 38954c8d229SBram Moolenaar set clipboard=autoselect 39054c8d229SBram Moolenaar normal ggwwviwy 39154c8d229SBram Moolenaar call assert_equal('clipboard', @*) 39254c8d229SBram Moolenaar 39354c8d229SBram Moolenaar " Test for auto copying visually selected text to selection register 39454c8d229SBram Moolenaar let @+ = '' 39554c8d229SBram Moolenaar set clipboard=autoselectplus 39654c8d229SBram Moolenaar normal ggwviwy 39754c8d229SBram Moolenaar call assert_equal('for', @+) 39854c8d229SBram Moolenaar 39954c8d229SBram Moolenaar set clipboard&vim 40054c8d229SBram Moolenaar bwipe! 40154c8d229SBram Moolenaarendfunc 40254c8d229SBram Moolenaar 40354c8d229SBram Moolenaar" Test for restarting the current mode (insert or virtual replace) after 40454c8d229SBram Moolenaar" executing the contents of a register 40554c8d229SBram Moolenaarfunc Test_put_reg_restart_mode() 40654c8d229SBram Moolenaar new 40754c8d229SBram Moolenaar call append(0, 'editor') 40854c8d229SBram Moolenaar normal gg 40954c8d229SBram Moolenaar let @r = "ivim \<Esc>" 41054c8d229SBram Moolenaar call feedkeys("i\<C-O>@r\<C-R>=mode()\<CR>", 'xt') 41154c8d229SBram Moolenaar call assert_equal('vimi editor', getline(1)) 41254c8d229SBram Moolenaar 41354c8d229SBram Moolenaar call setline(1, 'editor') 41454c8d229SBram Moolenaar normal gg 41554c8d229SBram Moolenaar call feedkeys("gR\<C-O>@r\<C-R>=mode()\<CR>", 'xt') 41654c8d229SBram Moolenaar call assert_equal('vimReditor', getline(1)) 41754c8d229SBram Moolenaar 41854c8d229SBram Moolenaar bwipe! 41954c8d229SBram Moolenaarendfunc 42054c8d229SBram Moolenaar 421bc2b71d4SBram Moolenaar" Test for executing a register using :@ command 422bc2b71d4SBram Moolenaarfunc Test_execute_register() 423bc2b71d4SBram Moolenaar call setreg('r', []) 424bc2b71d4SBram Moolenaar call assert_beeps('@r') 425bc2b71d4SBram Moolenaar let i = 1 426bc2b71d4SBram Moolenaar let @q = 'let i+= 1' 427bc2b71d4SBram Moolenaar @q 428bc2b71d4SBram Moolenaar @ 429bc2b71d4SBram Moolenaar call assert_equal(3, i) 4301671f448SBram Moolenaar 4318a9bc95eSBram Moolenaar " try to execute expression register and use a backspace to cancel it 4328a9bc95eSBram Moolenaar new 4338a9bc95eSBram Moolenaar call feedkeys("@=\<BS>ax\<CR>y", 'xt') 4348a9bc95eSBram Moolenaar call assert_equal(['x', 'y'], getline(1, '$')) 4358a9bc95eSBram Moolenaar close! 4368a9bc95eSBram Moolenaar 4371671f448SBram Moolenaar " cannot execute a register in operator pending mode 4381671f448SBram Moolenaar call assert_beeps('normal! c@r') 439bc2b71d4SBram Moolenaarendfunc 440bc2b71d4SBram Moolenaar 441bb861e29SBram Moolenaar" Test for getting register info 442bb861e29SBram Moolenaarfunc Test_get_reginfo() 443bb861e29SBram Moolenaar enew 444bb861e29SBram Moolenaar call setline(1, ['foo', 'bar']) 445bb861e29SBram Moolenaar 446bb861e29SBram Moolenaar exe 'norm! "zyy' 447bb861e29SBram Moolenaar let info = getreginfo('"') 448bb861e29SBram Moolenaar call assert_equal('z', info.points_to) 449bb861e29SBram Moolenaar call setreg('y', 'baz') 450bb861e29SBram Moolenaar call assert_equal('z', getreginfo('').points_to) 451bb861e29SBram Moolenaar call setreg('y', { 'isunnamed': v:true }) 452bb861e29SBram Moolenaar call assert_equal('y', getreginfo('"').points_to) 453bb861e29SBram Moolenaar 454bb861e29SBram Moolenaar exe '$put' 455bb861e29SBram Moolenaar call assert_equal(getreg('y'), getline(3)) 456bb861e29SBram Moolenaar call setreg('', 'qux') 457bb861e29SBram Moolenaar call assert_equal('0', getreginfo('').points_to) 458bb861e29SBram Moolenaar call setreg('x', 'quux') 459bb861e29SBram Moolenaar call assert_equal('0', getreginfo('').points_to) 460bb861e29SBram Moolenaar 461bb861e29SBram Moolenaar let info = getreginfo('') 462bb861e29SBram Moolenaar call assert_equal(getreg('', 1, 1), info.regcontents) 463bb861e29SBram Moolenaar call assert_equal(getregtype(''), info.regtype) 464bb861e29SBram Moolenaar 465bb861e29SBram Moolenaar exe "norm! 0\<c-v>e" .. '"zy' 466bb861e29SBram Moolenaar let info = getreginfo('z') 467bb861e29SBram Moolenaar call assert_equal(getreg('z', 1, 1), info.regcontents) 468bb861e29SBram Moolenaar call assert_equal(getregtype('z'), info.regtype) 469bb861e29SBram Moolenaar call assert_equal(1, +info.isunnamed) 470bb861e29SBram Moolenaar 471bb861e29SBram Moolenaar let info = getreginfo('"') 472bb861e29SBram Moolenaar call assert_equal('z', info.points_to) 473bb861e29SBram Moolenaar 47434fcb697SYegappan Lakshmanan let @a="a1b2" 47534fcb697SYegappan Lakshmanan nnoremap <F2> <Cmd>let g:RegInfo = getreginfo()<CR> 47634fcb697SYegappan Lakshmanan exe "normal \"a\<F2>" 47734fcb697SYegappan Lakshmanan call assert_equal({'regcontents': ['a1b2'], 'isunnamed': v:false, 47834fcb697SYegappan Lakshmanan \ 'regtype': 'v'}, g:RegInfo) 47934fcb697SYegappan Lakshmanan nunmap <F2> 48034fcb697SYegappan Lakshmanan unlet g:RegInfo 48134fcb697SYegappan Lakshmanan 482bb861e29SBram Moolenaar bwipe! 483bb861e29SBram Moolenaarendfunc 484bb861e29SBram Moolenaar 485bb861e29SBram Moolenaar" Test for restoring register with dict from getreginfo 486bb861e29SBram Moolenaarfunc Test_set_register_dict() 487bb861e29SBram Moolenaar enew! 488bb861e29SBram Moolenaar 489bb861e29SBram Moolenaar call setreg('"', #{ regcontents: ['one', 'two'], 490bb861e29SBram Moolenaar \ regtype: 'V', points_to: 'z' }) 491bb861e29SBram Moolenaar call assert_equal(['one', 'two'], getreg('"', 1, 1)) 492bb861e29SBram Moolenaar let info = getreginfo('"') 493bb861e29SBram Moolenaar call assert_equal('z', info.points_to) 494bb861e29SBram Moolenaar call assert_equal('V', info.regtype) 495bb861e29SBram Moolenaar call assert_equal(1, +getreginfo('z').isunnamed) 496bb861e29SBram Moolenaar 497bb861e29SBram Moolenaar call setreg('x', #{ regcontents: ['three', 'four'], 498bb861e29SBram Moolenaar \ regtype: 'v', isunnamed: v:true }) 499bb861e29SBram Moolenaar call assert_equal(['three', 'four'], getreg('"', 1, 1)) 500bb861e29SBram Moolenaar let info = getreginfo('"') 501bb861e29SBram Moolenaar call assert_equal('x', info.points_to) 502bb861e29SBram Moolenaar call assert_equal('v', info.regtype) 503bb861e29SBram Moolenaar call assert_equal(1, +getreginfo('x').isunnamed) 504bb861e29SBram Moolenaar 505bb861e29SBram Moolenaar call setreg('y', #{ regcontents: 'five', 506bb861e29SBram Moolenaar \ regtype: "\<c-v>", isunnamed: v:false }) 507bb861e29SBram Moolenaar call assert_equal("\<c-v>4", getreginfo('y').regtype) 508bb861e29SBram Moolenaar call assert_equal(0, +getreginfo('y').isunnamed) 509bb861e29SBram Moolenaar call assert_equal(['three', 'four'], getreg('"', 1, 1)) 510bb861e29SBram Moolenaar call assert_equal('x', getreginfo('"').points_to) 511bb861e29SBram Moolenaar 512bb861e29SBram Moolenaar call setreg('"', #{ regcontents: 'six' }) 513bb861e29SBram Moolenaar call assert_equal('0', getreginfo('"').points_to) 514bb861e29SBram Moolenaar call assert_equal(1, +getreginfo('0').isunnamed) 515bb861e29SBram Moolenaar call assert_equal(['six'], getreginfo('0').regcontents) 516bb861e29SBram Moolenaar call assert_equal(['six'], getreginfo('"').regcontents) 517bb861e29SBram Moolenaar 5187633fe59SBram Moolenaar let @x = 'one' 5197633fe59SBram Moolenaar call setreg('x', {}) 5207633fe59SBram Moolenaar call assert_equal(1, len(split(execute('reg x'), '\n'))) 5217633fe59SBram Moolenaar 5227633fe59SBram Moolenaar call assert_fails("call setreg('0', #{regtype: 'V'}, 'v')", 'E118:') 5237633fe59SBram Moolenaar call assert_fails("call setreg('0', #{regtype: 'X'})", 'E475:') 5247633fe59SBram Moolenaar call assert_fails("call setreg('0', #{regtype: 'vy'})", 'E475:') 5257633fe59SBram Moolenaar 526bb861e29SBram Moolenaar bwipe! 527bb861e29SBram Moolenaarendfunc 528bb861e29SBram Moolenaar 529cc613031SBram Moolenaarfunc Test_v_register() 530cc613031SBram Moolenaar enew 531cc613031SBram Moolenaar call setline(1, 'nothing') 532cc613031SBram Moolenaar 533cc613031SBram Moolenaar func s:Put() 534cc613031SBram Moolenaar let s:register = v:register 535cc613031SBram Moolenaar exec 'normal! "' .. v:register .. 'P' 536cc613031SBram Moolenaar endfunc 537cc613031SBram Moolenaar nnoremap <buffer> <plug>(test) :<c-u>call s:Put()<cr> 538cc613031SBram Moolenaar nmap <buffer> S <plug>(test) 539cc613031SBram Moolenaar 540cc613031SBram Moolenaar let @z = "testz\n" 541cc613031SBram Moolenaar let @" = "test@\n" 542cc613031SBram Moolenaar 543cc613031SBram Moolenaar let s:register = '' 544cc613031SBram Moolenaar call feedkeys('"_ddS', 'mx') 545cc613031SBram Moolenaar call assert_equal('test@', getline('.')) " fails before 8.2.0929 546cc613031SBram Moolenaar call assert_equal('"', s:register) " fails before 8.2.0929 547cc613031SBram Moolenaar 548cc613031SBram Moolenaar let s:register = '' 549cc613031SBram Moolenaar call feedkeys('"zS', 'mx') 550cc613031SBram Moolenaar call assert_equal('z', s:register) 551cc613031SBram Moolenaar 552cc613031SBram Moolenaar let s:register = '' 553cc613031SBram Moolenaar call feedkeys('"zSS', 'mx') 554cc613031SBram Moolenaar call assert_equal('"', s:register) 555cc613031SBram Moolenaar 556cc613031SBram Moolenaar let s:register = '' 557cc613031SBram Moolenaar call feedkeys('"_S', 'mx') 558cc613031SBram Moolenaar call assert_equal('_', s:register) 559cc613031SBram Moolenaar 560cc613031SBram Moolenaar let s:register = '' 561cc613031SBram Moolenaar normal "_ddS 562cc613031SBram Moolenaar call assert_equal('"', s:register) " fails before 8.2.0929 563cc613031SBram Moolenaar call assert_equal('test@', getline('.')) " fails before 8.2.0929 564cc613031SBram Moolenaar 565cc613031SBram Moolenaar let s:register = '' 566cc613031SBram Moolenaar execute 'normal "z:call' "s:Put()\n" 567cc613031SBram Moolenaar call assert_equal('z', s:register) 568cc613031SBram Moolenaar call assert_equal('testz', getline('.')) 569cc613031SBram Moolenaar 570cc613031SBram Moolenaar " Test operator and omap 571cc613031SBram Moolenaar let @b = 'testb' 572cc613031SBram Moolenaar func s:OpFunc(...) 573cc613031SBram Moolenaar let s:register2 = v:register 574cc613031SBram Moolenaar endfunc 575cc613031SBram Moolenaar set opfunc=s:OpFunc 576cc613031SBram Moolenaar 577cc613031SBram Moolenaar normal "bg@l 578cc613031SBram Moolenaar normal S 579cc613031SBram Moolenaar call assert_equal('"', s:register) " fails before 8.2.0929 580cc613031SBram Moolenaar call assert_equal('b', s:register2) 581cc613031SBram Moolenaar 582cc613031SBram Moolenaar func s:Motion() 583cc613031SBram Moolenaar let s:register1 = v:register 584cc613031SBram Moolenaar normal! l 585cc613031SBram Moolenaar endfunc 586cc613031SBram Moolenaar onoremap <buffer> Q :<c-u>call s:Motion()<cr> 587cc613031SBram Moolenaar 588cc613031SBram Moolenaar normal "bg@Q 589cc613031SBram Moolenaar normal S 590cc613031SBram Moolenaar call assert_equal('"', s:register) 591cc613031SBram Moolenaar call assert_equal('b', s:register1) 592cc613031SBram Moolenaar call assert_equal('"', s:register2) 593cc613031SBram Moolenaar 594cc613031SBram Moolenaar set opfunc& 595cc613031SBram Moolenaar bwipe! 596cc613031SBram Moolenaarendfunc 597cc613031SBram Moolenaar 598856c1110SBram Moolenaar" Test for executing the contents of a register as an Ex command with line 599856c1110SBram Moolenaar" continuation. 600856c1110SBram Moolenaarfunc Test_execute_reg_as_ex_cmd() 601856c1110SBram Moolenaar " Line continuation with just two lines 602856c1110SBram Moolenaar let code =<< trim END 603856c1110SBram Moolenaar let l = [ 604856c1110SBram Moolenaar \ 1] 605856c1110SBram Moolenaar END 606856c1110SBram Moolenaar let @r = code->join("\n") 607856c1110SBram Moolenaar let l = [] 608856c1110SBram Moolenaar @r 609856c1110SBram Moolenaar call assert_equal([1], l) 610856c1110SBram Moolenaar 611856c1110SBram Moolenaar " Line continuation with more than two lines 612856c1110SBram Moolenaar let code =<< trim END 613856c1110SBram Moolenaar let l = [ 614856c1110SBram Moolenaar \ 1, 615856c1110SBram Moolenaar \ 2, 616856c1110SBram Moolenaar \ 3] 617856c1110SBram Moolenaar END 618856c1110SBram Moolenaar let @r = code->join("\n") 619856c1110SBram Moolenaar let l = [] 620856c1110SBram Moolenaar @r 621856c1110SBram Moolenaar call assert_equal([1, 2, 3], l) 622856c1110SBram Moolenaar 623856c1110SBram Moolenaar " use comments interspersed with code 624856c1110SBram Moolenaar let code =<< trim END 625856c1110SBram Moolenaar let l = [ 626856c1110SBram Moolenaar "\ one 627856c1110SBram Moolenaar \ 1, 628856c1110SBram Moolenaar "\ two 629856c1110SBram Moolenaar \ 2, 630856c1110SBram Moolenaar "\ three 631856c1110SBram Moolenaar \ 3] 632856c1110SBram Moolenaar END 633856c1110SBram Moolenaar let @r = code->join("\n") 634856c1110SBram Moolenaar let l = [] 635856c1110SBram Moolenaar @r 636856c1110SBram Moolenaar call assert_equal([1, 2, 3], l) 637856c1110SBram Moolenaar 638856c1110SBram Moolenaar " use line continuation in the middle 639856c1110SBram Moolenaar let code =<< trim END 640856c1110SBram Moolenaar let a = "one" 641856c1110SBram Moolenaar let l = [ 642856c1110SBram Moolenaar \ 1, 643856c1110SBram Moolenaar \ 2] 644856c1110SBram Moolenaar let b = "two" 645856c1110SBram Moolenaar END 646856c1110SBram Moolenaar let @r = code->join("\n") 647856c1110SBram Moolenaar let l = [] 648856c1110SBram Moolenaar @r 649856c1110SBram Moolenaar call assert_equal([1, 2], l) 650856c1110SBram Moolenaar call assert_equal("one", a) 651856c1110SBram Moolenaar call assert_equal("two", b) 652856c1110SBram Moolenaar 653856c1110SBram Moolenaar " only one line with a \ 654856c1110SBram Moolenaar let @r = "\\let l = 1" 655856c1110SBram Moolenaar call assert_fails('@r', 'E10:') 656856c1110SBram Moolenaar 657856c1110SBram Moolenaar " only one line with a "\ 658856c1110SBram Moolenaar let @r = ' "\ let i = 1' 659856c1110SBram Moolenaar @r 660856c1110SBram Moolenaar call assert_false(exists('i')) 661856c1110SBram Moolenaar 662856c1110SBram Moolenaar " first line also begins with a \ 663856c1110SBram Moolenaar let @r = "\\let l = [\n\\ 1]" 664856c1110SBram Moolenaar call assert_fails('@r', 'E10:') 665856c1110SBram Moolenaar 666856c1110SBram Moolenaar " Test with a large number of lines 667856c1110SBram Moolenaar let @r = "let str = \n" 668856c1110SBram Moolenaar let @r ..= repeat(" \\ 'abcdefghijklmnopqrstuvwxyz' ..\n", 312) 669856c1110SBram Moolenaar let @r ..= ' \ ""' 670856c1110SBram Moolenaar @r 671856c1110SBram Moolenaar call assert_equal(repeat('abcdefghijklmnopqrstuvwxyz', 312), str) 672856c1110SBram Moolenaarendfunc 673856c1110SBram Moolenaar 67425fd2672SBram Moolenaar" Test for clipboard registers with ASCII NUL 67525fd2672SBram Moolenaarfunc Test_clipboard_nul() 67625fd2672SBram Moolenaar CheckFeature clipboard_working 67725fd2672SBram Moolenaar new 67825fd2672SBram Moolenaar 67925fd2672SBram Moolenaar " Test for putting ASCII NUL into the clipboard 68025fd2672SBram Moolenaar set clipboard=unnamed 68125fd2672SBram Moolenaar call append(0, "\ntest") 68225fd2672SBram Moolenaar normal ggyyp 68325fd2672SBram Moolenaar call assert_equal("^@test^@", strtrans(getreg('*'))) 68425fd2672SBram Moolenaar call assert_equal(getline(1), getline(2)) 68525fd2672SBram Moolenaar let b = split(execute(":reg *"), "\n") 68625fd2672SBram Moolenaar call assert_match('"\*\s*\^@test\^J',b[1]) 68725fd2672SBram Moolenaar 68825fd2672SBram Moolenaar set clipboard&vim 68925fd2672SBram Moolenaar bwipe! 69025fd2672SBram Moolenaarendfunc 69125fd2672SBram Moolenaar 692ef85a9b2SBram Moolenaarfunc Test_ve_blockpaste() 693ef85a9b2SBram Moolenaar new 694ef85a9b2SBram Moolenaar set ve=all 695ef85a9b2SBram Moolenaar 0put =['QWERTZ','ASDFGH'] 696ef85a9b2SBram Moolenaar call cursor(1,1) 697ef85a9b2SBram Moolenaar exe ":norm! \<C-V>3ljdP" 698ef85a9b2SBram Moolenaar call assert_equal(1, col('.')) 699ef85a9b2SBram Moolenaar call assert_equal(getline(1, 2), ['QWERTZ', 'ASDFGH']) 700ef85a9b2SBram Moolenaar call cursor(1,1) 701ef85a9b2SBram Moolenaar exe ":norm! \<C-V>3ljd" 702ef85a9b2SBram Moolenaar call cursor(1,1) 703ef85a9b2SBram Moolenaar norm! $3lP 704ef85a9b2SBram Moolenaar call assert_equal(5, col('.')) 705ef85a9b2SBram Moolenaar call assert_equal(getline(1, 2), ['TZ QWER', 'GH ASDF']) 706ef85a9b2SBram Moolenaar set ve&vim 707ef85a9b2SBram Moolenaar bwipe! 708ef85a9b2SBram Moolenaarendfunc 709ef85a9b2SBram Moolenaar 710032a2d05SBram Moolenaarfunc Test_insert_small_delete() 711032a2d05SBram Moolenaar new 712032a2d05SBram Moolenaar call setline(1, ['foo foobar bar']) 713032a2d05SBram Moolenaar call cursor(1,1) 714032a2d05SBram Moolenaar exe ":norm! ciw'\<C-R>-'" 7159f63a65fSBram Moolenaar call assert_equal("'foo' foobar bar", getline(1)) 716032a2d05SBram Moolenaar exe ":norm! w.w." 7179f63a65fSBram Moolenaar call assert_equal("'foo' 'foobar' 'bar'", getline(1)) 718032a2d05SBram Moolenaar bwipe! 719032a2d05SBram Moolenaarendfunc 720032a2d05SBram Moolenaar 721f4fcedc5SBram Moolenaar" Record in insert mode using CTRL-O 722f4fcedc5SBram Moolenaarfunc Test_record_in_insert_mode() 723f4fcedc5SBram Moolenaar new 724f4fcedc5SBram Moolenaar let @r = '' 725f4fcedc5SBram Moolenaar call setline(1, ['foo']) 726f4fcedc5SBram Moolenaar call feedkeys("i\<C-O>qrbaz\<C-O>q", 'xt') 727f4fcedc5SBram Moolenaar call assert_equal('baz', @r) 728f4fcedc5SBram Moolenaar bwipe! 729f4fcedc5SBram Moolenaarendfunc 730f4fcedc5SBram Moolenaar 731*78eb9cceSChristian Brabandt" Make sure that y_append is correctly reset 732*78eb9cceSChristian Brabandt" and the previous register is working as expected 733*78eb9cceSChristian Brabandtfunc Test_register_y_append_reset() 734*78eb9cceSChristian Brabandt new 735*78eb9cceSChristian Brabandt call setline(1, ['1', 736*78eb9cceSChristian Brabandt \ '2 ----------------------------------------------------', 737*78eb9cceSChristian Brabandt \ '3', 738*78eb9cceSChristian Brabandt \ '4', 739*78eb9cceSChristian Brabandt \ '5 ----------------------------------------------------', 740*78eb9cceSChristian Brabandt \ '6', 741*78eb9cceSChristian Brabandt \ '7', 742*78eb9cceSChristian Brabandt \ '8 ----------------------------------------------------', 743*78eb9cceSChristian Brabandt \ '9', 744*78eb9cceSChristian Brabandt \ '10 aaaaaaa 4.', 745*78eb9cceSChristian Brabandt \ '11 Game Dbl-Figures Leaders:', 746*78eb9cceSChristian Brabandt \ '12 Player Pts FG% 3P% FT% RB AS BL ST TO PF EFF', 747*78eb9cceSChristian Brabandt \ '13 bbbbbbbbb 12 (50 /0 /67 )/ 7/ 3/ 0/ 2/ 3/ 4/+15', 748*78eb9cceSChristian Brabandt \ '14 cccccc 12 (57 /67 /100)/ 2/ 1/ 1/ 0/ 1/ 3/+12', 749*78eb9cceSChristian Brabandt \ '15 ddddddd 10 (63 /0 /0 )/ 1/ 3/ 0/ 3/ 5/ 3/ +9', 750*78eb9cceSChristian Brabandt \ '16 4 5-15 0-3 2-2 5-12 1-1 3-4 33.3 0.0 100 41.7 100 75 12 14', 751*78eb9cceSChristian Brabandt \ '17 F 23-55 2-10 9-11 23-52 3-13 26-29 41.8 20 81.8 44.2 23.1 89.7 57 75', 752*78eb9cceSChristian Brabandt \ '18 4 3 6 3 2 3 3 4 3 3 7 3 1 4 6 -1 -1 +2 -1 -2', 753*78eb9cceSChristian Brabandt \ '19 F 13 19 5 10 4 17 22 9 14 32 13 4 20 17 -1 -13 -4 -3 -3 +5']) 754*78eb9cceSChristian Brabandt 11 755*78eb9cceSChristian Brabandt exe "norm! \"a5dd" 756*78eb9cceSChristian Brabandt norm! j 757*78eb9cceSChristian Brabandt exe "norm! \"bY" 758*78eb9cceSChristian Brabandt norm! 2j 759*78eb9cceSChristian Brabandt exe "norm! \"BY" 760*78eb9cceSChristian Brabandt norm! 4k 761*78eb9cceSChristian Brabandt norm! 5dd 762*78eb9cceSChristian Brabandt norm! 3k 763*78eb9cceSChristian Brabandt " The next put should put the content of the unnamed register, not of 764*78eb9cceSChristian Brabandt " register b! 765*78eb9cceSChristian Brabandt norm! p 766*78eb9cceSChristian Brabandt call assert_equal(['1', 767*78eb9cceSChristian Brabandt \ '2 ----------------------------------------------------', 768*78eb9cceSChristian Brabandt \ '3', 769*78eb9cceSChristian Brabandt \ '4', 770*78eb9cceSChristian Brabandt \ '5 ----------------------------------------------------', 771*78eb9cceSChristian Brabandt \ '6', 772*78eb9cceSChristian Brabandt \ '10 aaaaaaa 4.', 773*78eb9cceSChristian Brabandt \ '16 4 5-15 0-3 2-2 5-12 1-1 3-4 33.3 0.0 100 41.7 100 75 12 14', 774*78eb9cceSChristian Brabandt \ '17 F 23-55 2-10 9-11 23-52 3-13 26-29 41.8 20 81.8 44.2 23.1 89.7 57 75', 775*78eb9cceSChristian Brabandt \ '18 4 3 6 3 2 3 3 4 3 3 7 3 1 4 6 -1 -1 +2 -1 -2', 776*78eb9cceSChristian Brabandt \ '19 F 13 19 5 10 4 17 22 9 14 32 13 4 20 17 -1 -13 -4 -3 -3 +5', 777*78eb9cceSChristian Brabandt \ '7', 778*78eb9cceSChristian Brabandt \ '8 ----------------------------------------------------', 779*78eb9cceSChristian Brabandt \ '9'], getline(1,'$')) 780*78eb9cceSChristian Brabandt bwipe! 781*78eb9cceSChristian Brabandtendfunc 782*78eb9cceSChristian Brabandt 78371136db1SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 784