|
@@ -20,7 +20,7 @@ interface ILangImpl {
|
|
|
|
|
|
let languageDefinitions:{[languageId:string]:ILang} = {};
|
|
|
|
|
|
-export function loadLanguage(languageId:string): monaco.Promise<void> {
|
|
|
+function _loadLanguage(languageId:string): monaco.Promise<void> {
|
|
|
let module = languageDefinitions[languageId].module;
|
|
|
return new _monaco.Promise<void>((c, e, p) => {
|
|
|
require<ILangImpl>([module], (mod) => {
|
|
@@ -31,6 +31,15 @@ export function loadLanguage(languageId:string): monaco.Promise<void> {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+let languagePromises:{[languageId:string]: monaco.Promise<void>} = {};
|
|
|
+
|
|
|
+export function loadLanguage(languageId:string): monaco.Promise<void> {
|
|
|
+ if (!languagePromises[languageId]) {
|
|
|
+ languagePromises[languageId] = _loadLanguage(languageId);
|
|
|
+ }
|
|
|
+ return languagePromises[languageId];
|
|
|
+}
|
|
|
+
|
|
|
function registerLanguage(def:ILang): void {
|
|
|
let languageId = def.id;
|
|
|
|