Word completion now adds the word's vocab to the USE: list

db4
Slava Pestov 2009-01-16 15:54:40 -06:00
parent cc8e049c02
commit 3697fa1aa3
2 changed files with 31 additions and 24 deletions

View File

@ -1,11 +1,12 @@
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays assocs calendar colors documents fry kernel
sets splitting math math.vectors models.delay models.filter
words sets splitting math math.vectors models.delay models.filter
combinators.short-circuit parser present sequences tools.completion
generic generic.standard.engines.tuple
ui.commands ui.gadgets ui.gadgets.editors ui.gadgets.glass
ui.gadgets.scrollers ui.gadgets.tables
ui.gadgets.theme ui.gadgets.worlds ui.gadgets.wrappers ui.gestures
ui.gadgets.scrollers ui.gadgets.tables ui.gadgets.theme
ui.gadgets.worlds ui.gadgets.wrappers ui.gestures
ui.render ui.tools.listener.history ;
IN: ui.tools.listener.completion
@ -53,11 +54,29 @@ M: completion-popup hide-glass-hook
: completion-loc/doc ( popup -- loc doc )
interactor>> [ editor-caret ] [ model>> ] bi ;
GENERIC: completion-string ( object -- string )
M: object completion-string present ;
: method-completion-string ( word -- string )
"method-generic" word-prop present ;
M: method-body completion-string method-completion-string ;
M: engine-word completion-string method-completion-string ;
GENERIC# accept-completion-hook 1 ( item popup -- )
: insert-completion ( item popup -- )
[ completion-string ] [ completion-loc/doc ] bi*
one-word-elt set-elt-string ;
: accept-completion ( item table -- )
find-completion-popup
[ [ present ] [ completion-loc/doc ] bi* one-word-elt set-elt-string ]
[ hide-completion-popup ]
bi ;
[ insert-completion ]
[ accept-completion-hook ]
[ nip hide-completion-popup ]
2tri ;
: <completion-table> ( interactor quot -- table )
<completion-model> <table>

View File

@ -2,8 +2,8 @@
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays assocs calendar combinators
combinators.short-circuit compiler.units concurrency.flags
concurrency.mailboxes continuations destructors documents fry generic
generic.standard.engines.tuple hashtables help help.markup io
concurrency.mailboxes continuations destructors documents
fry hashtables help help.markup io
io.styles kernel lexer listener math models models.delay models.filter
namespaces parser prettyprint quotations sequences strings threads
tools.vocabs ui ui.commands ui.gadgets ui.gadgets.buttons
@ -255,17 +255,6 @@ M: listener-operation invoke-command ( target command -- )
: clear-stack ( listener -- )
[ clear ] swap (call-listener) ;
GENERIC: word-completion-string ( word -- string )
M: word word-completion-string name>> ;
: method-completion-string ( word -- string )
"method-generic" word-prop word-completion-string ;
M: method-body word-completion-string method-completion-string ;
M: engine-word word-completion-string method-completion-string ;
: use-if-necessary ( word seq -- )
2dup [ vocabulary>> ] dip and [
2dup [ assoc-stack ] keep = [ 2drop ] [
@ -273,11 +262,10 @@ M: engine-word word-completion-string method-completion-string ;
] if
] [ 2drop ] if ;
: insert-word ( word -- )
get-listener input>>
[ [ word-completion-string ] dip user-input* drop ]
[ interactor-use use-if-necessary ]
2bi ;
M: word accept-completion-hook
interactor>> interactor-use use-if-necessary ;
M: object accept-completion-hook 2drop ;
: quot-action ( interactor -- lines )
[ history>> history-add drop ] [ control-value ] [ select-all ] tri