blob: d4db4b76ef0b0ce66313845784253d50a2039c6b [file] [log] [blame]
Bram Moolenaar53f16732016-09-07 20:46:39 +02001" Test for v:hlsearch
2
Bram Moolenaar1e115362019-01-09 23:01:02 +01003func Test_hlsearch()
Bram Moolenaar53f16732016-09-07 20:46:39 +02004 new
5 call setline(1, repeat(['aaa'], 10))
6 set hlsearch nolazyredraw
Bram Moolenaar53f16732016-09-07 20:46:39 +02007 " redraw is needed to make hlsearch highlight the matches
8 exe "normal! /aaa\<CR>" | redraw
9 let r1 = screenattr(1, 1)
10 nohlsearch | redraw
11 call assert_notequal(r1, screenattr(1,1))
12 let v:hlsearch=1 | redraw
13 call assert_equal(r1, screenattr(1,1))
14 let v:hlsearch=0 | redraw
15 call assert_notequal(r1, screenattr(1,1))
16 set hlsearch | redraw
17 call assert_equal(r1, screenattr(1,1))
18 let v:hlsearch=0 | redraw
19 call assert_notequal(r1, screenattr(1,1))
20 exe "normal! n" | redraw
21 call assert_equal(r1, screenattr(1,1))
22 let v:hlsearch=0 | redraw
23 call assert_notequal(r1, screenattr(1,1))
24 exe "normal! /\<CR>" | redraw
25 call assert_equal(r1, screenattr(1,1))
26 set nohls
27 exe "normal! /\<CR>" | redraw
28 call assert_notequal(r1, screenattr(1,1))
29 call assert_fails('let v:hlsearch=[]', 'E745')
30 call garbagecollect(1)
31 call getchar(1)
32 enew!
Bram Moolenaar1e115362019-01-09 23:01:02 +010033endfunc
Bram Moolenaar5b1affe2017-06-17 19:13:49 +020034
35func Test_hlsearch_hangs()
36 if !has('reltime') || !has('float')
37 return
38 endif
39
Bram Moolenaar1ef9bbe2017-06-17 20:08:20 +020040 " This pattern takes a long time to match, it should timeout.
Bram Moolenaar09463262017-06-17 20:55:06 +020041 new
42 call setline(1, ['aaa', repeat('abc ', 1000), 'ccc'])
Bram Moolenaar5b1affe2017-06-17 19:13:49 +020043 let start = reltime()
44 set hlsearch nolazyredraw redrawtime=101
Bram Moolenaar1ef9bbe2017-06-17 20:08:20 +020045 let @/ = '\%#=1a*.*X\@<=b*'
Bram Moolenaar5b1affe2017-06-17 19:13:49 +020046 redraw
47 let elapsed = reltimefloat(reltime(start))
48 call assert_true(elapsed > 0.1)
49 call assert_true(elapsed < 1.0)
50 set nohlsearch redrawtime&
Bram Moolenaar09463262017-06-17 20:55:06 +020051 bwipe!
Bram Moolenaar5b1affe2017-06-17 19:13:49 +020052endfunc
Bram Moolenaar7ee3f152018-09-02 15:07:28 +020053
54func Test_hlsearch_eol_highlight()
55 new
56 call append(1, repeat([''], 9))
57 set hlsearch nolazyredraw
58 exe "normal! /$\<CR>" | redraw
59 let attr = screenattr(1, 1)
60 for row in range(2, 10)
61 call assert_equal(attr, screenattr(row, 1), 'in line ' . row)
62 endfor
63 set nohlsearch
64 bwipe!
65endfunc