summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorJasper Van der Jeugt <jaspervdj@gmail.com>2013-12-18 01:54:56 -0800
committerJasper Van der Jeugt <jaspervdj@gmail.com>2013-12-18 01:54:56 -0800
commit062d78eaf4ad1bc78ff03fc5d6831df26b558691 (patch)
tree5186e125bf61cf981872a7c45e1a8bb90c8f4fee /src
parent2188b248a37157ba1f5c35a8674890ed80d0a3ef (diff)
parentd2773448c20fef4439080f61c5262588be3992cb (diff)
downloadstylish-haskell-062d78eaf4ad1bc78ff03fc5d6831df26b558691.tar.gz
Merge pull request #34 from konn/master
Added new pragma style `line'
Diffstat (limited to 'src')
-rw-r--r--src/Language/Haskell/Stylish/Config.hs6
-rw-r--r--src/Language/Haskell/Stylish/Step/LanguagePragmas.hs29
2 files changed, 26 insertions, 9 deletions
diff --git a/src/Language/Haskell/Stylish/Config.hs b/src/Language/Haskell/Stylish/Config.hs
index 6c05e0a..2dd79a8 100644
--- a/src/Language/Haskell/Stylish/Config.hs
+++ b/src/Language/Haskell/Stylish/Config.hs
@@ -178,9 +178,9 @@ parseLanguagePragmas config o = LanguagePragmas.step
<*> o A..:? "remove_redundant" A..!= True
where
styles =
- [ ("vertical", LanguagePragmas.Vertical)
- , ("compact", LanguagePragmas.Compact)
- ]
+ [ ("vertical", LanguagePragmas.Vertical)
+ , ("compact", LanguagePragmas.Compact)
+ , ("compact_line", LanguagePragmas.CompactLine)]
--------------------------------------------------------------------------------
diff --git a/src/Language/Haskell/Stylish/Step/LanguagePragmas.hs b/src/Language/Haskell/Stylish/Step/LanguagePragmas.hs
index a39e88d..48db19b 100644
--- a/src/Language/Haskell/Stylish/Step/LanguagePragmas.hs
+++ b/src/Language/Haskell/Stylish/Step/LanguagePragmas.hs
@@ -14,16 +14,17 @@ import qualified Language.Haskell.Exts.Annotated as H
--------------------------------------------------------------------------------
-import Language.Haskell.Stylish.Block
-import Language.Haskell.Stylish.Editor
-import Language.Haskell.Stylish.Step
-import Language.Haskell.Stylish.Util
+import Language.Haskell.Stylish.Block
+import Language.Haskell.Stylish.Editor
+import Language.Haskell.Stylish.Step
+import Language.Haskell.Stylish.Util
--------------------------------------------------------------------------------
data Style
= Vertical
| Compact
+ | CompactLine
deriving (Eq, Show)
@@ -55,10 +56,27 @@ compactPragmas columns pragmas' = wrap columns "{-# LANGUAGE" 13 $
--------------------------------------------------------------------------------
+compactLinePragmas :: Int -> [String] -> Lines
+compactLinePragmas _ [] = []
+compactLinePragmas columns pragmas' =
+ let maxWidth = columns - 14
+ prags = map truncateComma $ wrap maxWidth "" 1 $
+ map (++ ",") (init pragmas') ++ [last pragmas']
+ longest = maximum $ map length prags
+ in map (wrapLANGUAGE . padRight longest) prags
+ where
+ wrapLANGUAGE ps = "{-# LANGUAGE" ++ ps ++ " #-}"
+
+truncateComma :: String -> String
+truncateComma "" = ""
+truncateComma xs
+ | last xs == ',' = init xs
+ | otherwise = xs
+
prettyPragmas :: Int -> Int -> Style -> [String] -> Lines
prettyPragmas _ longest Vertical = verticalPragmas longest
prettyPragmas columns _ Compact = compactPragmas columns
-
+prettyPragmas columns _ CompactLine = compactLinePragmas columns
--------------------------------------------------------------------------------
-- | Filter redundant (and duplicate) pragmas out of the groups. As a side
@@ -76,7 +94,6 @@ filterRedundant isRedundant' = snd . foldr filterRedundant' (S.empty, [])
xs' = S.fromList fxs `S.difference` known
known' = xs' `S.union` known
-
--------------------------------------------------------------------------------
step :: Int -> Style -> Bool -> Step
step columns style = makeStep "LanguagePragmas" . step' columns style