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)
}
}