diff --git a/basis/tools/completion/completion-tests.factor b/basis/tools/completion/completion-tests.factor index 05c8e321ec..e35fdb9d04 100644 --- a/basis/tools/completion/completion-tests.factor +++ b/basis/tools/completion/completion-tests.factor @@ -30,3 +30,6 @@ IN: tools.completion { f } [ { "USING:" "A" "B" "C" ";" } complete-vocab? ] unit-test { t } [ { "X" ";" "USING:" "A" "B" "C" } complete-vocab? ] unit-test +{ f } [ { "CHAR:" } complete-CHAR:? ] unit-test +{ t } [ { "CHAR:" "" } complete-CHAR:? ] unit-test +{ t } [ { "CHAR:" "a" } complete-CHAR:? ] unit-test diff --git a/basis/tools/completion/completion.factor b/basis/tools/completion/completion.factor index 8c61da927b..22fec129b0 100644 --- a/basis/tools/completion/completion.factor +++ b/basis/tools/completion/completion.factor @@ -135,8 +135,18 @@ PRIVATE> : complete-vocab? ( tokens -- ? ) { [ complete-single-vocab? ] [ complete-vocab-list? ] } 1|| ; -: complete-CHAR:? ( tokens -- ? ) - 2 short tail* "CHAR:" swap member? ; +<PRIVATE -: complete-COLOR:? ( tokens -- ? ) - 2 short tail* "COLOR:" swap member? ; +: complete-token? ( tokens token -- ? ) + over last empty? [ + [ harvest ?last ] [ = ] bi* + ] [ + swap harvest dup length 1 > + [ 2 tail* ?first = ] [ 2drop f ] if + ] if ; + +PRIVATE> + +: complete-CHAR:? ( tokens -- ? ) "CHAR:" complete-token? ; + +: complete-COLOR:? ( tokens -- ? ) "COLOR:" complete-token? ;