1d76a0c15SBram Moolenaar" Test for :match, :2match, :3match, clearmatches(), getmatches(), matchadd(), 21190cf68SBram Moolenaar" matchaddpos(), matcharg(), matchdelete(), and setmatches(). 3d76a0c15SBram Moolenaar 406029a85SBram Moolenaarsource screendump.vim 58c5a278fSBram Moolenaarsource check.vim 606029a85SBram Moolenaar 74f416e41SBram Moolenaarfunction Test_match() 8d76a0c15SBram Moolenaar highlight MyGroup1 term=bold ctermbg=red guibg=red 9d76a0c15SBram Moolenaar highlight MyGroup2 term=italic ctermbg=green guibg=green 10d76a0c15SBram Moolenaar highlight MyGroup3 term=underline ctermbg=blue guibg=blue 11d76a0c15SBram Moolenaar 12d76a0c15SBram Moolenaar " --- Check that "matcharg()" returns the correct group and pattern if a match 13d76a0c15SBram Moolenaar " --- is defined. 14d76a0c15SBram Moolenaar match MyGroup1 /TODO/ 15d76a0c15SBram Moolenaar 2match MyGroup2 /FIXME/ 16d76a0c15SBram Moolenaar 3match MyGroup3 /XXX/ 17d76a0c15SBram Moolenaar call assert_equal(['MyGroup1', 'TODO'], matcharg(1)) 18a1449836SBram Moolenaar call assert_equal(['MyGroup2', 'FIXME'], 2->matcharg()) 19d76a0c15SBram Moolenaar call assert_equal(['MyGroup3', 'XXX'], matcharg(3)) 20d76a0c15SBram Moolenaar 21d76a0c15SBram Moolenaar " --- Check that "matcharg()" returns an empty list if the argument is not 1, 22d76a0c15SBram Moolenaar " --- 2 or 3 (only 0 and 4 are tested). 23d76a0c15SBram Moolenaar call assert_equal([], matcharg(0)) 24d76a0c15SBram Moolenaar call assert_equal([], matcharg(4)) 25d76a0c15SBram Moolenaar 26d76a0c15SBram Moolenaar " --- Check that "matcharg()" returns ['', ''] if a match is not defined. 27d76a0c15SBram Moolenaar match 28d76a0c15SBram Moolenaar 2match 29d76a0c15SBram Moolenaar 3match 30d76a0c15SBram Moolenaar call assert_equal(['', ''], matcharg(1)) 31d76a0c15SBram Moolenaar call assert_equal(['', ''], matcharg(2)) 32d76a0c15SBram Moolenaar call assert_equal(['', ''], matcharg(3)) 33d76a0c15SBram Moolenaar 34d76a0c15SBram Moolenaar " --- Check that "matchadd()" and "getmatches()" agree on added matches and 35d76a0c15SBram Moolenaar " --- that default values apply. 36d76a0c15SBram Moolenaar let m1 = matchadd("MyGroup1", "TODO") 37d76a0c15SBram Moolenaar let m2 = matchadd("MyGroup2", "FIXME", 42) 38d76a0c15SBram Moolenaar let m3 = matchadd("MyGroup3", "XXX", 60, 17) 39d76a0c15SBram Moolenaar let ans = [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 4}, 40d76a0c15SBram Moolenaar \ {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 42, 'id': 5}, 41d76a0c15SBram Moolenaar \ {'group': 'MyGroup3', 'pattern': 'XXX', 'priority': 60, 'id': 17}] 42d76a0c15SBram Moolenaar call assert_equal(ans, getmatches()) 43d76a0c15SBram Moolenaar 44d76a0c15SBram Moolenaar " --- Check that "matchdelete()" deletes the matches defined in the previous 45d76a0c15SBram Moolenaar " --- test correctly. 46d76a0c15SBram Moolenaar call matchdelete(m1) 47a1449836SBram Moolenaar eval m2->matchdelete() 48d76a0c15SBram Moolenaar call matchdelete(m3) 49d76a0c15SBram Moolenaar call assert_equal([], getmatches()) 50d76a0c15SBram Moolenaar 51d76a0c15SBram Moolenaar " --- Check that "matchdelete()" returns 0 if successful and otherwise -1. 52d76a0c15SBram Moolenaar let m = matchadd("MyGroup1", "TODO") 53d76a0c15SBram Moolenaar call assert_equal(0, matchdelete(m)) 54d76a0c15SBram Moolenaar call assert_fails('call matchdelete(42)', 'E803:') 55d76a0c15SBram Moolenaar 56d76a0c15SBram Moolenaar " --- Check that "clearmatches()" clears all matches defined by ":match" and 57d76a0c15SBram Moolenaar " --- "matchadd()". 58d76a0c15SBram Moolenaar let m1 = matchadd("MyGroup1", "TODO") 59a1449836SBram Moolenaar let m2 = "MyGroup2"->matchadd("FIXME", 42) 60d76a0c15SBram Moolenaar let m3 = matchadd("MyGroup3", "XXX", 60, 17) 61d76a0c15SBram Moolenaar match MyGroup1 /COFFEE/ 62d76a0c15SBram Moolenaar 2match MyGroup2 /HUMPPA/ 63d76a0c15SBram Moolenaar 3match MyGroup3 /VIM/ 64d76a0c15SBram Moolenaar call clearmatches() 65d76a0c15SBram Moolenaar call assert_equal([], getmatches()) 66d76a0c15SBram Moolenaar 67d76a0c15SBram Moolenaar " --- Check that "setmatches()" restores a list of matches saved by 68d76a0c15SBram Moolenaar " --- "getmatches()" without changes. (Matches with equal priority must also 69d76a0c15SBram Moolenaar " --- remain in the same order.) 70d76a0c15SBram Moolenaar let m1 = matchadd("MyGroup1", "TODO") 71d76a0c15SBram Moolenaar let m2 = matchadd("MyGroup2", "FIXME", 42) 72d76a0c15SBram Moolenaar let m3 = matchadd("MyGroup3", "XXX", 60, 17) 73d76a0c15SBram Moolenaar match MyGroup1 /COFFEE/ 74d76a0c15SBram Moolenaar 2match MyGroup2 /HUMPPA/ 75d76a0c15SBram Moolenaar 3match MyGroup3 /VIM/ 76d76a0c15SBram Moolenaar let ml = getmatches() 77d76a0c15SBram Moolenaar call clearmatches() 78d76a0c15SBram Moolenaar call setmatches(ml) 79d76a0c15SBram Moolenaar call assert_equal(ml, getmatches()) 80d76a0c15SBram Moolenaar call clearmatches() 81d76a0c15SBram Moolenaar 82d76a0c15SBram Moolenaar " --- Check that "setmatches()" will not add two matches with the same ID. The 83d76a0c15SBram Moolenaar " --- expected behaviour (for now) is to add the first match but not the 84d76a0c15SBram Moolenaar " --- second and to return 0 (even though it is a matter of debate whether 85d76a0c15SBram Moolenaar " --- this can be considered successful behaviour). 86d76a0c15SBram Moolenaar let data = [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}, 87d76a0c15SBram Moolenaar \ {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}] 88d76a0c15SBram Moolenaar call assert_fails('call setmatches(data)', 'E801:') 89d76a0c15SBram Moolenaar call assert_equal([data[0]], getmatches()) 90d76a0c15SBram Moolenaar call clearmatches() 91d76a0c15SBram Moolenaar 92d76a0c15SBram Moolenaar " --- Check that "setmatches()" returns 0 if successful and otherwise -1. 93d76a0c15SBram Moolenaar " --- (A range of valid and invalid input values are tried out to generate the 94d76a0c15SBram Moolenaar " --- return values.) 95d76a0c15SBram Moolenaar call assert_equal(0, setmatches([])) 96d76a0c15SBram Moolenaar call assert_equal(0, setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}])) 97d76a0c15SBram Moolenaar call clearmatches() 98d76a0c15SBram Moolenaar call assert_fails('call setmatches(0)', 'E714:') 99d76a0c15SBram Moolenaar call assert_fails('call setmatches([0])', 'E474:') 100d76a0c15SBram Moolenaar call assert_fails("call setmatches([{'wrong key': 'wrong value'}])", 'E474:') 10175e15670SBram Moolenaar call assert_equal(-1, setmatches([{'group' : 'Search', 'priority' : 10, 'id' : 5, 'pos1' : {}}])) 102d76a0c15SBram Moolenaar 103d76a0c15SBram Moolenaar call setline(1, 'abcdefghijklmnopq') 104d76a0c15SBram Moolenaar call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3) 105d76a0c15SBram Moolenaar 1 106d76a0c15SBram Moolenaar redraw! 107d76a0c15SBram Moolenaar let v1 = screenattr(1, 1) 108d76a0c15SBram Moolenaar let v5 = screenattr(1, 5) 109d76a0c15SBram Moolenaar let v6 = screenattr(1, 6) 110d76a0c15SBram Moolenaar let v8 = screenattr(1, 8) 111d76a0c15SBram Moolenaar let v10 = screenattr(1, 10) 112d76a0c15SBram Moolenaar let v11 = screenattr(1, 11) 113d76a0c15SBram Moolenaar call assert_notequal(v1, v5) 114d76a0c15SBram Moolenaar call assert_equal(v6, v1) 115d76a0c15SBram Moolenaar call assert_equal(v8, v5) 116d76a0c15SBram Moolenaar call assert_equal(v10, v5) 117d76a0c15SBram Moolenaar call assert_equal(v11, v1) 118d76a0c15SBram Moolenaar call assert_equal([{'group': 'MyGroup1', 'id': 3, 'priority': 10, 'pos1': [1, 5, 1], 'pos2': [1, 8, 3]}], getmatches()) 119d76a0c15SBram Moolenaar call clearmatches() 120d76a0c15SBram Moolenaar 121d76a0c15SBram Moolenaar call setline(1, 'abcdΣabcdef') 122a1449836SBram Moolenaar eval "MyGroup1"->matchaddpos([[1, 4, 2], [1, 9, 2]]) 123d76a0c15SBram Moolenaar 1 124d76a0c15SBram Moolenaar redraw! 125d76a0c15SBram Moolenaar let v1 = screenattr(1, 1) 126d76a0c15SBram Moolenaar let v4 = screenattr(1, 4) 127d76a0c15SBram Moolenaar let v5 = screenattr(1, 5) 128d76a0c15SBram Moolenaar let v6 = screenattr(1, 6) 129d76a0c15SBram Moolenaar let v7 = screenattr(1, 7) 130d76a0c15SBram Moolenaar let v8 = screenattr(1, 8) 131d76a0c15SBram Moolenaar let v9 = screenattr(1, 9) 132d76a0c15SBram Moolenaar let v10 = screenattr(1, 10) 133d76a0c15SBram Moolenaar call assert_equal([{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1, 9, 2]}], getmatches()) 134d76a0c15SBram Moolenaar call assert_notequal(v1, v4) 135d76a0c15SBram Moolenaar call assert_equal(v5, v4) 136d76a0c15SBram Moolenaar call assert_equal(v6, v1) 137d76a0c15SBram Moolenaar call assert_equal(v7, v1) 138d76a0c15SBram Moolenaar call assert_equal(v8, v4) 139d76a0c15SBram Moolenaar call assert_equal(v9, v4) 140d76a0c15SBram Moolenaar call assert_equal(v10, v1) 141d76a0c15SBram Moolenaar 142d76a0c15SBram Moolenaar " Check, that setmatches() can correctly restore the matches from matchaddpos() 143d76a0c15SBram Moolenaar call matchadd('MyGroup1', '\%2lmatchadd') 144d76a0c15SBram Moolenaar let m=getmatches() 145d76a0c15SBram Moolenaar call clearmatches() 146d76a0c15SBram Moolenaar call setmatches(m) 147d76a0c15SBram Moolenaar call assert_equal([{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1,9, 2]}, {'group': 'MyGroup1', 'pattern': '\%2lmatchadd', 'priority': 10, 'id': 12}], getmatches()) 148d76a0c15SBram Moolenaar 149d76a0c15SBram Moolenaar highlight MyGroup1 NONE 150d76a0c15SBram Moolenaar highlight MyGroup2 NONE 151d76a0c15SBram Moolenaar highlight MyGroup3 NONE 152d76a0c15SBram Moolenaarendfunc 153d76a0c15SBram Moolenaar 15449d68bf5SBram Moolenaarfunc Test_match_error() 15549d68bf5SBram Moolenaar call assert_fails('match Error', 'E475:') 15649d68bf5SBram Moolenaar call assert_fails('match Error /', 'E475:') 15749d68bf5SBram Moolenaar call assert_fails('4match Error /x/', 'E476:') 15849d68bf5SBram Moolenaar call assert_fails('match Error /x/ x', 'E488:') 15949d68bf5SBram Moolenaarendfunc 16049d68bf5SBram Moolenaar 16149d68bf5SBram Moolenaarfunc Test_matchadd_error() 16249d68bf5SBram Moolenaar call assert_fails("call matchadd('GroupDoesNotExist', 'X')", 'E28:') 163*9b7bf9e9SBram Moolenaar call assert_fails("call matchadd('Search', '\\(')", 'E54:') 16449d68bf5SBram Moolenaar call assert_fails("call matchadd('Search', 'XXX', 1, 123, 1)", 'E715:') 16549d68bf5SBram Moolenaar call assert_fails("call matchadd('Error', 'XXX', 1, 3)", 'E798:') 16649d68bf5SBram Moolenaar call assert_fails("call matchadd('Error', 'XXX', 1, 0)", 'E799:') 16799fa7219SBram Moolenaar call assert_fails("call matchadd('Error', 'XXX', [], 0)", 'E745:') 16875e15670SBram Moolenaar call assert_equal(-1, matchadd('', 'pat')) 16975e15670SBram Moolenaar call assert_equal(-1, matchadd('Search', '')) 17049d68bf5SBram Moolenaarendfunc 17149d68bf5SBram Moolenaar 1724f416e41SBram Moolenaarfunc Test_matchaddpos() 1734f416e41SBram Moolenaar syntax on 1744f416e41SBram Moolenaar set hlsearch 1754f416e41SBram Moolenaar 1764f416e41SBram Moolenaar call setline(1, ['12345', 'NP']) 1774f416e41SBram Moolenaar call matchaddpos('Error', [[1,2], [1,6], [2,2]]) 1784f416e41SBram Moolenaar redraw! 1794f416e41SBram Moolenaar call assert_notequal(screenattr(2,2), 0) 1804f416e41SBram Moolenaar call assert_equal(screenattr(2,2), screenattr(1,2)) 1814f416e41SBram Moolenaar call assert_notequal(screenattr(2,2), screenattr(1,6)) 1824f416e41SBram Moolenaar 1 1834f416e41SBram Moolenaar call matchadd('Search', 'N\|\n') 1844f416e41SBram Moolenaar redraw! 1854f416e41SBram Moolenaar call assert_notequal(screenattr(2,1), 0) 1864f416e41SBram Moolenaar call assert_equal(screenattr(2,1), screenattr(1,6)) 1874f416e41SBram Moolenaar exec "norm! i0\<Esc>" 1884f416e41SBram Moolenaar redraw! 1894f416e41SBram Moolenaar call assert_equal(screenattr(2,2), screenattr(1,6)) 1904f416e41SBram Moolenaar 191a6c27ee6SBram Moolenaar " Check overlapping pos 192a6c27ee6SBram Moolenaar call clearmatches() 193a6c27ee6SBram Moolenaar call setline(1, ['1234567890', 'NH']) 194a6c27ee6SBram Moolenaar call matchaddpos('Error', [[1,1,5], [1,3,5], [2,2]]) 195a6c27ee6SBram Moolenaar redraw! 196a6c27ee6SBram Moolenaar call assert_notequal(screenattr(2,2), 0) 197a6c27ee6SBram Moolenaar call assert_equal(screenattr(2,2), screenattr(1,5)) 198a6c27ee6SBram Moolenaar call assert_equal(screenattr(2,2), screenattr(1,7)) 199a6c27ee6SBram Moolenaar call assert_notequal(screenattr(2,2), screenattr(1,8)) 200a6c27ee6SBram Moolenaar 20185077476SBram Moolenaar call clearmatches() 20285077476SBram Moolenaar call matchaddpos('Error', [[1], [2,2]]) 20385077476SBram Moolenaar redraw! 20485077476SBram Moolenaar call assert_equal(screenattr(2,2), screenattr(1,1)) 20585077476SBram Moolenaar call assert_equal(screenattr(2,2), screenattr(1,10)) 20685077476SBram Moolenaar call assert_notequal(screenattr(2,2), screenattr(1,11)) 20785077476SBram Moolenaar 20875e15670SBram Moolenaar " matchaddpos() with line number as 0 20975e15670SBram Moolenaar call clearmatches() 21075e15670SBram Moolenaar let id = matchaddpos('Search', [[0], [3], [0]]) 21175e15670SBram Moolenaar call assert_equal([{'group' : 'Search', 'priority' : 10, 'id' : id, 'pos1' : [3]}], getmatches()) 21275e15670SBram Moolenaar call clearmatches() 21375e15670SBram Moolenaar let id = matchaddpos('Search', [0, 3, 0]) 21475e15670SBram Moolenaar call assert_equal([{'group' : 'Search', 'priority' : 10, 'id' : id, 'pos1' : [3]}], getmatches()) 21575e15670SBram Moolenaar 2164f416e41SBram Moolenaar nohl 21785077476SBram Moolenaar call clearmatches() 2184f416e41SBram Moolenaar syntax off 2194f416e41SBram Moolenaar set hlsearch& 2204f416e41SBram Moolenaarendfunc 2214f416e41SBram Moolenaar 22295e51470SBram Moolenaarfunc Test_matchaddpos_otherwin() 22395e51470SBram Moolenaar syntax on 22495e51470SBram Moolenaar new 22595e51470SBram Moolenaar call setline(1, ['12345', 'NP']) 22695e51470SBram Moolenaar let winid = win_getid() 22795e51470SBram Moolenaar 22895e51470SBram Moolenaar wincmd w 22995e51470SBram Moolenaar call matchadd('Search', '4', 10, -1, {'window': winid}) 23095e51470SBram Moolenaar call matchaddpos('Error', [[1,2], [2,2]], 10, -1, {'window': winid}) 23195e51470SBram Moolenaar redraw! 23295e51470SBram Moolenaar call assert_notequal(screenattr(1,2), 0) 23395e51470SBram Moolenaar call assert_notequal(screenattr(1,4), 0) 23495e51470SBram Moolenaar call assert_notequal(screenattr(2,2), 0) 23595e51470SBram Moolenaar call assert_equal(screenattr(1,2), screenattr(2,2)) 23695e51470SBram Moolenaar call assert_notequal(screenattr(1,2), screenattr(1,4)) 23795e51470SBram Moolenaar 238aff74914SBram Moolenaar let savematches = getmatches(winid) 239aff74914SBram Moolenaar let expect = [ 240aff74914SBram Moolenaar \ {'group': 'Search', 'pattern': '4', 'priority': 10, 'id': 4}, 241aff74914SBram Moolenaar \ {'group': 'Error', 'id': 5, 'priority': 10, 'pos1': [1, 2, 1], 'pos2': [2, 2, 1]}, 242aff74914SBram Moolenaar \] 243aff74914SBram Moolenaar call assert_equal(expect, savematches) 244aff74914SBram Moolenaar 2451a3a8916SBram Moolenaar eval winid->clearmatches() 246aff74914SBram Moolenaar call assert_equal([], getmatches(winid)) 24775e15670SBram Moolenaar call assert_fails('echo getmatches(-1)', 'E957:') 248aff74914SBram Moolenaar 249aff74914SBram Moolenaar call setmatches(savematches, winid) 250aff74914SBram Moolenaar call assert_equal(expect, savematches) 251aff74914SBram Moolenaar 25295e51470SBram Moolenaar wincmd w 25395e51470SBram Moolenaar bwipe! 25495e51470SBram Moolenaar call clearmatches() 25595e51470SBram Moolenaar syntax off 25695e51470SBram Moolenaarendfunc 25795e51470SBram Moolenaar 258e17bdfffSBram Moolenaarfunc Test_matchaddpos_using_negative_priority() 259e17bdfffSBram Moolenaar set hlsearch 260e17bdfffSBram Moolenaar 261e17bdfffSBram Moolenaar call clearmatches() 262e17bdfffSBram Moolenaar 263e17bdfffSBram Moolenaar call setline(1, 'x') 264e17bdfffSBram Moolenaar let @/='x' 265e17bdfffSBram Moolenaar redraw! 266e17bdfffSBram Moolenaar let search_attr = screenattr(1,1) 267e17bdfffSBram Moolenaar 268e17bdfffSBram Moolenaar let @/='' 269e17bdfffSBram Moolenaar call matchaddpos('Error', [1], 10) 270e17bdfffSBram Moolenaar redraw! 271e17bdfffSBram Moolenaar let error_attr = screenattr(1,1) 272e17bdfffSBram Moolenaar 273e17bdfffSBram Moolenaar call setline(2, '-1 match priority') 274e17bdfffSBram Moolenaar call matchaddpos('Error', [2], -1) 275e17bdfffSBram Moolenaar redraw! 276e17bdfffSBram Moolenaar let negative_match_priority_attr = screenattr(2,1) 277e17bdfffSBram Moolenaar 278e17bdfffSBram Moolenaar call assert_notequal(negative_match_priority_attr, search_attr, "Match with negative priority is incorrectly highlighted with Search highlight.") 279e17bdfffSBram Moolenaar call assert_equal(negative_match_priority_attr, error_attr) 280e17bdfffSBram Moolenaar 281e17bdfffSBram Moolenaar nohl 282e17bdfffSBram Moolenaar set hlsearch& 283e17bdfffSBram Moolenaarendfunc 284e17bdfffSBram Moolenaar 28549d68bf5SBram Moolenaarfunc Test_matchaddpos_error() 28649d68bf5SBram Moolenaar call assert_fails("call matchaddpos('Error', 1)", 'E686:') 28749d68bf5SBram Moolenaar call assert_fails("call matchaddpos('Error', [1], 1, 1)", 'E798:') 28849d68bf5SBram Moolenaar call assert_fails("call matchaddpos('Error', [1], 1, 2)", 'E798:') 28949d68bf5SBram Moolenaar call assert_fails("call matchaddpos('Error', [1], 1, 0)", 'E799:') 29049d68bf5SBram Moolenaar call assert_fails("call matchaddpos('Error', [1], 1, 123, 1)", 'E715:') 29149d68bf5SBram Moolenaar call assert_fails("call matchaddpos('Error', [1], 1, 5, {'window':12345})", 'E957:') 29249d68bf5SBram Moolenaar " Why doesn't the following error have an error code E...? 29349d68bf5SBram Moolenaar call assert_fails("call matchaddpos('Error', [{}])", 'E290:') 29499fa7219SBram Moolenaar call assert_equal(-1, matchaddpos('Error', test_null_list())) 29599fa7219SBram Moolenaar call assert_fails("call matchaddpos('Error', [1], [], 1)", 'E745:') 29675e15670SBram Moolenaar call assert_equal(-1, matchaddpos('Search', [[]])) 29775e15670SBram Moolenaar call assert_fails("call matchaddpos('Search', [[{}]])", 'E728:') 29875e15670SBram Moolenaar call assert_fails("call matchaddpos('Search', [[2, {}]])", 'E728:') 29975e15670SBram Moolenaar call assert_fails("call matchaddpos('Search', [[3, 4, {}]])", 'E728:') 30049d68bf5SBram Moolenaarendfunc 30149d68bf5SBram Moolenaar 3024ef18dccSBram Moolenaarfunc OtherWindowCommon() 30306029a85SBram Moolenaar let lines =<< trim END 30406029a85SBram Moolenaar call setline(1, 'Hello Vim world') 30506029a85SBram Moolenaar let mid = matchadd('Error', 'world', 1) 30606029a85SBram Moolenaar let winid = win_getid() 30706029a85SBram Moolenaar new 30806029a85SBram Moolenaar END 3094ef18dccSBram Moolenaar call writefile(lines, 'XscriptMatchCommon') 3104ef18dccSBram Moolenaar let buf = RunVimInTerminal('-S XscriptMatchCommon', #{rows: 12}) 3116a2c5a7dSBram Moolenaar call TermWait(buf) 3124ef18dccSBram Moolenaar return buf 3134ef18dccSBram Moolenaarendfunc 3144ef18dccSBram Moolenaar 3154ef18dccSBram Moolenaarfunc Test_matchdelete_other_window() 3168c5a278fSBram Moolenaar CheckScreendump 3178c5a278fSBram Moolenaar 3184ef18dccSBram Moolenaar let buf = OtherWindowCommon() 31906029a85SBram Moolenaar call term_sendkeys(buf, ":call matchdelete(mid, winid)\<CR>") 32006029a85SBram Moolenaar call VerifyScreenDump(buf, 'Test_matchdelete_1', {}) 32106029a85SBram Moolenaar 32206029a85SBram Moolenaar call StopVimInTerminal(buf) 3234ef18dccSBram Moolenaar call delete('XscriptMatchCommon') 3244ef18dccSBram Moolenaarendfunc 3254ef18dccSBram Moolenaar 32649d68bf5SBram Moolenaarfunc Test_matchdelete_error() 32749d68bf5SBram Moolenaar call assert_fails("call matchdelete(0)", 'E802:') 32849d68bf5SBram Moolenaar call assert_fails("call matchdelete(1, -1)", 'E957:') 32949d68bf5SBram Moolenaarendfunc 33049d68bf5SBram Moolenaar 3314ef18dccSBram Moolenaarfunc Test_matchclear_other_window() 332494e9069SBram Moolenaar CheckRunVimInTerminal 3334ef18dccSBram Moolenaar let buf = OtherWindowCommon() 3344ef18dccSBram Moolenaar call term_sendkeys(buf, ":call clearmatches(winid)\<CR>") 3354ef18dccSBram Moolenaar call VerifyScreenDump(buf, 'Test_matchclear_1', {}) 3364ef18dccSBram Moolenaar 3374ef18dccSBram Moolenaar call StopVimInTerminal(buf) 3384ef18dccSBram Moolenaar call delete('XscriptMatchCommon') 3394ef18dccSBram Moolenaarendfunc 3404ef18dccSBram Moolenaar 3414ef18dccSBram Moolenaarfunc Test_matchadd_other_window() 342494e9069SBram Moolenaar CheckRunVimInTerminal 3434ef18dccSBram Moolenaar let buf = OtherWindowCommon() 3444ef18dccSBram Moolenaar call term_sendkeys(buf, ":call matchadd('Search', 'Hello', 1, -1, #{window: winid})\<CR>") 3454ef18dccSBram Moolenaar call term_sendkeys(buf, ":\<CR>") 3464ef18dccSBram Moolenaar call VerifyScreenDump(buf, 'Test_matchadd_1', {}) 3474ef18dccSBram Moolenaar 3484ef18dccSBram Moolenaar call StopVimInTerminal(buf) 3494ef18dccSBram Moolenaar call delete('XscriptMatchCommon') 35006029a85SBram Moolenaarendfunc 35106029a85SBram Moolenaar 35275e15670SBram Moolenaar" Test for deleting matches outside of the screen redraw top/bottom lines 35375e15670SBram Moolenaar" This should cause a redraw of those lines. 35475e15670SBram Moolenaarfunc Test_matchdelete_redraw() 35575e15670SBram Moolenaar new 35675e15670SBram Moolenaar call setline(1, range(1, 500)) 35775e15670SBram Moolenaar call cursor(250, 1) 35875e15670SBram Moolenaar let m1 = matchaddpos('Search', [[250]]) 35975e15670SBram Moolenaar let m2 = matchaddpos('Search', [[10], [450]]) 36075e15670SBram Moolenaar redraw! 36175e15670SBram Moolenaar let m3 = matchaddpos('Search', [[240], [260]]) 36275e15670SBram Moolenaar call matchdelete(m2) 36375e15670SBram Moolenaar let m = getmatches() 36475e15670SBram Moolenaar call assert_equal(2, len(m)) 36575e15670SBram Moolenaar call assert_equal([250], m[0].pos1) 36675e15670SBram Moolenaar redraw! 36775e15670SBram Moolenaar call matchdelete(m1) 36875e15670SBram Moolenaar call assert_equal(1, len(getmatches())) 36975e15670SBram Moolenaar bw! 37075e15670SBram Moolenaarendfunc 37175e15670SBram Moolenaar 3729e4d8215SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 373