summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMikhail Glushenkov <the.dead.shall.rise@gmail.com>2012-11-04 00:51:49 +0100
committerMikhail Glushenkov <the.dead.shall.rise@gmail.com>2012-11-05 10:53:04 +0100
commit04982b5bba719d84fdd8dd567af5493abf0dbd60 (patch)
tree02a2aafbe8454dbc5bac6c8286ec78828d6946c4 /src
parent7c96e69a4494aa0a1c41b1dcb5f65ff19bff64b6 (diff)
downloadstylish-haskell-04982b5bba719d84fdd8dd567af5493abf0dbd60.tar.gz
Add a new import alignment mode 'file'.
This mode is like 'global', but doesn't add paddding for non-existent qualified imports. For example, with 'global' import A import B is always transformed to import A import B even if there are no qualified imports in the whole file.
Diffstat (limited to 'src')
-rw-r--r--src/Language/Haskell/Stylish/Config.hs1
-rw-r--r--src/Language/Haskell/Stylish/Step/Imports.hs14
2 files changed, 12 insertions, 3 deletions
diff --git a/src/Language/Haskell/Stylish/Config.hs b/src/Language/Haskell/Stylish/Config.hs
index 346fcad..2593004 100644
--- a/src/Language/Haskell/Stylish/Config.hs
+++ b/src/Language/Haskell/Stylish/Config.hs
@@ -159,6 +159,7 @@ parseImports config o = Imports.step
where
aligns =
[ ("global", Imports.Global)
+ , ("file", Imports.File)
, ("group", Imports.Group)
, ("none", Imports.None)
]
diff --git a/src/Language/Haskell/Stylish/Step/Imports.hs b/src/Language/Haskell/Stylish/Step/Imports.hs
index 9d91995..476e6ec 100644
--- a/src/Language/Haskell/Stylish/Step/Imports.hs
+++ b/src/Language/Haskell/Stylish/Step/Imports.hs
@@ -24,6 +24,7 @@ import Language.Haskell.Stylish.Util
--------------------------------------------------------------------------------
data Align
= Global
+ | File
| Group
| None
deriving (Eq, Show)
@@ -144,8 +145,9 @@ prettyImport columns padQualified padName longest imp =
--------------------------------------------------------------------------------
-prettyImportGroup :: Int -> Align -> Int -> [H.ImportDecl LineBlock] -> Lines
-prettyImportGroup columns align longest imps =
+prettyImportGroup :: Int -> Align -> Bool -> Int -> [H.ImportDecl LineBlock]
+ -> Lines
+prettyImportGroup columns align padQual' longest imps =
concatMap (prettyImport columns padQual padName longest') $
sortBy compareImports imps
where
@@ -159,6 +161,7 @@ prettyImportGroup columns align longest imps =
Global -> True
Group -> any H.importQualified imps
None -> False
+ File -> padQual'
--------------------------------------------------------------------------------
@@ -169,10 +172,15 @@ step columns = makeStep "Imports" . step' columns
--------------------------------------------------------------------------------
step' :: Int -> Align -> Lines -> Module -> Lines
step' columns align ls (module', _) = flip applyChanges ls
- [ change block (const $ prettyImportGroup columns align longest importGroup)
+ [ change block (const $ prettyImportGroup columns align padQual
+ longest importGroup)
| (block, importGroup) <- groups
]
where
imps = map sortImportSpecs $ imports $ fmap linesFromSrcSpan module'
longest = longestImport imps
groups = groupAdjacent imps
+
+ padQual = case align of
+ File -> any H.importQualified imps
+ _ -> False