terminfo-0.4.1.0: Haskell bindings to the terminfo library.

Maintainer | judah.jacobson@gmail.com
Stability | experimental
Portability | portable (FFI)
Safe Haskell | Safe
Language | Haskell2010

System.Console.Terminfo.Cursor

Contents

- Terminal dimensions
- Cursor flags
- Scrolling
- Relative cursor movements
  - Primitive movement capabilities
- Absolute cursor movements

Description

This module provides capabilities for moving the cursor on the terminal.

Synopsis

- termLines :: Capability Int
- termColumns :: Capability Int
- autoRightMargin :: Capability Bool
- autoLeftMargin :: Capability Bool
- wraparoundGlitch :: Capability Bool
- carriageReturn :: TermStr s => Capability s
- newline :: TermStr s => Capability s
- scrollForward :: TermStr s => Capability s
- scrollReverse :: TermStr s => Capability s
- moveDown :: TermStr s => Capability (Int -> s)
- moveLeft :: TermStr s => Capability (Int -> s)
- moveRight :: TermStr s => Capability (Int -> s)
- moveUp :: TermStr s => Capability (Int -> s)
- cursorDown1 :: TermStr s => Capability s
- cursorLeft1 :: TermStr s => Capability s
- cursorRight1 :: TermStr s => Capability s
- cursorUp1 :: TermStr s => Capability s
- cursorDown :: TermStr s => Capability (Int -> s)
- cursorLeft :: TermStr s => Capability (Int -> s)
- cursorRight :: TermStr s => Capability (Int -> s)
- cursorUp :: TermStr s => Capability (Int -> s)
- cursorHome :: TermStr s => Capability s
- cursorToLL :: TermStr s => Capability s
- cursorAddress :: TermStr s => Capability (Point -> s)
- data Point = Point {
  - row, col :: Int
  }
- rowAddress :: TermStr s => Capability (Int -> s)
- columnAddress :: TermStr s => Capability (Int -> s)

# Terminal dimensions

Get the default size of the terminal. For resizeable terminals (e.g., `xterm`), these may not correspond to the actual dimensions.

termLines :: Capability Int #

termColumns :: Capability Int #

# Cursor flags

autoRightMargin :: Capability Bool #

This flag specifies that the cursor wraps automatically from the last column of one line to the first column of the next.

autoLeftMargin :: Capability Bool #

This flag specifies that a backspace at column 0 wraps the cursor to the last column of the previous line.

wraparoundGlitch :: Capability Bool #

This flag specifies that the terminal does not perform `autoRightMargin`-style wrapping when the character which would cause the wraparound is a control character. This is also known as the "newline glitch" or "magic wrap".

For example, in an 80-column terminal with this behavior, the following will print single-spaced instead of double-spaced:

    replicateM_ 5 $ putStr $ replicate 80 'x' ++ "\n"

# Scrolling

carriageReturn :: TermStr s => Capability s #

The `cr` capability, which moves the cursor to the first column of the current line.

newline :: TermStr s => Capability s #

The `nel` capability, which moves the cursor to the first column of the next line. It behaves like a carriage return followed by a line feed.

If `nel` is not defined, this may be built out of other capabilities.

scrollForward :: TermStr s => Capability s #

scrollReverse :: TermStr s => Capability s #

# Relative cursor movements

The following functions for cursor movement will combine the more primitive capabilities. For example, `moveDown` may use either `cursorDown` or `cursorDown1` depending on the parameter and which of `cud` and `cud1` are defined.

moveDown :: TermStr s => Capability (Int -> s) #

moveLeft :: TermStr s => Capability (Int -> s) #

moveRight :: TermStr s => Capability (Int -> s) #

moveUp :: TermStr s => Capability (Int -> s) #

## Primitive movement capabilities

These capabilities correspond directly to `cub`, `cud`, `cub1`, `cud1`, etc.

cursorDown1 :: TermStr s => Capability s #

cursorLeft1 :: TermStr s => Capability s #

cursorRight1 :: TermStr s => Capability s #

cursorUp1 :: TermStr s => Capability s #

cursorDown :: TermStr s => Capability (Int -> s) #

cursorLeft :: TermStr s => Capability (Int -> s) #

cursorRight :: TermStr s => Capability (Int -> s) #

cursorUp :: TermStr s => Capability (Int -> s) #

cursorHome :: TermStr s => Capability s #

cursorToLL :: TermStr s => Capability s #

# Absolute cursor movements

cursorAddress :: TermStr s => Capability (Point -> s) #

data Point #

Constructors

Point |

Fields

- row, col :: Int

rowAddress :: TermStr s => Capability (Int -> s) #

columnAddress :: TermStr s => Capability (Int -> s) #