mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-03-29 08:10:29 -04:00
* Revert "Revert "Merge from vscode merge-base (#22769)" (#22779)"
This reverts commit 47a1745180.
* Fix notebook download task
* Remove done call from extensions-ci
80 lines
2.6 KiB
TypeScript
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 = [];
|
|
}
|
|
}
|