mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 20:52:56 +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 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
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…
Add table
Add a link
Reference in a new issue