Skip to content
This repository was archived by the owner on Sep 6, 2021. It is now read-only.

Commit c3e576a

Browse files
Change CodeInspection public API to expose providers.
Changes getProvidersForPath to be public - allows extensions to query providers for custom linting. Adds getProviders to allow extensions to get all providers. Adds deregister to allow extensions to remove a provider when the extension provides a provider with the same functionality.
1 parent f40ea05 commit c3e576a

File tree

1 file changed

+38
-5
lines changed

1 file changed

+38
-5
lines changed

src/language/CodeInspection.js

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,15 @@ define(function (require, exports, module) {
164164
return _providers[LanguageManager.getLanguageForPath(filePath).getId()];
165165
}
166166

167+
/**
168+
* Returns a list of providers
169+
*
170+
* @return {{languageId:string, Array.<{name:string, scanFileAsync:?function(string, string):!{$.Promise}, scanFile:?function(string, string):Object}>}} providers
171+
*/
172+
function getProviders() {
173+
return _providers;
174+
}
175+
167176
/**
168177
* Runs a file inspection over passed file. Uses the given list of providers if specified, otherwise uses
169178
* the set of providers that are registered for the file's language.
@@ -468,6 +477,27 @@ define(function (require, exports, module) {
468477
run(); // in case a file of this type is open currently
469478
}
470479

480+
/**
481+
* Deregisters a provider, given a languageId and the provider.
482+
* Allows code to remove providers which provide the same functionality
483+
* as the code provides
484+
*
485+
* @param {string} languageId
486+
* @param {{name:string, scanFileAsync:?function(string, string):!{$.Promise},
487+
* scanFile:?function(string, string):?{errors:!Array, aborted:boolean}}} provider
488+
*
489+
* Returns false if no provider was removed.
490+
*/
491+
function deregister(languageId, provider) {
492+
if (_providers[languageId]) {
493+
_.remove(_providers[languageId], function (registeredProvider) {
494+
return registeredProvider.name === provider.name;
495+
});
496+
} else {
497+
return false;
498+
}
499+
}
500+
471501
/**
472502
* Update DocumentManager listeners.
473503
*/
@@ -643,9 +673,12 @@ define(function (require, exports, module) {
643673
exports._PREF_ASYNC_TIMEOUT = PREF_ASYNC_TIMEOUT;
644674

645675
// Public API
646-
exports.register = register;
647-
exports.Type = Type;
648-
exports.toggleEnabled = toggleEnabled;
649-
exports.inspectFile = inspectFile;
650-
exports.requestRun = run;
676+
exports.register = register;
677+
exports.deregister = deregister;
678+
exports.Type = Type;
679+
exports.toggleEnabled = toggleEnabled;
680+
exports.inspectFile = inspectFile;
681+
exports.requestRun = run;
682+
exports.getProvidersForPath = getProvidersForPath;
683+
exports.getProviders = getProviders;
651684
});

0 commit comments

Comments
 (0)