|
|
|
|
|
Description |
Provides ANSI terminal support for Windows and ANSI terminal software running on a Unix-like operating system.
The ANSI escape codes are described at http://en.wikipedia.org/wiki/ANSI_escape_code and provide a rich range of
functionality for terminal control, which includes:
- Colored text output, with control over both foreground and background colors
- Hiding or showing the cursor
- Moving the cursor around
- Clearing parts of the screen
The most frequently used parts of this ANSI command set are exposed with a platform independent interface by
this module. Every function exported comes in three flavours:
- Vanilla: has an IO () type and doesn't take a Handle. This just outputs the ANSI command directly on
to the terminal corresponding to stdout. Commands issued like this should work as you expect on both Windows
and Unix.
- Chocolate: has an IO () type but takes a Handle. This outputs the ANSI command on the terminal corresponding
to the supplied handle. Commands issued like this should also work as your expect on both Windows and Unix.
- Strawberry: has a String type and just consists of an escape code which can be added to any other bit of text
before being output. This version of the API is often convenient to use, but due to fundamental limitations in
Windows ANSI terminal support will only work on Unix. On Windows these codes will always be the empty string,
so it is possible to use them portably for e.g. coloring console output on the understanding that you will only
see colors if you are running on a Unix-like operating system.
|
|
Synopsis |
|
|
|
|
Basic data types
|
|
|
ANSI colors: come in various intensities, which are controlled by ColorIntensity
| Constructors | Black | | Red | | Green | | Yellow | | Blue | | Magenta | | Cyan | | White | |
| Instances | |
|
|
|
ANSI colors come in two intensities
| Constructors | | Instances | |
|
|
|
ANSI colors can be set on two different layers
| Constructors | | Instances | |
|
|
|
ANSI blink speeds: values other than NoBlink are not widely supported
| Constructors | SlowBlink | Less than 150 blinks per minute
| RapidBlink | More than 150 blinks per minute
| NoBlink | |
|
|
|
|
ANSI text underlining
| Constructors | SingleUnderline | | DoubleUnderline | Not widely supported
| NoUnderline | |
|
|
|
|
ANSI general console intensity: usually treated as setting the font style (e.g. BoldIntensity causes text to be bold)
| Constructors | BoldIntensity | | FaintIntensity | Not widely supported: sometimes treated as concealing text
| NormalIntensity | |
|
|
|
|
ANSI Select Graphic Rendition command
| Constructors | |
|
|
Cursor movement by character
|
|
|
:: Int | Number of lines or characters to move
| -> IO () | |
|
|
|
:: Int | Number of lines or characters to move
| -> IO () | |
|
|
|
:: Int | Number of lines or characters to move
| -> IO () | |
|
|
|
:: Int | Number of lines or characters to move
| -> IO () | |
|
|
|
|
|
|
:: Handle | | -> Int | Number of lines or characters to move
| -> IO () | | Thanks to Brandon S. Allbery and Curt Sampson for pointing me in the right direction on xterm title setting on haskell-cafe.
The 0 signifies that both the title and icon text should be set: i.e. the text for the window in the Start bar (or similar)
as well as that in the actual window title. This is chosen for consistent behaviour between Unixes and Windows.
|
|
|
|
|
|
|
|
|
|
:: Int | Number of lines or characters to move
| -> String | |
|
|
|
:: Int | Number of lines or characters to move
| -> String | |
|
|
|
:: Int | Number of lines or characters to move
| -> String | |
|
|
|
:: Int | Number of lines or characters to move
| -> String | |
|
|
Cursor movement by line
|
|
|
:: Int | Number of lines to move
| -> IO () | |
|
|
|
:: Int | Number of lines to move
| -> IO () | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Directly changing cursor position
|
|
|
:: Int | 0-based column to move to
| -> IO () | |
|
|
|
|
|
|
|
|
|
:: Int | 0-based row to move to
| -> Int | 0-based column to move to
| -> IO () | |
|
|
|
|
|
|
:: Int | 0-based row to move to
| -> Int | 0-based column to move to
| -> String | |
|
|
Clearing parts of the screen
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Scrolling the screen
|
|
|
:: Int | Number of lines to scroll by
| -> IO () | |
|
|
|
:: Int | Number of lines to scroll by
| -> IO () | | Scroll the displayed information up or down the terminal: not widely supported
|
|
|
|
|
|
|
:: Handle | | -> Int | Number of lines to scroll by
| -> IO () | | Scroll the displayed information up or down the terminal: not widely supported
|
|
|
|
|
|
|
:: Int | Number of lines to scroll by
| -> String | | Scroll the displayed information up or down the terminal: not widely supported
|
|
|
Select Graphic Rendition mode: colors and other whizzy stuff
|
|
|
:: [SGR] | Commands: these will typically be applied on top of the current console SGR mode.
An empty list of commands is equivalent to the list [Reset]. Commands are applied
left to right.
| -> IO () | | Set the Select Graphic Rendition mode
|
|
|
|
:: Handle | | -> [SGR] | Commands: these will typically be applied on top of the current console SGR mode.
An empty list of commands is equivalent to the list [Reset]. Commands are applied
left to right.
| -> IO () | | Set the Select Graphic Rendition mode
|
|
|
|
:: [SGR] | Commands: these will typically be applied on top of the current console SGR mode.
An empty list of commands is equivalent to the list [Reset]. Commands are applied
left to right.
| -> String | | Set the Select Graphic Rendition mode
|
|
|
Cursor visibilty changes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Changing the title
|
|
|
:: String | New title
| -> IO () | | Set the terminal window title
|
|
|
|
|
|
|
|
|
Produced by Haddock version 2.6.1 |