|
|
|
|
|
Description |
A rich user interface for line input in command-line programs. Haskeline is
Unicode-aware and runs both on POSIX-compatible systems and on Windows.
Users may customize the interface with a ~/.haskeline file; see the
System.Console.Haskeline.Prefs module for more details.
An example use of this library for a simple read-eval-print loop is the
following:
import System.Console.Haskeline
main :: IO ()
main = runInputT defaultSettings loop
where
loop :: InputT IO ()
loop = do
minput <- getInputLine "% "
case minput of
Nothing -> return ()
Just "quit" -> return ()
Just input -> do outputStrLn $ "Input was: " ++ input
loop
If either stdin or stdout is not connected to a terminal (for example, piped from another
process), Haskeline will treat it as a UTF-8-encoded file handle.
|
|
Synopsis |
|
|
|
|
Main functions
|
|
|
A monad transformer which carries all of the state and settings
relevant to a line-reading application.
| Instances | |
|
|
|
Run a line-reading application, reading user Prefs from
~/.haskeline
|
|
|
|
|
:: forall m . MonadException m | | => String | The input prompt
| -> InputT m (Maybe String) | | Read one line of input. The final newline (if any) is removed.
If stdin is connected to a terminal, getInputLine provides a rich line-editing
user interface. It returns Nothing if the user presses Ctrl-D when the input
text is empty. All user interaction, including display of the input prompt, will occur
on the user's output terminal (which may differ from stdout).
If stdin is not connected to a terminal, getInputLine reads one line of input, and
prints the prompt and input to stdout. It returns Nothing if an EOF is
encountered before any characters are read.
|
|
|
|
Write a string to the standard output. Allows cross-platform display of Unicode
characters.
|
|
|
Write a string to the standard output, followed by a newline. Allows
cross-platform display of Unicode characters.
|
|
Settings
|
|
|
Application-specific customizations to the user interface.
| Constructors | | Instances | |
|
|
|
A useful default. In particular:
defaultSettings = Settings {
complete = completeFilename,
historyFile = Nothing,
handleSigINT = False
}
|
|
|
Because complete is the only field of Settings depending on m,
the expression defaultSettings {completionFunc = f} leads to a type error
from being too general. This function works around that issue, and may become unnecessary if another field
depending on m is added.
|
|
Ctrl-C handling
|
|
|
Constructors | | Instances | |
|
|
|
:: MonadException m | | => m a | Handler to run if Ctrl-C is pressed
| -> m a | Computation to run
| -> m a | | Catch and handle an exception of type Interrupt.
|
|
|
module System.Console.Haskeline.Completion |
|
module System.Console.Haskeline.Prefs |
|
module System.Console.Haskeline.MonadException |
|
Produced by Haddock version 2.4.2 |