mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	patch 8.2.5116: "limit" option of matchfuzzy() not always respected
Problem: "limit" option of matchfuzzy() not always respected. Solution: Remove "else". (Kazuyuki Miyagi, closes #10586)
This commit is contained in:
		
				
					committed by
					
						 Bram Moolenaar
						Bram Moolenaar
					
				
			
			
				
	
			
			
			
						parent
						
							d592deb336
						
					
				
				
					commit
					47f1a55849
				
			| @@ -5899,6 +5899,8 @@ matchfuzzy({list}, {str} [, {dict}])			*matchfuzzy()* | ||||
| 		    matchseq	When this item is present return only matches | ||||
| 				that contain the characters in {str} in the | ||||
| 				given sequence. | ||||
| 		    limit	Maximum number of matches in {list} to be | ||||
| 				returned.  Zero means no limit. | ||||
|  | ||||
| 		If {list} is a list of dictionaries, then the optional {dict} | ||||
| 		argument supports the following additional items: | ||||
| @@ -5910,8 +5912,6 @@ matchfuzzy({list}, {str} [, {dict}])			*matchfuzzy()* | ||||
| 				This should accept a dictionary item as the | ||||
| 				argument and return the text for that item to | ||||
| 				use for fuzzy matching. | ||||
| 		    limit	Maximum number of matches in {list} to be | ||||
| 				returned.  Zero means no limit. | ||||
|  | ||||
| 		{str} is treated as a literal string and regular expression | ||||
| 		matching is NOT supported.  The maximum supported {str} length | ||||
|   | ||||
| @@ -4844,7 +4844,8 @@ do_fuzzymatch(typval_T *argvars, typval_T *rettv, int retmatchpos) | ||||
| 		return; | ||||
| 	    } | ||||
| 	} | ||||
| 	else if ((di = dict_find(d, (char_u *)"limit", -1)) != NULL) | ||||
|  | ||||
| 	if ((di = dict_find(d, (char_u *)"limit", -1)) != NULL) | ||||
| 	{ | ||||
| 	    if (di->di_tv.v_type != VAR_NUMBER) | ||||
| 	    { | ||||
|   | ||||
| @@ -243,6 +243,14 @@ func Test_matchfuzzy_limit() | ||||
|   call assert_equal(['2', '2'], x->matchfuzzy('2', #{limit: 2})) | ||||
|   call assert_equal(['2', '2'], x->matchfuzzy('2', #{limit: 3})) | ||||
|   call assert_fails("call matchfuzzy(x, '2', #{limit: '2'})", 'E475:') | ||||
|  | ||||
|   let l = [{'id': 5, 'val': 'crayon'}, {'id': 6, 'val': 'camera'}] | ||||
|   call assert_equal([{'id': 5, 'val': 'crayon'}, {'id': 6, 'val': 'camera'}], l->matchfuzzy('c', #{text_cb: {v -> v.val}})) | ||||
|   call assert_equal([{'id': 5, 'val': 'crayon'}, {'id': 6, 'val': 'camera'}], l->matchfuzzy('c', #{key: 'val'})) | ||||
|   call assert_equal([{'id': 5, 'val': 'crayon'}, {'id': 6, 'val': 'camera'}], l->matchfuzzy('c', #{text_cb: {v -> v.val}, limit: 0})) | ||||
|   call assert_equal([{'id': 5, 'val': 'crayon'}, {'id': 6, 'val': 'camera'}], l->matchfuzzy('c', #{key: 'val', limit: 0})) | ||||
|   call assert_equal([{'id': 5, 'val': 'crayon'}], l->matchfuzzy('c', #{text_cb: {v -> v.val}, limit: 1})) | ||||
|   call assert_equal([{'id': 5, 'val': 'crayon'}], l->matchfuzzy('c', #{key: 'val', limit: 1})) | ||||
| endfunc | ||||
|  | ||||
| " vim: shiftwidth=2 sts=2 expandtab | ||||
|   | ||||
| @@ -734,6 +734,8 @@ static char *(features[]) = | ||||
|  | ||||
| static int included_patches[] = | ||||
| {   /* Add new patch number below this line */ | ||||
| /**/ | ||||
|     5116, | ||||
| /**/ | ||||
|     5115, | ||||
| /**/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user