Align applications on for same function, plus minor fixup

Arguments of two function applications will only be aligned
if the same function is called in both cases.

The column transform was altered slightly to fix #65
properly as well.

fixes #65, #128
pull/132/head
Lennart Spitzner 2018-03-22 01:19:56 +01:00
parent 46de13256b
commit 90a2f65ba7
5 changed files with 33 additions and 8 deletions

View File

@ -501,6 +501,21 @@ func
-> Proxy (str :: [*]) -> Proxy (str :: [*])
-> m (Tagged str String) -> m (Tagged str String)
#test issue 65
widgetsDyn =
[ [ vBox
[ padTop Max outputLinesWidget
, padRight Max wid1 <+> flowWidget -- alignment here is strange/buggy
, padBottom (Pad 5) help
]
]
| wid1 <- promptDyn
, (flowWidget, _) <- flowResultD
, outputLinesWidget <- outputLinesWidgetD
, help <- suggestionHelpBox
, parser <- cmdParserD
]
#test issue 67 #test issue 67
fmapuv :: U.Unbox a => (a -> b) -> U.Vector a -> V.Vector b fmapuv :: U.Unbox a => (a -> b) -> U.Vector a -> V.Vector b
fmapuv f xs = G.generate (G.length xs) (f . (xs G.!)) fmapuv f xs = G.generate (G.length xs) (f . (xs G.!))
@ -527,3 +542,8 @@ spanKey p q = case minViewWithKey q of
#test issue 125 #test issue 125
a :: () ':- () a :: () ':- ()
#test issue 128
func = do
createDirectoryIfMissing True path
openFile fileName AppendMode

View File

@ -455,7 +455,7 @@ alignColsLines bridocs = do -- colInfos `forM_` \colInfo -> do
(BDCols ColRecUpdate _) -> False (BDCols ColRecUpdate _) -> False
(BDCols ColListComp _) -> False (BDCols ColListComp _) -> False
(BDCols ColList _) -> False (BDCols ColList _) -> False
(BDCols ColApp _) -> True (BDCols ColApp{} _) -> True
(BDCols ColTuple _) -> False (BDCols ColTuple _) -> False
(BDCols ColTuples _) -> False (BDCols ColTuples _) -> False
(BDCols ColOpPrefix _) -> False (BDCols ColOpPrefix _) -> False

View File

@ -117,12 +117,16 @@ layoutExpr lexpr@(L _ expr) = do
(L _ (HsApp l r)) -> gather (r:list) l (L _ (HsApp l r)) -> gather (r:list) l
x -> (x, list) x -> (x, list)
let (headE, paramEs) = gather [exp2] exp1 let (headE, paramEs) = gather [exp2] exp1
let colsOrSequence = case headE of
L _ (HsVar (L _ (Unqual occname))) ->
docCols (ColApp $ Text.pack $ occNameString occname)
_ -> docSeq
headDoc <- docSharedWrapper layoutExpr headE headDoc <- docSharedWrapper layoutExpr headE
paramDocs <- docSharedWrapper layoutExpr `mapM` paramEs paramDocs <- docSharedWrapper layoutExpr `mapM` paramEs
docAltFilter docAltFilter
[ -- foo x y [ -- foo x y
( True ( True
, docCols ColApp , colsOrSequence
$ appSep (docForceSingleline headDoc) $ appSep (docForceSingleline headDoc)
: spacifyDocs (docForceSingleline <$> paramDocs) : spacifyDocs (docForceSingleline <$> paramDocs)
) )

View File

@ -23,11 +23,12 @@ transformSimplifyColumns = Uniplate.rewrite $ \case
BDLit{} -> Nothing BDLit{} -> Nothing
BDSeq list | any (\case BDSeq{} -> True BDSeq list | any (\case BDSeq{} -> True
BDEmpty{} -> True BDEmpty{} -> True
_ -> False) list -> Just $ BDSeq $ _ -> False) list -> Just $ BDSeq $ list >>= \case
filter isNotEmpty list >>= \case BDEmpty -> []
BDSeq l -> l BDSeq l -> l
x -> [x] x -> [x]
BDSeq (BDCols sig1 cols1@(_:_):rest) -> BDSeq (BDCols sig1 cols1@(_:_):rest)
| all (\case BDSeparator -> True; _ -> False) rest ->
Just $ BDCols sig1 (List.init cols1 ++ [BDSeq (List.last cols1:rest)]) Just $ BDCols sig1 (List.init cols1 ++ [BDSeq (List.last cols1:rest)])
BDLines lines | any (\case BDLines{} -> True BDLines lines | any (\case BDLines{} -> True
BDEmpty{} -> True BDEmpty{} -> True

View File

@ -174,7 +174,7 @@ data ColSig
| ColRecUpdate -- used for both RecCon and RecUpd. TODO: refactor to reflect? | ColRecUpdate -- used for both RecCon and RecUpd. TODO: refactor to reflect?
| ColListComp | ColListComp
| ColList | ColList
| ColApp | ColApp Text
| ColTuple | ColTuple
| ColTuples | ColTuples
| ColOpPrefix -- merge with ColList ? other stuff? | ColOpPrefix -- merge with ColList ? other stuff?