Merge pull request #8 from paveldk/pkolev/expose-ts-worker-func

Export getTypeScriptWorker & getJavaScriptWorker to monaco.languages.typescript
pull/2748/head
Johannes Rieken 9 years ago committed by GitHub
commit f397abf752

@ -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 = {

@ -121,6 +121,23 @@ const javascriptDefaults = new LanguageServiceDefaultsImpl(
{ allowNonTsExtensions: true, allowJs: true, target: ScriptTarget.Latest },
{ noSemanticValidation: true, noSyntaxValidation: false });
function getTypeScriptWorker(): monaco.Promise<Worker> {
return new monaco.Promise((resolve, reject) => {
withMode((mode) => {
mode.getTypeScriptWorker()
.then(resolve, reject);
});
});
}
function getJavaScriptWorker(): monaco.Promise<Worker> {
return new monaco.Promise((resolve, reject) => {
withMode((mode) => {
mode.getJavaScriptWorker()
.then(resolve, reject);
});
});
}
// Export API
function createAPI(): typeof monaco.languages.typescript {
@ -131,7 +148,9 @@ function createAPI(): typeof monaco.languages.typescript {
ScriptTarget: ScriptTarget,
ModuleResolutionKind: ModuleResolutionKind,
typescriptDefaults: typescriptDefaults,
javascriptDefaults: javascriptDefaults
javascriptDefaults: javascriptDefaults,
getTypeScriptWorker: getTypeScriptWorker,
getJavaScriptWorker: getJavaScriptWorker
}
}
monaco.languages.typescript = createAPI();

3
src/monaco.d.ts vendored

@ -106,4 +106,7 @@ declare module monaco.languages.typescript {
export var typescriptDefaults: LanguageServiceDefaults;
export var javascriptDefaults: LanguageServiceDefaults;
export var getTypeScriptWorker: () => monaco.Promise<Worker>;
export var getJavaScriptWorker: () => monaco.Promise<Worker>;
}

Loading…
Cancel
Save