blob: db7a937da34331c662ed0d23be80bf66a736235d [file] [log] [blame]
Bram Moolenaar53f16732016-09-07 20:46:39 +02001" Test for v:hlsearch
2
3function! Test_hlsearch()
4 new
5 call setline(1, repeat(['aaa'], 10))
6 set hlsearch nolazyredraw
7 let r=[]
8 " redraw is needed to make hlsearch highlight the matches
9 exe "normal! /aaa\<CR>" | redraw
10 let r1 = screenattr(1, 1)
11 nohlsearch | redraw
12 call assert_notequal(r1, screenattr(1,1))
13 let v:hlsearch=1 | redraw
14 call assert_equal(r1, screenattr(1,1))
15 let v:hlsearch=0 | redraw
16 call assert_notequal(r1, screenattr(1,1))
17 set hlsearch | redraw
18 call assert_equal(r1, screenattr(1,1))
19 let v:hlsearch=0 | redraw
20 call assert_notequal(r1, screenattr(1,1))
21 exe "normal! n" | redraw
22 call assert_equal(r1, screenattr(1,1))
23 let v:hlsearch=0 | redraw
24 call assert_notequal(r1, screenattr(1,1))
25 exe "normal! /\<CR>" | redraw
26 call assert_equal(r1, screenattr(1,1))
27 set nohls
28 exe "normal! /\<CR>" | redraw
29 call assert_notequal(r1, screenattr(1,1))
30 call assert_fails('let v:hlsearch=[]', 'E745')
31 call garbagecollect(1)
32 call getchar(1)
33 enew!
34endfunction
Bram Moolenaar5b1affe2017-06-17 19:13:49 +020035
36func Test_hlsearch_hangs()
37 if !has('reltime') || !has('float')
38 return
39 endif
40
Bram Moolenaar1ef9bbe2017-06-17 20:08:20 +020041 " This pattern takes a long time to match, it should timeout.
Bram Moolenaar09463262017-06-17 20:55:06 +020042 new
43 call setline(1, ['aaa', repeat('abc ', 1000), 'ccc'])
Bram Moolenaar5b1affe2017-06-17 19:13:49 +020044 let start = reltime()
45 set hlsearch nolazyredraw redrawtime=101
Bram Moolenaar1ef9bbe2017-06-17 20:08:20 +020046 let @/ = '\%#=1a*.*X\@<=b*'
Bram Moolenaar5b1affe2017-06-17 19:13:49 +020047 redraw
48 let elapsed = reltimefloat(reltime(start))
49 call assert_true(elapsed > 0.1)
50 call assert_true(elapsed < 1.0)
51 set nohlsearch redrawtime&
Bram Moolenaar09463262017-06-17 20:55:06 +020052 bwipe!
Bram Moolenaar5b1affe2017-06-17 19:13:49 +020053endfunc