| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- import { languages } from './fillers/monaco-editor-core.js';
- var languageDefinitions = {};
- var lazyLanguageLoaders = {};
- var LazyLanguageLoader = /** @class */ (function () {
- function LazyLanguageLoader(languageId) {
- var _this = this;
- this._languageId = languageId;
- this._loadingTriggered = false;
- this._lazyLoadPromise = new Promise(function (resolve, reject) {
- _this._lazyLoadPromiseResolve = resolve;
- _this._lazyLoadPromiseReject = reject;
- });
- }
- LazyLanguageLoader.getOrCreate = function (languageId) {
- if (!lazyLanguageLoaders[languageId]) {
- lazyLanguageLoaders[languageId] = new LazyLanguageLoader(languageId);
- }
- return lazyLanguageLoaders[languageId];
- };
- LazyLanguageLoader.prototype.whenLoaded = function () {
- return this._lazyLoadPromise;
- };
- LazyLanguageLoader.prototype.load = function () {
- var _this = this;
- if (!this._loadingTriggered) {
- this._loadingTriggered = true;
- languageDefinitions[this._languageId].loader().then(function (mod) { return _this._lazyLoadPromiseResolve(mod); }, function (err) { return _this._lazyLoadPromiseReject(err); });
- }
- return this._lazyLoadPromise;
- };
- return LazyLanguageLoader;
- }());
- export function loadLanguage(languageId) {
- return LazyLanguageLoader.getOrCreate(languageId).load();
- }
- export function registerLanguage(def) {
- var languageId = def.id;
- languageDefinitions[languageId] = def;
- languages.register(def);
- var lazyLanguageLoader = LazyLanguageLoader.getOrCreate(languageId);
- languages.setMonarchTokensProvider(languageId, lazyLanguageLoader.whenLoaded().then(function (mod) { return mod.language; }));
- languages.onLanguage(languageId, function () {
- lazyLanguageLoader.load().then(function (mod) {
- languages.setLanguageConfiguration(languageId, mod.conf);
- });
- });
- }
|