Skip to content

Commit babde9c

Browse files
committed
Force the open file (if it is not opened) when it must be compiled with
tsserver. See angelozerr#142
1 parent 57ed0e0 commit babde9c

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

eclipse/ts.eclipse.ide.core/src/ts/eclipse/ide/internal/core/resources/IDETypeScriptProject.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,12 +373,13 @@ protected ITypeScriptLint createTslint(File tslintFile, File tslintJsonFile, Fil
373373
@Override
374374
public void compileWithTsserver(List<IFile> updatedTsFiles, List<IFile> removedTsFiles, IProgressMonitor monitor)
375375
throws TypeScriptException {
376+
List<IFile> tsFilesToClosed = new ArrayList<>();
376377
try {
377378
List<String> tsFilesToCompile = new ArrayList<>();
378379
// Collect ts files to compile by using tsserver to retrieve
379380
// dependencies files.
380381
// It works only if tsconfig.json declares "compileOnSave: true".
381-
collectTsFilesToCompile(updatedTsFiles, getClient(), tsFilesToCompile, false);
382+
collectTsFilesToCompile(updatedTsFiles, getClient(), tsFilesToCompile, tsFilesToClosed, false);
382383
// Compile ts files with tsserver.
383384
compileTsFiles(tsFilesToCompile, getClient());
384385
if (removedTsFiles.size() > 0) {
@@ -389,6 +390,10 @@ public void compileWithTsserver(List<IFile> updatedTsFiles, List<IFile> removedT
389390
throw e;
390391
} catch (Exception e) {
391392
throw new TypeScriptException(e);
393+
} finally {
394+
for (IFile tsFile : tsFilesToClosed) {
395+
closeFile(tsFile);
396+
}
392397
}
393398
}
394399

@@ -402,10 +407,18 @@ public void compileWithTsserver(List<IFile> updatedTsFiles, List<IFile> removedT
402407
* @throws Exception
403408
*/
404409
private void collectTsFilesToCompile(List<IFile> tsFiles, ITypeScriptServiceClient client,
405-
List<String> tsFilesToCompile, boolean exclude) throws Exception {
410+
List<String> tsFilesToCompile, List<IFile> tsFilesToClosed, boolean exclude) throws Exception {
406411
for (IFile tsFile : tsFiles) {
407412
String filename = WorkbenchResourceUtil.getFileName(tsFile);
408413
if (!tsFilesToCompile.contains(filename)) {
414+
// tsserver needs that file must be opened, force the "open"
415+
// if file is not opened.
416+
// see
417+
// https://github.com/angelozerr/typescript.java/issues/142
418+
if (getOpenedFile(tsFile) == null) {
419+
openFile(tsFile, null);
420+
tsFilesToClosed.add(tsFile);
421+
}
409422
collectTsFilesToCompile(filename, client, tsFilesToCompile, exclude);
410423
}
411424
}

0 commit comments

Comments
 (0)