@@ -17,7 +17,6 @@ import qualified Data.ByteString as BS
17
17
import Data.Hashable
18
18
import Data.HashMap.Strict (HashMap )
19
19
import qualified Data.HashMap.Strict as HashMap
20
- import Data.List (find )
21
20
import qualified Data.List.NonEmpty as NE
22
21
import qualified Data.Maybe as Maybe
23
22
import qualified Data.Text as T
@@ -47,42 +46,14 @@ import Ide.Plugin.Cabal.Completion.Types (ParseCabalCommon
47
46
ParseCabalFields (.. ),
48
47
ParseCabalFile (.. ))
49
48
import qualified Ide.Plugin.Cabal.Completion.Types as Types
49
+ import Ide.Plugin.Cabal.Definition (gotoDefinition )
50
50
import qualified Ide.Plugin.Cabal.Diagnostics as Diagnostics
51
51
import qualified Ide.Plugin.Cabal.FieldSuggest as FieldSuggest
52
52
import qualified Ide.Plugin.Cabal.LicenseSuggest as LicenseSuggest
53
53
import Ide.Plugin.Cabal.Orphans ()
54
54
import Ide.Plugin.Cabal.Outline
55
55
import qualified Ide.Plugin.Cabal.Parse as Parse
56
56
import Ide.Plugin.Error
57
- import Data.HashMap.Strict (HashMap )
58
- import qualified Data.HashMap.Strict as HashMap
59
- import qualified Data.List.NonEmpty as NE
60
- import qualified Data.Maybe as Maybe
61
- import qualified Data.Text as T
62
- import qualified Data.Text.Encoding as Encoding
63
- import Data.Typeable
64
- import Development.IDE as D
65
- import Development.IDE.Core.Shake (restartShakeSession )
66
- import qualified Development.IDE.Core.Shake as Shake
67
- import Development.IDE.Graph (Key , alwaysRerun )
68
- import qualified Development.IDE.Plugin.Completions.Logic as Ghcide
69
- import Development.IDE.Types.Shake (toKey )
70
- import qualified Distribution.Fields as Syntax
71
- import qualified Distribution.Parsec.Position as Syntax
72
- import GHC.Generics
73
- import qualified Ide.Plugin.Cabal.Completion.Completer.Types as CompleterTypes
74
- import qualified Ide.Plugin.Cabal.Completion.Completions as Completions
75
- import Ide.Plugin.Cabal.Completion.Types (ParseCabalCommonSections (ParseCabalCommonSections ),
76
- ParseCabalFields (.. ),
77
- ParseCabalFile (.. ))
78
- import qualified Ide.Plugin.Cabal.Completion.Types as Types
79
- import Ide.Plugin.Cabal.Definition (gotoDefinition )
80
- import qualified Ide.Plugin.Cabal.Diagnostics as Diagnostics
81
- import qualified Ide.Plugin.Cabal.FieldSuggest as FieldSuggest
82
- import qualified Ide.Plugin.Cabal.LicenseSuggest as LicenseSuggest
83
- import Ide.Plugin.Cabal.Orphans ()
84
- import Ide.Plugin.Cabal.Outline
85
- import qualified Ide.Plugin.Cabal.Parse as Parse
86
57
import Ide.Types
87
58
import qualified Language.LSP.Protocol.Lens as JL
88
59
import qualified Language.LSP.Protocol.Message as LSP
@@ -91,8 +62,8 @@ import qualified Language.LSP.VFS as VFS
91
62
import Text.Regex.TDFA
92
63
93
64
94
- import qualified Data.Text ()
95
- import qualified Ide.Plugin.Cabal.CabalAdd as CabalAdd
65
+ import qualified Data.Text ()
66
+ import qualified Ide.Plugin.Cabal.CabalAdd as CabalAdd
96
67
97
68
data Log
98
69
= LogModificationTime NormalizedFilePath FileVersion
@@ -344,34 +315,6 @@ fieldSuggestCodeAction recorder ide _ (CodeActionParams _ _ (TextDocumentIdentif
344
315
let completionTexts = fmap (^. JL. label) completions
345
316
pure $ FieldSuggest. fieldErrorAction uri fieldName completionTexts _range
346
317
347
- -- | CodeActions for going to definitions.
348
- --
349
- -- Provides a CodeAction for going to a definition when clicking on an identifier.
350
- -- The definition is found by traversing the sections and comparing their name to
351
- -- the clicked identifier.
352
- --
353
- -- TODO: Support more definitions than sections.
354
- gotoDefinition :: PluginMethodHandler IdeState LSP. Method_TextDocumentDefinition
355
- gotoDefinition ideState _ msgParam = do
356
- nfp <- getNormalizedFilePathE uri
357
- cabalFields <- runActionE " cabal-plugin.commonSections" ideState $ useE ParseCabalFields nfp
358
- case CabalFields. findTextWord cursor cabalFields of
359
- Nothing ->
360
- pure $ InR $ InR Null
361
- Just cursorText -> do
362
- commonSections <- runActionE " cabal-plugin.commonSections" ideState $ useE ParseCabalCommonSections nfp
363
- case find (isSectionArgName cursorText) commonSections of
364
- Nothing ->
365
- pure $ InR $ InR Null
366
- Just commonSection -> do
367
- pure $ InL $ Definition $ InL $ Location uri $ CabalFields. getFieldLSPRange commonSection
368
- where
369
- cursor = Types. lspPositionToCabalPosition (msgParam ^. JL. position)
370
- uri = msgParam ^. JL. textDocument . JL. uri
371
- isSectionArgName name (Syntax. Section _ sectionArgName _) = name == CabalFields. onelineSectionArgs sectionArgName
372
- isSectionArgName _ _ = False
373
-
374
-
375
318
cabalAddCodeAction :: PluginMethodHandler IdeState 'LSP.Method_TextDocumentCodeAction
376
319
cabalAddCodeAction state plId (CodeActionParams _ _ (TextDocumentIdentifier uri) _ CodeActionContext {_diagnostics= diags}) = do
377
320
maxCompls <- fmap maxCompletions . liftIO $ runAction " cabal.cabal-add" state getClientConfigAction
0 commit comments