editline-0.2.1.1: Bindings to the editline library (libedit).

Portability | non-portable (requires libedit)
Stability | experimental
Maintainer | judah.jacobson@gmail.com
Safe Haskell | None

System.Console.Editline

Description

A Haskell binding to the editline library. For more information about that library, see http://www.thrysoee.dk/editline/.

The following example illustrates using this library to write a loop that will process input until it reaches EOF or a Ctrl-D is typed.

    editlineLoop :: IO ()
     editlineLoop = do
        prog <- System.Environment.getProgName
        el <- elInit prog
        setPrompt el (return "input: ")
        setEditor el Vi
        let loop = do
             maybeLine <- elGets el
             case maybeLine of
                 Nothing -> return () -- ctrl-D
                 Just line -> do
                     let line' = init line -- remove trailing '\n'
                     putStrLn $ "User input: " ++ show line'
                     loop
        loop

Synopsis

- data EditLine
- elInit :: String -> IO EditLine
- reset :: EditLine -> IO ()
- elGets :: EditLine -> IO (Maybe String)
- setPrompt :: EditLine -> IO String -> IO ()
- data Editor
  - = Vi
  - | Emacs
- setEditor :: EditLine -> Editor -> IO ()

# Documentation

data EditLine

elInit

Arguments

:: String | The name of the calling program; used when reading the `editrc` file to determine which settings to use.
-> IO EditLine |

Initialize the line editor.

reset :: EditLine -> IO ()

Reset the terminal and the parser. This should be called after an error which may have upset the terminal's state.

elGets :: EditLine -> IO (Maybe String)

Read a line of input from the terminal. Returns Nothing if no characters were read or if an error occured.

setPrompt :: EditLine -> IO String -> IO ()

Set a function that will determine the prompt string.

data Editor

Constructors

Vi |
Emacs |

setEditor :: EditLine -> Editor -> IO ()

Set the editor keymap mode.