1 ! Copyright (C) 2011 Erik Charlebois.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors alien.data fry io io.encodings.utf8 kernel
4 listener namespaces readline sequences threads vocabs
6 QUALIFIED: readline.ffi
12 : prefixed-words ( prefix -- words )
13 '[ name>> _ head? ] all-words swap filter [ name>> ] map ;
15 : clear-completions ( -- )
18 : get-completions ( prefix -- completions )
19 completions tget dup [ nip ] [ drop
20 prefixed-words dup completions tset
23 TUPLE: readline-reader { prompt initial: f } ;
24 M: readline-reader stream-readln
25 flush [ prompt>> dup [ " " append ] [ ] if readline ]
26 keep f >>prompt drop ;
28 M: readline-reader prompt.
32 : readline-listener ( -- )
34 swap get-completions ?nth
35 [ clear-completions f ] unless*
37 readline-reader new [ listener ] with-input-stream* ;
39 MAIN: readline-listener