|
|
|
@ -14,8 +14,11 @@ import Promise = monaco.Promise;
|
|
|
|
|
import Uri = monaco.Uri;
|
|
|
|
|
import IDisposable = monaco.IDisposable;
|
|
|
|
|
|
|
|
|
|
let javaScriptWorker: (first: Uri, ...more: Uri[]) => Promise<TypeScriptWorker>;
|
|
|
|
|
let typeScriptWorker: (first: Uri, ...more: Uri[]) => Promise<TypeScriptWorker>;
|
|
|
|
|
|
|
|
|
|
export function setupTypeScript(defaults:LanguageServiceDefaultsImpl): void {
|
|
|
|
|
setupMode(
|
|
|
|
|
typeScriptWorker = setupMode(
|
|
|
|
|
defaults,
|
|
|
|
|
'typescript',
|
|
|
|
|
Language.TypeScript
|
|
|
|
@ -23,14 +26,34 @@ export function setupTypeScript(defaults:LanguageServiceDefaultsImpl): void {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function setupJavaScript(defaults:LanguageServiceDefaultsImpl): void {
|
|
|
|
|
setupMode(
|
|
|
|
|
javaScriptWorker = setupMode(
|
|
|
|
|
defaults,
|
|
|
|
|
'javascript',
|
|
|
|
|
Language.EcmaScript5
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function setupMode(defaults:LanguageServiceDefaultsImpl, modeId:string, language:Language): void {
|
|
|
|
|
export function getJavaScriptWorker(): Promise<TypeScriptWorker> {
|
|
|
|
|
return new monaco.Promise((resolve, reject) => {
|
|
|
|
|
if (!javaScriptWorker) {
|
|
|
|
|
return reject("JavaScript not registered!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
resolve(javaScriptWorker);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getTypeScriptWorker(): Promise<TypeScriptWorker> {
|
|
|
|
|
return new monaco.Promise((resolve, reject) => {
|
|
|
|
|
if (!typeScriptWorker) {
|
|
|
|
|
return reject("TypeScript not registered!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
resolve(typeScriptWorker);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function setupMode(defaults:LanguageServiceDefaultsImpl, modeId:string, language:Language): (first: Uri, ...more: Uri[]) => Promise<TypeScriptWorker> {
|
|
|
|
|
|
|
|
|
|
let disposables: IDisposable[] = [];
|
|
|
|
|
|
|
|
|
@ -53,6 +76,8 @@ function setupMode(defaults:LanguageServiceDefaultsImpl, modeId:string, language
|
|
|
|
|
disposables.push(new languageFeatures.DiagnostcsAdapter(defaults, modeId, worker));
|
|
|
|
|
disposables.push(monaco.languages.setLanguageConfiguration(modeId, richEditConfiguration));
|
|
|
|
|
disposables.push(monaco.languages.setTokensProvider(modeId, createTokenizationSupport(language)));
|
|
|
|
|
|
|
|
|
|
return worker;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const richEditConfiguration:monaco.languages.LanguageConfiguration = {
|
|
|
|
|