Merge from vscode 817eb6b0c720a4ecbc13c020afbbebfed667aa09 (#7356)

This commit is contained in:
Anthony Dresser
2019-09-24 21:36:17 -07:00
committed by GitHub
parent a29ae4d3b9
commit 6a6048d40f
541 changed files with 7045 additions and 7287 deletions

View File

@@ -5,6 +5,54 @@
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { Event } from 'vs/base/common/event';
import { IExtensionIdentifier } from 'vs/platform/extensionManagement/common/extensionManagement';
import { RawContextKey } from 'vs/platform/contextkey/common/contextkey';
import { IStringDictionary } from 'vs/base/common/collections';
import { Registry } from 'vs/platform/registry/common/platform';
import { IConfigurationRegistry, Extensions as ConfigurationExtensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
import { localize } from 'vs/nls';
export function registerConfiguration() {
Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration)
.registerConfiguration({
id: 'userConfiguration',
order: 30,
title: localize('userConfiguration', "User Configuration"),
type: 'object',
properties: {
'userConfiguration.enableSync': {
type: 'boolean',
description: localize('userConfiguration.enableSync', "When enabled, synchronises User Configuration: Settings, Keybindings, Extensions & Snippets."),
default: true,
scope: ConfigurationScope.APPLICATION
},
'userConfiguration.syncExtensions': {
type: 'boolean',
description: localize('userConfiguration.syncExtensions', "When enabled extensions are synchronised while synchronising user configuration."),
default: true,
scope: ConfigurationScope.APPLICATION,
},
'userConfiguration.ignoreSettings': {
'type': 'object',
description: localize('userConfiguration.ignoreSettings', "Configure settings to be ignored while syncing"),
'default': {
'userConfiguration.enableSync': true,
'userConfiguration.syncExtensions': true,
'userConfiguration.ignoreSettings': true
},
'scope': ConfigurationScope.APPLICATION,
'additionalProperties': {
'anyOf': [
{
'type': 'boolean',
'description': localize('ignoredSetting', "Id of the stting to be ignored. Set to true or false to enable or disable."),
}
]
}
}
}
});
}
export interface IUserData {
ref: string;
@@ -40,12 +88,18 @@ export interface IUserDataSyncStoreService {
write(key: string, content: string, ref: string | null): Promise<string>;
}
export enum SyncSource {
export interface ISyncExtension {
identifier: IExtensionIdentifier;
version?: string;
enabled: boolean;
}
export const enum SyncSource {
Settings = 1,
Extensions
}
export enum SyncStatus {
export const enum SyncStatus {
Uninitialized = 'uninitialized',
Idle = 'idle',
Syncing = 'syncing',
@@ -66,6 +120,9 @@ export const IUserDataSyncService = createDecorator<IUserDataSyncService>('IUser
export interface IUserDataSyncService extends ISynchroniser {
_serviceBrand: any;
readonly conflictsSource: SyncSource | null;
getRemoteExtensions(): Promise<ISyncExtension[]>;
removeExtension(identifier: IExtensionIdentifier): Promise<void>;
}
export const ISettingsMergeService = createDecorator<ISettingsMergeService>('ISettingsMergeService');
@@ -74,6 +131,10 @@ export interface ISettingsMergeService {
_serviceBrand: undefined;
merge(localContent: string, remoteContent: string, baseContent: string | null): Promise<{ mergeContent: string, hasChanges: boolean, hasConflicts: boolean }>;
merge(localContent: string, remoteContent: string, baseContent: string | null, ignoredSettings: IStringDictionary<boolean>): Promise<{ mergeContent: string, hasChanges: boolean, hasConflicts: boolean }>;
computeRemoteContent(localContent: string, remoteContent: string, ignoredSettings: IStringDictionary<boolean>): Promise<string>;
}
export const CONTEXT_SYNC_STATE = new RawContextKey<string>('syncStatus', SyncStatus.Uninitialized);