Format let and in on a single line if they fit #97
|
@ -510,6 +510,11 @@ func = (abc, def)
|
||||||
func = (lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
func = (lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
|
||||||
, lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd)
|
, lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd)
|
||||||
|
|
||||||
|
#test let in on single line
|
||||||
|
foo =
|
||||||
|
let longIdentifierForShortValue = 1
|
||||||
|
in longIdentifierForShortValue + longIdentifierForShortValue
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
|
@ -531,6 +531,10 @@ layoutExpr lexpr@(L _ expr) = do
|
||||||
HsLet binds exp1 -> do
|
HsLet binds exp1 -> do
|
||||||
expDoc1 <- docSharedWrapper layoutExpr exp1
|
expDoc1 <- docSharedWrapper layoutExpr exp1
|
||||||
mBindDocs <- layoutLocalBinds binds
|
mBindDocs <- layoutLocalBinds binds
|
||||||
|
let
|
||||||
|
ifIndentLeftElse :: a -> a -> a
|
||||||
|
ifIndentLeftElse x y =
|
||||||
|
if indentPolicy == IndentPolicyLeft then x else y
|
||||||
-- this `docSetIndentLevel` might seem out of place, but is here due to
|
-- this `docSetIndentLevel` might seem out of place, but is here due to
|
||||||
-- ghc-exactprint's DP handling of "let" in particular.
|
-- ghc-exactprint's DP handling of "let" in particular.
|
||||||
-- Just pushing another indentation level is a straightforward approach
|
-- Just pushing another indentation level is a straightforward approach
|
||||||
|
@ -538,39 +542,36 @@ layoutExpr lexpr@(L _ expr) = do
|
||||||
-- if "let" is moved horizontally as part of the transformation, as the
|
-- if "let" is moved horizontally as part of the transformation, as the
|
||||||
-- comments before the first let item are moved horizontally with it.
|
-- comments before the first let item are moved horizontally with it.
|
||||||
docSetIndentLevel $ case mBindDocs of
|
docSetIndentLevel $ case mBindDocs of
|
||||||
Just [bindDoc] -> docAltFilter
|
Just [bindDoc] -> docAlt
|
||||||
[ ( True
|
[ docSeq
|
||||||
, docSeq
|
|
||||||
[ appSep $ docLit $ Text.pack "let"
|
[ appSep $ docLit $ Text.pack "let"
|
||||||
, appSep $ docForceSingleline $ return bindDoc
|
, appSep $ docForceSingleline $ return bindDoc
|
||||||
, appSep $ docLit $ Text.pack "in"
|
, appSep $ docLit $ Text.pack "in"
|
||||||
, docForceSingleline $ expDoc1
|
, docForceSingleline $ expDoc1
|
||||||
]
|
]
|
||||||
)
|
, docLines
|
||||||
, ( indentPolicy /= IndentPolicyLeft
|
[ docAlt
|
||||||
, docLines
|
[ docSeq
|
||||||
[ docSeq
|
[ appSep $ docLit $ Text.pack "let"
|
||||||
[ appSep $ docLit $ Text.pack "let"
|
, ifIndentLeftElse docForceSingleline docSetBaseAndIndent
|
||||||
, docSetBaseAndIndent $ return bindDoc
|
$ return bindDoc
|
||||||
]
|
]
|
||||||
, docSeq
|
, docAddBaseY BrIndentRegular
|
||||||
[ appSep $ docLit $ Text.pack "in "
|
$ docPar
|
||||||
, docSetBaseY $ expDoc1
|
(docLit $ Text.pack "let")
|
||||||
]
|
(docSetBaseAndIndent $ return bindDoc)
|
||||||
|
]
|
||||||
|
, docAlt
|
||||||
|
[ docSeq
|
||||||
|
[ appSep $ docLit $ Text.pack $ ifIndentLeftElse "in" "in "
|
||||||
|
, ifIndentLeftElse docForceSingleline docSetBaseAndIndent expDoc1
|
||||||
|
]
|
||||||
|
, docAddBaseY BrIndentRegular
|
||||||
|
$ docPar
|
||||||
|
(docLit $ Text.pack "in")
|
||||||
|
(docSetBaseY $ expDoc1)
|
||||||
|
]
|
||||||
]
|
]
|
||||||
)
|
|
||||||
, ( True
|
|
||||||
, docLines
|
|
||||||
[ docAddBaseY BrIndentRegular
|
|
||||||
$ docPar
|
|
||||||
(appSep $ docLit $ Text.pack "let")
|
|
||||||
(docSetBaseAndIndent $ return bindDoc)
|
|
||||||
, docAddBaseY BrIndentRegular
|
|
||||||
$ docPar
|
|
||||||
(appSep $ docLit $ Text.pack "in")
|
|
||||||
(docSetBaseY $ expDoc1)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
]
|
]
|
||||||
Just bindDocs@(_:_) -> docAltFilter
|
Just bindDocs@(_:_) -> docAltFilter
|
||||||
--either
|
--either
|
||||||
|
|
Loading…
Reference in New Issue