From 95d150db145baffecf6ed1b04afaa2c0051f6b00 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Fri, 1 Sep 2017 11:09:31 +0200 Subject: [PATCH] add `vscode.env.appRoot` --- extensions/vscode-api-tests/src/env.test.ts | 4 +++- src/vs/vscode.d.ts | 7 +++++++ src/vs/workbench/api/node/extHost.api.impl.ts | 3 ++- src/vs/workbench/api/node/extHost.protocol.ts | 1 + .../services/extensions/electron-browser/extensionHost.ts | 1 + 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/extensions/vscode-api-tests/src/env.test.ts b/extensions/vscode-api-tests/src/env.test.ts index 4746255297c..b9ed8ab8526 100644 --- a/extensions/vscode-api-tests/src/env.test.ts +++ b/extensions/vscode-api-tests/src/env.test.ts @@ -12,6 +12,7 @@ suite('env-namespace', () => { test('env is set', function () { assert.equal(typeof env.language, 'string'); + assert.equal(typeof env.appRoot, 'string'); assert.equal(typeof env.appName, 'string'); assert.equal(typeof env.machineId, 'string'); assert.equal(typeof env.sessionId, 'string'); @@ -19,9 +20,10 @@ suite('env-namespace', () => { test('env is readonly', function () { assert.throws(() => env.language = '234'); + assert.throws(() => env.appRoot = '234'); assert.throws(() => env.appName = '234'); assert.throws(() => env.machineId = '234'); assert.throws(() => env.sessionId = '234'); }); -}); \ No newline at end of file +}); diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 1339cffe122..d1761abd034 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -3970,6 +3970,13 @@ declare module 'vscode' { */ export let appName: string; + /** + * The application root folder from which the editor is running. + * + * @readonly + */ + export let appRoot: string; + /** * Represents the preferred user-language, like `de-CH`, `fr`, or `en-US`. * diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 0ad36fa49eb..9346064940f 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -201,7 +201,8 @@ export function createApiFactory( get machineId() { return initData.telemetryInfo.machineId; }, get sessionId() { return initData.telemetryInfo.sessionId; }, get language() { return Platform.language; }, - get appName() { return product.nameLong; } + get appName() { return product.nameLong; }, + get appRoot() { return initData.environment.appRoot; }, }); // namespace: extensions diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 3291bc7ef5f..5fb39e7d980 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -53,6 +53,7 @@ export interface IEnvironment { isExtensionDevelopmentDebug: boolean; enableProposedApiForAll: boolean; enableProposedApiFor: string | string[]; + appRoot: string; appSettingsHome: string; disableExtensions: boolean; userExtensionsHome: string; diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts index 51465a972d0..cbfcf27d66b 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts @@ -341,6 +341,7 @@ export class ExtensionHostProcessWorker { parentPid: process.pid, environment: { isExtensionDevelopmentDebug: this._isExtensionDevDebug, + appRoot: this._environmentService.appRoot, appSettingsHome: this._environmentService.appSettingsHome, disableExtensions: this._environmentService.disableExtensions, userExtensionsHome: this._environmentService.extensionsPath, -- GitLab