提交 d6c439a5 编写于 作者: B Benjamin Pasero

"Add root folder" on windows adds "file:///c%3a/Users/..." (fixes #29691)

上级 e1b9a2fe
...@@ -202,7 +202,7 @@ export class WorkspaceConfigurationService extends Disposable implements IWorksp ...@@ -202,7 +202,7 @@ export class WorkspaceConfigurationService extends Disposable implements IWorksp
let configuredFolders: URI[] = [master]; let configuredFolders: URI[] = [master];
const config = this.getConfiguration<IWorkspaceFoldersConfiguration>('workspace'); const config = this.getConfiguration<IWorkspaceFoldersConfiguration>('workspace');
if (config) { if (config) {
const workspaceConfig = config[master.toString()]; const workspaceConfig = config[master.toString(true /* skip encoding */)];
if (workspaceConfig) { if (workspaceConfig) {
const additionalFolders = workspaceConfig.folders const additionalFolders = workspaceConfig.folders
.map(f => URI.parse(f)) .map(f => URI.parse(f))
......
...@@ -67,8 +67,9 @@ export class WorkspaceEditingService implements IWorkspaceEditingService { ...@@ -67,8 +67,9 @@ export class WorkspaceEditingService implements IWorkspaceEditingService {
private doSetRoots(newRoots: URI[]): TPromise<void> { private doSetRoots(newRoots: URI[]): TPromise<void> {
const workspaceUserConfig = this.configurationService.lookup(workspaceConfigKey).user as IWorkspaceConfiguration || Object.create(null); const workspaceUserConfig = this.configurationService.lookup(workspaceConfigKey).user as IWorkspaceConfiguration || Object.create(null);
const master = this.contextService.getWorkspace2().roots[0]; 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); const newWorkspaceRoots = this.validateRoots(master, newRoots);
// See if there are any changes // See if there are any changes
...@@ -78,11 +79,11 @@ export class WorkspaceEditingService implements IWorkspaceEditingService { ...@@ -78,11 +79,11 @@ export class WorkspaceEditingService implements IWorkspaceEditingService {
// Apply to config // Apply to config
if (newWorkspaceRoots.length) { if (newWorkspaceRoots.length) {
workspaceUserConfig[master.toString()] = { workspaceUserConfig[masterKey] = {
folders: newWorkspaceRoots folders: newWorkspaceRoots
}; };
} else { } else {
delete workspaceUserConfig[master.toString()]; delete workspaceUserConfig[masterKey];
} }
return this.configurationEditingService.writeConfiguration(ConfigurationTarget.USER, { key: workspaceConfigKey, value: workspaceUserConfig }).then(() => void 0); return this.configurationEditingService.writeConfiguration(ConfigurationTarget.USER, { key: workspaceConfigKey, value: workspaceUserConfig }).then(() => void 0);
...@@ -94,10 +95,10 @@ export class WorkspaceEditingService implements IWorkspaceEditingService { ...@@ -94,10 +95,10 @@ export class WorkspaceEditingService implements IWorkspaceEditingService {
} }
// Prevent duplicates // 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 // 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) { if (masterIndex >= 0) {
validatedRoots.splice(masterIndex, 1); validatedRoots.splice(masterIndex, 1);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册