hindent-4.3.3: Extensible Haskell pretty printer

Safe HaskellNone
LanguageHaskell98

HIndent.Styles.JohanTibell

Description

Stub module for Johan Tibell's style.

Documented here: https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md

Questions:

How to indent after a guarded alt/rhs? How to indent let? How to indent large ADT constructors types?

Synopsis

Documentation

shortName :: Int64 Source

A short function name.

data State Source

Empty state.

Constructors

State 

johanTibell :: Style Source

The printer style.

rhs :: Rhs NodeInfo -> Printer s () Source

Handle do specially and also space out guards more.

guardedRhs :: GuardedRhs NodeInfo -> Printer s () Source

Handle do specially.

Implement dangling right-hand-sides.

unguardedalt :: Rhs NodeInfo -> Printer s () Source

Unguarded case alts.

exp :: Exp NodeInfo -> Printer s () Source

Space out tuples.

Expression customizations.

decl :: Decl NodeInfo -> Printer s () Source

Pretty print type signatures like

foo :: (Show x,Read x) => (Foo -> Bar) -> Maybe Int -> (Char -> X -> Y) -> IO ()

Specially format records. Indent where clauses only 2 spaces.

qualConDecl :: QualConDecl NodeInfo -> Printer s () Source

Use special record display, used by dataDecl in a record scenario.

conDecl :: ConDecl NodeInfo -> Printer s () Source

Fields are preceded with a space.

recDecl :: ConDecl NodeInfo -> Printer s () Source

Record decls are formatted like: Foo { bar :: X }

isRecord :: QualConDecl t -> Bool Source

Is the decl a record?

isOverflow :: Printer s a -> Printer s Bool Source

Does printing the given thing overflow column limit? (e.g. 80)

isSingleLiner :: MonadState (PrintState s) m => m a -> m Bool Source

Is the given expression a single-liner when printed?

isShort :: Pretty ast => ast NodeInfo -> Printer s Bool Source

Is the expression "short"? Used for app heads.

isFlat :: Exp NodeInfo -> Printer s Bool Source

Is an expression flat?

fieldupdate :: FieldUpdate NodeInfo -> Printer s () Source

rhs on field update on the same line as lhs.

infixApp :: (Pretty ast, Pretty ast1, Pretty ast2) => Exp NodeInfo -> ast NodeInfo -> ast1 NodeInfo -> ast2 NodeInfo -> Maybe Int64 -> Printer s () Source