Index: pkg/analysis_server/lib/src/plugin/server_plugin.dart |
diff --git a/pkg/analysis_server/lib/src/plugin/server_plugin.dart b/pkg/analysis_server/lib/src/plugin/server_plugin.dart |
index c72ef9aa8ad438b00c9fbff5b02bb3caab5351f6..85cc38864c4ab5c8a6572f63aa4f03787b8a14ab 100644 |
--- a/pkg/analysis_server/lib/src/plugin/server_plugin.dart |
+++ b/pkg/analysis_server/lib/src/plugin/server_plugin.dart |
@@ -25,9 +25,12 @@ import 'package:analysis_server/src/domains/analysis/navigation_dart.dart'; |
import 'package:analysis_server/src/domains/analysis/occurrences_dart.dart'; |
import 'package:analysis_server/src/edit/edit_domain.dart'; |
import 'package:analysis_server/src/provisional/completion/completion_core.dart'; |
+import 'package:analysis_server/src/provisional/completion/dart/completion.dart'; |
+import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart'; |
import 'package:analysis_server/src/provisional/index/index.dart'; |
import 'package:analysis_server/src/provisional/index/index_core.dart'; |
import 'package:analysis_server/src/search/search_domain.dart'; |
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'; |
import 'package:analysis_server/src/services/correction/assist_internal.dart'; |
import 'package:analysis_server/src/services/correction/fix_internal.dart'; |
import 'package:analysis_server/src/services/index/index_contributor.dart'; |
@@ -67,6 +70,13 @@ class ServerPlugin implements Plugin { |
/** |
* The simple identifier of the extension point that allows plugins to |
+ * register Dart specific completion contributor factories. |
+ */ |
+ static const String DART_COMPLETION_CONTRIBUTOR_EXTENSION_POINT = |
+ 'dartCompletionContributor'; |
+ |
+ /** |
+ * The simple identifier of the extension point that allows plugins to |
* register domains. |
*/ |
static const String DOMAIN_EXTENSION_POINT = 'domain'; |
@@ -126,6 +136,12 @@ class ServerPlugin implements Plugin { |
ExtensionPoint completionContributorExtensionPoint; |
/** |
+ * The extension point that allows plugins to register Dart specific |
+ * completion contributor factories. |
+ */ |
+ ExtensionPoint dartCompletionContributorExtensionPoint; |
+ |
+ /** |
* The extension point that allows plugins to register domains with the |
* server. |
*/ |
@@ -193,6 +209,14 @@ class ServerPlugin implements Plugin { |
completionContributorExtensionPoint.extensions; |
/** |
+ * Return a list containing all of the Dart specific completion contributor |
+ * factories that were contributed. |
+ */ |
+ List< |
+ DartCompletionContributorFactory> get dartCompletionContributorFactories => |
+ dartCompletionContributorExtensionPoint.extensions; |
+ |
+ /** |
* Return a list containing all of the fix contributors that were contributed. |
*/ |
List<FixContributor> get fixContributors => |
@@ -256,6 +280,9 @@ class ServerPlugin implements Plugin { |
completionContributorExtensionPoint = registerExtensionPoint( |
COMPLETION_CONTRIBUTOR_EXTENSION_POINT, |
_validateCompletionContributorExtension); |
+ dartCompletionContributorExtensionPoint = registerExtensionPoint( |
+ DART_COMPLETION_CONTRIBUTOR_EXTENSION_POINT, |
+ _validateDartCompletionContributorExtension); |
domainExtensionPoint = registerExtensionPoint( |
DOMAIN_EXTENSION_POINT, _validateDomainExtension); |
fixContributorExtensionPoint = registerExtensionPoint( |
@@ -291,7 +318,9 @@ class ServerPlugin implements Plugin { |
// Register completion contributors. |
// |
// TODO(brianwilkerson) Register the completion contributors. |
-// registerExtension(COMPLETION_CONTRIBUTOR_EXTENSION_POINT_ID, ???); |
+ //registerExtension(COMPLETION_CONTRIBUTOR_EXTENSION_POINT_ID, ???); |
+ registerExtension(DART_COMPLETION_CONTRIBUTOR_EXTENSION_POINT_ID, |
+ defaultDartCompletionContributorFactory); |
// |
// Register analysis contributors. |
// |
@@ -379,6 +408,18 @@ class ServerPlugin implements Plugin { |
/** |
* Validate the given extension by throwing an [ExtensionError] if it is not a |
+ * valid Dart specific completion contributor. |
+ */ |
+ void _validateDartCompletionContributorExtension(Object extension) { |
+ if (extension is! DartCompletionContributorFactory) { |
+ String id = dartCompletionContributorExtensionPoint.uniqueIdentifier; |
+ throw new ExtensionError( |
+ 'Extensions to $id must be a DartCompletionContributorFactory'); |
+ } |
+ } |
+ |
+ /** |
+ * Validate the given extension by throwing an [ExtensionError] if it is not a |
* valid domain. |
*/ |
void _validateDomainExtension(Object extension) { |