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 analysis_server.src.services.completion.completion_dart; | 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/src/provisional/completion/completion_core.dart' | 10 import 'package:analysis_server/src/provisional/completion/completion_core.dart' |
10 show CompletionRequest; | 11 show CompletionContributor, CompletionRequest; |
11 import 'package:analysis_server/src/provisional/completion/completion_dart.dart'
; | 12 import 'package:analysis_server/src/provisional/completion/completion_dart.dart'
; |
12 import 'package:analysis_server/src/provisional/completion/dart/completion_targe
t.dart'; | 13 import 'package:analysis_server/src/provisional/completion/dart/completion_targe
t.dart'; |
13 import 'package:analysis_server/src/services/completion/completion_core.dart'; | 14 import 'package:analysis_server/src/services/completion/completion_core.dart'; |
| 15 import 'package:analysis_server/src/services/completion/dart/keyword_contributor
.dart'; |
14 import 'package:analyzer/file_system/file_system.dart'; | 16 import 'package:analyzer/file_system/file_system.dart'; |
15 import 'package:analyzer/src/context/context.dart' | 17 import 'package:analyzer/src/context/context.dart' |
16 show AnalysisFutureHelper, AnalysisContextImpl; | 18 show AnalysisFutureHelper, AnalysisContextImpl; |
17 import 'package:analyzer/src/generated/ast.dart'; | 19 import 'package:analyzer/src/generated/ast.dart'; |
18 import 'package:analyzer/src/generated/engine.dart' hide AnalysisContextImpl; | 20 import 'package:analyzer/src/generated/engine.dart' hide AnalysisContextImpl; |
19 import 'package:analyzer/src/generated/source.dart'; | 21 import 'package:analyzer/src/generated/source.dart'; |
20 import 'package:analyzer/src/task/dart.dart'; | 22 import 'package:analyzer/src/task/dart.dart'; |
21 import 'package:analyzer/task/dart.dart'; | 23 import 'package:analyzer/task/dart.dart'; |
22 | 24 |
23 /** | 25 /** |
| 26 * [DartCompletionManager] determines if a completion request is Dart specific |
| 27 * and forwards those requests to all [DartCompletionContributor]s. |
| 28 */ |
| 29 class DartCompletionManager implements CompletionContributor { |
| 30 // TODO(danrubel) initialize using plugin API |
| 31 List<DartCompletionContributor> contributors = <DartCompletionContributor>[ |
| 32 new KeywordContributor(), |
| 33 ]; |
| 34 |
| 35 @override |
| 36 Future<List<CompletionSuggestion>> computeSuggestions( |
| 37 CompletionRequest request) { |
| 38 if (AnalysisEngine.isDartFileName(request.source.shortName)) { |
| 39 return _computeDartSuggestions( |
| 40 new DartCompletionRequestImpl.forRequest(request)); |
| 41 } |
| 42 return new Future.value(); |
| 43 } |
| 44 |
| 45 /** |
| 46 * Return a [Future] that completes with a list of suggestions |
| 47 * for the given completion [request]. |
| 48 */ |
| 49 Future<List<CompletionSuggestion>> _computeDartSuggestions( |
| 50 DartCompletionRequest request) async { |
| 51 List<CompletionSuggestion> suggestions = <CompletionSuggestion>[]; |
| 52 for (DartCompletionContributor contributor in contributors) { |
| 53 suggestions.addAll(await contributor.computeSuggestions(request)); |
| 54 } |
| 55 return suggestions; |
| 56 } |
| 57 } |
| 58 |
| 59 /** |
24 * The information about a requested list of completions within a Dart file. | 60 * The information about a requested list of completions within a Dart file. |
25 */ | 61 */ |
26 class DartCompletionRequestImpl extends CompletionRequestImpl | 62 class DartCompletionRequestImpl extends CompletionRequestImpl |
27 implements DartCompletionRequest { | 63 implements DartCompletionRequest { |
28 /** | 64 /** |
29 * The cached completion target or `null` if not computed yet. | 65 * The cached completion target or `null` if not computed yet. |
30 */ | 66 */ |
31 CompletionTarget _target; | 67 CompletionTarget _target; |
32 | 68 |
33 /** | 69 /** |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 | 127 |
92 @override | 128 @override |
93 CompletionTarget get target { | 129 CompletionTarget get target { |
94 if (_target == null) { | 130 if (_target == null) { |
95 CompilationUnit unit = context.computeResult(source, PARSED_UNIT); | 131 CompilationUnit unit = context.computeResult(source, PARSED_UNIT); |
96 _target = new CompletionTarget.forOffset(unit, offset); | 132 _target = new CompletionTarget.forOffset(unit, offset); |
97 } | 133 } |
98 return _target; | 134 return _target; |
99 } | 135 } |
100 } | 136 } |
OLD | NEW |