Copyright | (c) 2008, Judah Jacobson Copied with permission from the readline package (originally System.Console.Readline): (c) 2007, Isaac Jones (c) 2002, Simon Marlow (c) 2001, Marcin Kowalczyk |
---|---|
License | BSD3 |
Maintainer | judah.jacobson@gmail.com |
Stability | provisional |
Portability | non-portable (requires libedit) |
Safe Haskell | None |
Language | Haskell98 |
System.Console.Editline.Readline
Description
This module provides a subset of the functions from System.Console.Readline, which is distributed in the readline package. However, because this package links against editline (http://www.thrysoee.dk/editline/) instead of readline, programs using this module are not required to be distributed under the GPL.
An example of a typical use of the readline API with history functionality is illustrated in the following read, eval, print loop:
readEvalPrintLoop :: IO () readEvalPrintLoop = do maybeLine <- readline "% " case maybeLine of Nothing -> return () -- EOF / control-d Just "exit" -> return () Just line -> do addHistory line putStrLn $ "The user input: " ++ (show line) readEvalPrintLoop
- readline :: String -> IO (Maybe String)
- addHistory :: String -> IO ()
- readHistory :: FilePath -> IO Bool
- writeHistory :: FilePath -> IO Bool
- clearHistory :: IO ()
- stifleHistory :: Int -> IO ()
- unstifleHistory :: IO Int
- historyIsStifled :: IO Bool
- historyMaxEntries :: IO Int
- getLineBuffer :: IO String
- getPoint :: IO Int
- setPoint :: Int -> IO ()
- getEnd :: IO Int
- setEnd :: Int -> IO ()
- getPrompt :: IO String
- getLibraryVersion :: IO String
- getTerminalName :: IO String
- setReadlineName :: String -> IO ()
- getInStream :: IO Handle
- getOutStream :: IO Handle
- setStartupHook :: Maybe (IO ()) -> IO ()
- setRedisplayFunction :: Maybe (IO ()) -> IO ()
- type Callback = Int -> Char -> IO Int
- addDefun :: String -> Callback -> Maybe Char -> IO ()
- bindKey :: Char -> Callback -> IO ()
- parseAndBind :: String -> IO ()
- readInitFile :: String -> IO ()
- redisplay :: IO ()
- readKey :: IO Char
- stuffChar :: Char -> IO Bool
- initialize :: IO ()
- resetTerminal :: Maybe String -> IO ()
- callbackHandlerInstall :: String -> (String -> IO ()) -> IO (IO ())
- callbackReadChar :: IO ()
- complete :: Int -> Char -> IO Int
- completionMatches :: String -> (String -> IO [String]) -> IO (Maybe (String, [String]))
- filenameCompletionFunction :: String -> IO [String]
- usernameCompletionFunction :: String -> IO [String]
- setCompletionEntryFunction :: Maybe (String -> IO [String]) -> IO ()
- setAttemptedCompletionFunction :: Maybe (String -> Int -> Int -> IO (Maybe (String, [String]))) -> IO ()
- getCompletionQueryItems :: IO Int
- setCompletionQueryItems :: Int -> IO ()
- getBasicWordBreakCharacters :: IO String
- setBasicWordBreakCharacters :: String -> IO ()
- getCompleterWordBreakCharacters :: IO String
- setCompleterWordBreakCharacters :: String -> IO ()
- getCompleterQuoteCharacters :: IO String
- setCompleterQuoteCharacters :: String -> IO ()
- getSpecialPrefixes :: IO String
- setSpecialPrefixes :: String -> IO ()
- getCompletionAppendCharacter :: IO (Maybe Char)
- setCompletionAppendCharacter :: Maybe Char -> IO ()
- setInhibitCompletion :: Bool -> IO ()
- getInhibitCompletion :: IO Bool
- setAttemptedCompletionOver :: Bool -> IO ()
- getAttemptedCompletionOver :: IO Bool
Documentation
Arguments
:: String | prompt |
-> IO (Maybe String) | returns the line the user input, or Nothing if EOF is encountered. |
readline is similar to getLine
, but with rich edit
functionality and history capability. readline will read a line
from the terminal and return it, using prompt as a prompt. If
prompt is the empty string, no prompt is issued. The line returned
has the final newline removed, so only the text of the line
remains. A blank line returns the empty string. If EOF is
encountered while reading a line, and the line is empty, Nothing is
returned. If an EOF is read with a non-empty line, it is treated
as a newline.
addHistory :: String -> IO ()
Add this command to the history. This allows users to search backward through history with C-r and step through with up and down arrows, among other things.
Read in a history file. Returns False
on failure
(for example, if the file does not exist).
Write out a history file. Returns False
if there was a problem writing the file.
clearHistory :: IO ()
Clear the history.
stifleHistory :: Int -> IO ()
Stifle the history list, remembering only a certain number of entries.
unstifleHistory :: IO Int
Stop stifling the history, returning the previous amount the history was stifled by.
Check whether the history is stifled or not. True if stifled, False if not.
Get the maximum number of history entries, returning 0 if the history is unstifled.
setReadlineName :: String -> IO ()
getInStream :: IO Handle
getOutStream :: IO Handle
setStartupHook :: Maybe (IO ()) -> IO ()
setRedisplayFunction :: Maybe (IO ()) -> IO ()
parseAndBind :: String -> IO ()
readInitFile :: String -> IO ()
initialize :: IO ()
resetTerminal :: Maybe String -> IO ()
callbackReadChar :: IO ()
filenameCompletionFunction :: String -> IO [String]
usernameCompletionFunction :: String -> IO [String]
setAttemptedCompletionFunction :: Maybe (String -> Int -> Int -> IO (Maybe (String, [String]))) -> IO ()
setCompletionQueryItems :: Int -> IO ()
setBasicWordBreakCharacters :: String -> IO ()
setCompleterWordBreakCharacters :: String -> IO ()
setCompleterQuoteCharacters :: String -> IO ()
setSpecialPrefixes :: String -> IO ()
setCompletionAppendCharacter :: Maybe Char -> IO ()
setInhibitCompletion :: Bool -> IO ()
setAttemptedCompletionOver :: Bool -> IO ()