Skip to content

Commit 530e947

Browse files
committed
1 parent 144f904 commit 530e947

15 files changed

Lines changed: 126 additions & 44 deletions

File tree

extensions/configuration-editing/src/settingsDocumentHelper.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ export class SettingsDocument {
4242
});
4343
}
4444

45-
// sync.ignoredExtensions
46-
if (location.path[0] === 'sync.ignoredExtensions') {
45+
// settingsSync.ignoredExtensions
46+
if (location.path[0] === 'settingsSync.ignoredExtensions') {
4747
let ignoredExtensions = [];
4848
try {
49-
ignoredExtensions = parse(this.document.getText())['sync.ignoredExtensions'];
49+
ignoredExtensions = parse(this.document.getText())['settingsSync.ignoredExtensions'];
5050
} catch (e) {/* ignore error */ }
5151
return provideInstalledExtensionProposals(ignoredExtensions, range, true);
5252
}

src/vs/platform/userDataSync/common/extensionsMerge.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ function massageOutgoingExtension(extension: ISyncExtension, key: string): ISync
205205

206206
export function getIgnoredExtensions(installed: ILocalExtension[], configurationService: IConfigurationService): string[] {
207207
const defaultIgnoredExtensions = installed.filter(i => i.isMachineScoped).map(i => i.identifier.id.toLowerCase());
208-
const value = (configurationService.getValue<string[]>('sync.ignoredExtensions') || []).map(id => id.toLowerCase());
208+
const value = getConfiguredIgnoredExtensions(configurationService).map(id => id.toLowerCase());
209209
const added: string[] = [], removed: string[] = [];
210210
if (Array.isArray(value)) {
211211
for (const key of value) {
@@ -218,3 +218,15 @@ export function getIgnoredExtensions(installed: ILocalExtension[], configuration
218218
}
219219
return distinct([...defaultIgnoredExtensions, ...added,].filter(setting => removed.indexOf(setting) === -1));
220220
}
221+
222+
function getConfiguredIgnoredExtensions(configurationService: IConfigurationService): string[] {
223+
let userValue = configurationService.inspect<string[]>('settingsSync.ignoredExtensions').userValue;
224+
if (userValue !== undefined) {
225+
return userValue;
226+
}
227+
userValue = configurationService.inspect<string[]>('sync.ignoredExtensions').userValue;
228+
if (userValue !== undefined) {
229+
return userValue;
230+
}
231+
return configurationService.getValue<string[]>('settingsSync.ignoredExtensions') || [];
232+
}

src/vs/platform/userDataSync/common/extensionsSync.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,14 @@ interface ILastSyncUserData extends IRemoteUserData {
4545
export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUserDataSynchroniser {
4646

4747
private static readonly EXTENSIONS_DATA_URI = URI.from({ scheme: USER_DATA_SYNC_SCHEME, authority: 'extensions', path: `/extensions.json` });
48+
4849
/*
4950
Version 3 - Introduce installed property to skip installing built in extensions
51+
protected readonly version: number = 3;
5052
*/
51-
protected readonly version: number = 3;
53+
/* Version 4: Change settings from `sync.${setting}` to `settingsSync.{setting}` */
54+
protected readonly version: number = 4;
55+
5256
protected isEnabled(): boolean { return super.isEnabled() && this.extensionGalleryService.isEnabled(); }
5357
private readonly previewResource: URI = joinPath(this.syncPreviewFolder, 'extensions.json');
5458
private readonly localResource: URI = this.previewResource.with({ scheme: USER_DATA_SYNC_SCHEME, authority: 'local' });

src/vs/platform/userDataSync/common/keybindingsSync.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ interface IKeybindingsResourcePreview extends IFileResourcePreview {
3737

3838
export class KeybindingsSynchroniser extends AbstractJsonFileSynchroniser implements IUserDataSynchroniser {
3939

40-
protected readonly version: number = 1;
40+
/* Version 2: Change settings from `sync.${setting}` to `settingsSync.{setting}` */
41+
protected readonly version: number = 2;
4142
private readonly previewResource: URI = joinPath(this.syncPreviewFolder, 'keybindings.json');
4243
private readonly localResource: URI = this.previewResource.with({ scheme: USER_DATA_SYNC_SCHEME, authority: 'local' });
4344
private readonly remoteResource: URI = this.previewResource.with({ scheme: USER_DATA_SYNC_SCHEME, authority: 'remote' });
@@ -262,7 +263,7 @@ export class KeybindingsSynchroniser extends AbstractJsonFileSynchroniser implem
262263
getKeybindingsContentFromSyncContent(syncContent: string): string | null {
263264
try {
264265
const parsed = <ISyncContent>JSON.parse(syncContent);
265-
if (!this.configurationService.getValue<boolean>('sync.keybindingsPerPlatform')) {
266+
if (!this.syncKeybindingsPerPlatform()) {
266267
return isUndefined(parsed.all) ? null : parsed.all;
267268
}
268269
switch (OS) {
@@ -286,7 +287,7 @@ export class KeybindingsSynchroniser extends AbstractJsonFileSynchroniser implem
286287
} catch (e) {
287288
this.logService.error(e);
288289
}
289-
if (!this.configurationService.getValue<boolean>('sync.keybindingsPerPlatform')) {
290+
if (!this.syncKeybindingsPerPlatform()) {
290291
parsed.all = keybindingsContent;
291292
} else {
292293
delete parsed.all;
@@ -305,4 +306,16 @@ export class KeybindingsSynchroniser extends AbstractJsonFileSynchroniser implem
305306
return JSON.stringify(parsed);
306307
}
307308

309+
private syncKeybindingsPerPlatform(): boolean {
310+
let userValue = this.configurationService.inspect<boolean>('settingsSync.keybindingsPerPlatform').userValue;
311+
if (userValue !== undefined) {
312+
return userValue;
313+
}
314+
userValue = this.configurationService.inspect<boolean>('sync.keybindingsPerPlatform').userValue;
315+
if (userValue !== undefined) {
316+
return userValue;
317+
}
318+
return this.configurationService.getValue<boolean>('settingsSync.keybindingsPerPlatform');
319+
}
320+
308321
}

src/vs/platform/userDataSync/common/settingsMerge.ts

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,9 @@ export interface IMergeResult {
2323
export function getIgnoredSettings(defaultIgnoredSettings: string[], configurationService: IConfigurationService, settingsContent?: string): string[] {
2424
let value: string[] = [];
2525
if (settingsContent) {
26-
const setting = parse(settingsContent);
27-
if (setting) {
28-
value = setting['sync.ignoredSettings'];
29-
}
26+
value = getIgnoredSettingsFromContent(settingsContent);
3027
} else {
31-
value = configurationService.getValue<string[]>('sync.ignoredSettings');
28+
value = getIgnoredSettingsFromConfig(configurationService);
3229
}
3330
const added: string[] = [], removed: string[] = [...getDisallowedIgnoredSettings()];
3431
if (Array.isArray(value)) {
@@ -43,6 +40,22 @@ export function getIgnoredSettings(defaultIgnoredSettings: string[], configurati
4340
return distinct([...defaultIgnoredSettings, ...added,].filter(setting => removed.indexOf(setting) === -1));
4441
}
4542

43+
function getIgnoredSettingsFromConfig(configurationService: IConfigurationService): string[] {
44+
let userValue = configurationService.inspect<string[]>('settingsSync.ignoredSettings').userValue;
45+
if (userValue !== undefined) {
46+
return userValue;
47+
}
48+
userValue = configurationService.inspect<string[]>('sync.ignoredSettings').userValue;
49+
if (userValue !== undefined) {
50+
return userValue;
51+
}
52+
return configurationService.getValue<string[]>('settingsSync.ignoredSettings') || [];
53+
}
54+
55+
function getIgnoredSettingsFromContent(settingsContent: string): string[] {
56+
const parsed = parse(settingsContent);
57+
return parsed ? parsed['settingsSync.ignoredSettings'] || parsed['sync.ignoredSettings'] || [] : [];
58+
}
4659

4760
export function updateIgnoredSettings(targetContent: string, sourceContent: string, ignoredSettings: string[], formattingOptions: FormattingOptions): string {
4861
if (ignoredSettings.length) {

src/vs/platform/userDataSync/common/settingsSync.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ function isSettingsSyncContent(thing: any): thing is ISettingsSyncContent {
4242

4343
export class SettingsSynchroniser extends AbstractJsonFileSynchroniser implements IUserDataSynchroniser {
4444

45-
protected readonly version: number = 1;
45+
/* Version 2: Change settings from `sync.${setting}` to `settingsSync.{setting}` */
46+
protected readonly version: number = 2;
4647
readonly previewResource: URI = joinPath(this.syncPreviewFolder, 'settings.json');
4748
readonly localResource: URI = this.previewResource.with({ scheme: USER_DATA_SYNC_SCHEME, authority: 'local' });
4849
readonly remoteResource: URI = this.previewResource.with({ scheme: USER_DATA_SYNC_SCHEME, authority: 'remote' });

src/vs/platform/userDataSync/common/userDataAutoSyncService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,13 +270,13 @@ export class UserDataAutoSyncService extends UserDataAutoSyncEnablementService i
270270
// Incompatible Local Content
271271
else if (userDataSyncError.code === UserDataSyncErrorCode.IncompatibleLocalContent) {
272272
await this.turnOff(false, true /* force soft turnoff on error */);
273-
this.logService.info('Auto Sync: Turned off sync because server has {0} content with newer version than of client. Requires client upgrade.', userDataSyncError.resource);
273+
this.logService.info(`Auto Sync: Turned off sync because server has ${userDataSyncError.resource} content with newer version than of client. Requires client upgrade.`);
274274
}
275275

276276
// Incompatible Remote Content
277277
else if (userDataSyncError.code === UserDataSyncErrorCode.IncompatibleRemoteContent) {
278278
await this.turnOff(false, true /* force soft turnoff on error */);
279-
this.logService.info('Auto Sync: Turned off sync because server has {0} content with older version than of client. Requires server reset.', userDataSyncError.resource);
279+
this.logService.info(`Auto Sync: Turned off sync because server has ${userDataSyncError.resource} content with older version than of client. Requires server reset.`);
280280
}
281281

282282
// Service changed

src/vs/platform/userDataSync/common/userDataSync.ts

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,38 +41,50 @@ export function registerConfiguration(): IDisposable {
4141
const ignoredExtensionsSchemaId = 'vscode://schemas/ignoredExtensions';
4242
const configurationRegistry = Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration);
4343
configurationRegistry.registerConfiguration({
44-
id: 'sync',
44+
id: 'settingsSync',
4545
order: 30,
46-
title: localize('sync', "Sync"),
46+
title: localize('settings sync', "Settings Sync"),
4747
type: 'object',
4848
properties: {
49-
'sync.keybindingsPerPlatform': {
49+
'settingsSync.keybindingsPerPlatform': {
5050
type: 'boolean',
51-
description: localize('sync.keybindingsPerPlatform', "Synchronize keybindings for each platform."),
51+
description: localize('settingsSync.keybindingsPerPlatform', "Synchronize keybindings for each platform."),
5252
default: true,
5353
scope: ConfigurationScope.APPLICATION,
5454
tags: ['sync', 'usesOnlineServices']
5555
},
56-
'sync.ignoredExtensions': {
56+
'sync.keybindingsPerPlatform': {
57+
type: 'boolean',
58+
deprecationMessage: localize('sync.keybindingsPerPlatform.deprecated', "Deprecated, use settingsSync.keybindingsPerPlatform instead"),
59+
},
60+
'settingsSync.ignoredExtensions': {
5761
'type': 'array',
58-
'description': localize('sync.ignoredExtensions', "List of extensions to be ignored while synchronizing. The identifier of an extension is always ${publisher}.${name}. For example: vscode.csharp."),
62+
'description': localize('settingsSync.ignoredExtensions', "List of extensions to be ignored while synchronizing. The identifier of an extension is always ${publisher}.${name}. For example: vscode.csharp."),
5963
$ref: ignoredExtensionsSchemaId,
6064
'default': [],
6165
'scope': ConfigurationScope.APPLICATION,
6266
uniqueItems: true,
6367
disallowSyncIgnore: true,
6468
tags: ['sync', 'usesOnlineServices']
6569
},
66-
'sync.ignoredSettings': {
70+
'sync.ignoredExtensions': {
71+
'type': 'array',
72+
deprecationMessage: localize('sync.ignoredExtensions.deprecated', "Deprecated, use settingsSync.ignoredExtensions instead"),
73+
},
74+
'settingsSync.ignoredSettings': {
6775
'type': 'array',
68-
description: localize('sync.ignoredSettings', "Configure settings to be ignored while synchronizing."),
76+
description: localize('settingsSync.ignoredSettings', "Configure settings to be ignored while synchronizing."),
6977
'default': [],
7078
'scope': ConfigurationScope.APPLICATION,
7179
$ref: ignoredSettingsSchemaId,
7280
additionalProperties: true,
7381
uniqueItems: true,
7482
disallowSyncIgnore: true,
7583
tags: ['sync', 'usesOnlineServices']
84+
},
85+
'sync.ignoredSettings': {
86+
'type': 'array',
87+
deprecationMessage: localize('sync.ignoredSettings.deprecated', "Deprecated, use settingsSync.ignoredSettings instead"),
7688
}
7789
}
7890
});

src/vs/platform/userDataSync/test/common/settingsSync.test.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ suite('SettingsSync - Auto', () => {
300300
"workbench.colorTheme": "GitHub Sharp",
301301
302302
// Ignored
303-
"sync.ignoredSettings": [
303+
"settingsSync.ignoredSettings": [
304304
"editor.fontFamily",
305305
"terminal.integrated.shell.osx"
306306
]
@@ -321,7 +321,7 @@ suite('SettingsSync - Auto', () => {
321321
"workbench.colorTheme": "GitHub Sharp",
322322
323323
// Ignored
324-
"sync.ignoredSettings": [
324+
"settingsSync.ignoredSettings": [
325325
"editor.fontFamily",
326326
"terminal.integrated.shell.osx"
327327
]
@@ -345,7 +345,7 @@ suite('SettingsSync - Auto', () => {
345345
"workbench.colorTheme": "GitHub Sharp",
346346
347347
// Ignored
348-
"sync.ignoredSettings": [
348+
"settingsSync.ignoredSettings": [
349349
"editor.fontFamily",
350350
"terminal.integrated.shell.osx"
351351
],
@@ -369,7 +369,7 @@ suite('SettingsSync - Auto', () => {
369369
"workbench.colorTheme": "GitHub Sharp",
370370
371371
// Ignored
372-
"sync.ignoredSettings": [
372+
"settingsSync.ignoredSettings": [
373373
"editor.fontFamily",
374374
"terminal.integrated.shell.osx"
375375
],
@@ -417,14 +417,14 @@ suite('SettingsSync - Auto', () => {
417417
await updateSettings(JSON.stringify({
418418
'a': 1,
419419
'b': 2,
420-
'sync.ignoredSettings': ['a']
420+
'settingsSync.ignoredSettings': ['a']
421421
}), client2);
422422
await client2.sync();
423423

424424
await updateSettings(JSON.stringify({
425425
'a': 2,
426426
'b': 1,
427-
'sync.ignoredSettings': ['a']
427+
'settingsSync.ignoredSettings': ['a']
428428
}), client);
429429
await testObject.sync(await client.manifest());
430430

@@ -435,7 +435,7 @@ suite('SettingsSync - Auto', () => {
435435
const mergeContent = (await fileService.readFile(testObject.conflicts[0].previewResource)).value.toString();
436436
assert.deepEqual(JSON.parse(mergeContent), {
437437
'b': 1,
438-
'sync.ignoredSettings': ['a']
438+
'settingsSync.ignoredSettings': ['a']
439439
});
440440
});
441441

@@ -474,7 +474,7 @@ suite('SettingsSync - Manual', () => {
474474
"workbench.colorTheme": "GitHub Sharp",
475475
476476
// Ignored
477-
"sync.ignoredSettings": [
477+
"settingsSync.ignoredSettings": [
478478
"editor.fontFamily",
479479
"terminal.integrated.shell.osx"
480480
]
@@ -498,7 +498,7 @@ suite('SettingsSync - Manual', () => {
498498
"workbench.colorTheme": "GitHub Sharp",
499499
500500
// Ignored
501-
"sync.ignoredSettings": [
501+
"settingsSync.ignoredSettings": [
502502
"editor.fontFamily",
503503
"terminal.integrated.shell.osx"
504504
]

src/vs/workbench/contrib/extensions/browser/extensionsActions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2785,7 +2785,7 @@ export class SyncIgnoredIconAction extends ExtensionAction {
27852785
@IExtensionsWorkbenchService private readonly extensionsWorkbenchService: IExtensionsWorkbenchService,
27862786
) {
27872787
super('extensions.syncignore', '', SyncIgnoredIconAction.DISABLE_CLASS, false);
2788-
this._register(Event.filter(this.configurationService.onDidChangeConfiguration, e => e.affectedKeys.includes('sync.ignoredExtensions'))(() => this.update()));
2788+
this._register(Event.filter(this.configurationService.onDidChangeConfiguration, e => e.affectedKeys.includes('settingsSync.ignoredExtensions'))(() => this.update()));
27892789
this.update();
27902790
this.tooltip = localize('syncingore.label', "This extension is ignored during sync.");
27912791
}

0 commit comments

Comments
 (0)