code: function getProvidersForPath(filePath) {
          var language            = LanguageManager.getLanguageForPath(filePath).getId(),
              context             = PreferencesManager._buildContext(filePath, language),
              installedProviders  = getProvidersForLanguageId(language),
              preferredProviders,
  
              prefPreferredProviderNames  = prefs.get(PREF_PREFER_PROVIDERS, context),
              prefPreferredOnly           = prefs.get(PREF_PREFERRED_ONLY, context),
  
              providers;
  
          if (prefPreferredProviderNames && prefPreferredProviderNames.length) {
              if (typeof prefPreferredProviderNames === "string") {
                  prefPreferredProviderNames = [prefPreferredProviderNames];
              }
              preferredProviders = prefPreferredProviderNames.reduce(function (result, key) {
                  var provider = _.find(installedProviders, {name: key});
                  if (provider) {
                      result.push(provider);
                  }
                  return result;
              }, []);
              if (prefPreferredOnly) {
                  providers = preferredProviders;
              } else {
                  providers = _.union(preferredProviders, installedProviders);
              }
          } else {
              providers = installedProviders;
          }
          return providers;
      }
docs: Returns a list of provider for given file path, if available.
  Decision is made depending on the file extension.
  
  @param {!string} filePath
  @return {Array.<{name:string, scanFileAsync:?function(string, string):!{$.Promise}, scanFile:?function(string, string):?{errors:!Array, aborted:boolean}}>}