11671f448SBram Moolenaar" Test for character search commands - t, T, f, F, ; and , 2cd055da3SBram Moolenaar 31e115360SBram Moolenaarfunc Test_charsearch() 4cd055da3SBram Moolenaar enew! 5cd055da3SBram Moolenaar call append(0, ['Xabcdefghijkemnopqretuvwxyz', 6cd055da3SBram Moolenaar \ 'Yabcdefghijkemnopqretuvwxyz', 7cd055da3SBram Moolenaar \ 'Zabcdefghijkemnokqretkvwxyz']) 8cd055da3SBram Moolenaar " check that "fe" and ";" work 9cd055da3SBram Moolenaar 1 10cd055da3SBram Moolenaar normal! ylfep;;p,,p 11cd055da3SBram Moolenaar call assert_equal('XabcdeXfghijkeXmnopqreXtuvwxyz', getline(1)) 12cd055da3SBram Moolenaar " check that save/restore works 13cd055da3SBram Moolenaar 2 14cd055da3SBram Moolenaar normal! ylfep 15cd055da3SBram Moolenaar let csave = getcharsearch() 16cd055da3SBram Moolenaar normal! fip 17cd055da3SBram Moolenaar call setcharsearch(csave) 18cd055da3SBram Moolenaar normal! ;p;p 19cd055da3SBram Moolenaar call assert_equal('YabcdeYfghiYjkeYmnopqreYtuvwxyz', getline(2)) 20cd055da3SBram Moolenaar 21cd055da3SBram Moolenaar " check that setcharsearch() changes the settings. 22cd055da3SBram Moolenaar 3 23cd055da3SBram Moolenaar normal! ylfep 24196b4664SBram Moolenaar eval {'char': 'k'}->setcharsearch() 25cd055da3SBram Moolenaar normal! ;p 26cd055da3SBram Moolenaar call setcharsearch({'forward': 0}) 27cd055da3SBram Moolenaar normal! $;p 28cd055da3SBram Moolenaar call setcharsearch({'until': 1}) 29cd055da3SBram Moolenaar set cpo-=; 30cd055da3SBram Moolenaar normal! ;;p 31cd055da3SBram Moolenaar call assert_equal('ZabcdeZfghijkZZemnokqretkZvwxyz', getline(3)) 320e05de46SBram Moolenaar 33224a5f17SBram Moolenaar " check that repeating a search before and after a line fails 34224a5f17SBram Moolenaar normal 3Gfv 35224a5f17SBram Moolenaar call assert_beeps('normal ;') 36224a5f17SBram Moolenaar call assert_beeps('normal ,') 37224a5f17SBram Moolenaar 38224a5f17SBram Moolenaar " clear the character search 39224a5f17SBram Moolenaar call setcharsearch({'char' : ''}) 40224a5f17SBram Moolenaar call assert_equal('', getcharsearch().char) 41224a5f17SBram Moolenaar 420e05de46SBram Moolenaar call assert_fails("call setcharsearch([])", 'E715:') 43cd055da3SBram Moolenaar enew! 441e115360SBram Moolenaarendfunc 45cd055da3SBram Moolenaar 461671f448SBram Moolenaar" Test for character search in virtual edit mode with <Tab> 471671f448SBram Moolenaarfunc Test_csearch_virtualedit() 481671f448SBram Moolenaar new 491671f448SBram Moolenaar set virtualedit=all 501671f448SBram Moolenaar call setline(1, "a\tb") 511671f448SBram Moolenaar normal! tb 521671f448SBram Moolenaar call assert_equal([0, 1, 2, 6], getpos('.')) 531671f448SBram Moolenaar set virtualedit& 54*d7e5e943SBram Moolenaar bw! 551671f448SBram Moolenaarendfunc 561671f448SBram Moolenaar 57224a5f17SBram Moolenaar" Test for character search failure in latin1 encoding 58224a5f17SBram Moolenaarfunc Test_charsearch_latin1() 59224a5f17SBram Moolenaar new 60224a5f17SBram Moolenaar let save_enc = &encoding 61224a5f17SBram Moolenaar set encoding=latin1 62224a5f17SBram Moolenaar call setline(1, 'abcdefghijk') 63224a5f17SBram Moolenaar call assert_beeps('normal fz') 64224a5f17SBram Moolenaar call assert_beeps('normal tx') 65224a5f17SBram Moolenaar call assert_beeps('normal $Fz') 66224a5f17SBram Moolenaar call assert_beeps('normal $Tx') 67224a5f17SBram Moolenaar let &encoding = save_enc 68*d7e5e943SBram Moolenaar bw! 69*d7e5e943SBram Moolenaarendfunc 70*d7e5e943SBram Moolenaar 71*d7e5e943SBram Moolenaar" Test for using character search to find a multibyte character with composing 72*d7e5e943SBram Moolenaar" characters. 73*d7e5e943SBram Moolenaarfunc Test_charsearch_composing_char() 74*d7e5e943SBram Moolenaar new 75*d7e5e943SBram Moolenaar call setline(1, "one two thq\u0328\u0301r\u0328\u0301ree") 76*d7e5e943SBram Moolenaar call feedkeys("fr\u0328\u0301", 'xt') 77*d7e5e943SBram Moolenaar call assert_equal([0, 1, 16, 0, 12], getcurpos()) 78*d7e5e943SBram Moolenaar 79*d7e5e943SBram Moolenaar " use character search with a multi-byte character followed by a 80*d7e5e943SBram Moolenaar " non-composing character 81*d7e5e943SBram Moolenaar call setline(1, "abc deȉf ghi") 82*d7e5e943SBram Moolenaar call feedkeys("ggcf\u0209\u0210", 'xt') 83*d7e5e943SBram Moolenaar call assert_equal("\u0210f ghi", getline(1)) 84*d7e5e943SBram Moolenaar bw! 85*d7e5e943SBram Moolenaarendfunc 86*d7e5e943SBram Moolenaar 87*d7e5e943SBram Moolenaar" Test for character search with 'hkmap' 88*d7e5e943SBram Moolenaarfunc Test_charsearch_hkmap() 89*d7e5e943SBram Moolenaar new 90*d7e5e943SBram Moolenaar set hkmap 91*d7e5e943SBram Moolenaar call setline(1, "ùðáâ÷ëòéïçìêöî") 92*d7e5e943SBram Moolenaar call feedkeys("fë", 'xt') 93*d7e5e943SBram Moolenaar call assert_equal([0, 1, 11, 0, 6], getcurpos()) 94*d7e5e943SBram Moolenaar set hkmap& 95*d7e5e943SBram Moolenaar bw! 96224a5f17SBram Moolenaarendfunc 97224a5f17SBram Moolenaar 981671f448SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 99