Implement `IndentPolicyLeft` for one HsApp case

pull/66/head
Lennart Spitzner 2017-09-21 23:27:21 +02:00
parent 4568bd3553
commit 88cbaf813a
1 changed files with 35 additions and 22 deletions

View File

@ -32,6 +32,11 @@ import Language.Haskell.Brittany.Internal.Layouters.Type
layoutExpr :: ToBriDoc HsExpr layoutExpr :: ToBriDoc HsExpr
layoutExpr lexpr@(L _ expr) = do layoutExpr lexpr@(L _ expr) = do
indentPolicy <- mAsk
<&> _conf_layout
.> _lconfig_indentPolicy
.> confUnpack
let allowFreeIndent = indentPolicy == IndentPolicyFree
docWrapNode lexpr $ case expr of docWrapNode lexpr $ case expr of
HsVar vname -> do HsVar vname -> do
docLit =<< lrdrNameToTextAnn vname docLit =<< lrdrNameToTextAnn vname
@ -114,29 +119,35 @@ layoutExpr lexpr@(L _ expr) = do
let (headE, paramEs) = gather [exp2] exp1 let (headE, paramEs) = gather [exp2] exp1
headDoc <- docSharedWrapper layoutExpr headE headDoc <- docSharedWrapper layoutExpr headE
paramDocs <- docSharedWrapper layoutExpr `mapM` paramEs paramDocs <- docSharedWrapper layoutExpr `mapM` paramEs
docAlt docAltFilter
[ -- foo x y [ -- foo x y
docCols ColApp ( True
$ appSep (docForceSingleline headDoc) , docCols ColApp
: spacifyDocs (docForceSingleline <$> paramDocs) $ appSep (docForceSingleline headDoc)
: spacifyDocs (docForceSingleline <$> paramDocs)
)
, -- foo x , -- foo x
-- y -- y
docSeq ( allowFreeIndent
[ appSep (docForceSingleline headDoc) , docSeq
, docSetBaseY [ appSep (docForceSingleline headDoc)
$ docAddBaseY BrIndentRegular , docSetBaseY
$ docLines $ docAddBaseY BrIndentRegular
$ (docForceSingleline <$> paramDocs) $ docLines
] $ (docForceSingleline <$> paramDocs)
]
)
, -- foo , -- foo
-- x -- x
-- y -- y
docSetParSpacing ( True
$ docAddBaseY BrIndentRegular , docSetParSpacing
$ docPar $ docAddBaseY BrIndentRegular
(docForceSingleline headDoc) $ docPar
( docNonBottomSpacing (docForceSingleline headDoc)
$ docLines paramDocs ( docNonBottomSpacing
$ docLines paramDocs
)
) )
, -- ( multi , -- ( multi
-- line -- line
@ -144,11 +155,13 @@ layoutExpr lexpr@(L _ expr) = do
-- ) -- )
-- x -- x
-- y -- y
docAddBaseY BrIndentRegular ( True
$ docPar , docAddBaseY BrIndentRegular
headDoc $ docPar
( docNonBottomSpacing headDoc
$ docLines paramDocs ( docNonBottomSpacing
$ docLines paramDocs
)
) )
] ]
HsApp exp1 exp2 -> do HsApp exp1 exp2 -> do