import System
---#include <readline/readline.h>
-
type KeyCode = Int
type RlCallbackFunction =
prompt (length prompt)
litstr <- _casm_GC_ ``%r = readline (rl_prompt_hack);''
if (litstr == ``NULL'')
- then fail (userError "Readline has read EOF")
+ then ioError (userError "Readline has read EOF")
else do
str <- unpackCStringIO litstr
_ccall_ free litstr
-> IO ()
rlBindKey key cback =
if (0 > key) || (key > 255) then
- fail (userError "Invalid ASCII Key Code, must be in range 0.255")
+ ioError (userError "Invalid ASCII Key Code, must be in range 0.255")
else do
addCbackEntry (key,cback)
_casm_ `` rl_bind_key((KeyCode)%0,&genericRlCback); '' key
IO ()
rlAddDefun name cback key =
if (0 > key) || (key > 255) then
- fail (userError "Invalid ASCII Key Code, must be in range 0..255")
+ ioError (userError "Invalid ASCII Key Code, must be in range 0..255")
else do
addCbackEntry (key, cback)
_casm_ ``rl_add_defun (%0, &genericRlCback, (KeyCode)%1);'' name key
rlSetMark mark = _casm_ ``rl_mark = %0;'' mark
rlSetDone :: Bool -> IO ()
-rlSetDone True = _casm_ ``rl_done = %0;'' 1
-rlSetDone False = _casm_ ``rl_done = %0;'' 0
+rlSetDone True = _casm_ ``rl_done = %0;'' (1::Int)
+rlSetDone False = _casm_ ``rl_done = %0;'' (0::Int)
rlPendingInput :: KeyCode -> IO ()
rlPendingInput key = primIOToIO (_casm_ ``rl_pending_input = %0;'' key)