packages feed

hls-brittany-plugin 1.0.1.1 → 1.0.2.0

raw patch · 2 files changed

+58/−46 lines, 2 filesdep −ghcdep ~brittanydep ~ghcidedep ~hls-plugin-apiPVP ok

version bump matches the API change (PVP)

Dependencies removed: ghc

Dependency ranges changed: brittany, ghcide, hls-plugin-api, hls-test-utils

API changes (from Hackage documentation)

+ Ide.Plugin.Brittany: type CMaybe = Option

Files

hls-brittany-plugin.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.4 name:               hls-brittany-plugin-version:            1.0.1.1+version:            1.0.2.0 synopsis:           Integration with the Brittany code formatter description:   Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>@@ -21,12 +21,12 @@   hs-source-dirs:   src   build-depends:     , base            >=4.12     && <5-    , brittany        >=0.13.1.0+    -- see https://github.com/lspitzner/brittany/issues/364+    , brittany        >=0.13.1.0 && < 0.14.0.1 || > 0.14.0.1     , filepath-    , ghc     , ghc-boot-th-    , ghcide          >=1.2      && <1.6-    , hls-plugin-api  >=1.1      && <1.3+    , ghcide          ^>=1.6+    , hls-plugin-api  ^>=1.3     , lens     , lsp-types     , text@@ -48,4 +48,4 @@     , base     , filepath     , hls-brittany-plugin-    , hls-test-utils       >=1.0 && <1.2+    , hls-test-utils        ^>=1.2
src/Ide/Plugin/Brittany.hs view
@@ -1,48 +1,53 @@+{-# LANGUAGE CPP          #-}+{-# LANGUAGE LambdaCase   #-}+{-# LANGUAGE MultiWayIf   #-} {-# LANGUAGE PolyKinds    #-} {-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE MultiWayIf   #-}-{-# LANGUAGE LambdaCase   #-} module Ide.Plugin.Brittany where -import           Control.Exception           (bracket_)+import           Control.Exception                               (bracket_) import           Control.Lens import           Control.Monad.IO.Class-import           Control.Monad.Trans.Maybe   (MaybeT, runMaybeT)-import           Data.Maybe                  (mapMaybe, maybeToList, fromMaybe)+import           Control.Monad.Trans.Maybe                       (MaybeT,+                                                                  runMaybeT)+import           Data.Maybe                                      (fromMaybe,+                                                                  mapMaybe,+                                                                  maybeToList) import           Data.Semigroup-import           Data.Text                   (Text)-import qualified Data.Text                   as T-import           Development.IDE             hiding (pluginHandlers)-import qualified Development.IDE.GHC.Compat  as GHC hiding (Cpp)-import qualified DynFlags                    as D-import qualified EnumSet                     as S+import           Data.Text                                       (Text)+import qualified Data.Text                                       as T+import           Development.IDE                                 hiding+                                                                 (pluginHandlers)+import qualified Development.IDE.GHC.Compat                      as GHC hiding+                                                                        (Cpp)+import qualified Development.IDE.GHC.Compat.Util                 as GHC import           GHC.LanguageExtensions.Type import           Ide.PluginUtils import           Ide.Types import           Language.Haskell.Brittany-import           Language.LSP.Types          as J-import qualified Language.LSP.Types.Lens     as J-import           System.Environment          (setEnv, unsetEnv)+import           Language.LSP.Types                              as J+import qualified Language.LSP.Types.Lens                         as J+import           System.Environment                              (setEnv,+                                                                  unsetEnv) import           System.FilePath  -- These imports are for the temporary pPrintText & can be removed when -- issue #2005 is resolved-import           Language.Haskell.Brittany.Internal.Config.Types+import           Control.Monad.Trans.Class                       (lift)+import qualified Control.Monad.Trans.Except                      as ExceptT+import           Data.CZipWith+import qualified Data.List                                       as List+import qualified Data.Text                                       as Text+import qualified Data.Text.Lazy                                  as TextL+import qualified GHC.LanguageExtensions.Type                     as GHC import           Language.Haskell.Brittany.Internal+import           Language.Haskell.Brittany.Internal.Config+import           Language.Haskell.Brittany.Internal.Config.Types+import           Language.Haskell.Brittany.Internal.Obfuscation import           Language.Haskell.Brittany.Internal.Types import           Language.Haskell.Brittany.Internal.Utils-import           Language.Haskell.Brittany.Internal.Obfuscation-import           Language.Haskell.Brittany.Internal.Config-import           Data.CZipWith-import           Control.Monad.Trans.Class (lift)-import qualified Control.Monad.Trans.Except as ExceptT-import qualified Data.List as List-import qualified Data.Text as Text-import qualified Language.Haskell.GHC.ExactPrint as ExactPrint-import qualified Language.Haskell.GHC.ExactPrint.Types as ExactPrint-import qualified Data.Text.Lazy as TextL-import qualified GHC-import qualified GHC.LanguageExtensions.Type as GHC+import qualified Language.Haskell.GHC.ExactPrint                 as ExactPrint+import qualified Language.Haskell.GHC.ExactPrint.Types           as ExactPrint   descriptor :: PluginId -> PluginDescriptor IdeState@@ -73,14 +78,14 @@ -- Errors may be presented to the user. formatText   :: MonadIO m-  => D.DynFlags+  => GHC.DynFlags   -> Maybe FilePath -- ^ Path to configs. If Nothing, default configs will be used.   -> FormattingOptions -- ^ Options for the formatter such as indentation.   -> Text -- ^ Text to format   -> m (Either [BrittanyError] Text) -- ^ Either formatted Text or a error from Brittany. formatText df confFile opts text =   liftIO $ runBrittany tabSize df confFile text-  where tabSize = opts ^. J.tabSize+  where tabSize = fromIntegral $ opts ^. J.tabSize  -- | Recursively search in every directory of the given filepath for brittany.yaml. -- If no such file has been found, return Nothing.@@ -95,7 +100,7 @@ -- Returns either a list of Brittany Errors or the reformatted text. -- May not throw an exception. runBrittany :: Int              -- ^ tab  size-            -> D.DynFlags+            -> GHC.DynFlags             -> Maybe FilePath   -- ^ local config file             -> Text             -- ^ text to format             -> IO (Either [BrittanyError] Text)@@ -105,24 +110,31 @@                   mempty { _lconfig_indentAmount = opt (Last tabSize)                          }               , _conf_forward =-                  (mempty :: CForwardOptions Option)+                  (mempty :: CForwardOptions CMaybe)                     { _options_ghc = opt (getExtensions df)                     }               }--  config <- fromMaybeT (pure staticDefaultConfig) (readConfigsWithUserConfig cfg (maybeToList confPath))+  config <- fromMaybeT (pure staticDefaultConfig)+                       (readConfigsWithUserConfig cfg (maybeToList confPath))   (errsAndWarnings, resultText) <- pPrintText config text   if any isError errsAndWarnings then     return $ Left errsAndWarnings   else     return $ Right resultText -fromMaybeT :: Monad m => m a -> MaybeT m a -> m a-fromMaybeT def act = runMaybeT act >>= maybe def return-+#if MIN_VERSION_brittany(0,14,0)+type CMaybe = Maybe+opt :: a -> Maybe a+opt = Just+#else+type CMaybe = Option opt :: a -> Option a opt = Option . Just+#endif +fromMaybeT :: Monad m => m a -> MaybeT m a -> m a+fromMaybeT def act = runMaybeT act >>= maybe def return+ showErr :: BrittanyError -> String showErr (ErrorInput s)          = s showErr (ErrorMacroConfig  err input)@@ -139,8 +151,8 @@ showExtension RecordPuns       = Just "-XNamedFieldPuns" showExtension other            = Just $ "-X" ++ show other -getExtensions :: D.DynFlags -> [String]-getExtensions = mapMaybe showExtension . S.toList . D.extensionFlags+getExtensions :: GHC.DynFlags -> [String]+getExtensions = mapMaybe showExtension . GHC.toList . GHC.extensionFlags   -- | This is a temporary fix that allows us to format the text if brittany@@ -261,6 +273,6 @@  isError :: BrittanyError -> Bool isError = \case-    LayoutWarning{} -> False+    LayoutWarning{}    -> False     ErrorUnknownNode{} -> False-    _ -> True+    _                  -> True