Improved word completion

db4
Slava Pestov 2008-04-07 00:16:15 -05:00
parent fcb78822b2
commit 457fea23f7
1 changed files with 18 additions and 12 deletions

View File

@ -7,7 +7,7 @@ ui.gadgets ui.gadgets.editors ui.gadgets.labelled
ui.gadgets.panes ui.gadgets.buttons ui.gadgets.scrollers ui.gadgets.panes ui.gadgets.buttons ui.gadgets.scrollers
ui.gadgets.tracks ui.gestures ui.operations vocabs words ui.gadgets.tracks ui.gestures ui.operations vocabs words
prettyprint listener debugger threads boxes concurrency.flags prettyprint listener debugger threads boxes concurrency.flags
math arrays generic accessors ; math arrays generic accessors combinators ;
IN: ui.tools.listener IN: ui.tools.listener
TUPLE: listener-gadget input output stack ; TUPLE: listener-gadget input output stack ;
@ -101,26 +101,32 @@ M: listener-operation invoke-command ( target command -- )
: clear-stack ( listener -- ) : clear-stack ( listener -- )
[ clear ] swap (call-listener) ; [ clear ] swap (call-listener) ;
GENERIC# word-completion-string 1 ( word listener -- string ) GENERIC: word-completion-string ( word -- string )
M: word word-completion-string
word-name ;
M: method-body word-completion-string M: method-body word-completion-string
>r "method-generic" word-prop r> word-completion-string ; "method-generic" word-prop word-completion-string ;
USE: generic.standard.engines.tuple USE: generic.standard.engines.tuple
M: tuple-dispatch-engine-word word-completion-string M: tuple-dispatch-engine-word word-completion-string
>r "engine-generic" word-prop r> word-completion-string ; "engine-generic" word-prop word-completion-string ;
M: word word-completion-string ( word listener -- string ) : use-if-necessary ( word seq -- )
>r [ word-name ] [ word-vocabulary ] bi dup vocab-words r> >r word-vocabulary vocab-words r>
input>> interactor-use memq? {
[ drop ] [ [ "USE: " % % " " % % ] "" make ] if ; { [ dup not ] [ 2drop ] }
{ [ 2dup memq? ] [ 2drop ] }
{ [ t ] [ push ] }
} cond ;
: insert-word ( word -- ) : insert-word ( word -- )
get-workspace get-workspace workspace-listener input>>
workspace-listener [ >r word-completion-string r> user-input ]
[ word-completion-string ] keep [ interactor-use use-if-necessary ]
input>> user-input ; 2bi ;
: quot-action ( interactor -- lines ) : quot-action ( interactor -- lines )
dup control-value dup control-value