diff options
author | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-06-01 09:04:32 +0200 |
---|---|---|
committer | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-06-01 09:04:32 +0200 |
commit | 9d695657b08638269b287cebdf7885f65d90f66b (patch) | |
tree | 0731a29d370ee5cba3ee28bd43c711072562ca1c | |
parent | 5a0f0980bbe5f816aab6d6ddae2bf0985e2cbe2f (diff) | |
download | stylish-haskell-9d695657b08638269b287cebdf7885f65d90f66b.tar.gz |
Can add new language pragmas if necessary
-rw-r--r-- | .stylish-haskell.yaml | 2 | ||||
-rw-r--r-- | src/StylishHaskell/Config.hs | 7 | ||||
-rw-r--r-- | src/StylishHaskell/Stylish/LanguagePragmas.hs | 15 | ||||
-rw-r--r-- | src/StylishHaskell/Stylish/UnicodeSyntax.hs | 15 |
4 files changed, 32 insertions, 7 deletions
diff --git a/.stylish-haskell.yaml b/.stylish-haskell.yaml index 8316895..66683ac 100644 --- a/.stylish-haskell.yaml +++ b/.stylish-haskell.yaml @@ -1,3 +1,5 @@ +unicode_syntax: {} + # Import cleanup imports: # Align import names and import lists diff --git a/src/StylishHaskell/Config.hs b/src/StylishHaskell/Config.hs index 2d9617f..c4eefa7 100644 --- a/src/StylishHaskell/Config.hs +++ b/src/StylishHaskell/Config.hs @@ -27,6 +27,7 @@ import qualified StylishHaskell.Stylish.Imports import qualified StylishHaskell.Stylish.LanguagePragmas import qualified StylishHaskell.Stylish.Tabs import qualified StylishHaskell.Stylish.TrailingWhitespace +import qualified StylishHaskell.Stylish.UnicodeSyntax -------------------------------------------------------------------------------- @@ -100,6 +101,7 @@ parseConfig (A.Object o) = Config . catMaybes <$> sequence , optional o "languages_pragmas" parseLanguagePragmas , optional o "tabs" parseTabs , optional o "trailing_whitespace" parseTrailingWhitespace + , optional o "unicode_syntax" parseUnicodeSyntax ] parseConfig _ = mzero @@ -125,3 +127,8 @@ parseTabs o = StylishHaskell.Stylish.Tabs.stylish parseTrailingWhitespace :: A.Object -> A.Parser Stylish parseTrailingWhitespace _ = return StylishHaskell.Stylish.TrailingWhitespace.stylish + + +-------------------------------------------------------------------------------- +parseUnicodeSyntax :: A.Object -> A.Parser Stylish +parseUnicodeSyntax _ = return StylishHaskell.Stylish.UnicodeSyntax.stylish diff --git a/src/StylishHaskell/Stylish/LanguagePragmas.hs b/src/StylishHaskell/Stylish/LanguagePragmas.hs index c819050..f4da813 100644 --- a/src/StylishHaskell/Stylish/LanguagePragmas.hs +++ b/src/StylishHaskell/Stylish/LanguagePragmas.hs @@ -1,6 +1,9 @@ -------------------------------------------------------------------------------- module StylishHaskell.Stylish.LanguagePragmas ( stylish + + -- * Utilities + , addLanguagePragma ) where @@ -51,3 +54,15 @@ stylish ls (module', _) uniques = nub $ sort $ concatMap snd pragmas' loc = firstLocation pragmas' changes = insert loc (prettyPragmas uniques) : deletes + + +-------------------------------------------------------------------------------- +-- | Add a LANGUAGE pragma to a module if it is not present already. +addLanguagePragma :: String -> H.Module H.SrcSpanInfo -> [Change String] +addLanguagePragma pragma modu + | pragma `elem` present = [] + | otherwise = [insert line ["{-# LANGUAGE " ++ pragma ++ "#-}"]] + where + pragmas' = pragmas (fmap linesFromSrcSpan modu) + present = concatMap snd pragmas' + line = if null pragmas' then 1 else firstLocation pragmas' diff --git a/src/StylishHaskell/Stylish/UnicodeSyntax.hs b/src/StylishHaskell/Stylish/UnicodeSyntax.hs index 308c15b..7ed96e3 100644 --- a/src/StylishHaskell/Stylish/UnicodeSyntax.hs +++ b/src/StylishHaskell/Stylish/UnicodeSyntax.hs @@ -1,22 +1,23 @@ -------------------------------------------------------------------------------- -{-# LANGUAGE UnicodeSyntax #-} +{-# LANGUAGE ViewPatterns #-} module StylishHaskell.Stylish.UnicodeSyntax ( stylish ) where -------------------------------------------------------------------------------- -import Data.List (isPrefixOf, sort) -import Data.Map (Map) -import qualified Data.Map as M -import Data.Maybe (maybeToList) -import qualified Language.Haskell.Exts.Annotated as H +import Data.List (isPrefixOf, sort) +import Data.Map (Map) +import qualified Data.Map as M +import Data.Maybe (maybeToList) +import qualified Language.Haskell.Exts.Annotated as H -------------------------------------------------------------------------------- import StylishHaskell.Block import StylishHaskell.Editor import StylishHaskell.Stylish +import StylishHaskell.Stylish.LanguagePragmas (addLanguagePragma) import StylishHaskell.Util @@ -121,7 +122,7 @@ between (startRow, startCol) (endRow, endCol) needle = stylish :: Stylish stylish ls (module', _) = applyChanges changes ls where - changes = replaceAll perLine ls + changes = addLanguagePragma "UnicodeSyntax" module' ++ replaceAll perLine ls perLine = sort $ groupPerLine $ typeSigs module' ls ++ contexts module' ls ++ |