]> gitweb.factorcode.org Git - factor.git/blob - extra/readline/readline.factor
Add vocab completion for readline when line begins with USING:
[factor.git] / extra / readline / readline.factor
1 ! Copyright (C) 2011 Erik Charlebois.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.strings destructors io.encodings.utf8 kernel libc
4 sequences macros quotations words compiler.units fry
5 alien.data alien.libraries ;
6 QUALIFIED: readline.ffi
7 IN: readline
8
9 : readline ( prompt -- str )
10     [
11         readline.ffi:readline [
12             |free utf8 alien>string [
13                 [ ] [ readline.ffi:add_history ] if-empty
14             ] keep
15         ] [ f ] if*
16     ] with-destructors ;
17
18 : current-line ( -- str )
19     readline.ffi:rl_line_buffer ;
20
21 : has-readline ( -- ? )
22     "readline" dup load-library dlsym-raw >boolean ;
23
24 MACRO: set-completion ( quot -- )
25     [
26        '[ @ [ utf8 malloc-string ] [ f ] if* ]
27        '[ _ readline.ffi:rl_compentry_func_t ]
28         (( -- alien )) define-temp
29     ] with-compilation-unit execute
30     '[ _ readline.ffi:set-rl_completion_entry_function ] ;