tools.completion: adding complete-vocab-words?.

factor-shell
John Benediktsson 2018-01-24 17:11:08 -08:00
parent 8a4dba4cd9
commit 9887829103
2 changed files with 21 additions and 5 deletions

View File

@ -1,6 +1,4 @@
USING: assocs kernel sequences tools.test ;
IN: tools.completion
USING: assocs kernel sequences tools.completion tools.test ;
{ f } [ "abc" "def" fuzzy ] unit-test
{ V{ 4 5 6 } } [ "set-nth" "nth" fuzzy ] unit-test
@ -28,6 +26,12 @@ IN: tools.completion
{ f } [ { "USING:" "A" "B" "C" ";" } complete-vocab? ] unit-test
{ t } [ { "X" ";" "USING:" "A" "B" "C" } complete-vocab? ] unit-test
{ f } [ { "FROM:" } complete-vocab-words? ] unit-test
{ f } [ { "FROM:" "math" } complete-vocab-words? ] unit-test
{ t } [ { "FROM:" "math" "=>" } complete-vocab-words? ] unit-test
{ f } [ { "FROM:" "math" "=>" "+" ";" } complete-vocab-words? ] unit-test
{ f } [ { "BOOM:" "math" "=>" "+" } complete-vocab-words? ] unit-test
{ f } [ { "CHAR:" } complete-char? ] unit-test
{ t } [ { "CHAR:" "" } complete-char? ] unit-test
{ t } [ { "CHAR:" "a" } complete-char? ] unit-test

View File

@ -84,6 +84,9 @@ PRIVATE>
: vocabs-matching ( str -- seq )
all-disk-vocabs-recursive filter-vocabs name-completions ;
: vocab-words-matching ( str vocab -- seq )
vocab-words name-completions ;
: chars-matching ( str -- seq )
name-map keys dup zip completions ;
@ -114,8 +117,10 @@ PRIVATE>
<PRIVATE
: (complete-single-vocab?) ( str -- ? )
{ "IN:" "USE:" "UNUSE:" "QUALIFIED:" "QUALIFIED-WITH:" }
member? ; inline
{
"IN:" "USE:" "UNUSE:" "QUALIFIED:"
"QUALIFIED-WITH:" "FROM:" "EXCLUDE:"
} member? ; inline
: complete-single-vocab? ( tokens -- ? )
dup last empty? [
@ -136,6 +141,13 @@ PRIVATE>
: complete-vocab? ( tokens -- ? )
{ [ complete-single-vocab? ] [ complete-vocab-list? ] } 1|| ;
: complete-vocab-words? ( tokens -- ? )
harvest chop-; {
[ length 3 >= ]
[ first { "FROM:" "EXCLUDE:" } member? ]
[ third "=>" = ]
} 1&& ;
<PRIVATE
: complete-token? ( tokens token -- ? )