Restore aligning on non-function bindings

pull/3/head
Lennart Spitzner 2016-09-02 00:15:26 +02:00
parent 371fad303d
commit fc47372005
3 changed files with 10 additions and 9 deletions

View File

@ -84,7 +84,7 @@ layoutBind lbind@(L _ bind) = case bind of
clauseDocs <- layoutGrhs `mapM` grhss
mWhereDocs <- layoutLocalBinds whereBinds
binderDoc <- docLit $ Text.pack "="
fmap Right $ docWrapNode lbind $ layoutPatternBindFinal Text.empty binderDoc (Just patDoc) clauseDocs mWhereDocs
fmap Right $ docWrapNode lbind $ layoutPatternBindFinal Nothing binderDoc (Just patDoc) clauseDocs mWhereDocs
_ -> Right <$> unknownNodeError "" lbind
data BagBindOrSig = BagBind (LHsBindLR RdrName RdrName)
@ -144,10 +144,11 @@ layoutPatternBind mIdStr binderDoc lmatch@(L _ match@(Match _ pats _ (GRHSs grhs
$ (List.intersperse docSeparator $ docForceSingleline <$> ps)
clauseDocs <- docWrapNodeRest lmatch $ layoutGrhs `mapM` grhss
mWhereDocs <- layoutLocalBinds whereBinds
layoutPatternBindFinal (fromMaybe Text.empty mIdStr) binderDoc (Just patDoc) clauseDocs mWhereDocs
let alignmentToken = if null pats then Nothing else mIdStr
layoutPatternBindFinal alignmentToken binderDoc (Just patDoc) clauseDocs mWhereDocs
layoutPatternBindFinal :: Text -> BriDocNumbered -> Maybe BriDocNumbered -> [([BriDocNumbered], BriDocNumbered, LHsExpr RdrName)] -> Maybe [BriDocNumbered] -> ToBriDocM BriDocNumbered
layoutPatternBindFinal idStr binderDoc mPatDoc clauseDocs mWhereDocs = do
layoutPatternBindFinal :: Maybe Text -> BriDocNumbered -> Maybe BriDocNumbered -> [([BriDocNumbered], BriDocNumbered, LHsExpr RdrName)] -> Maybe [BriDocNumbered] -> ToBriDocM BriDocNumbered
layoutPatternBindFinal alignmentToken binderDoc mPatDoc clauseDocs mWhereDocs = do
let patPartInline = case mPatDoc of
Nothing -> []
Just patDoc -> [appSep $ docForceSingleline $ return patDoc]
@ -175,7 +176,7 @@ layoutPatternBindFinal idStr binderDoc mPatDoc clauseDocs mWhereDocs = do
]
docAlt $
-- one-line solution
[ docCols (ColBindingLine idStr)
[ docCols (ColBindingLine alignmentToken)
[ docSeq
(patPartInline ++ [guardPart])
, docSeq
@ -203,7 +204,7 @@ layoutPatternBindFinal idStr binderDoc mPatDoc clauseDocs mWhereDocs = do
] ++
-- one-line solution + where in next line(s)
[ docLines
$ [ docCols (ColBindingLine idStr)
$ [ docCols (ColBindingLine alignmentToken)
[ docSeq
(patPartInline ++ [guardPart])
, docSeq
@ -242,7 +243,7 @@ layoutPatternBindFinal idStr binderDoc mPatDoc clauseDocs mWhereDocs = do
-- pattern and exactly one clause in single line, body as par;
-- where in following lines
[ docLines
$ [ docCols (ColBindingLine idStr)
$ [ docCols (ColBindingLine alignmentToken)
[ docSeq
(patPartInline ++ [appSep guardPart])
, docSeq

View File

@ -392,7 +392,7 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of
binderDoc <- docLit $ Text.pack " ->"
docAddBaseY BrIndentRegular $ docPar
(docLit $ Text.pack "if")
(layoutPatternBindFinal Text.empty binderDoc Nothing clauseDocs Nothing)
(layoutPatternBindFinal Nothing binderDoc Nothing clauseDocs Nothing)
HsLet binds exp1 -> do
expDoc1 <- docSharedWrapper layoutExpr exp1
mBindDocs <- layoutLocalBinds binds

View File

@ -146,7 +146,7 @@ data ColSig
-- Has variable number of columns depending on the number of patterns.
| ColPatterns
| ColCasePattern
| ColBindingLine Text
| ColBindingLine (Maybe Text)
-- e.g. "func pat pat = expr"
-- 1111111111111222222
-- or "pat | stmt -> expr"