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 c008c1ca1ab627d124998f12883f9bc330d2bc33..4aa0c8f4364c3c032c5dbdc5855ee5acc9a7d1c9 100644 |
--- a/pkg/analysis_server/lib/src/plugin/server_plugin.dart |
+++ b/pkg/analysis_server/lib/src/plugin/server_plugin.dart |
@@ -31,7 +31,6 @@ import 'package:analysis_server/src/search/search_domain.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'; |
-import 'package:analyzer/file_system/file_system.dart'; |
import 'package:analyzer/src/generated/engine.dart'; |
import 'package:plugin/plugin.dart'; |
@@ -48,9 +47,10 @@ typedef RequestHandler RequestHandlerFactory(AnalysisServer server); |
class ServerPlugin implements Plugin { |
/** |
* The simple identifier of the extension point that allows plugins to |
- * register functions that can cause files to be analyzed. |
+ * register file patterns that will cause files to be analyzed. |
*/ |
- static const String ANALYZE_FILE_EXTENSION_POINT = 'analyzeFile'; |
+ static const String ANALYZED_FILE_PATTERNS_EXTENSION_POINT = |
+ 'analyzedFilePatterns'; |
/** |
* The simple identifier of the extension point that allows plugins to |
@@ -109,10 +109,10 @@ class ServerPlugin implements Plugin { |
static const String UNIQUE_IDENTIFIER = 'analysis_server.core'; |
/** |
- * The extension point that allows plugins to register functions that can |
+ * The extension point that allows plugins to register file patterns that will |
* cause files to be analyzed. |
*/ |
- ExtensionPoint analyzeFileExtensionPoint; |
+ ExtensionPoint analyzedFilePatternsExtensionPoint; |
/** |
* The extension point that allows plugins to register assist contributors. |
@@ -166,11 +166,17 @@ class ServerPlugin implements Plugin { |
ServerPlugin(); |
/** |
- * Return a list containing all of the functions that can cause files to be |
- * analyzed. |
+ * Return a list containing all of the file patterns that can cause files to |
+ * be analyzed. |
*/ |
- List<ShouldAnalyzeFile> get analyzeFileFunctions => |
- analyzeFileExtensionPoint.extensions; |
+ List<String> get analyzedFilePatterns { |
+ List<String> patterns = <String>[]; |
+ for (List<String> extension |
+ in analyzedFilePatternsExtensionPoint.extensions) { |
+ patterns.addAll(extension); |
+ } |
+ return patterns; |
+ } |
/** |
* Return a list containing all of the assist contributors that were |
@@ -241,8 +247,9 @@ class ServerPlugin implements Plugin { |
setAnalysisDomainExtensionPoint = registerExtensionPoint( |
SET_ANALISYS_DOMAIN_EXTENSION_POINT, |
_validateSetAnalysisDomainFunction); |
- analyzeFileExtensionPoint = registerExtensionPoint( |
- ANALYZE_FILE_EXTENSION_POINT, _validateAnalyzeFileExtension); |
+ analyzedFilePatternsExtensionPoint = registerExtensionPoint( |
+ ANALYZED_FILE_PATTERNS_EXTENSION_POINT, |
+ _validateAnalyzedFilePatternsExtension); |
assistContributorExtensionPoint = registerExtensionPoint( |
ASSIST_CONTRIBUTOR_EXTENSION_POINT, |
_validateAssistContributorExtension); |
@@ -266,13 +273,15 @@ class ServerPlugin implements Plugin { |
@override |
void registerExtensions(RegisterExtension registerExtension) { |
// |
- // Register analyze file functions. |
+ // Register analyzed file patterns. |
// |
- registerExtension( |
- ANALYZE_FILE_EXTENSION_POINT_ID, |
- (File file) => AnalysisEngine.isDartFileName(file.path) || |
- AnalysisEngine.isHtmlFileName(file.path) || |
- AnalysisEngine.isAnalysisOptionsFileName(file.path)); |
+ List<String> patterns = <String>[ |
+ '/**/*.${AnalysisEngine.SUFFIX_DART}', |
+ '/**/*.${AnalysisEngine.SUFFIX_HTML}', |
+ '/**/*.${AnalysisEngine.SUFFIX_HTM}', |
+ '/**/${AnalysisEngine.ANALYSIS_OPTIONS_FILE}' |
+ ]; |
+ registerExtension(ANALYZED_FILE_PATTERNS_EXTENSION_POINT_ID, patterns); |
// |
// Register assist contributors. |
// |
@@ -318,18 +327,29 @@ class ServerPlugin implements Plugin { |
// |
registerExtension( |
INDEX_CONTRIBUTOR_EXTENSION_POINT_ID, new DartIndexContributor()); |
+ } |
+ /** |
+ * Return `true` if the list being used as an [extension] contains any |
+ * elements that are not strings. |
+ */ |
+ bool _containsNonString(List extension) { |
+ for (Object element in extension) { |
+ if (element is! String) { |
+ return true; |
+ } |
+ } |
+ return false; |
} |
/** |
* Validate the given extension by throwing an [ExtensionError] if it is not a |
- * valid assist contributor. |
+ * valid list of analyzed file patterns. |
*/ |
- void _validateAnalyzeFileExtension(Object extension) { |
- if (extension is! ShouldAnalyzeFile) { |
- String id = analyzeFileExtensionPoint.uniqueIdentifier; |
- throw new ExtensionError( |
- 'Extensions to $id must be a ShouldAnalyzeFile function'); |
+ void _validateAnalyzedFilePatternsExtension(Object extension) { |
+ if (extension is! List || _containsNonString(extension)) { |
+ String id = analyzedFilePatternsExtensionPoint.uniqueIdentifier; |
+ throw new ExtensionError('Extensions to $id must be a List of Strings'); |
} |
} |