From b4e188f97cc8bc2e49d748966468ecd694aa06b3 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Fri, 5 Aug 2016 17:36:49 +0200 Subject: [PATCH] fix start arguments in launch ipc --- src/vs/code/electron-main/launch.ts | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/vs/code/electron-main/launch.ts b/src/vs/code/electron-main/launch.ts index f7c54a433e6..2d0490fe51f 100644 --- a/src/vs/code/electron-main/launch.ts +++ b/src/vs/code/electron-main/launch.ts @@ -12,22 +12,29 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IChannel } from 'vs/base/parts/ipc/common/ipc'; import { ILogService } from 'vs/code/electron-main/log'; +export interface IStartArguments { + args: ICommandLineArguments; + userEnv: IProcessEnvironment; +} + export interface ILaunchService { start(args: ICommandLineArguments, userEnv: IProcessEnvironment): TPromise; } export interface ILaunchChannel extends IChannel { - call(command: 'start', args: ICommandLineArguments, userEnv: IProcessEnvironment): TPromise; - call(command: string, ...args: any[]): TPromise; + call(command: 'start', arg: IStartArguments): TPromise; + call(command: string, arg: any): TPromise; } export class LaunchChannel implements ILaunchChannel { constructor(private service: ILaunchService) { } - call(command: string, ...args: any[]): TPromise { + call(command: string, arg: any): TPromise { + const { args, userEnv } = arg as IStartArguments; + switch (command) { - case 'start': return this.service.start(args[0], args[1]); + case 'start': return this.service.start(args, userEnv); } } } @@ -37,7 +44,7 @@ export class LaunchChannelClient implements ILaunchService { constructor(private channel: ILaunchChannel) { } start(args: ICommandLineArguments, userEnv: IProcessEnvironment): TPromise { - return this.channel.call('start', args, userEnv); + return this.channel.call('start', { args, userEnv }); } } @@ -49,20 +56,20 @@ export class LaunchService implements ILaunchService { ) {} start(args: ICommandLineArguments, userEnv: IProcessEnvironment): TPromise { - this.logService.log('Received data from other instance', args); + this.logService.log('Received data from other instance', args, userEnv); // Otherwise handle in windows service let usedWindows: VSCodeWindow[]; if (!!args.extensionDevelopmentPath) { - this.windowsService.openPluginDevelopmentHostWindow({ cli: args, userEnv: userEnv }); + this.windowsService.openPluginDevelopmentHostWindow({ cli: args, userEnv }); } else if (args.pathArguments.length === 0 && args.openNewWindow) { - usedWindows = this.windowsService.open({ cli: args, userEnv: userEnv, forceNewWindow: true, forceEmpty: true }); + usedWindows = this.windowsService.open({ cli: args, userEnv, forceNewWindow: true, forceEmpty: true }); } else if (args.pathArguments.length === 0) { usedWindows = [this.windowsService.focusLastActive(args)]; } else { usedWindows = this.windowsService.open({ cli: args, - userEnv: userEnv, + userEnv, forceNewWindow: args.waitForWindowClose || args.openNewWindow, preferNewWindow: !args.openInSameWindow, diffMode: args.diffMode