mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	patch 9.0.2102: matchparen highlight not cleared in completion mode
Problem: matchparen highlight not cleared in completion mode Solution: Clear matchparen highlighting in completion mode Remove hard-coded hack in insexpand.c to clear the :3match before displaying the completion menu. Add a test for matchparen highlighting. While at it, move all test tests related to the matchparen plugin into a separate test file. closes: #13493 closes: #13524 Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
		| @@ -26,6 +26,7 @@ augroup matchparen | ||||
|   autocmd! WinLeave,BufLeave * call s:Remove_Matches() | ||||
|   if exists('##TextChanged') | ||||
|     autocmd! TextChanged,TextChangedI * call s:Highlight_Matching_Pair() | ||||
|     autocmd! TextChangedP * call s:Remove_Matches() | ||||
|   endif | ||||
| augroup END | ||||
|  | ||||
|   | ||||
| @@ -1330,11 +1330,6 @@ ins_compl_show_pum(void) | ||||
|     if (!pum_wanted() || !pum_enough_matches()) | ||||
| 	return; | ||||
|  | ||||
| #if defined(FEAT_EVAL) | ||||
|     // Dirty hard-coded hack: remove any matchparen highlighting. | ||||
|     do_cmdline_cmd((char_u *)"if exists('g:loaded_matchparen')|:3match none|endif"); | ||||
| #endif | ||||
|  | ||||
|     // Update the screen later, before drawing the popup menu over it. | ||||
|     pum_call_update_screen(); | ||||
|  | ||||
|   | ||||
| @@ -206,6 +206,7 @@ NEW_TESTS = \ | ||||
| 	test_matchadd_conceal \ | ||||
| 	test_matchadd_conceal_utf8 \ | ||||
| 	test_matchfuzzy \ | ||||
| 	test_matchparen \ | ||||
| 	test_memory_usage \ | ||||
| 	test_menu \ | ||||
| 	test_messages \ | ||||
|   | ||||
							
								
								
									
										10
									
								
								src/testdir/dumps/Test_matchparen_pum_clear_1.dump
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/testdir/dumps/Test_matchparen_pum_clear_1.dump
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| |a+0&#ffffff0@1| @72 | ||||
| |a@2| @71 | ||||
| |a@3| @70 | ||||
| |(|a@2>)| @69 | ||||
| | +0#0000001#ffd7ff255|a@1| @12| +0#4040ff13#ffffff0@58 | ||||
| | +0#0000001#e0e0e08|a@2| @11| +0#4040ff13#ffffff0@58 | ||||
| | +0#0000001#ffd7ff255|a@3| @10| +0#4040ff13#ffffff0@58 | ||||
| |~| @73 | ||||
| |~| @73 | ||||
| |-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |2| |o|f| |3| +0#0000000&@33 | ||||
| @@ -215,59 +215,6 @@ func Test_unprintable_fileformats() | ||||
|   call StopVimInTerminal(buf) | ||||
| endfunc | ||||
|  | ||||
| " Test for scrolling that modifies buffer during visual block | ||||
| func Test_visual_block_scroll() | ||||
|   CheckScreendump | ||||
|  | ||||
|   let lines =<< trim END | ||||
|     source $VIMRUNTIME/plugin/matchparen.vim | ||||
|     set scrolloff=1 | ||||
|     call setline(1, ['a', 'b', 'c', 'd', 'e', '', '{', '}', '{', 'f', 'g', '}']) | ||||
|     call cursor(5, 1) | ||||
|   END | ||||
|  | ||||
|   let filename = 'Xvisualblockmodifiedscroll' | ||||
|   call writefile(lines, filename, 'D') | ||||
|  | ||||
|   let buf = RunVimInTerminal('-S '.filename, #{rows: 7}) | ||||
|   call term_sendkeys(buf, "V\<C-D>\<C-D>") | ||||
|  | ||||
|   call VerifyScreenDump(buf, 'Test_display_visual_block_scroll', {}) | ||||
|  | ||||
|   call StopVimInTerminal(buf) | ||||
| endfunc | ||||
|  | ||||
| " Test for clearing paren highlight when switching buffers | ||||
| func Test_matchparen_clear_highlight() | ||||
|   CheckScreendump | ||||
|  | ||||
|   let lines =<< trim END | ||||
|     source $VIMRUNTIME/plugin/matchparen.vim | ||||
|     set hidden | ||||
|     call setline(1, ['()']) | ||||
|     normal 0 | ||||
|  | ||||
|     func OtherBuffer() | ||||
|        enew | ||||
|        exe "normal iaa\<Esc>0" | ||||
|     endfunc | ||||
|   END | ||||
|   call writefile(lines, 'XMatchparenClear', 'D') | ||||
|   let buf = RunVimInTerminal('-S XMatchparenClear', #{rows: 5}) | ||||
|   call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_1', {}) | ||||
|  | ||||
|   call term_sendkeys(buf, ":call OtherBuffer()\<CR>:\<Esc>") | ||||
|   call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_2', {}) | ||||
|  | ||||
|   call term_sendkeys(buf, "\<C-^>:\<Esc>") | ||||
|   call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_1', {}) | ||||
|  | ||||
|   call term_sendkeys(buf, "\<C-^>:\<Esc>") | ||||
|   call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_2', {}) | ||||
|  | ||||
|   call StopVimInTerminal(buf) | ||||
| endfunc | ||||
|  | ||||
| func Test_display_scroll_at_topline() | ||||
|   CheckScreendump | ||||
|  | ||||
|   | ||||
							
								
								
									
										87
									
								
								src/testdir/test_matchparen.vim
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								src/testdir/test_matchparen.vim
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | ||||
| " Test for the matchparen plugin | ||||
|  | ||||
| if !has('gui_running') && has('unix') | ||||
|   set term=ansi | ||||
| endif | ||||
|  | ||||
| source view_util.vim | ||||
| source check.vim | ||||
| source screendump.vim | ||||
|  | ||||
| " Test for scrolling that modifies buffer during visual block | ||||
| func Test_visual_block_scroll() | ||||
|   CheckScreendump | ||||
|  | ||||
|   let lines =<< trim END | ||||
|     source $VIMRUNTIME/plugin/matchparen.vim | ||||
|     set scrolloff=1 | ||||
|     call setline(1, ['a', 'b', 'c', 'd', 'e', '', '{', '}', '{', 'f', 'g', '}']) | ||||
|     call cursor(5, 1) | ||||
|   END | ||||
|  | ||||
|   let filename = 'Xvisualblockmodifiedscroll' | ||||
|   call writefile(lines, filename, 'D') | ||||
|  | ||||
|   let buf = RunVimInTerminal('-S '.filename, #{rows: 7}) | ||||
|   call term_sendkeys(buf, "V\<C-D>\<C-D>") | ||||
|  | ||||
|   call VerifyScreenDump(buf, 'Test_display_visual_block_scroll', {}) | ||||
|  | ||||
|   call StopVimInTerminal(buf) | ||||
| endfunc | ||||
|  | ||||
| " Test for clearing paren highlight when switching buffers | ||||
| func Test_matchparen_clear_highlight() | ||||
|   CheckScreendump | ||||
|  | ||||
|   let lines =<< trim END | ||||
|     source $VIMRUNTIME/plugin/matchparen.vim | ||||
|     set hidden | ||||
|     call setline(1, ['()']) | ||||
|     normal 0 | ||||
|  | ||||
|     func OtherBuffer() | ||||
|        enew | ||||
|        exe "normal iaa\<Esc>0" | ||||
|     endfunc | ||||
|   END | ||||
|   call writefile(lines, 'XMatchparenClear', 'D') | ||||
|   let buf = RunVimInTerminal('-S XMatchparenClear', #{rows: 5}) | ||||
|   call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_1', {}) | ||||
|  | ||||
|   call term_sendkeys(buf, ":call OtherBuffer()\<CR>:\<Esc>") | ||||
|   call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_2', {}) | ||||
|  | ||||
|   call term_sendkeys(buf, "\<C-^>:\<Esc>") | ||||
|   call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_1', {}) | ||||
|  | ||||
|   call term_sendkeys(buf, "\<C-^>:\<Esc>") | ||||
|   call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_2', {}) | ||||
|  | ||||
|   call StopVimInTerminal(buf) | ||||
| endfunc | ||||
|  | ||||
| " Test for scrolling that modifies buffer during visual block | ||||
| func Test_matchparen_pum_clear() | ||||
|   CheckScreendump | ||||
|  | ||||
|   let lines =<< trim END | ||||
|     source $VIMRUNTIME/plugin/matchparen.vim | ||||
|     set completeopt=menuone | ||||
|     call setline(1, ['aa', 'aaa', 'aaaa', '(a)']) | ||||
|     call cursor(4, 3) | ||||
|   END | ||||
|  | ||||
|   let filename = 'Xmatchparen' | ||||
|   call writefile(lines, filename, 'D') | ||||
|  | ||||
|   let buf = RunVimInTerminal('-S '.filename, #{rows: 10}) | ||||
|   call term_sendkeys(buf, "i\<C-N>\<C-N>") | ||||
|  | ||||
|   call VerifyScreenDump(buf, 'Test_matchparen_pum_clear_1', {}) | ||||
|  | ||||
|   call StopVimInTerminal(buf) | ||||
| endfunc | ||||
|  | ||||
|  | ||||
| " vim: shiftwidth=2 sts=2 expandtab | ||||
| @@ -704,6 +704,8 @@ static char *(features[]) = | ||||
|  | ||||
| static int included_patches[] = | ||||
| {   /* Add new patch number below this line */ | ||||
| /**/ | ||||
|     2102, | ||||
| /**/ | ||||
|     2101, | ||||
| /**/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user