pager- Open up a pager, like 'less' or 'more'

CopyrightCopyright (c) 2015, Peter Harpending.
MaintainerPeter Harpending <>
PortabilityTested with GHC on Linux and FreeBSD
Safe HaskellNone






printOrPage :: Text -> IO () Source

If the user's terminal is long enough to display the (strict) Text, just print it. Else, send it to the pager.

The text needs to be strict, because the function counts the number of lines in the text. (This is also why it needs to be text, and not a bytestring, because Text has stuff like line-counting).

sendToPager :: ByteString -> IO () Source

Send a lazy ByteString to the user's $PAGER.

sendToPagerStrict :: ByteString -> IO () Source

Send a strict ByteString to the user's $PAGER.

findPager :: IO ByteString Source

This finds the user's $PAGER. This will fail if:

  • There is no $PATH variable
  • The user doesn't have a less or more installed, and hasn't specified an alternate program via $PAGER.

sendToPagerConduit :: Producer (ResourceT IO) ByteString -> IO () Source

This is what sendToPager uses on the back end. It takes a Producer, from Data.Conduit, and then sends the produced bytes to the pager's stdin.