diff --git a/src/main/java/org/jastadd/tooling/java/GeneratedCodeUtil.java b/src/main/java/org/jastadd/tooling/java/GeneratedCodeUtil.java index d8ca85db4d0d7b6fd3a60a77d6eece5cdef36191..b4c84ddd616cb2bdf4018508026dc03d0f97571e 100644 --- a/src/main/java/org/jastadd/tooling/java/GeneratedCodeUtil.java +++ b/src/main/java/org/jastadd/tooling/java/GeneratedCodeUtil.java @@ -1,10 +1,13 @@ package org.jastadd.tooling.java; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.ex.ApplicationEx; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; +import com.intellij.util.ui.EDT; import org.jetbrains.annotations.NotNull; import java.nio.file.Paths; @@ -33,8 +36,11 @@ public class GeneratedCodeUtil { } String path = jastAddFileLocation.substring(0, pos); - System.out.println(path); - VirtualFile vFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(path); + // the method performing the refresh is not allowed when the following condition is not met + // see com.intellij.openapi.vfs.newvfs.RefreshQueueImpl:execute + VirtualFile vFile = ((ApplicationEx) ApplicationManager.getApplication()).holdsReadLock() || EDT.isCurrentThreadEdt() + ? LocalFileSystem.getInstance().findFileByPath(path) + : LocalFileSystem.getInstance().refreshAndFindFileByPath(path); int line; try { @@ -45,7 +51,6 @@ public class GeneratedCodeUtil { if (vFile == null) { return Paths.get(path).getFileName() + (line == 0 ? "" : ":" + line); } - System.out.println(line); Document document = FileDocumentManager.getInstance().getDocument(vFile); if (document == null) {