Layout NegApp, RecordUpd with pun; Add some AnnKW
parent
46ad20e8f9
commit
dd60900da4
|
@ -220,9 +220,11 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of
|
||||||
expDocLeft
|
expDocLeft
|
||||||
(docCols ColOpPrefix [appSep $ expDocOp, docSetBaseY expDocRight])
|
(docCols ColOpPrefix [appSep $ expDocOp, docSetBaseY expDocRight])
|
||||||
]
|
]
|
||||||
NegApp{} -> do
|
NegApp op _ -> do
|
||||||
-- TODO
|
opDoc <- docSharedWrapper layoutExpr op
|
||||||
briDocByExact lexpr
|
docSeq $ [ docLit $ Text.pack "-"
|
||||||
|
, opDoc
|
||||||
|
]
|
||||||
HsPar innerExp -> do
|
HsPar innerExp -> do
|
||||||
innerExpDoc <- docSharedWrapper layoutExpr innerExp
|
innerExpDoc <- docSharedWrapper layoutExpr innerExp
|
||||||
docAlt
|
docAlt
|
||||||
|
@ -401,11 +403,11 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of
|
||||||
, docLines
|
, docLines
|
||||||
[ docAddBaseY BrIndentRegular
|
[ docAddBaseY BrIndentRegular
|
||||||
$ docPar
|
$ docPar
|
||||||
(appSep $ docLit $ Text.pack "let")
|
(docLit $ Text.pack "let")
|
||||||
(docSetIndentLevel $ docLines $ return <$> bindDocs)
|
(docSetIndentLevel $ docLines $ return <$> bindDocs)
|
||||||
, docAddBaseY BrIndentRegular
|
, docAddBaseY BrIndentRegular
|
||||||
$ docPar
|
$ docPar
|
||||||
(appSep $ docLit $ Text.pack "in")
|
(docLit $ Text.pack "in")
|
||||||
(docSetIndentLevel $ expDoc1)
|
(docSetIndentLevel $ expDoc1)
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
@ -504,10 +506,16 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of
|
||||||
]
|
]
|
||||||
Nothing -> docEmpty
|
Nothing -> docEmpty
|
||||||
]
|
]
|
||||||
lineN = docLit $ Text.pack "}"
|
lineN = docSeq
|
||||||
|
[ docNodeAnnKW lexpr (Just AnnOpenC) docEmpty
|
||||||
|
, docLit $ Text.pack "}"
|
||||||
|
]
|
||||||
in [line1] ++ lineR ++ [lineN])
|
in [line1] ++ lineR ++ [lineN])
|
||||||
-- TODO oneliner (?)
|
-- TODO oneliner (?)
|
||||||
]
|
]
|
||||||
|
RecordCon lname _ _ (HsRecFields [] (Just 0)) -> do
|
||||||
|
let t = lrdrNameToText lname
|
||||||
|
docWrapNode lname $ docLit $ t <> Text.pack " {..}"
|
||||||
RecordCon{} ->
|
RecordCon{} ->
|
||||||
unknownNodeError "RecordCon with puns" lexpr
|
unknownNodeError "RecordCon with puns" lexpr
|
||||||
RecordUpd rExpr [] _ _ _ _ -> do
|
RecordUpd rExpr [] _ _ _ _ -> do
|
||||||
|
@ -527,12 +535,13 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of
|
||||||
-- singleline
|
-- singleline
|
||||||
[ docSetParSpacing
|
[ docSetParSpacing
|
||||||
$ docSeq
|
$ docSeq
|
||||||
[ appSep rExprDoc
|
[ docNodeAnnKW lexpr Nothing $ appSep rExprDoc
|
||||||
, appSep $ docLit $ Text.pack "{"
|
, appSep $ docLit $ Text.pack "{"
|
||||||
, appSep $ docSeq $ List.intersperse docCommaSep
|
, appSep $ docSeq $ List.intersperse docCommaSep
|
||||||
$ rFs <&> \case
|
$ rFs <&> \case
|
||||||
(lfield, fieldStr, Just fieldDoc) ->
|
(lfield, fieldStr, Just fieldDoc) ->
|
||||||
docSeq [ appSep $ docWrapNode lfield $ docLit fieldStr
|
docWrapNode lfield $ docSeq
|
||||||
|
[ appSep $ docLit fieldStr
|
||||||
, appSep $ docLit $ Text.pack "="
|
, appSep $ docLit $ Text.pack "="
|
||||||
, docForceSingleline fieldDoc
|
, docForceSingleline fieldDoc
|
||||||
]
|
]
|
||||||
|
@ -542,54 +551,61 @@ layoutExpr lexpr@(L _ expr) = docWrapNode lexpr $ case expr of
|
||||||
]
|
]
|
||||||
-- wild-indentation block
|
-- wild-indentation block
|
||||||
, docSeq
|
, docSeq
|
||||||
[ appSep rExprDoc
|
[ docNodeAnnKW lexpr Nothing $ appSep rExprDoc
|
||||||
, docSetBaseY $ docLines $ let
|
, docSetBaseY $ docLines $ let
|
||||||
line1 = docCols ColRecUpdate
|
line1 = docCols ColRecUpdate
|
||||||
[ appSep $ docLit $ Text.pack "{"
|
[ appSep $ docLit $ Text.pack "{"
|
||||||
, appSep $ docLit $ rF1n
|
, appSep $ docLit $ rF1n
|
||||||
, case rF1e of
|
, case rF1e of
|
||||||
Just x -> docSeq [ appSep $ docLit $ Text.pack "="
|
Just x -> docWrapNode rF1f $ docSeq
|
||||||
|
[ appSep $ docLit $ Text.pack "="
|
||||||
, docForceSingleline $ x
|
, docForceSingleline $ x
|
||||||
]
|
]
|
||||||
Nothing -> docEmpty
|
Nothing -> docEmpty
|
||||||
]
|
]
|
||||||
lineR = rFr <&> \(lfield, fText, fDoc) -> docCols ColRecUpdate
|
lineR = rFr <&> \(lfield, fText, fDoc) -> docWrapNode lfield $ docCols ColRecUpdate
|
||||||
[ appSep $ docLit $ Text.pack ","
|
[ appSep $ docLit $ Text.pack ","
|
||||||
, appSep $ docWrapNode lfield $ docLit $ fText
|
, appSep $ docLit $ fText
|
||||||
, case fDoc of
|
, case fDoc of
|
||||||
Just x -> docSeq [ appSep $ docLit $ Text.pack "="
|
Just x -> docSeq [ appSep $ docLit $ Text.pack "="
|
||||||
, docForceSingleline x
|
, docForceSingleline x
|
||||||
]
|
]
|
||||||
Nothing -> docEmpty
|
Nothing -> docEmpty
|
||||||
]
|
]
|
||||||
lineN = docLit $ Text.pack "}"
|
lineN = docSeq
|
||||||
|
[ docNodeAnnKW lexpr (Just AnnOpenC) docEmpty
|
||||||
|
, docLit $ Text.pack "}"
|
||||||
|
]
|
||||||
in [line1] ++ lineR ++ [lineN]
|
in [line1] ++ lineR ++ [lineN]
|
||||||
]
|
]
|
||||||
-- strict indentation block
|
-- strict indentation block
|
||||||
, docSetParSpacing
|
, docSetParSpacing
|
||||||
$ docAddBaseY BrIndentRegular
|
$ docAddBaseY BrIndentRegular
|
||||||
$ docPar
|
$ docPar
|
||||||
rExprDoc
|
(docNodeAnnKW lexpr Nothing $ rExprDoc)
|
||||||
(docNonBottomSpacing $ docLines $ let
|
(docNonBottomSpacing $ docLines $ let
|
||||||
line1 = docCols ColRecUpdate
|
line1 = docWrapNode rF1f $ docCols ColRecUpdate
|
||||||
[ appSep $ docLit $ Text.pack "{"
|
[ appSep $ docLit $ Text.pack "{"
|
||||||
, appSep $ docWrapNode rF1f $ docLit $ rF1n
|
, appSep $ docLit $ rF1n
|
||||||
, case rF1e of
|
, case rF1e of
|
||||||
Just x -> docSeq [ appSep $ docLit $ Text.pack "="
|
Just x -> docSeq [ appSep $ docLit $ Text.pack "="
|
||||||
, docAddBaseY BrIndentRegular $ x
|
, docAddBaseY BrIndentRegular $ x
|
||||||
]
|
]
|
||||||
Nothing -> docEmpty
|
Nothing -> docEmpty
|
||||||
]
|
]
|
||||||
lineR = rFr <&> \(lfield, fText, fDoc) -> docCols ColRecUpdate
|
lineR = rFr <&> \(lfield, fText, fDoc) -> docWrapNode lfield $ docCols ColRecUpdate
|
||||||
[ appSep $ docLit $ Text.pack ","
|
[ appSep $ docLit $ Text.pack ","
|
||||||
, appSep $ docWrapNode lfield $ docLit $ fText
|
, appSep $ docLit $ fText
|
||||||
, case fDoc of
|
, case fDoc of
|
||||||
Just x -> docSeq [ appSep $ docLit $ Text.pack "="
|
Just x -> docSeq [ appSep $ docLit $ Text.pack "="
|
||||||
, docAddBaseY BrIndentRegular x
|
, docAddBaseY BrIndentRegular x
|
||||||
]
|
]
|
||||||
Nothing -> docEmpty
|
Nothing -> docEmpty
|
||||||
]
|
]
|
||||||
lineN = docLit $ Text.pack "}"
|
lineN = docSeq
|
||||||
|
[ docNodeAnnKW lexpr (Just AnnOpenC) docEmpty
|
||||||
|
, docLit $ Text.pack "}"
|
||||||
|
]
|
||||||
in [line1] ++ lineR ++ [lineN])
|
in [line1] ++ lineR ++ [lineN])
|
||||||
]
|
]
|
||||||
ExprWithTySig exp1 (HsIB _ (HsWC _ _ typ1)) -> do
|
ExprWithTySig exp1 (HsIB _ (HsWC _ _ typ1)) -> do
|
||||||
|
|
|
@ -236,14 +236,17 @@ layoutType ltype@(L _ typ) = docWrapNode ltype $ case typ of
|
||||||
let shouldForceML = case typ2 of
|
let shouldForceML = case typ2 of
|
||||||
(L _ HsFunTy{}) -> True
|
(L _ HsFunTy{}) -> True
|
||||||
_ -> False
|
_ -> False
|
||||||
docAlt
|
hasComments <- hasAnyCommentsBelow ltype
|
||||||
|
docAlt $
|
||||||
[ docSeq
|
[ docSeq
|
||||||
[ docForceSingleline typeDoc1
|
[ appSep $ docForceSingleline typeDoc1
|
||||||
, docWrapNodeRest ltype $ appSep $ docLit $ Text.pack " ->"
|
, appSep $ docLit $ Text.pack "->"
|
||||||
, docForceSingleline typeDoc2
|
, docForceSingleline typeDoc2
|
||||||
]
|
]
|
||||||
, docPar
|
| not hasComments
|
||||||
typeDoc1
|
] ++
|
||||||
|
[ docPar
|
||||||
|
(docNodeAnnKW ltype Nothing typeDoc1)
|
||||||
( docCols ColTyOpPrefix
|
( docCols ColTyOpPrefix
|
||||||
[ docWrapNodeRest ltype $ appSep $ docLit $ Text.pack "->"
|
[ docWrapNodeRest ltype $ appSep $ docLit $ Text.pack "->"
|
||||||
, docAddBaseY (BrIndentSpecial 3)
|
, docAddBaseY (BrIndentSpecial 3)
|
||||||
|
|
Loading…
Reference in New Issue