(Darren Moffat supplied the initial version of the Readline
module.)
The Readline
module is a straightforward interface to the GNU
Readline library. As such, you will need to look at the GNU
documentation (and have a libreadline.a
file around somewhere…)
The main function you'll use is:
readline :: String{-the prompt-} -> IO (Maybe String)
If you want to mess around with Full Readline G(l)ory, we also provide:
type KeyCode = Char type CallbackFunction = (Int -> -- Numeric Argument KeyCode -> -- KeyCode of pressed Key IO Int) -- What's this? initialize :: IO () addHistory :: String -> IO () bindKey :: KeyCode -> CallbackFunction -> IO () addDefun :: String -> CallbackFunction -> Maybe KeyCode -> IO () getReadlineName :: IO String setReadlineName :: String -> IO () getLineBuffer :: IO String setLineBuffer :: String -> IO () getPoint :: IO Int setPoint :: Int -> IO () getEnd :: IO Int setEnd :: Int -> IO () getMark :: IO Int setMark :: Int -> IO () setDone :: Bool -> IO () setPendingInput :: KeyCode -> IO () getPrompt :: IO String getTerminalName :: IO String inStream :: Handle outStream :: Handle
(All those names are just Haskellised versions of what you will see in the GNU readline documentation.)