Remove boilerplate around VersionDependentRegistrationDelegate

This commit is contained in:
Matt Bierner
2018-06-04 15:39:41 -07:00
parent 8d0d155f00
commit 82804187b5
9 changed files with 38 additions and 76 deletions

View File

@@ -76,14 +76,9 @@ export function register(
selector: vscode.DocumentSelector,
client: ITypeScriptServiceClient,
) {
return new VersionDependentRegistration(client, {
isSupportedVersion(api) {
return api.gte(API.v230);
},
register() {
return vscode.languages.registerCompletionItemProvider(selector,
new DirectiveCommentCompletionProvider(client),
'@');
}
return new VersionDependentRegistration(client, API.v230, () => {
return vscode.languages.registerCompletionItemProvider(selector,
new DirectiveCommentCompletionProvider(client),
'@');
});
}

View File

@@ -75,12 +75,8 @@ export function register(
selector: vscode.DocumentSelector,
client: ITypeScriptServiceClient,
): vscode.Disposable {
return new VersionDependentRegistration(client, {
isSupportedVersion(api) {
return api.gte(API.v280);
},
register() {
return vscode.languages.registerFoldingRangeProvider(selector, new TypeScriptFoldingProvider(client));
}
return new VersionDependentRegistration(client, API.v280, () => {
return vscode.languages.registerFoldingRangeProvider(selector,
new TypeScriptFoldingProvider(client));
});
}

View File

@@ -19,13 +19,8 @@ export function register(
selector: vscode.DocumentSelector,
client: ITypeScriptServiceClient,
) {
return new VersionDependentRegistration(client, {
isSupportedVersion(api: API) {
return api.gte(API.v220);
},
register() {
return vscode.languages.registerImplementationProvider(selector,
new TypeScriptImplementationProvider(client));
}
return new VersionDependentRegistration(client, API.v220, () => {
return vscode.languages.registerImplementationProvider(selector,
new TypeScriptImplementationProvider(client));
});
}

View File

@@ -110,16 +110,11 @@ export function register(
client: ITypeScriptServiceClient,
cachedResponse: CachedNavTreeResponse,
) {
return new VersionDependentRegistration(client, {
isSupportedVersion(api) {
return api.gte(API.v220);
},
register() {
const provider = new TypeScriptImplementationsCodeLensProvider(client, modeId, cachedResponse);
return vscode.Disposable.from(
vscode.languages.registerCodeLensProvider(selector, provider),
provider,
);
}
return new VersionDependentRegistration(client, API.v220, () => {
const provider = new TypeScriptImplementationsCodeLensProvider(client, modeId, cachedResponse);
return vscode.Disposable.from(
vscode.languages.registerCodeLensProvider(selector, provider),
provider,
);
});
}

View File

@@ -84,15 +84,10 @@ export function register(
commandManager: CommandManager,
fileConfigurationManager: FileConfigurationManager
) {
return new VersionDependentRegistration(client, {
isSupportedVersion(api) {
return api.gte(API.v280);
},
register() {
const organizeImportsProvider = new OrganizeImportsCodeActionProvider(client, commandManager, fileConfigurationManager);
return vscode.languages.registerCodeActionsProvider(selector,
organizeImportsProvider,
organizeImportsProvider.metadata);
}
return new VersionDependentRegistration(client, API.v280, () => {
const organizeImportsProvider = new OrganizeImportsCodeActionProvider(client, commandManager, fileConfigurationManager);
return vscode.languages.registerCodeActionsProvider(selector,
organizeImportsProvider,
organizeImportsProvider.metadata);
});
}

View File

@@ -210,14 +210,9 @@ export function register(
formattingOptionsManager: FormattingOptionsManager,
commandManager: CommandManager,
) {
return new VersionDependentRegistration(client, {
isSupportedVersion(api) {
return api.gte(API.v240);
},
register() {
return vscode.languages.registerCodeActionsProvider(selector,
new TypeScriptRefactorProvider(client, formattingOptionsManager, commandManager),
TypeScriptRefactorProvider.metadata);
}
return new VersionDependentRegistration(client, API.v240, () => {
return vscode.languages.registerCodeActionsProvider(selector,
new TypeScriptRefactorProvider(client, formattingOptionsManager, commandManager),
TypeScriptRefactorProvider.metadata);
});
}

View File

@@ -119,16 +119,11 @@ export function register(
client: ITypeScriptServiceClient,
cachedResponse: CachedNavTreeResponse,
) {
return new VersionDependentRegistration(client, {
isSupportedVersion(api) {
return api.gte(API.v206);
},
register() {
const referenceCodeLensProvider = new TypeScriptReferencesCodeLensProvider(client, modeId, cachedResponse);
return vscode.Disposable.from(
vscode.languages.registerCodeLensProvider(selector, referenceCodeLensProvider),
referenceCodeLensProvider,
);
}
return new VersionDependentRegistration(client, API.v206, () => {
const referenceCodeLensProvider = new TypeScriptReferencesCodeLensProvider(client, modeId, cachedResponse);
return vscode.Disposable.from(
vscode.languages.registerCodeLensProvider(selector, referenceCodeLensProvider),
referenceCodeLensProvider,
);
});
}

View File

@@ -19,13 +19,8 @@ export function register(
selector: vscode.DocumentSelector,
client: ITypeScriptServiceClient,
) {
return new VersionDependentRegistration(client, {
isSupportedVersion(api: API) {
return api.gte(API.v213);
},
register() {
return vscode.languages.registerTypeDefinitionProvider(selector,
new TypeScriptTypeDefinitionProvider(client));
}
return new VersionDependentRegistration(client, API.v213, () => {
return vscode.languages.registerTypeDefinitionProvider(selector,
new TypeScriptTypeDefinitionProvider(client));
});
}

View File

@@ -48,9 +48,10 @@ export class VersionDependentRegistration {
constructor(
private readonly client: ITypeScriptServiceClient,
private readonly delegate: VersionDependentRegistrationDelegate,
private readonly minVersion: API,
register: () => vscode.Disposable,
) {
this._registration = new ConditionalRegistration(this.delegate.register);
this._registration = new ConditionalRegistration(register);
this.update(client.apiVersion);
@@ -65,6 +66,6 @@ export class VersionDependentRegistration {
}
private update(api: API) {
this._registration.update(this.delegate.isSupportedVersion(api));
this._registration.update(api.gte(this.minVersion));
}
}