@@ -49,8 +49,11 @@ import Development.IDE.GHC.Util (prettyPrint,
49
49
printRdrName )
50
50
import Development.IDE.Plugin.CodeAction.ExactPrint
51
51
import Development.IDE.Plugin.CodeAction.PositionIndexed
52
- import Development.IDE.Plugin.TypeLenses (suggestSignature )
52
+ import Development.IDE.Plugin.TypeLenses (GetGlobalBindingTypeSigs (GetGlobalBindingTypeSigs ),
53
+ GlobalBindingTypeSigsResult ,
54
+ suggestSignature )
53
55
import Development.IDE.Spans.Common
56
+ import Development.IDE.Spans.LocalBindings (Bindings )
54
57
import Development.IDE.Types.Exports
55
58
import Development.IDE.Types.HscEnvEq
56
59
import Development.IDE.Types.Location
@@ -97,13 +100,15 @@ codeAction state _ (CodeActionParams _ _ (TextDocumentIdentifier uri) _range Cod
97
100
let text = Rope. toText . (_text :: VirtualFile -> Rope. Rope ) <$> contents
98
101
mbFile = toNormalizedFilePath' <$> uriToFilePath uri
99
102
diag <- fmap (\ (_, _, d) -> d) . filter (\ (p, _, _) -> mbFile == Just p) <$> getDiagnostics state
100
- (ideOptions, join -> parsedModule, join -> env, join -> annotatedPS, join -> tcM, join -> har) <- runAction " CodeAction" state $
101
- (,,,,,) <$> getIdeOptions
103
+ (ideOptions, join -> parsedModule, join -> env, join -> annotatedPS, join -> tcM, join -> har, join -> bindings, join -> gblSigs ) <- runAction " CodeAction" state $
104
+ (,,,,,,, ) <$> getIdeOptions
102
105
<*> getParsedModule `traverse` mbFile
103
106
<*> use GhcSession `traverse` mbFile
104
107
<*> use GetAnnotatedParsedSource `traverse` mbFile
105
108
<*> use TypeCheck `traverse` mbFile
106
109
<*> use GetHieAst `traverse` mbFile
110
+ <*> use GetBindings `traverse` mbFile
111
+ <*> use GetGlobalBindingTypeSigs `traverse` mbFile
107
112
-- This is quite expensive 0.6-0.7s on GHC
108
113
pkgExports <- maybe mempty envPackageExports env
109
114
localExports <- readVar (exportsMap $ shakeExtras state)
@@ -112,7 +117,7 @@ codeAction state _ (CodeActionParams _ _ (TextDocumentIdentifier uri) _range Cod
112
117
df = ms_hspp_opts . pm_mod_summary <$> parsedModule
113
118
actions =
114
119
[ mkCA title [x] edit
115
- | x <- xs, (title, tedit) <- suggestAction exportsMap ideOptions parsedModule text df annotatedPS tcM har x
120
+ | x <- xs, (title, tedit) <- suggestAction exportsMap ideOptions parsedModule text df annotatedPS tcM har bindings gblSigs x
116
121
, let edit = WorkspaceEdit (Just $ Map. singleton uri $ List tedit) Nothing
117
122
]
118
123
actions' = caRemoveRedundantImports parsedModule text diag xs uri
@@ -144,12 +149,14 @@ suggestAction
144
149
-> Maybe (Annotated ParsedSource )
145
150
-> Maybe TcModuleResult
146
151
-> Maybe HieAstResult
152
+ -> Maybe Bindings
153
+ -> Maybe GlobalBindingTypeSigsResult
147
154
-> Diagnostic
148
155
-> [(T. Text , [TextEdit ])]
149
- suggestAction packageExports ideOptions parsedModule text df annSource tcM har diag =
156
+ suggestAction packageExports ideOptions parsedModule text df annSource tcM har bindings gblSigs diag =
150
157
concat
151
158
-- Order these suggestions by priority
152
- [ suggestSignature True diag
159
+ [ suggestSignature True gblSigs tcM bindings diag
153
160
, rewrite df annSource $ \ _ ps -> suggestExtendImport packageExports ps diag
154
161
, rewrite df annSource $ \ df ps ->
155
162
suggestImportDisambiguation df text ps diag
0 commit comments