1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
" Test for character search commands - t, T, f, F, ; and ,
func Test_charsearch()
enew!
call append(0, ['Xabcdefghijkemnopqretuvwxyz',
\ 'Yabcdefghijkemnopqretuvwxyz',
\ 'Zabcdefghijkemnokqretkvwxyz'])
" check that "fe" and ";" work
1
normal! ylfep;;p,,p
call assert_equal('XabcdeXfghijkeXmnopqreXtuvwxyz', getline(1))
" check that save/restore works
2
normal! ylfep
let csave = getcharsearch()
normal! fip
call setcharsearch(csave)
normal! ;p;p
call assert_equal('YabcdeYfghiYjkeYmnopqreYtuvwxyz', getline(2))
" check that setcharsearch() changes the settings.
3
normal! ylfep
eval {'char': 'k'}->setcharsearch()
normal! ;p
call setcharsearch({'forward': 0})
normal! $;p
call setcharsearch({'until': 1})
set cpo-=;
normal! ;;p
call assert_equal('ZabcdeZfghijkZZemnokqretkZvwxyz', getline(3))
" check that repeating a search before and after a line fails
normal 3Gfv
call assert_beeps('normal ;')
call assert_beeps('normal ,')
" clear the character search
call setcharsearch({'char' : ''})
call assert_equal('', getcharsearch().char)
call assert_fails("call setcharsearch([])", 'E1206:')
enew!
endfunc
" Test for character search in virtual edit mode with <Tab>
func Test_csearch_virtualedit()
new
set virtualedit=all
call setline(1, "a\tb")
normal! tb
call assert_equal([0, 1, 2, 6], getpos('.'))
set virtualedit&
bw!
endfunc
" Test for character search failure in latin1 encoding
func Test_charsearch_latin1()
new
let save_enc = &encoding
set encoding=latin1
call setline(1, 'abcdefghijk')
call assert_beeps('normal fz')
call assert_beeps('normal tx')
call assert_beeps('normal $Fz')
call assert_beeps('normal $Tx')
let &encoding = save_enc
bw!
endfunc
" Test for using character search to find a multibyte character with composing
" characters.
func Test_charsearch_composing_char()
new
call setline(1, "one two thq\u0328\u0301r\u0328\u0301ree")
call feedkeys("fr\u0328\u0301", 'xt')
call assert_equal([0, 1, 16, 0, 12], getcurpos())
" use character search with a multi-byte character followed by a
" non-composing character
call setline(1, "abc deȉf ghi")
call feedkeys("ggcf\u0209\u0210", 'xt')
call assert_equal("\u0210f ghi", getline(1))
bw!
endfunc
" Test for character search with 'hkmap'
func Test_charsearch_hkmap()
new
set hkmap
call setline(1, "ùðáâ÷ëòéïçìêöî")
call feedkeys("fë", 'xt')
call assert_equal([0, 1, 11, 0, 6], getcurpos())
set hkmap&
bw!
endfunc
" vim: shiftwidth=2 sts=2 expandtab
|