Skip to content

Commit b9a348e

Browse files
committed
Fixes microsoft#29761: Use picker instead of quick pick to select a build or test task.
1 parent 1bd9439 commit b9a348e

6 files changed

Lines changed: 152 additions & 238 deletions

File tree

src/vs/workbench/parts/tasks/browser/buildQuickOpen.ts

Lines changed: 0 additions & 69 deletions
This file was deleted.

src/vs/workbench/parts/tasks/browser/quickOpen.ts

Lines changed: 4 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,16 @@ import Filters = require('vs/base/common/filters');
99
import { TPromise } from 'vs/base/common/winjs.base';
1010
import { Action, IAction } from 'vs/base/common/actions';
1111
import { IStringDictionary } from 'vs/base/common/collections';
12-
import * as Objects from 'vs/base/common/objects';
1312

1413
import Quickopen = require('vs/workbench/browser/quickopen');
1514
import QuickOpen = require('vs/base/parts/quickopen/common/quickOpen');
1615
import Model = require('vs/base/parts/quickopen/browser/quickOpenModel');
17-
import { IQuickOpenService, IPickOpenEntry } from 'vs/platform/quickOpen/common/quickOpen';
18-
import { ProblemMatcherRegistry, NamedProblemMatcher } from 'vs/platform/markers/common/problemMatcher';
16+
import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen';
1917

2018
import { Task, TaskSourceKind } from 'vs/workbench/parts/tasks/common/tasks';
21-
import { ITaskService } from 'vs/workbench/parts/tasks/common/taskService';
19+
import { ITaskService, RunOptions } from 'vs/workbench/parts/tasks/common/taskService';
2220
import { ActionBarContributor, ContributableActionProvider } from 'vs/workbench/browser/actions';
2321

24-
interface ProblemMatcherPickEntry extends IPickOpenEntry {
25-
matcher: NamedProblemMatcher;
26-
learnMore?: boolean;
27-
}
28-
2922
export class TaskEntry extends Model.QuickOpenEntry {
3023

3124
constructor(protected taskService: ITaskService, protected quickOpenService: IQuickOpenService, protected _task: Task, highlights: Model.IHighlight[] = []) {
@@ -44,53 +37,8 @@ export class TaskEntry extends Model.QuickOpenEntry {
4437
return this._task;
4538
}
4639

47-
protected attachProblemMatcher(task: Task): TPromise<Task> {
48-
let entries: ProblemMatcherPickEntry[] = [];
49-
for (let key of ProblemMatcherRegistry.keys()) {
50-
let matcher = ProblemMatcherRegistry.get(key);
51-
if (matcher.name === matcher.label) {
52-
entries.push({ label: matcher.name, matcher: matcher });
53-
} else {
54-
entries.push({
55-
label: matcher.label,
56-
description: `$${matcher.name}`,
57-
matcher: matcher
58-
});
59-
}
60-
}
61-
if (entries.length > 0) {
62-
entries = entries.sort((a, b) => a.label.localeCompare(b.label));
63-
entries[0].separator = { border: true };
64-
entries.unshift(
65-
{ label: nls.localize('continueWithout', 'Continue without scanning the build output'), matcher: undefined },
66-
{ label: nls.localize('learnMoreAbout', 'Learn more about scanning the build output'), matcher: undefined, learnMore: true }
67-
);
68-
return this.quickOpenService.pick(entries, {
69-
placeHolder: nls.localize('selectProblemMatcher', 'Select for which kind of errors and warnings to scan the build output')
70-
}).then((selected) => {
71-
if (selected) {
72-
if (selected.learnMore) {
73-
this.taskService.openDocumentation();
74-
return undefined;
75-
} else if (selected.matcher) {
76-
let newTask = Objects.deepClone(task);
77-
let matcherReference = `$${selected.matcher.name}`;
78-
newTask.problemMatchers = [matcherReference];
79-
this.taskService.customize(task, { problemMatcher: [matcherReference] }, true);
80-
return newTask;
81-
} else {
82-
return task;
83-
}
84-
} else {
85-
return task;
86-
}
87-
});
88-
}
89-
return TPromise.as(task);
90-
}
91-
92-
protected doRun(task: Task): boolean {
93-
this.taskService.run(task);
40+
protected doRun(task: Task, options?: RunOptions): boolean {
41+
this.taskService.run(task, options);
9442
if (task.command.presentation.focus) {
9543
this.quickOpenService.close();
9644
return false;

src/vs/workbench/parts/tasks/browser/taskQuickOpen.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import QuickOpen = require('vs/base/parts/quickopen/common/quickOpen');
1010
import Model = require('vs/base/parts/quickopen/browser/quickOpenModel');
1111
import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen';
1212

13-
import { Task, TaskGroup } from 'vs/workbench/parts/tasks/common/tasks';
13+
import { Task } from 'vs/workbench/parts/tasks/common/tasks';
1414
import { ITaskService } from 'vs/workbench/parts/tasks/common/taskService';
1515
import { IExtensionService } from 'vs/platform/extensions/common/extensions';
1616

@@ -27,16 +27,7 @@ class TaskEntry extends base.TaskEntry {
2727
return false;
2828
}
2929
let task = this._task;
30-
if (this.taskService.canCustomize() && task.group === TaskGroup.Build && ((task.problemMatchers === void 0) || task.problemMatchers.length === 0)) {
31-
this.attachProblemMatcher(task).then(task => {
32-
if (task) {
33-
this.doRun(task);
34-
}
35-
});
36-
return true;
37-
} else {
38-
return this.doRun(task);
39-
}
30+
return this.doRun(task, { attachProblemMatcher: true });
4031
}
4132
}
4233

src/vs/workbench/parts/tasks/browser/testQuickOpen.ts

Lines changed: 0 additions & 63 deletions
This file was deleted.

src/vs/workbench/parts/tasks/common/taskService.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,18 @@ export interface ITaskProvider {
2727
provideTasks(): TPromise<TaskSet>;
2828
}
2929

30+
export interface RunOptions {
31+
attachProblemMatcher?: boolean;
32+
}
33+
3034
export interface ITaskService extends IEventEmitter {
3135
_serviceBrand: any;
3236
configureAction(): Action;
33-
openDocumentation(): void;
3437
build(): TPromise<ITaskSummary>;
3538
rebuild(): TPromise<ITaskSummary>;
3639
clean(): TPromise<ITaskSummary>;
3740
runTest(): TPromise<ITaskSummary>;
38-
run(task: string | Task): TPromise<ITaskSummary>;
41+
run(task: string | Task, options?: RunOptions): TPromise<ITaskSummary>;
3942
inTerminal(): boolean;
4043
isActive(): TPromise<boolean>;
4144
getActiveTasks(): TPromise<Task[]>;

0 commit comments

Comments
 (0)