diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index 7aafa8100b7..3f5b1b3be6a 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -99,7 +99,8 @@ function createPaths(environmentService: IEnvironmentService): TPromise { environmentService.appSettingsHome, environmentService.extensionsPath, environmentService.nodeCachedDataDir, - environmentService.logsPath + environmentService.logsPath, + environmentService.workspaceStorageHome ]; return TPromise.join(paths.map(p => p && mkdirp(p))) as TPromise; diff --git a/src/vs/platform/environment/common/environment.ts b/src/vs/platform/environment/common/environment.ts index c6015a9bb53..357c8f69206 100644 --- a/src/vs/platform/environment/common/environment.ts +++ b/src/vs/platform/environment/common/environment.ts @@ -103,6 +103,8 @@ export interface IEnvironmentService { settingsSearchBuildId: number; settingsSearchUrl: string; + workspaceStorageHome: string; + backupHome: string; backupWorkspacesPath: string; diff --git a/src/vs/platform/environment/node/environmentService.ts b/src/vs/platform/environment/node/environmentService.ts index ab1f9329432..56c5ba1c134 100644 --- a/src/vs/platform/environment/node/environmentService.ts +++ b/src/vs/platform/environment/node/environmentService.ts @@ -109,6 +109,9 @@ export class EnvironmentService implements IEnvironmentService { @memoize get appSettingsPath(): string { return path.join(this.appSettingsHome, 'settings.json'); } + @memoize + get workspaceStorageHome(): string { return path.join(this.appSettingsHome, 'workspaceStorage'); } + @memoize get settingsSearchBuildId(): number { return product.settingsSearchBuildId; } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 94d303c6bd0..24e06f4a85b 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -48,6 +48,7 @@ export interface IEnvironment { appSettingsHome: URI; extensionDevelopmentLocationURI: URI; extensionTestsPath: string; + workspaceStorageHome: string; } export interface IWorkspaceData { diff --git a/src/vs/workbench/api/node/extHostExtensionService.ts b/src/vs/workbench/api/node/extHostExtensionService.ts index d3296b59da3..aa238c9897d 100644 --- a/src/vs/workbench/api/node/extHostExtensionService.ts +++ b/src/vs/workbench/api/node/extHostExtensionService.ts @@ -104,7 +104,7 @@ class ExtensionStoragePath { } const storageName = this._workspace.id; - const storagePath = join(this._environment.appSettingsHome.fsPath, 'workspaceStorage', storageName); + const storagePath = join(this._environment.workspaceStorageHome, storageName); const exists = await dirExists(storagePath); diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts index 1fa003f77ca..256dcd4b2bb 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts @@ -411,7 +411,8 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter { appRoot: this._environmentService.appRoot ? URI.file(this._environmentService.appRoot) : void 0, appSettingsHome: this._environmentService.appSettingsHome ? URI.file(this._environmentService.appSettingsHome) : void 0, extensionDevelopmentLocationURI: this._environmentService.extensionDevelopmentLocationURI, - extensionTestsPath: this._environmentService.extensionTestsPath + extensionTestsPath: this._environmentService.extensionTestsPath, + workspaceStorageHome: this._environmentService.workspaceStorageHome }, workspace: this._contextService.getWorkbenchState() === WorkbenchState.EMPTY ? null : { configuration: workspace.configuration,