1 ! Copyright (C) 2011 Erik Charlebois.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.data alien.libraries alien.strings compiler.units
4 destructors io.encodings.utf8 kernel libc sequences words ;
5 QUALIFIED: readline.ffi
8 : readline ( prompt -- str )
10 readline.ffi:readline [
11 |free utf8 alien>string [
12 [ readline.ffi:add_history ] unless-empty
17 : current-line ( -- str )
18 readline.ffi:rl_line_buffer ;
20 : completion-line ( -- str )
21 current-line readline.ffi:rl_point head ;
23 : has-readline? ( -- ? )
24 "readline" dup library-dll dlsym-raw >boolean ;
26 : set-completion ( quot -- )
29 [ @ [ utf8 malloc-string ] [ f ] if* ]
30 readline.ffi:rl_compentry_func_t
31 ] ( -- alien ) define-temp
32 ] with-compilation-unit execute( -- alien )
33 readline.ffi:set-rl_completion_entry_function ;