OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library services.completion.dart.manager; | 5 library services.completion.dart.manager; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
9 import 'package:analysis_server/plugin/protocol/protocol.dart'; | 9 import 'package:analysis_server/plugin/protocol/protocol.dart'; |
10 import 'package:analysis_server/src/provisional/completion/completion_core.dart' | 10 import 'package:analysis_server/src/provisional/completion/completion_core.dart' |
11 show CompletionContributor, CompletionRequest; | 11 show CompletionContributor, CompletionRequest; |
12 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.
dart'; | 12 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.
dart'; |
13 import 'package:analysis_server/src/provisional/completion/dart/completion_plugi
n.dart'; | 13 import 'package:analysis_server/src/provisional/completion/dart/completion_plugi
n.dart'; |
14 import 'package:analysis_server/src/provisional/completion/dart/completion_targe
t.dart'; | 14 import 'package:analysis_server/src/provisional/completion/dart/completion_targe
t.dart'; |
15 import 'package:analysis_server/src/services/completion/completion_core.dart'; | 15 import 'package:analysis_server/src/services/completion/completion_core.dart'; |
| 16 import 'package:analysis_server/src/services/completion/optype.dart'; |
16 import 'package:analysis_server/src/services/search/search_engine.dart'; | 17 import 'package:analysis_server/src/services/search/search_engine.dart'; |
17 import 'package:analyzer/file_system/file_system.dart'; | 18 import 'package:analyzer/file_system/file_system.dart'; |
18 import 'package:analyzer/src/context/context.dart' | 19 import 'package:analyzer/src/context/context.dart' |
19 show AnalysisFutureHelper, AnalysisContextImpl; | 20 show AnalysisFutureHelper, AnalysisContextImpl; |
20 import 'package:analyzer/src/generated/ast.dart'; | 21 import 'package:analyzer/src/generated/ast.dart'; |
21 import 'package:analyzer/src/generated/element.dart'; | 22 import 'package:analyzer/src/generated/element.dart'; |
22 import 'package:analyzer/src/generated/engine.dart' hide AnalysisContextImpl; | 23 import 'package:analyzer/src/generated/engine.dart' hide AnalysisContextImpl; |
23 import 'package:analyzer/src/generated/source.dart'; | 24 import 'package:analyzer/src/generated/source.dart'; |
24 import 'package:analyzer/src/task/dart.dart'; | 25 import 'package:analyzer/src/task/dart.dart'; |
25 import 'package:analyzer/task/dart.dart'; | 26 import 'package:analyzer/task/dart.dart'; |
26 import 'package:analysis_server/src/services/completion/optype.dart'; | |
27 | 27 |
28 /** | 28 /** |
29 * [DartCompletionManager] determines if a completion request is Dart specific | 29 * [DartCompletionManager] determines if a completion request is Dart specific |
30 * and forwards those requests to all [DartCompletionContributor]s. | 30 * and forwards those requests to all [DartCompletionContributor]s. |
31 */ | 31 */ |
32 class DartCompletionManager implements CompletionContributor { | 32 class DartCompletionManager implements CompletionContributor { |
33 @override | 33 @override |
34 Future<List<CompletionSuggestion>> computeSuggestions( | 34 Future<List<CompletionSuggestion>> computeSuggestions( |
35 CompletionRequest request) async { | 35 CompletionRequest request) async { |
36 if (!AnalysisEngine.isDartFileName(request.source.shortName)) { | 36 if (!AnalysisEngine.isDartFileName(request.source.shortName)) { |
37 return EMPTY_LIST; | 37 return EMPTY_LIST; |
38 } | 38 } |
39 | 39 |
| 40 DartCompletionRequestImpl dartRequest = |
| 41 await DartCompletionRequestImpl.from(request); |
| 42 |
| 43 // Don't suggest in comments. |
| 44 if (dartRequest.target.isCommentText) { |
| 45 return EMPTY_LIST; |
| 46 } |
| 47 |
40 // Request Dart specific completions from each contributor | 48 // Request Dart specific completions from each contributor |
41 DartCompletionRequestImpl dartRequest = | |
42 await DartCompletionRequestImpl.from(request); | |
43 List<CompletionSuggestion> suggestions = <CompletionSuggestion>[]; | 49 List<CompletionSuggestion> suggestions = <CompletionSuggestion>[]; |
44 for (DartCompletionContributor c in dartCompletionPlugin.contributors) { | 50 for (DartCompletionContributor c in dartCompletionPlugin.contributors) { |
45 suggestions.addAll(await c.computeSuggestions(dartRequest)); | 51 suggestions.addAll(await c.computeSuggestions(dartRequest)); |
46 } | 52 } |
47 return suggestions; | 53 return suggestions; |
48 } | 54 } |
49 } | 55 } |
50 | 56 |
51 /** | 57 /** |
52 * The information about a requested list of completions within a Dart file. | 58 * The information about a requested list of completions within a Dart file. |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 dotTarget = node.realTarget; | 235 dotTarget = node.realTarget; |
230 } | 236 } |
231 } | 237 } |
232 if (node is PrefixedIdentifier) { | 238 if (node is PrefixedIdentifier) { |
233 if (identical(node.identifier, target.entity)) { | 239 if (identical(node.identifier, target.entity)) { |
234 dotTarget = node.prefix; | 240 dotTarget = node.prefix; |
235 } | 241 } |
236 } | 242 } |
237 } | 243 } |
238 } | 244 } |
OLD | NEW |