From 7f043db8b93a09f98c3307535df4b260f7b94c33 Mon Sep 17 00:00:00 2001 From: SerKo Date: Sat, 6 Dec 2025 02:21:09 +0800 Subject: [PATCH 1/2] feat: support tsdk path for Eclipse Theia --- extensions/vscode/index.ts | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/extensions/vscode/index.ts b/extensions/vscode/index.ts index 5532b7512e..ca8e5e65f0 100644 --- a/extensions/vscode/index.ts +++ b/extensions/vscode/index.ts @@ -105,9 +105,15 @@ export = defineExtension(() => { }); } + const tsdk = resolveTsdkPath(); + if (tsdk === undefined) { + vscode.window.showErrorMessage('Cannot find TypeScript SDK.'); + return; + } + client = launch( serverPath ?? vscode.Uri.joinPath(context.extensionUri, 'dist', 'language-server.js').fsPath, - vscode.env.appRoot.replace(/\\/g, '/') + '/extensions/node_modules/typescript/lib', + tsdk, ); volarLabs.addLanguageClient(client); @@ -196,6 +202,25 @@ function launch(serverPath: string, tsdk: string) { return client; } +function resolveTsdkPath() { + const vscodeTsdk = vscode.env.appRoot.replace(/\\/g, '/') + '/extensions/node_modules/typescript/lib'; + if (fs.existsSync(vscodeTsdk)) { + return vscodeTsdk; + } + + const tsExt = vscode.extensions.getExtension('vscode.typescript-language-features'); + if (tsExt) { + // Eclipse Theia + // see: https://github.com/eclipse-theia/vscode-builtin-extensions/blob/65c70ec636bd879ef9529d0a2da36f4b99139c40/src/package-vsix.js#L71 + const theiaTsdk = path.join(tsExt.extensionPath, 'deps', 'typescript', 'lib'); + if (fs.existsSync(theiaTsdk)) { + return theiaTsdk; + } + } + + return undefined; +} + function resolveServerPath() { const tsPluginPackPath = path.join(__dirname, '..', 'node_modules', 'vue-typescript-plugin-pack', 'index.js'); From dc6675213ebf9799c14d0cc67a412c72c37dfaee Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Sat, 6 Dec 2025 02:39:11 +0800 Subject: [PATCH 2/2] Update index.ts --- extensions/vscode/index.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/extensions/vscode/index.ts b/extensions/vscode/index.ts index ca8e5e65f0..8e82270904 100644 --- a/extensions/vscode/index.ts +++ b/extensions/vscode/index.ts @@ -113,7 +113,7 @@ export = defineExtension(() => { client = launch( serverPath ?? vscode.Uri.joinPath(context.extensionUri, 'dist', 'language-server.js').fsPath, - tsdk, + tsdk.replace(/\\/g, '/'), ); volarLabs.addLanguageClient(client); @@ -203,7 +203,7 @@ function launch(serverPath: string, tsdk: string) { } function resolveTsdkPath() { - const vscodeTsdk = vscode.env.appRoot.replace(/\\/g, '/') + '/extensions/node_modules/typescript/lib'; + const vscodeTsdk = path.join(vscode.env.appRoot, 'extensions', 'node_modules', 'typescript', 'lib'); if (fs.existsSync(vscodeTsdk)) { return vscodeTsdk; } @@ -217,8 +217,6 @@ function resolveTsdkPath() { return theiaTsdk; } } - - return undefined; } function resolveServerPath() {