tools.completion: speed up apropos by 35%. Fixes #101.

db4
John Benediktsson 2011-09-13 09:13:02 -07:00
parent b653360299
commit 5e496e846b
1 changed files with 11 additions and 3 deletions

View File

@ -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 ;