_.contribution.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. define(["require", "exports", "vs/editor/editor.api"], function (require, exports) {
  2. /*---------------------------------------------------------------------------------------------
  3. * Copyright (c) Microsoft Corporation. All rights reserved.
  4. * Licensed under the MIT License. See License.txt in the project root for license information.
  5. *--------------------------------------------------------------------------------------------*/
  6. 'use strict';
  7. Object.defineProperty(exports, "__esModule", { value: true });
  8. // Allow for running under nodejs/requirejs in tests
  9. var _monaco = (typeof monaco === 'undefined' ? self.monaco : monaco);
  10. var languageDefinitions = {};
  11. var lazyLanguageLoaders = {};
  12. var LazyLanguageLoader = /** @class */ (function () {
  13. function LazyLanguageLoader(languageId) {
  14. var _this = this;
  15. this._languageId = languageId;
  16. this._loadingTriggered = false;
  17. this._lazyLoadPromise = new Promise(function (resolve, reject) {
  18. _this._lazyLoadPromiseResolve = resolve;
  19. _this._lazyLoadPromiseReject = reject;
  20. });
  21. }
  22. LazyLanguageLoader.getOrCreate = function (languageId) {
  23. if (!lazyLanguageLoaders[languageId]) {
  24. lazyLanguageLoaders[languageId] = new LazyLanguageLoader(languageId);
  25. }
  26. return lazyLanguageLoaders[languageId];
  27. };
  28. LazyLanguageLoader.prototype.whenLoaded = function () {
  29. return this._lazyLoadPromise;
  30. };
  31. LazyLanguageLoader.prototype.load = function () {
  32. var _this = this;
  33. if (!this._loadingTriggered) {
  34. this._loadingTriggered = true;
  35. languageDefinitions[this._languageId].loader().then(function (mod) { return _this._lazyLoadPromiseResolve(mod); }, function (err) { return _this._lazyLoadPromiseReject(err); });
  36. }
  37. return this._lazyLoadPromise;
  38. };
  39. return LazyLanguageLoader;
  40. }());
  41. function loadLanguage(languageId) {
  42. return LazyLanguageLoader.getOrCreate(languageId).load();
  43. }
  44. exports.loadLanguage = loadLanguage;
  45. function registerLanguage(def) {
  46. var languageId = def.id;
  47. languageDefinitions[languageId] = def;
  48. _monaco.languages.register(def);
  49. var lazyLanguageLoader = LazyLanguageLoader.getOrCreate(languageId);
  50. _monaco.languages.setMonarchTokensProvider(languageId, lazyLanguageLoader.whenLoaded().then(function (mod) { return mod.language; }));
  51. _monaco.languages.onLanguage(languageId, function () {
  52. lazyLanguageLoader.load().then(function (mod) {
  53. _monaco.languages.setLanguageConfiguration(languageId, mod.conf);
  54. });
  55. });
  56. }
  57. exports.registerLanguage = registerLanguage;
  58. });