export function getLanguageService()

in language-service/src/yamlLanguageService.ts [110:149]


export function getLanguageService(
  schemaRequestService: SchemaRequestService,
  contributions: JSONWorkerContribution[],
  customSchemaProvider: CustomSchemaProvider,
  workspaceContext?: WorkspaceContextService,
  promiseConstructor?: PromiseConstructor): LanguageService {

  let promise = promiseConstructor || Promise;

  let schemaService = new JSONSchemaService(schemaRequestService, workspaceContext, customSchemaProvider);

  let completer = new YAMLCompletion(schemaService, contributions, promise);
  let hover = new YAMLHover(schemaService, contributions, promise);
  let yamlDocumentSymbols = new YAMLDocumentSymbols();
  let yamlValidation = new YAMLValidation(schemaService, promise);
  let yamlTraversal = new YAMLTraversal(promise);

  return {
      configure: (settings) => {
        schemaService.clearExternalSchemas();
        if (settings.schemas) {
          settings.schemas.forEach(schema => {
            schemaService.registerExternalSchema(schema.uri, schema.fileMatch, schema.schema);
          });
        }
        yamlValidation.configure(settings);
        let customTagsSetting = settings && settings["customTags"] ? settings["customTags"] : [];
        completer.configure(customTagsSetting);
      },
      doComplete: completer.doComplete.bind(completer),
      doResolve: completer.doResolve.bind(completer),
      doValidation: yamlValidation.doValidation.bind(yamlValidation),
      doHover: hover.doHover.bind(hover),
      findDocumentSymbols: yamlDocumentSymbols.findDocumentSymbols.bind(yamlDocumentSymbols),
      resetSchema: (uri: string) => schemaService.onResourceChange(uri),
      doFormat: format,
      findNodes: yamlTraversal.findNodes.bind(yamlTraversal),
      getNodePropertyValues: yamlTraversal.getNodePropertyValues.bind(yamlTraversal)
  }
}