Skip to content

Commit e17f40f

Browse files
committed
pref: build is now async. This means you can start a build and *still* continue to do your work.
refs #27 TIP: don't have any `console.log` anymore in programManager
1 parent 6d9a635 commit e17f40f

File tree

10 files changed

+41
-22
lines changed

10 files changed

+41
-22
lines changed

lib/main/atomts.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,12 @@ function activate(state) {
113113
atom.commands.add('atom-text-editor', 'typescript:build', function (e) {
114114
if (!commandForTypeScript(e))
115115
return;
116+
var editor = atom.workspace.getActiveTextEditor();
117+
var filePath = editor.getPath();
116118
atom.notifications.addInfo('Building');
117-
setTimeout(function () {
118-
var outputs = commandGetProgram().build();
119-
buildView.setBuildOutput(outputs);
120-
}, 100);
119+
parent.build({ filePath: filePath }).then(function (resp) {
120+
buildView.setBuildOutput(resp.outputs);
121+
});
121122
});
122123
atom.commands.add('atom-text-editor', 'typescript:go-to-declaration', function (e) {
123124
if (!commandForTypeScript(e))

lib/main/atomts.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,12 +199,14 @@ export function activate(state: PackageState) {
199199
atom.commands.add('atom-text-editor', 'typescript:build',(e) => {
200200
if (!commandForTypeScript(e)) return;
201201

202+
var editor = atom.workspace.getActiveTextEditor();
203+
var filePath = editor.getPath();
204+
202205
atom.notifications.addInfo('Building');
203-
setTimeout(() => {
204-
var outputs = commandGetProgram().build();
205-
buildView.setBuildOutput(outputs);
206-
}, 100);
207206

207+
parent.build({filePath:filePath}).then((resp)=>{
208+
buildView.setBuildOutput(resp.outputs);
209+
});
208210
});
209211
atom.commands.add('atom-text-editor', 'typescript:go-to-declaration',(e) => {
210212
if (!commandForTypeScript(e)) return;

lib/main/lang/programManager.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,12 @@ var Program = (function () {
1515
var output = services.getEmitOutput(filePath);
1616
var success = output.emitOutputStatus === ts.EmitReturnStatus.Succeeded;
1717
var errors = [];
18-
if (success) {
19-
}
20-
else {
21-
console.log('FAILURE ' + filePath + ' emit');
18+
if (!success) {
2219
var allDiagnostics = services.getCompilerOptionsDiagnostics().concat(services.getSyntacticDiagnostics(filePath)).concat(services.getSemanticDiagnostics(filePath));
2320
allDiagnostics.forEach(function (diagnostic) {
2421
if (!diagnostic.file)
2522
return;
2623
var startPosition = diagnostic.file.getLineAndCharacterFromPosition(diagnostic.start);
27-
console.log(diagnostic.file.filename, startPosition.line, startPosition.character, diagnostic.messageText, diagnostic.code, diagnostic.isEarly);
2824
errors.push(diagnosticToTSError(diagnostic));
2925
});
3026
}

lib/main/lang/programManager.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,15 @@ export class Program {
4343
var errors: TSError[] = [];
4444

4545

46-
if (success) {
47-
// console.log('SUCCESS ' + filePath);
48-
}
49-
else {
50-
console.log('FAILURE ' + filePath + ' emit');
46+
if (!success) {
5147
var allDiagnostics = services.getCompilerOptionsDiagnostics()
5248
.concat(services.getSyntacticDiagnostics(filePath))
5349
.concat(services.getSemanticDiagnostics(filePath));
5450

5551
allDiagnostics.forEach(diagnostic => {
5652
if (!diagnostic.file) return; // TODO: happens only for 'lib.d.ts' for now
5753

58-
var startPosition = diagnostic.file.getLineAndCharacterFromPosition(diagnostic.start);
59-
console.log(diagnostic.file.filename, startPosition.line, startPosition.character, diagnostic.messageText, diagnostic.code, diagnostic.isEarly);
54+
var startPosition = diagnostic.file.getLineAndCharacterFromPosition(diagnostic.start);
6055
errors.push(diagnosticToTSError(diagnostic));
6156
});
6257
}

lib/worker/messages.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,4 @@ exports.updateText = 'updateText';
4242
exports.getErrorsForFile = 'getErrorsForFile';
4343
exports.getCompletionsAtPosition = 'getCompletionsAtPosition';
4444
exports.getErrorsForFileFiltered = 'getErrorsForFileFiltered';
45+
exports.build = 'build';

lib/worker/messages.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,3 +107,12 @@ export interface GetErrorsForFileFilteredQuery{
107107
export interface GetErrorsForFileFilteredResponse{
108108
errors: programManager.TSError[];
109109
}
110+
111+
export var build = 'build'
112+
export interface BuildQuery{
113+
// The filepath of the current typescript file in view
114+
filePath:string;
115+
}
116+
export interface BuildResponse{
117+
outputs: programManager.BuildOutput;
118+
}

lib/worker/parent.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,4 @@ exports.updateText = function (data) { return query(messages.updateText, data);
103103
exports.getErrorsForFile = function (data) { return query(messages.getErrorsForFile, data); };
104104
exports.getCompletionsAtPosition = function (data) { return query(messages.getCompletionsAtPosition, data); };
105105
exports.getErrorsForFileFiltered = function (data) { return query(messages.getErrorsForFileFiltered, data); };
106+
exports.build = function (data) { return query(messages.build, data); };

lib/worker/parent.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ function createId(): string {
9898
});
9999
}
100100

101-
function query<Query, Response>(message: string, data: Query) : Promise<Response> {
101+
function query<Query, Response>(message: string, data: Query): Promise<Response> {
102102

103103
// If we don't have a child exit
104104
if (!child || !child.stdin.writable) {
@@ -119,7 +119,7 @@ function query<Query, Response>(message: string, data: Query) : Promise<Response
119119
return defer.promise;
120120
}
121121

122-
export interface Exec<Query,Response> {
122+
export interface Exec<Query, Response> {
123123
(data: Query): Promise<Response>;
124124
}
125125

@@ -147,3 +147,6 @@ export var getCompletionsAtPosition: Exec<messages.GetCompletionsAtPositionQuery
147147

148148
export var getErrorsForFileFiltered: Exec<messages.GetErrorsForFileFilteredQuery, messages.GetErrorsForFileFilteredResponse>
149149
= (data) => query(messages.getErrorsForFileFiltered, data);
150+
151+
export var build: Exec<messages.BuildQuery, messages.BuildResponse>
152+
= (data) => query(messages.build, data);

lib/worker/workerProcess.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,8 @@ responders[messages.getErrorsForFileFiltered] = function (data) {
4747
errors: programManager.getErrorsForFileFiltered(data.filePath)
4848
};
4949
};
50+
responders[messages.build] = function (data) {
51+
return {
52+
outputs: programManager.getOrCreateProgram(data.filePath).build()
53+
};
54+
};

lib/worker/workerProcess.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,9 @@ responders[messages.getErrorsForFileFiltered] = (data: messages.GetErrorsForFile
6767
errors: programManager.getErrorsForFileFiltered(data.filePath)
6868
};
6969
}
70+
71+
responders[messages.build] = (data: messages.BuildQuery): messages.BuildResponse => {
72+
return {
73+
outputs: programManager.getOrCreateProgram(data.filePath).build()
74+
};
75+
}

0 commit comments

Comments
 (0)