diff --git a/basis/ui/tools/listener/completion/completion-tests.factor b/basis/ui/tools/listener/completion/completion-tests.factor index b26555df6d..ba3a045460 100644 --- a/basis/ui/tools/listener/completion/completion-tests.factor +++ b/basis/ui/tools/listener/completion/completion-tests.factor @@ -7,6 +7,8 @@ IN: ui.tools.listener.completion.tests [ f ] [ { "USE:" "A" "B" } complete-vocab? ] unit-test +[ f ] [ { "USE:" "A" "" } complete-vocab? ] unit-test + [ t ] [ { "USE:" "A" } complete-vocab? ] unit-test [ t ] [ { "USE:" } complete-vocab? ] unit-test diff --git a/basis/ui/tools/listener/completion/completion.factor b/basis/ui/tools/listener/completion/completion.factor index c63680b188..944d58a75d 100644 --- a/basis/ui/tools/listener/completion/completion.factor +++ b/basis/ui/tools/listener/completion/completion.factor @@ -75,13 +75,17 @@ M: word-completion row-color M: vocab-completion row-color drop vocab? COLOR: black COLOR: dark-gray ? ; +: (complete-vocab?) ( str -- ? ) + { "IN:" "USE:" "UNUSE:" "QUALIFIED:" "QUALIFIED-WITH:" } + member? ; inline + : complete-vocab? ( tokens -- ? ) - harvest 2 short tail* [ f ] [ - [ - { "IN:" "USE:" "UNUSE:" "QUALIFIED:" "QUALIFIED-WITH:" } - member? - ] any? - ] if-empty ; + dup last empty? [ + harvest ?last (complete-vocab?) + ] [ + harvest 2 short tail* + [ f ] [ [ (complete-vocab?) ] any? ] if-empty + ] if ; : chop-; ( seq -- seq' ) { ";" } split1-last [ ] [ ] ?if ;