diff --git a/src/vs/workbench/services/configuration/node/configuration.ts b/src/vs/workbench/services/configuration/node/configuration.ts index ea048e2c14ccc6e5b81cd0c9e2aeea6824dfd106..c828892f64c60e719e35e4e22d4d45448836edda 100644 --- a/src/vs/workbench/services/configuration/node/configuration.ts +++ b/src/vs/workbench/services/configuration/node/configuration.ts @@ -202,7 +202,7 @@ export class WorkspaceConfigurationService extends Disposable implements IWorksp let configuredFolders: URI[] = [master]; const config = this.getConfiguration('workspace'); if (config) { - const workspaceConfig = config[master.toString()]; + const workspaceConfig = config[master.toString(true /* skip encoding */)]; if (workspaceConfig) { const additionalFolders = workspaceConfig.folders .map(f => URI.parse(f)) diff --git a/src/vs/workbench/services/workspace/node/workspaceEditingService.ts b/src/vs/workbench/services/workspace/node/workspaceEditingService.ts index 5884ea527464beda6419ec27b390499d0e5faff1..485a1ab96f4d212c03270f87dfe030e97f47f1f0 100644 --- a/src/vs/workbench/services/workspace/node/workspaceEditingService.ts +++ b/src/vs/workbench/services/workspace/node/workspaceEditingService.ts @@ -67,8 +67,9 @@ export class WorkspaceEditingService implements IWorkspaceEditingService { private doSetRoots(newRoots: URI[]): TPromise { const workspaceUserConfig = this.configurationService.lookup(workspaceConfigKey).user as IWorkspaceConfiguration || Object.create(null); const master = this.contextService.getWorkspace2().roots[0]; + const masterKey = master.toString(true /* skip encoding */); - const currentWorkspaceRoots = this.validateRoots(master, workspaceUserConfig[master.toString()] && workspaceUserConfig[master.toString()].folders); + const currentWorkspaceRoots = this.validateRoots(master, workspaceUserConfig[masterKey] && workspaceUserConfig[masterKey].folders); const newWorkspaceRoots = this.validateRoots(master, newRoots); // See if there are any changes @@ -78,11 +79,11 @@ export class WorkspaceEditingService implements IWorkspaceEditingService { // Apply to config if (newWorkspaceRoots.length) { - workspaceUserConfig[master.toString()] = { + workspaceUserConfig[masterKey] = { folders: newWorkspaceRoots }; } else { - delete workspaceUserConfig[master.toString()]; + delete workspaceUserConfig[masterKey]; } return this.configurationEditingService.writeConfiguration(ConfigurationTarget.USER, { key: workspaceConfigKey, value: workspaceUserConfig }).then(() => void 0); @@ -94,10 +95,10 @@ export class WorkspaceEditingService implements IWorkspaceEditingService { } // Prevent duplicates - const validatedRoots = distinct(roots.map(root => root.toString())); + const validatedRoots = distinct(roots.map(root => root.toString(true /* skip encoding */))); // Make sure we do not set the master folder as root - const masterIndex = validatedRoots.indexOf(master.toString()); + const masterIndex = validatedRoots.indexOf(master.toString(true /* skip encoding */)); if (masterIndex >= 0) { validatedRoots.splice(masterIndex, 1); }