Mercurial > vim
comparison src/testdir/test_search.vim @ 12720:37c384802df4 v8.0.1238
patch 8.0.1238: incremental search only shows one match
commit https://github.com/vim/vim/commit/2e51d9a0972080b087d566608472928d5b7b35d7
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Oct 29 16:40:30 2017 +0100
patch 8.0.1238: incremental search only shows one match
Problem: Incremental search only shows one match.
Solution: When 'incsearch' and and 'hlsearch' are both set highlight all
matches. (haya14busa, closes #2198)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 29 Oct 2017 16:45:04 +0100 |
parents | 42cd1f315e8b |
children | 7749260f261c |
comparison
equal
deleted
inserted
replaced
12719:cd6ab105a71a | 12720:37c384802df4 |
---|---|
1 " Test for the search command | 1 " Test for the search command |
2 | |
3 source shared.vim | |
2 | 4 |
3 func Test_search_cmdline() | 5 func Test_search_cmdline() |
4 if !exists('+incsearch') | 6 if !exists('+incsearch') |
5 return | 7 return |
6 endif | 8 endif |
429 call assert_equal(11, line('$')) | 431 call assert_equal(11, line('$')) |
430 | 432 |
431 set undolevels& | 433 set undolevels& |
432 enew! | 434 enew! |
433 endfunc | 435 endfunc |
436 | |
437 func Test_search_cmdline_incsearch_highlight() | |
438 if !exists('+incsearch') | |
439 return | |
440 endif | |
441 set incsearch hlsearch | |
442 " need to disable char_avail, | |
443 " so that expansion of commandline works | |
444 call test_override("char_avail", 1) | |
445 new | |
446 call setline(1, ['aaa 1 the first', ' 2 the second', ' 3 the third']) | |
447 | |
448 1 | |
449 call feedkeys("/second\<cr>", 'tx') | |
450 call assert_equal('second', @/) | |
451 call assert_equal(' 2 the second', getline('.')) | |
452 | |
453 " Canceling search won't change @/ | |
454 1 | |
455 let @/ = 'last pattern' | |
456 call feedkeys("/third\<C-c>", 'tx') | |
457 call assert_equal('last pattern', @/) | |
458 call feedkeys("/third\<Esc>", 'tx') | |
459 call assert_equal('last pattern', @/) | |
460 call feedkeys("/3\<bs>\<bs>", 'tx') | |
461 call assert_equal('last pattern', @/) | |
462 call feedkeys("/third\<c-g>\<c-t>\<Esc>", 'tx') | |
463 call assert_equal('last pattern', @/) | |
464 | |
465 " clean up | |
466 set noincsearch nohlsearch | |
467 bw! | |
468 endfunc | |
469 | |
470 func Test_search_cmdline_incsearch_highlight_attr() | |
471 if !exists('+incsearch') || !has('terminal') || has('gui_running') | |
472 return | |
473 endif | |
474 let h = winheight(0) | |
475 if h < 3 | |
476 return | |
477 endif | |
478 let g:buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile'], {'term_rows': 3}) | |
479 | |
480 " Prepare buffer text | |
481 let lines = ['abb vim vim vi', 'vimvivim'] | |
482 call term_sendkeys(g:buf, 'i' . join(lines, "\n") . "\<esc>gg0") | |
483 call term_wait(g:buf, 200) | |
484 call assert_equal(lines[0], term_getline(g:buf, 1)) | |
485 | |
486 " Get attr of normal(a0), incsearch(a1), hlsearch(a2) highlight | |
487 call term_sendkeys(g:buf, ":set incsearch hlsearch\<cr>") | |
488 call term_sendkeys(g:buf, '/b') | |
489 call term_wait(g:buf, 200) | |
490 let screen_line1 = term_scrape(g:buf, 1) | |
491 call assert_true(len(screen_line1) > 2) | |
492 " a0: attr_normal | |
493 let a0 = screen_line1[0].attr | |
494 " a1: attr_incsearch | |
495 let a1 = screen_line1[1].attr | |
496 " a2: attr_hlsearch | |
497 let a2 = screen_line1[2].attr | |
498 call assert_notequal(a0, a1) | |
499 call assert_notequal(a0, a2) | |
500 call assert_notequal(a1, a2) | |
501 call term_sendkeys(g:buf, "\<cr>gg0") | |
502 | |
503 " Test incremental highlight search | |
504 call term_sendkeys(g:buf, "/vim") | |
505 call term_wait(g:buf, 200) | |
506 " Buffer: | |
507 " abb vim vim vi | |
508 " vimvivim | |
509 " Search: /vim | |
510 let attr_line1 = [a0,a0,a0,a0,a1,a1,a1,a0,a2,a2,a2,a0,a0,a0] | |
511 let attr_line2 = [a2,a2,a2,a0,a0,a2,a2,a2] | |
512 call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr')) | |
513 call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr')) | |
514 | |
515 " Test <C-g> | |
516 call term_sendkeys(g:buf, "\<C-g>\<C-g>") | |
517 call term_wait(g:buf, 200) | |
518 let attr_line1 = [a0,a0,a0,a0,a2,a2,a2,a0,a2,a2,a2,a0,a0,a0] | |
519 let attr_line2 = [a1,a1,a1,a0,a0,a2,a2,a2] | |
520 call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr')) | |
521 call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr')) | |
522 | |
523 " Test <C-t> | |
524 call term_sendkeys(g:buf, "\<C-t>") | |
525 call term_wait(g:buf, 200) | |
526 let attr_line1 = [a0,a0,a0,a0,a2,a2,a2,a0,a1,a1,a1,a0,a0,a0] | |
527 let attr_line2 = [a2,a2,a2,a0,a0,a2,a2,a2] | |
528 call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr')) | |
529 call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr')) | |
530 | |
531 " Type Enter and a1(incsearch highlight) should become a2(hlsearch highlight) | |
532 call term_sendkeys(g:buf, "\<cr>") | |
533 call term_wait(g:buf, 200) | |
534 let attr_line1 = [a0,a0,a0,a0,a2,a2,a2,a0,a2,a2,a2,a0,a0,a0] | |
535 let attr_line2 = [a2,a2,a2,a0,a0,a2,a2,a2] | |
536 call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr')) | |
537 call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr')) | |
538 | |
539 " Test nohlsearch. a2(hlsearch highlight) should become a0(normal highlight) | |
540 call term_sendkeys(g:buf, ":1\<cr>") | |
541 call term_sendkeys(g:buf, ":set nohlsearch\<cr>") | |
542 call term_sendkeys(g:buf, "/vim") | |
543 call term_wait(g:buf, 200) | |
544 let attr_line1 = [a0,a0,a0,a0,a1,a1,a1,a0,a0,a0,a0,a0,a0,a0] | |
545 let attr_line2 = [a0,a0,a0,a0,a0,a0,a0,a0] | |
546 call assert_equal(attr_line1, map(term_scrape(g:buf, 1)[:len(attr_line1)-1], 'v:val.attr')) | |
547 call assert_equal(attr_line2, map(term_scrape(g:buf, 2)[:len(attr_line2)-1], 'v:val.attr')) | |
548 | |
549 bwipe! | |
550 endfunc |