test_hlsearch.vim (2814B)
1 " Test for v:hlsearch 2 3 source check.vim 4 source screendump.vim 5 6 func Test_hlsearch() 7 new 8 call setline(1, repeat(['aaa'], 10)) 9 set hlsearch nolazyredraw 10 " redraw is needed to make hlsearch highlight the matches 11 exe "normal! /aaa\<CR>" | redraw 12 let r1 = screenattr(1, 1) 13 nohlsearch | redraw 14 call assert_notequal(r1, screenattr(1,1)) 15 let v:hlsearch=1 | redraw 16 call assert_equal(r1, screenattr(1,1)) 17 let v:hlsearch=0 | redraw 18 call assert_notequal(r1, screenattr(1,1)) 19 set hlsearch | redraw 20 call assert_equal(r1, screenattr(1,1)) 21 let v:hlsearch=0 | redraw 22 call assert_notequal(r1, screenattr(1,1)) 23 exe "normal! n" | redraw 24 call assert_equal(r1, screenattr(1,1)) 25 let v:hlsearch=0 | redraw 26 call assert_notequal(r1, screenattr(1,1)) 27 exe "normal! /\<CR>" | redraw 28 call assert_equal(r1, screenattr(1,1)) 29 set nohls 30 exe "normal! /\<CR>" | redraw 31 call assert_notequal(r1, screenattr(1,1)) 32 call assert_fails('let v:hlsearch=[]', 'E745') 33 call garbagecollect(1) 34 call getchar(1) 35 enew! 36 endfunc 37 38 func Test_hlsearch_hangs() 39 if !has('reltime') || !has('float') 40 return 41 endif 42 43 " This pattern takes a long time to match, it should timeout. 44 new 45 call setline(1, ['aaa', repeat('abc ', 100000), 'ccc']) 46 let start = reltime() 47 set hlsearch nolazyredraw redrawtime=101 48 let @/ = '\%#=1a*.*X\@<=b*' 49 redraw 50 let elapsed = reltimefloat(reltime(start)) 51 call assert_true(elapsed > 0.1) 52 call assert_true(elapsed < 1.0) 53 set nohlsearch redrawtime& 54 bwipe! 55 endfunc 56 57 func Test_hlsearch_eol_highlight() 58 new 59 call append(1, repeat([''], 9)) 60 set hlsearch nolazyredraw 61 exe "normal! /$\<CR>" | redraw 62 let attr = screenattr(1, 1) 63 for row in range(2, 10) 64 call assert_equal(attr, screenattr(row, 1), 'in line ' . row) 65 endfor 66 set nohlsearch 67 bwipe! 68 endfunc 69 70 func Test_hlsearch_Ctrl_R() 71 CheckScreendump 72 CheckRunVimInTerminal 73 74 let lines =<< trim END 75 set incsearch hlsearch 76 let @" = "text" 77 put 78 END 79 call writefile(lines, 'XhlsearchCtrlR', 'D') 80 let buf = RunVimInTerminal('-S XhlsearchCtrlR', #{rows: 6, cols: 60}) 81 82 call term_sendkeys(buf, "/\<C-R>\<C-R>\"") 83 call VerifyScreenDump(buf, 'Test_hlsearch_ctrlr_1', {}) 84 85 call term_sendkeys(buf, "\<Esc>") 86 call StopVimInTerminal(buf) 87 endfunc 88 89 func Test_hlsearch_clipboard() 90 CheckScreendump 91 CheckRunVimInTerminal 92 CheckFeature clipboard_working 93 94 let lines =<< trim END 95 set incsearch hlsearch 96 let @* = "text" 97 put * 98 END 99 call writefile(lines, 'XhlsearchClipboard', 'D') 100 let buf = RunVimInTerminal('-S XhlsearchClipboard', #{rows: 6, cols: 60}) 101 102 call term_sendkeys(buf, "/\<C-R>*") 103 call VerifyScreenDump(buf, 'Test_hlsearch_ctrlr_1', {}) 104 105 call term_sendkeys(buf, "\<Esc>") 106 call StopVimInTerminal(buf) 107 endfunc 108 109 " vim: shiftwidth=2 sts=2 expandtab