diff --git a/extensions/typescript-language-features/src/features/updatePathsOnRename.ts b/extensions/typescript-language-features/src/features/updatePathsOnRename.ts index 9b2f3c3ce5f..def9ced477a 100644 --- a/extensions/typescript-language-features/src/features/updatePathsOnRename.ts +++ b/extensions/typescript-language-features/src/features/updatePathsOnRename.ts @@ -15,6 +15,7 @@ import { isTypeScriptDocument } from '../utils/languageModeIds'; import { escapeRegExp } from '../utils/regexp'; import * as typeConverters from '../utils/typeConverters'; import FileConfigurationManager from './fileConfigurationManager'; +import { VersionDependentRegistration } from '../utils/dependentRegistration'; const localize = nls.loadMessageBundle(); @@ -26,7 +27,7 @@ enum UpdateImportsOnFileMoveSetting { Never = 'never', } -export class UpdateImportsOnFileRenameHandler { +class UpdateImportsOnFileRenameHandler { private readonly _onDidRenameSub: vscode.Disposable; public constructor( @@ -47,10 +48,6 @@ export class UpdateImportsOnFileRenameHandler { oldResource: vscode.Uri, newResource: vscode.Uri, ): Promise { - if (!this.client.apiVersion.gte(API.v290)) { - return; - } - const targetResource = await this.getTargetResource(newResource); if (!targetResource) { return; @@ -304,3 +301,11 @@ export class UpdateImportsOnFileRenameHandler { } } +export function register( + client: ITypeScriptServiceClient, + fileConfigurationManager: FileConfigurationManager, + handles: (uri: vscode.Uri) => Promise, +) { + return new VersionDependentRegistration(client, API.v290, () => + new UpdateImportsOnFileRenameHandler(client, fileConfigurationManager, handles)); +} \ No newline at end of file diff --git a/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts b/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts index f675bd4f572..8b716b6dd68 100644 --- a/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript-language-features/src/typeScriptServiceClientHost.ts @@ -11,7 +11,7 @@ import { Diagnostic, DiagnosticRelatedInformation, DiagnosticSeverity, DiagnosticTag, Disposable, Memento, Range, Uri, workspace } from 'vscode'; import { DiagnosticKind } from './features/diagnostics'; import FileConfigurationManager from './features/fileConfigurationManager'; -import { UpdateImportsOnFileRenameHandler } from './features/updatePathsOnRename'; +import { register as registerUpdatePathsOnRename } from './features/updatePathsOnRename'; import LanguageProvider from './languageProvider'; import * as Proto from './protocol'; import * as PConst from './protocol.const'; @@ -45,7 +45,6 @@ export default class TypeScriptServiceClientHost { private readonly disposables: Disposable[] = []; private readonly versionStatus: VersionStatus; private readonly fileConfigurationManager: FileConfigurationManager; - private readonly updateImportsOnFileRenameHandler: UpdateImportsOnFileRenameHandler; private reportStyleCheckAsWarnings: boolean = true; @@ -101,7 +100,7 @@ export default class TypeScriptServiceClientHost { this.languagePerId.set(description.id, manager); } - this.updateImportsOnFileRenameHandler = new UpdateImportsOnFileRenameHandler(this.client, this.fileConfigurationManager, uri => this.handles(uri)); + this.disposables.push(registerUpdatePathsOnRename(this.client, this.fileConfigurationManager, uri => this.handles(uri))); this.client.ensureServiceStarted(); this.client.onReady(() => { @@ -152,7 +151,6 @@ export default class TypeScriptServiceClientHost { this.typingsStatus.dispose(); this.ataProgressReporter.dispose(); this.fileConfigurationManager.dispose(); - this.updateImportsOnFileRenameHandler.dispose(); } public get serviceClient(): TypeScriptServiceClient {