11module Ide.Plugin.CabalFmt where
22
3- import Control.Exception (bracket_ )
3+ import CabalFmt
4+ import CabalFmt.Error
5+ import CabalFmt.Monad
6+ import CabalFmt.Options
7+ import Control.Exception (bracket_ )
48import Control.Monad.IO.Class
5- import Control.Monad.Trans.Maybe (MaybeT , runMaybeT )
6- import Data.Maybe (mapMaybe , maybeToList )
9+ import Control.Monad.Trans.Maybe (MaybeT , runMaybeT )
10+ import Data.Maybe (mapMaybe , maybeToList )
711import Data.Semigroup
8- import Data.Text (Text )
9- import qualified Data.Text as T
10- import Development.IDE hiding (pluginHandlers )
11- import Development.IDE.GHC.Compat (ModSummary (ms_hspp_opts ), topDir )
12+ import Data.Text (Text )
13+ import qualified Data.Text as T
14+ import Data.Text.Encoding
15+ import Development.IDE hiding (pluginHandlers )
16+ import Development.IDE.GHC.Compat (ModSummary (ms_hspp_opts ), topDir )
1217import Ide.PluginUtils
1318import Ide.Types
14- import Language.LSP.Types as J
15- import qualified Language.LSP.Types.Lens as J
16- import System.Environment (setEnv , unsetEnv )
19+ import Language.LSP.Types as J
20+ import qualified Language.LSP.Types.Lens as J
21+ import System.Environment (setEnv , unsetEnv )
1722import System.FilePath
18- import CabalFmt.Monad
19- import CabalFmt
20- import Data.Text.Encoding
21- import CabalFmt.Options
22- import CabalFmt.Error
2323
2424descriptor :: PluginId -> PluginDescriptor IdeState
25- descriptor plId = (defaultPluginDescriptor plId)
25+ descriptor plId = (defaultCabalPluginDescriptor plId)
2626 { pluginHandlers = mkFormattingHandlers provider
2727 }
2828
@@ -32,19 +32,19 @@ descriptor plId = (defaultPluginDescriptor plId)
3232provider :: FormattingHandler IdeState
3333provider ide typ contents nfp opts = liftIO $ do
3434 cabalFmtOutput <- runCabalFmtIO (Just $ takeDirectory fp) cabalFmtOpts (cabalFmt fp (encodeUtf8 contents))
35- case cabalFmtOutput of
35+ case cabalFmtOutput of
3636 Left err -> pure $ Left (cabalErrToRespErr err)
37- Right out -> do
37+ Right out -> do
3838 let fmtDiff = makeDiffTextEdit contents (T. pack out)
3939 pure $ Right fmtDiff
4040 where
4141 fp = fromNormalizedFilePath nfp
4242 cabalFmtOpts = defaultOptions {
43- optIndent = _tabSize opts,
43+ optIndent = _tabSize opts,
4444 optTabular = not $ _insertSpaces opts
4545 }
4646 cabalErrToRespErr :: Error -> ResponseError
4747 cabalErrToRespErr (SomeError err) = ResponseError UnknownErrorCode (T. pack err) Nothing
4848 cabalErrToRespErr (CabalParseError _ _ _ _ _) = ResponseError ParseError (T. pack " Failed to parse cabal file." ) Nothing
4949 cabalErrToRespErr (PanicCannotParseInput _) = ResponseError ParseError (T. pack " Failed to parse cabal file." ) Nothing
50- cabalErrToRespErr (WarningError err) = ResponseError ParseError (T. pack err) Nothing
50+ cabalErrToRespErr (WarningError err) = ResponseError ParseError (T. pack err) Nothing
0 commit comments