-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Haskell bindings to the terminfo library.
gr
grThis library provides an interface to the terminfo database (via
grbindings to the curses library). <a>Terminfo</a> allows POSIX systems
grto interact with a variety of terminals using a standard set of
grcapabilities.
@package terminfo
@version 0.4.1.1


-- | This module provides a low-level interface to the C functions of the
grterminfo library.
gr
grNOTE: Since this library is built on top of the curses interface, it
gris not thread-safe.
module System.Console.Terminfo.Base
data Terminal

-- | Initialize the terminfo library to the given terminal entry.
gr
grThrows a <a>SetupTermError</a> if the terminfo database could not be
grread.
setupTerm :: String -> IO Terminal

-- | Initialize the terminfo library, using the <tt>TERM</tt> environmental
grvariable. If <tt>TERM</tt> is not set, we use the generic, minimal
grentry <tt>dumb</tt>.
gr
grThrows a <a>SetupTermError</a> if the terminfo database could not be
grread.
setupTermFromEnv :: IO Terminal
data SetupTermError

-- | A feature or operation which a <a>Terminal</a> may define.
data Capability a
getCapability :: Terminal -> Capability a -> Maybe a

-- | Look up a boolean capability in the terminfo database.
gr
grUnlike <a>tiGuardFlag</a>, this capability never fails; it returns
gr<a>False</a> if the capability is absent or set to false, and returns
gr<a>True</a> otherwise.
tiGetFlag :: String -> Capability Bool

-- | Look up a boolean capability in the terminfo database, and fail if
grit's not defined.
tiGuardFlag :: String -> Capability ()

-- | Look up a numeric capability in the terminfo database.
tiGetNum :: String -> Capability Int

-- | Look up a string capability in the terminfo database. NOTE: This
grfunction is deprecated; use <a>tiGetOutput1</a> instead.

-- | <i>Deprecated: use tiGetOutput instead.</i>
tiGetStr :: String -> Capability String

-- | Look up an output capability which takes a fixed number of parameters
gr(for example, <tt>Int -&gt; Int -&gt; TermOutput</tt>).
gr
grFor capabilities which may contain variable-length padding, use
gr<a>tiGetOutput</a> instead.
tiGetOutput1 :: forall f. OutputCap f => String -> Capability f
class OutputCap f
class (Monoid s, OutputCap s) => TermStr s

-- | An action which sends output to the terminal. That output may mix
grplain text with control characters and escape sequences, along with
grdelays (called "padding") required by some older terminals.
data TermOutput

-- | Write the terminal output to the standard output device.
runTermOutput :: Terminal -> TermOutput -> IO ()

-- | Write the terminal output to the terminal or file managed by the given
gr<a>Handle</a>.
hRunTermOutput :: Handle -> Terminal -> TermOutput -> IO ()
termText :: String -> TermOutput

-- | Look up an output capability in the terminfo database.
tiGetOutput :: String -> Capability ([Int] -> LinesAffected -> TermOutput)

-- | A parameter to specify the number of lines affected. Some capabilities
gr(e.g., <tt>clear</tt> and <tt>dch1</tt>) use this parameter on some
grterminals to compute variable-length padding.
type LinesAffected = Int

-- | The class of monoids (types with an associative binary operation that
grhas an identity). Instances should satisfy the following laws:
gr
gr<ul>
gr<li><pre>x <a>&lt;&gt;</a> <a>mempty</a> = x</pre></li>
gr<li><pre><a>mempty</a> <a>&lt;&gt;</a> x = x</pre></li>
gr<li><tt>x <a>&lt;&gt;</a> (y <a>&lt;&gt;</a> z) = (x <a>&lt;&gt;</a>
gry) <a>&lt;&gt;</a> z</tt> (<a>Semigroup</a> law)</li>
gr<li><pre><a>mconcat</a> = <a>foldr</a> '(&lt;&gt;)'
gr<a>mempty</a></pre></li>
gr</ul>
gr
grThe method names refer to the monoid of lists under concatenation, but
grthere are many other instances.
gr
grSome types can be viewed as a monoid in more than one way, e.g. both
graddition and multiplication on numbers. In such cases we often define
gr<tt>newtype</tt>s and make those instances of <a>Monoid</a>, e.g.
gr<tt>Sum</tt> and <tt>Product</tt>.
gr
gr<b>NOTE</b>: <a>Semigroup</a> is a superclass of <a>Monoid</a> since
gr<i>base-4.11.0.0</i>.
class Semigroup a => Monoid a

