Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1442)

Unified Diff: pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart

Issue 1470373002: create new Dart specific completion contributor extension point (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: merge Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
index abd1eddb595f35fe19e7b628a0aa4928576bbaad..cc081074196c4f57f8dd1371dc3d5a915634afd4 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
@@ -7,9 +7,10 @@ library services.completion.dart.manager;
import 'dart:async';
import 'package:analysis_server/plugin/protocol/protocol.dart';
+import 'package:analysis_server/src/analysis_server.dart';
import 'package:analysis_server/src/provisional/completion/completion_core.dart'
show CompletionContributor, CompletionRequest;
-import 'package:analysis_server/src/provisional/completion/completion_dart.dart';
+import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart';
import 'package:analysis_server/src/services/completion/completion_core.dart';
import 'package:analysis_server/src/services/completion/dart/keyword_contributor.dart';
@@ -23,15 +24,18 @@ import 'package:analyzer/src/task/dart.dart';
import 'package:analyzer/task/dart.dart';
/**
+ * A factory for constructing the default set of [DartCompletionContributor]s.
+ * Do not call this function directly...
+ * use ServerPlugin.dartCompletionContributorFactories
+ */
+List<DartCompletionContributor> defaultDartCompletionContributorFactory() =>
+ [new KeywordContributor(),];
+
+/**
* [DartCompletionManager] determines if a completion request is Dart specific
* and forwards those requests to all [DartCompletionContributor]s.
*/
class DartCompletionManager implements CompletionContributor {
- // TODO(danrubel) initialize using plugin API
- List<DartCompletionContributor> contributors = <DartCompletionContributor>[
- new KeywordContributor(),
- ];
-
@override
Future<List<CompletionSuggestion>> computeSuggestions(
CompletionRequest request) {
@@ -48,6 +52,15 @@ class DartCompletionManager implements CompletionContributor {
*/
Future<List<CompletionSuggestion>> _computeDartSuggestions(
DartCompletionRequest request) async {
+ // Build the Dart specific completion contributors
+ List<DartCompletionContributor> contributors =
+ <DartCompletionContributor>[];
+ for (DartCompletionContributorFactory contributorFactory
+ in request.serverPlugin.dartCompletionContributorFactories) {
+ contributors.addAll(contributorFactory());
+ }
+
+ // Request Dart specific completions from each contributor
List<CompletionSuggestion> suggestions = <CompletionSuggestion>[];
for (DartCompletionContributor contributor in contributors) {
suggestions.addAll(await contributor.computeSuggestions(request));
@@ -76,13 +89,13 @@ class DartCompletionRequestImpl extends CompletionRequestImpl
* Initialize a newly created completion request based on the given request.
*/
factory DartCompletionRequestImpl.forRequest(CompletionRequest request) {
- return new DartCompletionRequestImpl._(request.context,
+ return new DartCompletionRequestImpl._(request.server, request.context,
request.resourceProvider, request.source, request.offset);
}
- DartCompletionRequestImpl._(AnalysisContext context,
+ DartCompletionRequestImpl._(AnalysisServer server, AnalysisContext context,
ResourceProvider resourceProvider, Source source, int offset)
- : super(context, resourceProvider, source, offset);
+ : super(server, context, resourceProvider, source, offset);
@override
Future<CompilationUnit> resolveDeclarationsInScope() async {

Powered by Google App Engine
This is Rietveld 408576698