diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index 5da52c63ae8..00b71c40f8b 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -13,6 +13,7 @@ import { shell, screen, BrowserWindow } from 'electron'; import { TPromise, TValueCallback } from 'vs/base/common/winjs.base'; import { ICommandLineArguments, IEnvService, IProcessEnvironment } from 'vs/code/electron-main/env'; import { ILogService } from 'vs/code/electron-main/log'; +import { parseArgs } from 'vs/code/node/argv'; export interface IWindowState { width?: number; @@ -419,10 +420,13 @@ export class VSCodeWindow { this.load(configuration); } - private getUrl(config: IWindowConfiguration): string { + private getUrl(windowConfiguration: IWindowConfiguration): string { let url = require.toUrl('vs/workbench/electron-browser/bootstrap/index.html'); - // Config + // Config (combination of process.argv and window configuration) + const environment = parseArgs(process.argv); + const config = objects.assign(environment, windowConfiguration); + url += '?config=' + encodeURIComponent(JSON.stringify(config)); return url; diff --git a/src/vs/workbench/electron-browser/main.ts b/src/vs/workbench/electron-browser/main.ts index 6f9c9e6d362..021d02ce155 100644 --- a/src/vs/workbench/electron-browser/main.ts +++ b/src/vs/workbench/electron-browser/main.ts @@ -16,9 +16,9 @@ import uri from 'vs/base/common/uri'; import strings = require('vs/base/common/strings'); import {IResourceInput} from 'vs/platform/editor/common/editor'; import {EventService} from 'vs/platform/event/common/eventService'; -import {ParsedArgs, parseArgs} from 'vs/code/node/argv'; +import {ParsedArgs} from 'vs/code/node/argv'; import {WorkspaceContextService} from 'vs/workbench/services/workspace/common/contextService'; -import {IWorkspace, IConfiguration, IEnvironment} from 'vs/platform/workspace/common/workspace'; +import {IWorkspace} from 'vs/platform/workspace/common/workspace'; import {ConfigurationService} from 'vs/workbench/services/configuration/node/configurationService'; import {EnvironmentService} from 'vs/platform/environment/node/environmentService'; import path = require('path'); @@ -46,7 +46,7 @@ export interface IPath { columnNumber?: number; } -export interface IMainEnvironment extends IEnvironment { +export interface IConfiguration extends ParsedArgs { workspacePath?: string; filesToOpen?: IPath[]; filesToCreate?: IPath[]; @@ -54,16 +54,10 @@ export interface IMainEnvironment extends IEnvironment { extensionsToInstall?: string[]; } -export function startup(configuration: IMainEnvironment, globalSettings: IGlobalSettings): winjs.TPromise { - - // Args (TODO@Ben clean up explicit overwrite of args) - const parsedArgs = parseArgs(process.argv); - if (typeof configuration.extensionDevelopmentPath === 'string') { - parsedArgs.extensionDevelopmentPath = configuration.extensionDevelopmentPath; - } +export function startup(configuration: IConfiguration, globalSettings: IGlobalSettings): winjs.TPromise { // Shell Configuration - const shellConfiguration: IConfiguration = { + const shellConfiguration: any = { env: configuration }; @@ -80,12 +74,12 @@ export function startup(configuration: IMainEnvironment, globalSettings: IGlobal globalSettings: globalSettings }; - if (configuration.enablePerformance) { + if (configuration.performance) { timer.ENABLE_TIMER = true; } // Open workbench - return openWorkbench(parsedArgs, getWorkspace(configuration.workspacePath), shellConfiguration, shellOptions); + return openWorkbench(configuration, getWorkspace(configuration.workspacePath), shellConfiguration, shellOptions); } function toInputs(paths: IPath[]): IResourceInput[] { @@ -134,9 +128,9 @@ function getWorkspace(workspacePath: string): IWorkspace { }; } -function openWorkbench(args: ParsedArgs, workspace: IWorkspace, configuration: IConfiguration, options: IOptions): winjs.TPromise { +function openWorkbench(environment: ParsedArgs, workspace: IWorkspace, configuration: IConfiguration, options: IOptions): winjs.TPromise { const eventService = new EventService(); - const environmentService = new EnvironmentService(args); + const environmentService = new EnvironmentService(environment); const contextService = new WorkspaceContextService(eventService, workspace, configuration, options); const configurationService = new ConfigurationService(contextService, eventService, environmentService);