From 3697fa1aa3308b62f0e8b080e38543ec0c98f272 Mon Sep 17 00:00:00 2001 From: Slava Pestov <slava@slava-pestovs-macbook-pro.local> Date: Fri, 16 Jan 2009 15:54:40 -0600 Subject: [PATCH] Word completion now adds the word's vocab to the USE: list --- .../listener/completion/completion.factor | 31 +++++++++++++++---- basis/ui/tools/listener/listener.factor | 24 ++++---------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/basis/ui/tools/listener/completion/completion.factor b/basis/ui/tools/listener/completion/completion.factor index a4f7b107e8..85d2e0d8b7 100644 --- a/basis/ui/tools/listener/completion/completion.factor +++ b/basis/ui/tools/listener/completion/completion.factor @@ -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> diff --git a/basis/ui/tools/listener/listener.factor b/basis/ui/tools/listener/listener.factor index c57ef4b3d7..1e32fac0ce 100644 --- a/basis/ui/tools/listener/listener.factor +++ b/basis/ui/tools/listener/listener.factor @@ -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