summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorJasper Van der Jeugt <m@jaspervdj.be>2012-05-31 23:09:11 +0200
committerJasper Van der Jeugt <m@jaspervdj.be>2012-05-31 23:09:11 +0200
commit32d477dde80515d8de062e5fcda9bc7d05b1ffde (patch)
tree28a6298f7d6ba41ecd6ff300854c7275fc97ec0d /src
parent8c24008ca7063f9bdd2401ac2aea89cadcb483e6 (diff)
downloadstylish-haskell-32d477dde80515d8de062e5fcda9bc7d05b1ffde.tar.gz
Option to disable import alignment
Diffstat (limited to 'src')
-rw-r--r--src/StylishHaskell/Config.hs5
-rw-r--r--src/StylishHaskell/Stylish/Imports.hs24
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