-- | Identity of <a>mappend</a>
mempty :: Monoid a => a

-- | An associative operation
gr
gr<b>NOTE</b>: This method is redundant and has the default
grimplementation <tt><a>mappend</a> = '(&lt;&gt;)'</tt> since
gr<i>base-4.11.0.0</i>.
mappend :: Monoid a => a -> a -> a

-- | Fold a list using the monoid.
gr
grFor most types, the default definition for <a>mconcat</a> will be
grused, but the function is included in the class definition so that an
groptimized version can be provided for specific types.
mconcat :: Monoid a => [a] -> a

-- | An operator version of <a>mappend</a>.
(<#>) :: Monoid m => m -> m -> m
infixl 2 <#>
instance System.Console.Terminfo.Base.TermStr [GHC.Types.Char]
instance System.Console.Terminfo.Base.TermStr System.Console.Terminfo.Base.TermOutput
instance System.Console.Terminfo.Base.OutputCap [GHC.Types.Char]
instance System.Console.Terminfo.Base.OutputCap System.Console.Terminfo.Base.TermOutput
instance (GHC.Enum.Enum p, System.Console.Terminfo.Base.OutputCap f) => System.Console.Terminfo.Base.OutputCap (p -> f)
instance GHC.Base.Semigroup System.Console.Terminfo.Base.TermOutput
instance GHC.Base.Monoid System.Console.Terminfo.Base.TermOutput
instance GHC.Base.Functor System.Console.Terminfo.Base.Capability
instance GHC.Base.Applicative System.Console.Terminfo.Base.Capability
instance GHC.Base.Monad System.Console.Terminfo.Base.Capability
instance GHC.Base.Alternative System.Console.Terminfo.Base.Capability
instance GHC.Base.MonadPlus System.Console.Terminfo.Base.Capability
instance GHC.Show.Show System.Console.Terminfo.Base.SetupTermError
instance GHC.Exception.Exception System.Console.Terminfo.Base.SetupTermError


module System.Console.Terminfo.Color

-- | The maximum number of of colors on the screen.
termColors :: Capability Int
data Color
Black :: Color
Red :: Color
Green :: Color
Yellow :: Color
Blue :: Color
Magenta :: Color
Cyan :: Color
White :: Color
ColorNumber :: Int -> Color

-- | This capability temporarily sets the terminal's foreground color while
groutputting the given text, and then restores the terminal to its
grdefault foreground and background colors.
withForegroundColor :: TermStr s => Capability (Color -> s -> s)

-- | This capability temporarily sets the terminal's background color while
groutputting the given text, and then restores the terminal to its
grdefault foreground and background colors.
withBackgroundColor :: TermStr s => Capability (Color -> s -> s)

-- | Sets the foreground color of all further text output, using either the
gr<tt>setaf</tt> or <tt>setf</tt> capability.
setForegroundColor :: TermStr s => Capability (Color -> s)

-- | Sets the background color of all further text output, using either the
gr<tt>setab</tt> or <tt>setb</tt> capability.
setBackgroundColor :: TermStr s => Capability (Color -> s)

-- | Restores foreground/background colors to their original settings.
restoreDefaultColors :: TermStr s => Capability s
instance GHC.Classes.Ord System.Console.Terminfo.Color.Color
instance GHC.Classes.Eq System.Console.Terminfo.Color.Color
instance GHC.Show.Show System.Console.Terminfo.Color.Color


-- | This module provides capabilities for moving the cursor on the
grterminal.
module System.Console.Terminfo.Cursor
termLines :: Capability Int
termColumns :: Capability Int

-- | This flag specifies that the cursor wraps automatically from the last
grcolumn of one line to the first column of the next.
autoRightMargin :: Capability Bool

-- | This flag specifies that a backspace at column 0 wraps the cursor to
grthe last column of the previous line.
autoLeftMargin :: Capability Bool

-- | This flag specifies that the terminal does not perform
gr<a>autoRightMargin</a>-style wrapping when the character which would
grcause the wraparound is a control character. This is also known as the
gr"newline glitch" or "magic wrap".
gr
grFor example, in an 80-column terminal with this behavior, the
grfollowing will print single-spaced instead of double-spaced:
gr
gr<pre>
grreplicateM_ 5 $ putStr $ replicate 80 'x' ++ "\n"
gr</pre>
wraparoundGlitch :: Capability Bool

-- | The <tt>cr</tt> capability, which moves the cursor to the first column
grof the current line.
carriageReturn :: TermStr s => Capability s

-- | The <tt>nel</tt> capability, which moves the cursor to the first
grcolumn of the next line. It behaves like a carriage return followed by
gra line feed.
gr
grIf <tt>nel</tt> is not defined, this may be built out of other
grcapabilities.
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 :: Int -> Point
[row, col] :: Point -> Int
rowAddress :: TermStr s => Capability (Int -> s)
columnAddress :: TermStr s => Capability (Int -> s)


module System.Console.Terminfo.Edit

-- | Clear the screen, and move the cursor to the upper left.
clearScreen :: Capability (LinesAffected -> TermOutput)

-- | Clear from beginning of line to cursor.
clearBOL :: TermStr s => Capability s

-- | Clear from cursor to end of line.
clearEOL :: TermStr s => Capability s

-- | Clear display after cursor.
clearEOS :: Capability (LinesAffected -> TermOutput)


module System.Console.Terminfo.Effects

-- | Sound the audible bell.
bell :: TermStr s => Capability s

-- | Present a visual alert using the <tt>flash</tt> capability.
visualBell :: Capability TermOutput
data Attributes
Attributes :: Bool -> Attributes
[standoutAttr, underlineAttr, reverseAttr, blinkAttr, dimAttr, boldAttr, invisibleAttr, protectedAttr] :: Attributes -> Bool

-- | These attributes have all properties turned off.
defaultAttributes :: Attributes

-- | Sets the attributes on or off before outputting the given text, and
grthen turns them all off. This capability will always succeed;
grproperties which cannot be set in the current terminal will be
grignored.
withAttributes :: TermStr s => Capability (Attributes -> s -> s)

-- | Sets the attributes on or off. This capability will always succeed;
grproperties which cannot be set in the current terminal will be
grignored.
setAttributes :: TermStr s => Capability (Attributes -> s)

-- | Turns off all text attributes. This capability will always succeed,
grbut it has no effect in terminals which do not support text
grattributes.
allAttributesOff :: TermStr s => Capability s

-- | Turns on standout mode before outputting the given text, and then
grturns it off.
withStandout :: TermStr s => Capability (s -> s)

-- | Turns on underline mode before outputting the given text, and then
grturns it off.
withUnderline :: TermStr s => Capability (s -> s)

-- | Turns on bold mode before outputting the given text, and then turns
grall attributes off.
withBold :: TermStr s => Capability (s -> s)
enterStandoutMode :: TermStr s => Capability s
exitStandoutMode :: TermStr s => Capability s
enterUnderlineMode :: TermStr s => Capability s
exitUnderlineMode :: TermStr s => Capability s
reverseOn :: TermStr s => Capability s
blinkOn :: TermStr s => Capability s
boldOn :: TermStr s => Capability s
dimOn :: TermStr s => Capability s
invisibleOn :: TermStr s => Capability s
protectedOn :: TermStr s => Capability s


-- | The string capabilities in this module are the character sequences
grcorresponding to user input such as arrow keys and function keys.
module System.Console.Terminfo.Keys
keypadOn :: TermStr s => Capability s
keypadOff :: TermStr s => Capability s
keyUp :: Capability String
keyDown :: Capability String
keyLeft :: Capability String
keyRight :: Capability String

-- | Look up the control sequence for a given function sequence. For
grexample, <tt>functionKey 12</tt> retrieves the <tt>kf12</tt>
grcapability.
functionKey :: Int -> Capability String
keyBackspace :: Capability String
keyDeleteChar :: Capability String
keyHome :: Capability String
keyEnd :: Capability String
keyPageUp :: Capability String
keyPageDown :: Capability String
keyEnter :: Capability String


module System.Console.Terminfo
