From fedfeaaecdd1b5a643dfe6dad31ea2f0dc1e64d3 Mon Sep 17 00:00:00 2001 From: Lennart Spitzner Date: Thu, 1 Sep 2016 13:49:30 +0200 Subject: [PATCH] Improve HsLam and OpApp layouting --- .../Haskell/Brittany/Layouters/Expr.hs | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/Language/Haskell/Brittany/Layouters/Expr.hs b/src/Language/Haskell/Brittany/Layouters/Expr.hs index 8bbfa4f..f82a833 100644 --- a/src/Language/Haskell/Brittany/Layouters/Expr.hs +++ b/src/Language/Haskell/Brittany/Layouters/Expr.hs @@ -56,13 +56,32 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of docCols ColCasePattern $ (patDocs <&> (\p -> docSeq [docForceSingleline p, docSeparator])) docAlt - [ docSetParSpacing + [ -- single line + docSeq + [ docLit $ Text.pack "\\" + , docWrapNode lmatch $ docForceSingleline funcPatternPartLine + , appSep $ docLit $ Text.pack "->" + , docWrapNode lgrhs $ docForceSingleline bodyDoc + ] + -- double line + , docSetParSpacing + $ docAddBaseY BrIndentRegular + $ docPar + (docSeq + [ docLit $ Text.pack "\\" + , docWrapNode lmatch $ appSep $ docForceSingleline funcPatternPartLine + , docLit $ Text.pack "->" + ]) + (docWrapNode lgrhs $ docForceSingleline bodyDoc) + -- wrapped par spacing + , docSetParSpacing $ docSeq [ docLit $ Text.pack "\\" , docWrapNode lmatch $ docForceSingleline funcPatternPartLine , appSep $ docLit $ Text.pack "->" , docWrapNode lgrhs $ docForceParSpacing bodyDoc ] + -- conservative , docSetParSpacing $ docAddBaseY BrIndentRegular $ docPar @@ -195,12 +214,12 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of , appSep $ docForceSingleline expDocOp , docForceSingleline expDocRight ] - , -- line + freely indented block for right expression - docSeq - [ appSep $ docForceSingleline expDocLeft - , appSep $ docForceSingleline expDocOp - , docSetBaseY $ docAddBaseY BrIndentRegular expDocRight - ] + -- , -- line + freely indented block for right expression + -- docSeq + -- [ appSep $ docForceSingleline expDocLeft + -- , appSep $ docForceSingleline expDocOp + -- , docSetBaseY $ docAddBaseY BrIndentRegular expDocRight + -- ] , -- two-line docAddBaseY BrIndentRegular $ docPar