diff options
author | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-05-31 23:09:11 +0200 |
---|---|---|
committer | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-05-31 23:09:11 +0200 |
commit | 32d477dde80515d8de062e5fcda9bc7d05b1ffde (patch) | |
tree | 28a6298f7d6ba41ecd6ff300854c7275fc97ec0d /src | |
parent | 8c24008ca7063f9bdd2401ac2aea89cadcb483e6 (diff) | |
download | stylish-haskell-32d477dde80515d8de062e5fcda9bc7d05b1ffde.tar.gz |
Option to disable import alignment
Diffstat (limited to 'src')
-rw-r--r-- | src/StylishHaskell/Config.hs | 5 | ||||
-rw-r--r-- | src/StylishHaskell/Stylish/Imports.hs | 24 |
2 files changed, 18 insertions, 11 deletions
diff --git a/src/StylishHaskell/Config.hs b/src/StylishHaskell/Config.hs index 83518b9..2d9617f 100644 --- a/src/StylishHaskell/Config.hs +++ b/src/StylishHaskell/Config.hs @@ -43,7 +43,7 @@ instance FromJSON Config where -------------------------------------------------------------------------------- defaultConfig :: Config defaultConfig = Config $ - [ StylishHaskell.Stylish.Imports.stylish + [ StylishHaskell.Stylish.Imports.stylish True , StylishHaskell.Stylish.LanguagePragmas.stylish , StylishHaskell.Stylish.TrailingWhitespace.stylish ] @@ -106,7 +106,8 @@ parseConfig _ = mzero -------------------------------------------------------------------------------- parseImports :: A.Object -> A.Parser Stylish -parseImports _ = return StylishHaskell.Stylish.Imports.stylish +parseImports o = StylishHaskell.Stylish.Imports.stylish + <$> o A..: "align" -------------------------------------------------------------------------------- diff --git a/src/StylishHaskell/Stylish/Imports.hs b/src/StylishHaskell/Stylish/Imports.hs index 5229d48..2adb911 100644 --- a/src/StylishHaskell/Stylish/Imports.hs +++ b/src/StylishHaskell/Stylish/Imports.hs @@ -82,27 +82,33 @@ sortImportSpecs imp = imp {H.importSpecs = fmap sort $ H.importSpecs imp} -------------------------------------------------------------------------------- -prettyImport :: Int -> H.ImportDecl l -> String -prettyImport longest imp = unwords $ concat +prettyImport :: Bool -> Int -> H.ImportDecl l -> String +prettyImport align longest imp = unwords $ concat [ ["import"] - , [if H.importQualified imp then "qualified" else " "] - , [(if hasExtras then padRight longest else id) (importName imp)] + , qualified + , [(if hasExtras && align then padRight longest else id) (importName imp)] , ["as " ++ as | H.ModuleName _ as <- maybeToList $ H.importAs imp] , [H.prettyPrint specs | specs <- maybeToList $ H.importSpecs imp] ] where hasExtras = isJust (H.importAs imp) || isJust (H.importSpecs imp) + qualified + | H.importQualified imp = ["qualified"] + | align = [" "] + | otherwise = [] + -------------------------------------------------------------------------------- -prettyImportGroup :: Int -> [H.ImportDecl LineBlock] -> Lines -prettyImportGroup longest = map (prettyImport longest) . sortBy compareImports +prettyImportGroup :: Bool -> Int -> [H.ImportDecl LineBlock] -> Lines +prettyImportGroup align longest = + map (prettyImport align longest) . sortBy compareImports -------------------------------------------------------------------------------- -stylish :: Stylish -stylish ls (module', _) = flip applyChanges ls - [ change block (prettyImportGroup longest importGroup) +stylish :: Bool -> Stylish +stylish align ls (module', _) = flip applyChanges ls + [ change block (prettyImportGroup align longest importGroup) | (block, importGroup) <- groups ] where |