diff --git a/extensions/typescript/src/utils/tsconfigProvider.ts b/extensions/typescript/src/utils/tsconfigProvider.ts index a27808b3667dd6d9bfdd50bdef1a8e25fbd6f2ae..49be708aa61608e272ae4f46d8ddf22378c1da43 100644 --- a/extensions/typescript/src/utils/tsconfigProvider.ts +++ b/extensions/typescript/src/utils/tsconfigProvider.ts @@ -31,26 +31,32 @@ export default class TsConfigProvider extends vscode.Disposable { return this.tsconfigs.values(); } - private async ensureActivated() { + private async ensureActivated(): Promise { if (this.activated) { return this; } this.activated = true; - for (const config of await TsConfigProvider.loadWorkspaceTsconfigs()) { - this.handleProjectCreate(config); - } + this.reloadWorkspaceConfigs(); const configFileWatcher = vscode.workspace.createFileSystemWatcher('**/tsconfig*.json'); this.disposables.push(configFileWatcher); configFileWatcher.onDidCreate(this.handleProjectCreate, this, this.disposables); configFileWatcher.onDidDelete(this.handleProjectDelete, this, this.disposables); + vscode.workspace.onDidChangeWorkspaceFolders(() => { + this.reloadWorkspaceConfigs(); + }, this, this.disposables); + return this; } - private static loadWorkspaceTsconfigs() { - return vscode.workspace.findFiles('**/tsconfig*.json', '**/node_modules/**'); + private async reloadWorkspaceConfigs(): Promise { + this.tsconfigs.clear(); + for (const config of await vscode.workspace.findFiles('**/tsconfig*.json', '**/node_modules/**')) { + this.handleProjectCreate(config); + } + return this; } private handleProjectCreate(config: vscode.Uri) {