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
9 : readline ( prompt -- str )
11 readline.ffi:readline [
12 |free utf8 alien>string [
13 [ ] [ readline.ffi:add_history ] if-empty
18 : current-line ( -- str )
19 readline.ffi:rl_line_buffer ;
21 : has-readline ( -- ? )
22 "readline" dup load-library dlsym-raw >boolean ;
24 MACRO: set-completion ( quot -- )
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 ] ;