2
2
{-# LANGUAGE DeriveAnyClass #-}
3
3
{-# LANGUAGE DerivingStrategies #-}
4
4
{-# LANGUAGE ExplicitNamespaces #-}
5
+ {-# LANGUAGE LambdaCase #-}
5
6
{-# LANGUAGE OverloadedStrings #-}
6
7
{-# LANGUAGE PartialTypeSignatures #-}
7
8
{-# LANGUAGE RecordWildCards #-}
8
- {-# LANGUAGE LambdaCase #-}
9
9
10
10
module Ide.Plugin.Cabal.CabalAdd
11
11
( findResponsibleCabalFile
@@ -22,17 +22,26 @@ import Control.Monad.IO.Class (liftIO, MonadIO)
22
22
import Data.String (IsString )
23
23
import qualified Data.Text as T
24
24
import qualified Data.Text.Encoding as T
25
- import Development.IDE (IdeState (shakeExtras ), runIdeAction , useWithStale )
25
+ import Development.IDE (IdeState (shakeExtras ),
26
+ runIdeAction ,
27
+ useWithStale )
26
28
import Distribution.PackageDescription.Quirks (patchQuirks )
27
- import Ide.PluginUtils ( mkLspCommand , WithDeletions (SkipDeletions ), diffText )
29
+ import Ide.PluginUtils (WithDeletions (SkipDeletions ),
30
+ diffText ,
31
+ mkLspCommand )
28
32
import Ide.Types (CommandFunction ,
29
33
CommandId (CommandId ),
30
34
PluginId , pluginGetClientCapabilities , pluginSendRequest , HandlerM )
31
35
import Language.LSP.Protocol.Types (CodeAction (CodeAction ),
32
36
CodeActionKind (CodeActionKind_QuickFix ),
33
37
Diagnostic (.. ),
34
38
Null (Null ),
35
- type (|? ) (InR ), toNormalizedFilePath , TextDocumentIdentifier , VersionedTextDocumentIdentifier , ClientCapabilities , WorkspaceFoldersServerCapabilities , WorkspaceEdit , ApplyWorkspaceEditParams (ApplyWorkspaceEditParams ))
39
+ TextDocumentIdentifier ,
40
+ VersionedTextDocumentIdentifier ,
41
+ WorkspaceEdit ,
42
+ WorkspaceFoldersServerCapabilities ,
43
+ toNormalizedFilePath ,
44
+ type (|? ) (InR ), ClientCapabilities , ApplyWorkspaceEditParams (ApplyWorkspaceEditParams ))
36
45
import System.Directory (doesFileExist ,
37
46
listDirectory )
38
47
@@ -42,29 +51,29 @@ import Data.ByteString (ByteString)
42
51
import qualified Data.ByteString.Char8 as B
43
52
import Data.List.NonEmpty (NonEmpty (.. ),
44
53
fromList )
54
+ import Development.IDE.Core.Rules (runAction )
45
55
import Distribution.Client.Add as Add
46
56
import Distribution.Compat.Prelude (Generic )
47
- import Distribution.PackageDescription (packageDescription ,
48
- specVersion , GenericPackageDescription (GenericPackageDescription ))
57
+ import Distribution.PackageDescription (GenericPackageDescription (GenericPackageDescription ),
58
+ packageDescription ,
59
+ specVersion )
49
60
import Distribution.PackageDescription.Configuration (flattenPackageDescription )
50
61
import Distribution.Pretty (pretty )
51
62
import Distribution.Simple.BuildTarget (BuildTarget ,
52
63
buildTargetComponentName ,
53
64
readBuildTargets )
65
+ import Distribution.Simple.Utils (safeHead )
54
66
import Distribution.Verbosity (silent ,
55
67
verboseNoStderr )
68
+ import Ide.Plugin.Cabal.Completion.Types (ParseCabalFields (.. ),
69
+ ParseCabalFile (.. ))
56
70
import System.FilePath (dropFileName ,
57
71
makeRelative ,
58
72
splitPath ,
59
73
takeExtension ,
60
74
(</>) )
61
75
import Text.PrettyPrint (render )
62
76
import Text.Regex.TDFA
63
- import Distribution.Simple.Utils (safeHead )
64
- import Development.IDE.Core.Rules (runAction )
65
- import Ide.Plugin.Cabal.Completion.Types (ParseCabalFields (.. ),
66
- ParseCabalFile (.. ))
67
-
68
77
import Development.IDE.Core.RuleTypes (GetFileContents (.. ))
69
78
import Data.Text.Encoding (encodeUtf8 )
70
79
import Ide.Plugin.Cabal.Orphans ()
@@ -107,7 +116,7 @@ findResponsibleCabalFile haskellFilePath = do
107
116
objectsCabalExtension = filter (\ c -> takeExtension c == " .cabal" ) objectsWithPaths
108
117
cabalFiles <- filterM (\ c -> doesFileExist c) objectsCabalExtension
109
118
case safeHead cabalFiles of
110
- Nothing -> go ps
119
+ Nothing -> go ps
111
120
Just cabalFile -> pure $ Just cabalFile
112
121
113
122
@@ -188,7 +197,7 @@ command recorder state _ params@(CabalAddCommandParams {cabalPath = path, verTxt
188
197
let env = (state, caps, verTxtDocId)
189
198
edit <- getDependencyEdit recorder env path target (fromList [T. unpack specifiedDep])
190
199
void $ lift $ pluginSendRequest SMethod_WorkspaceApplyEdit (ApplyWorkspaceEditParams Nothing edit) (\ _ -> pure () )
191
- Logger. logWith recorder Logger. Info $ LogExecutedCommand
200
+ Logger. logWith recorder Logger. Info LogExecutedCommand
192
201
pure $ InR Null
193
202
194
203
@@ -223,7 +232,7 @@ getDependencyEdit recorder env cabalFilePath buildTarget dependency = do
223
232
inPackDescr <- useWithStale ParseCabalFile $ toNormalizedFilePath cabalFilePath
224
233
let mbCnfOrigContents = case snd . fst <$> contents of
225
234
Just (Just txt) -> Just $ encodeUtf8 txt
226
- _ -> Nothing
235
+ _ -> Nothing
227
236
let mbFields = fst <$> inFields
228
237
let mbPackDescr :: Maybe GenericPackageDescription = fst <$> inPackDescr
229
238
pure (mbCnfOrigContents, mbFields, mbPackDescr)
0 commit comments