Files
azuredatastudio/extensions/merge-conflict/src/services.ts
Karl Burtram e7d3d047ec Merge from vscode merge-base (#22780)
* Revert "Revert "Merge from vscode merge-base (#22769)" (#22779)"

This reverts commit 47a1745180.

* Fix notebook download task

* Remove done call from extensions-ci
2023-04-19 21:48:46 -07:00

80 lines
2.6 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
import DocumentTracker from './documentTracker';
import CodeLensProvider from './codelensProvider';
import CommandHandler from './commandHandler';
import ContentProvider from './contentProvider';
import Decorator from './mergeDecorator';
import * as interfaces from './interfaces';
const ConfigurationSectionName = 'merge-conflict';
export default class ServiceWrapper implements vscode.Disposable {
private services: vscode.Disposable[] = [];
constructor(private context: vscode.ExtensionContext) {
}
begin() {
const configuration = this.createExtensionConfiguration();
const documentTracker = new DocumentTracker();
this.services.push(
documentTracker,
new CommandHandler(documentTracker),
new CodeLensProvider(documentTracker),
new ContentProvider(this.context),
new Decorator(this.context, documentTracker),
);
this.services.forEach((service: any) => {
if (service.begin && service.begin instanceof Function) {
service.begin(configuration);
}
});
vscode.workspace.onDidChangeConfiguration(() => {
this.services.forEach((service: any) => {
if (service.configurationUpdated && service.configurationUpdated instanceof Function) {
service.configurationUpdated(this.createExtensionConfiguration());
}
});
});
}
createExtensionConfiguration(): interfaces.IExtensionConfiguration {
// PRAGMATIC way to avoid conflicting with the new merge editor: when git opts into
// using the merge editor we disable this extension - for the merge editor but also
// for "other" editors
const gitConfig = vscode.workspace.getConfiguration('git');
if (gitConfig.get<boolean>('mergeEditor')) {
return {
enableCodeLens: false,
enableDecorations: false,
enableEditorOverview: false
};
}
const workspaceConfiguration = vscode.workspace.getConfiguration(ConfigurationSectionName);
const codeLensEnabled: boolean = workspaceConfiguration.get('codeLens.enabled', true);
const decoratorsEnabled: boolean = workspaceConfiguration.get('decorators.enabled', true);
return {
enableCodeLens: codeLensEnabled,
enableDecorations: decoratorsEnabled,
enableEditorOverview: decoratorsEnabled
};
}
dispose() {
this.services.forEach(disposable => disposable.dispose());
this.services = [];
}
}