mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 11:35:40 +01:00
Expose getTypeScriptWorker & getJavaScriptWorker to monaco.languages.typescript
This commit is contained in:
parent
8d8b5d204c
commit
1bf301f43c
3 changed files with 51 additions and 4 deletions
31
src/mode.ts
31
src/mode.ts
|
|
@ -14,8 +14,11 @@ import Promise = monaco.Promise;
|
||||||
import Uri = monaco.Uri;
|
import Uri = monaco.Uri;
|
||||||
import IDisposable = monaco.IDisposable;
|
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 {
|
export function setupTypeScript(defaults:LanguageServiceDefaultsImpl): void {
|
||||||
setupMode(
|
typeScriptWorker = setupMode(
|
||||||
defaults,
|
defaults,
|
||||||
'typescript',
|
'typescript',
|
||||||
Language.TypeScript
|
Language.TypeScript
|
||||||
|
|
@ -23,14 +26,34 @@ export function setupTypeScript(defaults:LanguageServiceDefaultsImpl): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setupJavaScript(defaults:LanguageServiceDefaultsImpl): void {
|
export function setupJavaScript(defaults:LanguageServiceDefaultsImpl): void {
|
||||||
setupMode(
|
javaScriptWorker = setupMode(
|
||||||
defaults,
|
defaults,
|
||||||
'javascript',
|
'javascript',
|
||||||
Language.EcmaScript5
|
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[] = [];
|
let disposables: IDisposable[] = [];
|
||||||
|
|
||||||
|
|
@ -53,6 +76,8 @@ function setupMode(defaults:LanguageServiceDefaultsImpl, modeId:string, language
|
||||||
disposables.push(new languageFeatures.DiagnostcsAdapter(defaults, modeId, worker));
|
disposables.push(new languageFeatures.DiagnostcsAdapter(defaults, modeId, worker));
|
||||||
disposables.push(monaco.languages.setLanguageConfiguration(modeId, richEditConfiguration));
|
disposables.push(monaco.languages.setLanguageConfiguration(modeId, richEditConfiguration));
|
||||||
disposables.push(monaco.languages.setTokensProvider(modeId, createTokenizationSupport(language)));
|
disposables.push(monaco.languages.setTokensProvider(modeId, createTokenizationSupport(language)));
|
||||||
|
|
||||||
|
return worker;
|
||||||
}
|
}
|
||||||
|
|
||||||
const richEditConfiguration:monaco.languages.LanguageConfiguration = {
|
const richEditConfiguration:monaco.languages.LanguageConfiguration = {
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,23 @@ const javascriptDefaults = new LanguageServiceDefaultsImpl(
|
||||||
{ allowNonTsExtensions: true, allowJs: true, target: ScriptTarget.Latest },
|
{ allowNonTsExtensions: true, allowJs: true, target: ScriptTarget.Latest },
|
||||||
{ noSemanticValidation: true, noSyntaxValidation: false });
|
{ 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
|
// Export API
|
||||||
function createAPI(): typeof monaco.languages.typescript {
|
function createAPI(): typeof monaco.languages.typescript {
|
||||||
|
|
@ -131,7 +148,9 @@ function createAPI(): typeof monaco.languages.typescript {
|
||||||
ScriptTarget: ScriptTarget,
|
ScriptTarget: ScriptTarget,
|
||||||
ModuleResolutionKind: ModuleResolutionKind,
|
ModuleResolutionKind: ModuleResolutionKind,
|
||||||
typescriptDefaults: typescriptDefaults,
|
typescriptDefaults: typescriptDefaults,
|
||||||
javascriptDefaults: javascriptDefaults
|
javascriptDefaults: javascriptDefaults,
|
||||||
|
getTypeScriptWorker: getTypeScriptWorker,
|
||||||
|
getJavaScriptWorker: getJavaScriptWorker
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
monaco.languages.typescript = createAPI();
|
monaco.languages.typescript = createAPI();
|
||||||
|
|
|
||||||
3
src/monaco.d.ts
vendored
3
src/monaco.d.ts
vendored
|
|
@ -106,4 +106,7 @@ declare module monaco.languages.typescript {
|
||||||
|
|
||||||
export var typescriptDefaults: LanguageServiceDefaults;
|
export var typescriptDefaults: LanguageServiceDefaults;
|
||||||
export var javascriptDefaults: LanguageServiceDefaults;
|
export var javascriptDefaults: LanguageServiceDefaults;
|
||||||
|
|
||||||
|
export var getTypeScriptWorker: () => monaco.Promise<Worker>;
|
||||||
|
export var getJavaScriptWorker: () => monaco.Promise<Worker>;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue