diff --git a/src/Language/Haskell/Brittany/Layouters/Expr.hs b/src/Language/Haskell/Brittany/Layouters/Expr.hs index 4509be6..bae34d7 100644 --- a/src/Language/Haskell/Brittany/Layouters/Expr.hs +++ b/src/Language/Haskell/Brittany/Layouters/Expr.hs @@ -577,7 +577,7 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of e1Doc <- docSharedWrapper layoutExpr e1 docSeq [ docLit $ Text.pack "[" - , docForceSingleline e1Doc + , appSep $ docForceSingleline e1Doc , docLit $ Text.pack "..]" ] FromThen e1 e2 -> do @@ -586,8 +586,8 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of docSeq [ docLit $ Text.pack "[" , docForceSingleline e1Doc - , docLit $ Text.pack "," - , docForceSingleline e2Doc + , appSep $ docLit $ Text.pack "," + , appSep $ docForceSingleline e2Doc , docLit $ Text.pack "..]" ] FromTo e1 eN -> do @@ -595,8 +595,8 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of eNDoc <- docSharedWrapper layoutExpr eN docSeq [ docLit $ Text.pack "[" - , docForceSingleline e1Doc - , docLit $ Text.pack ".." + , appSep $ docForceSingleline e1Doc + , appSep $ docLit $ Text.pack ".." , docForceSingleline eNDoc , docLit $ Text.pack "]" ] @@ -607,9 +607,9 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of docSeq [ docLit $ Text.pack "[" , docForceSingleline e1Doc - , docLit $ Text.pack "," - , docForceSingleline e2Doc - , docLit $ Text.pack ".." + , appSep $ docLit $ Text.pack "," + , appSep $ docForceSingleline e2Doc + , appSep $ docLit $ Text.pack ".." , docForceSingleline eNDoc , docLit $ Text.pack "]" ] diff --git a/src/Language/Haskell/Brittany/Layouters/Stmt.hs b/src/Language/Haskell/Brittany/Layouters/Stmt.hs index 6937ba3..f5c2815 100644 --- a/src/Language/Haskell/Brittany/Layouters/Stmt.hs +++ b/src/Language/Haskell/Brittany/Layouters/Stmt.hs @@ -33,8 +33,18 @@ layoutStmt lstmt@(L _ stmt) = docWrapNode lstmt $ case stmt of BindStmt lPat expr _ _ _ -> do patDoc <- docSharedWrapper layoutPat lPat expDoc <- docSharedWrapper layoutExpr expr - docCols ColBindStmt - [appSep patDoc, docSeq [appSep $ docLit $ Text.pack "<-", expDoc]] + docAlt + [ docCols ColBindStmt + [ appSep patDoc + , docSeq [appSep $ docLit $ Text.pack "<-", docForceParSpacing expDoc] + ] + , docCols ColBindStmt + [ appSep patDoc + , docAddBaseY BrIndentRegular + $ docPar (docLit $ Text.pack "<-") + (expDoc) + ] + ] LetStmt binds -> layoutLocalBinds binds >>= \case Nothing -> docLit $ Text.pack "let" -- i just tested @@ -55,7 +65,7 @@ layoutStmt lstmt@(L _ stmt) = docWrapNode lstmt $ case stmt of Just bindDocs@(bindDoc1:bindDocr) -> do -- TODO: the indentation here is screwed up. needs docSetIndentLevel and -- SetBaseY based layouting, not cols. - docAlt + docSetBaseY $ docAlt [ docLines $ (docCols ColDoLet [ appSep $ docLit $ Text.pack "let"