]> gitweb.factorcode.org Git - factor.git/blob - extra/readline/readline.factor
Update actions, because Node.js 16 actions are deprecated, to Node.js 20
[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.data alien.libraries alien.strings compiler.units
4 destructors io.encodings.utf8 kernel libc sequences words ;
5 QUALIFIED: readline.ffi
6 IN: readline
7
8 : readline ( prompt -- str )
9     [
10         readline.ffi:readline [
11             |free utf8 alien>string [
12                 [ readline.ffi:add_history ] unless-empty
13             ] keep
14         ] [ f ] if*
15     ] with-destructors ;
16
17 : current-line ( -- str )
18     readline.ffi:rl_line_buffer ;
19
20 : completion-line ( -- str )
21     current-line readline.ffi:rl_point head ;
22
23 : has-readline? ( -- ? )
24     "readline" dup library-dll dlsym-raw >boolean ;
25
26 : set-completion ( quot -- )
27     [
28        '[
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 ;