diff --git a/src/vs/workbench/parts/tasks/common/taskSystem.ts b/src/vs/workbench/parts/tasks/common/taskSystem.ts index 30e51e8a2e33d411df0d85492cdbf36451a4c3ff..b61a8fbc86344e44d3c1fdd8c01624111f7a83e4 100644 --- a/src/vs/workbench/parts/tasks/common/taskSystem.ts +++ b/src/vs/workbench/parts/tasks/common/taskSystem.ts @@ -100,6 +100,7 @@ export interface ITaskResolver { export interface ITaskSystem extends IEventEmitter { run(task: Task, resolver: ITaskResolver): ITaskExecuteResult; + show(task: Task, forceFocus?: boolean): void; isActive(): TPromise; isActiveSync(): boolean; getActiveTasks(): Task[]; diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index f4d4872c6d9750c638370f30dcad5643cc92e203..529b36f8f0c3eb40cf148a543a3c46b9b2b1d0d2 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -444,6 +444,9 @@ class NullTaskSystem extends EventEmitter implements ITaskSystem { promise: TPromise.as({}) }; } + public show(task: Task, forceFocus: boolean = false): void { + return; + } public isActive(): TPromise { return TPromise.as(false); } @@ -929,8 +932,13 @@ class TaskService extends EventEmitter implements ITaskService { let executeResult = this.getTaskSystem().run(task, resolver); if (executeResult.kind === TaskExecuteKind.Active) { let active = executeResult.active; - if (active.same && active.background) { - this.messageService.show(Severity.Info, nls.localize('TaskSystem.activeSame', 'The task is already active and in watch mode. To terminate the task use `F1 > terminate task`')); + if (active.same) { + if (active.background) { + this.messageService.show(Severity.Info, nls.localize('TaskSystem.activeSame.background', 'The task is already active and in background mode. To terminate the task use `F1 > terminate task`')); + } else { + this.getTaskSystem().show(task, true); + // this.messageService.show(Severity.Info, nls.localize('TaskSystem.activeSame.noBackground', 'The task is already active. To terminate the task use `F1 > terminate task`')); + } } else { throw new TaskError(Severity.Warning, nls.localize('TaskSystem.active', 'There is already a task running. Terminate it first before executing another task.'), TaskErrors.RunningTask); } diff --git a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts index b22d2788cb3350a42ad5b048c0556baf55a9c5db..3bdec71f2ec29c0ac3be9080cef7f273797b5793 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts @@ -156,6 +156,15 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem { } } + public show(task: Task, forceFocus: boolean = false): void { + let terminalData = this.activeTasks[task._id]; + if (terminalData === void 0) { + return; + } + this.terminalService.setActiveInstance(terminalData.terminal); + this.terminalService.showPanel(forceFocus); + } + public isActive(): TPromise { return TPromise.as(this.isActiveSync()); } diff --git a/src/vs/workbench/parts/tasks/node/processTaskSystem.ts b/src/vs/workbench/parts/tasks/node/processTaskSystem.ts index 0db8946a2d29db3ff1400e63a6104adf559e3497..c6e4d70add928ed8e3b483eb1ff9b540c35d11aa 100644 --- a/src/vs/workbench/parts/tasks/node/processTaskSystem.ts +++ b/src/vs/workbench/parts/tasks/node/processTaskSystem.ts @@ -89,6 +89,10 @@ export class ProcessTaskSystem extends EventEmitter implements ITaskSystem { return this.executeTask(task); } + public show(task: Task, forceFocus: boolean = false): void { + this.outputChannel.show(!focus); + } + public hasErrors(value: boolean): void { this.errorsShown = !value; }