提交 39f8f78d 编写于 作者: D Dirk Baeumer

Fixes #30095: Task spinner should only run for build tasks with a problem matcher when using 2.0.0

上级 6da138c8
......@@ -94,6 +94,7 @@ export interface TaskEvent {
taskName?: string;
type?: TaskType;
group?: string;
__task?: Task;
}
export interface ITaskResolver {
......
......@@ -378,7 +378,7 @@ class StatusBarItem extends Themable implements IStatusbarItem {
});
callOnDispose.push(this.taskService.addListener(TaskServiceEvents.Active, (event: TaskEvent) => {
if (this.taskService.inTerminal() && event.group !== TaskGroup.Build) {
if (this.ignoreEvent(event)) {
return;
}
this.activeCount++;
......@@ -398,7 +398,7 @@ class StatusBarItem extends Themable implements IStatusbarItem {
}));
callOnDispose.push(this.taskService.addListener(TaskServiceEvents.Inactive, (event: TaskEvent) => {
if (this.taskService.inTerminal() && event.group !== TaskGroup.Build) {
if (this.ignoreEvent(event)) {
return;
}
// Since the exiting of the sub process is communicated async we can't order inactive and terminate events.
......@@ -416,7 +416,7 @@ class StatusBarItem extends Themable implements IStatusbarItem {
}));
callOnDispose.push(this.taskService.addListener(TaskServiceEvents.Terminated, (event: TaskEvent) => {
if (this.taskService.inTerminal() && event.group !== TaskGroup.Build) {
if (this.ignoreEvent(event)) {
return;
}
if (this.activeCount !== 0) {
......@@ -439,6 +439,19 @@ class StatusBarItem extends Themable implements IStatusbarItem {
}
};
}
private ignoreEvent(event: TaskEvent): boolean {
if (!this.taskService.inTerminal()) {
return false;
}
if (event.group !== TaskGroup.Build) {
return true;
}
if (!event.__task) {
return false;
}
return event.__task.problemMatchers === void 0 || event.__task.problemMatchers.length === 0;
}
}
interface TaskServiceEventData {
......@@ -757,7 +770,7 @@ class TaskService extends EventEmitter implements ITaskService {
this.storageService.store(TaskService.RecentlyUsedTasks_Key, JSON.stringify(values), StorageScope.WORKSPACE);
}
public openDocumentation(): void {
private openDocumentation(): void {
this.openerService.open(URI.parse('https://go.microsoft.com/fwlink/?LinkId=733558'));
}
......
......@@ -189,7 +189,7 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem {
let task = activeTerminal.task;
try {
onExit.dispose();
let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group };
let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group, __task: task };
this.emit(TaskSystemEvents.Terminated, event);
} catch (error) {
// Do nothing.
......@@ -210,7 +210,7 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem {
let task = terminalData.task;
try {
onExit.dispose();
let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group };
let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group, __task: task };
this.emit(TaskSystemEvents.Terminated, event);
} catch (error) {
// Do nothing.
......@@ -270,7 +270,7 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem {
const problemMatchers = this.resolveMatchers(task.problemMatchers);
let watchingProblemMatcher = new WatchingProblemCollector(problemMatchers, this.markerService, this.modelService);
let toUnbind: IDisposable[] = [];
let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.Watching, group: task.group };
let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.Watching, group: task.group, __task: task };
let eventCounter: number = 0;
toUnbind.push(watchingProblemMatcher.addListener(ProblemCollectorEvents.WatchingBeginDetected, () => {
eventCounter++;
......@@ -332,7 +332,7 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem {
} else {
promise = new TPromise<ITaskSummary>((resolve, reject) => {
[terminal, executedCommand] = this.createTerminal(task);
let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group };
let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group, __task: task };
this.emit(TaskSystemEvents.Active, event);
let decoder = new TerminalDecoder();
let problemMatchers = this.resolveMatchers(task.problemMatchers);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册