tools.completion: speed up apropos by 35%. Fixes #101.
							parent
							
								
									b653360299
								
							
						
					
					
						commit
						5e496e846b
					
				| 
						 | 
				
			
			@ -8,8 +8,14 @@ vocabs.hierarchy words ;
 | 
			
		|||
 | 
			
		||||
IN: tools.completion
 | 
			
		||||
 | 
			
		||||
<PRIVATE
 | 
			
		||||
 | 
			
		||||
: smart-index-from ( obj i seq -- n/f )
 | 
			
		||||
    rot [ ch>lower ] [ ch>upper ] bi
 | 
			
		||||
    [ eq? ] bi-curry@ [ bi or ] 2curry find-from drop ;
 | 
			
		||||
 | 
			
		||||
:: (fuzzy) ( accum i full ch -- accum i full ? )
 | 
			
		||||
    ch i full index-from [
 | 
			
		||||
    ch i full smart-index-from [
 | 
			
		||||
        :> i i accum push
 | 
			
		||||
        accum i 1 + full t
 | 
			
		||||
    ] [
 | 
			
		||||
| 
						 | 
				
			
			@ -64,14 +70,16 @@ IN: tools.completion
 | 
			
		|||
    dupd fuzzy score max ;
 | 
			
		||||
 | 
			
		||||
: completion ( short candidate -- result )
 | 
			
		||||
    [ second >lower swap complete ] keep 2array ;
 | 
			
		||||
    [ second swap complete ] keep 2array ;
 | 
			
		||||
 | 
			
		||||
: completion, ( short candidate -- )
 | 
			
		||||
    completion dup first 0 > [ , ] [ drop ] if ;
 | 
			
		||||
 | 
			
		||||
PRIVATE>
 | 
			
		||||
 | 
			
		||||
: completions ( short candidates -- seq )
 | 
			
		||||
    [ ] [
 | 
			
		||||
        [ >lower ] dip [ [ completion, ] with each ] { } make
 | 
			
		||||
        [ [ completion, ] with each ] { } make
 | 
			
		||||
        rank-completions
 | 
			
		||||
    ] bi-curry if-empty ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue