EA-37610 - INRE: FileBasedIndexImpl.handleDumbMode

This commit is contained in:
Evgeny Gerashchenko
2012-09-06 15:37:18 +04:00
parent 7b01ce5acb
commit a13d32daa9
2 changed files with 20 additions and 3 deletions
@@ -16,6 +16,7 @@
package org.jetbrains.jet.plugin.libraries; package org.jetbrains.jet.plugin.libraries;
import com.intellij.openapi.project.DumbService;
import com.intellij.psi.ClsFileDecompiledPsiFileProvider; import com.intellij.psi.ClsFileDecompiledPsiFileProvider;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiJavaFile; import com.intellij.psi.PsiJavaFile;
@@ -32,7 +33,7 @@ public class JetClsFileDecompiledPsiFileProvider implements ClsFileDecompiledPsi
@Override @Override
public PsiFile getDecompiledPsiFile(@NotNull PsiJavaFile psiFile) { public PsiFile getDecompiledPsiFile(@NotNull PsiJavaFile psiFile) {
ClsFileImpl clsFile = (ClsFileImpl)psiFile; ClsFileImpl clsFile = (ClsFileImpl)psiFile;
if (JetDecompiledData.isKotlinFile(clsFile)) { if (JetDecompiledData.isKotlinFile(clsFile) && !DumbService.isDumb(psiFile.getProject())) {
return JetDecompiledData.getDecompiledData(clsFile).getJetFile(); return JetDecompiledData.getDecompiledData(clsFile).getJetFile();
} }
return null; return null;
@@ -17,8 +17,10 @@
package org.jetbrains.jet.plugin.libraries; package org.jetbrains.jet.plugin.libraries;
import com.intellij.lang.Language; import com.intellij.lang.Language;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileTypes.ContentBasedClassFileProcessor; import com.intellij.openapi.fileTypes.ContentBasedClassFileProcessor;
import com.intellij.openapi.fileTypes.SyntaxHighlighter; import com.intellij.openapi.fileTypes.SyntaxHighlighter;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
@@ -34,8 +36,22 @@ import org.jetbrains.jet.plugin.highlighter.JetHighlighter;
public class JetContentBasedFileSubstitutor implements ContentBasedClassFileProcessor { public class JetContentBasedFileSubstitutor implements ContentBasedClassFileProcessor {
@Override @Override
public boolean isApplicable(@Nullable Project project, @NotNull VirtualFile file) { public boolean isApplicable(@Nullable Project project, @NotNull final VirtualFile file) {
return project != null && JetDecompiledData.isKotlinFile(project, file); if (project == null) {
return false;
}
if (DumbService.isDumb(project)) {
DumbService.getInstance(project).runWhenSmart(new Runnable() {
@Override
public void run() {
FileDocumentManager.getInstance().reloadFiles(file);
}
});
return false;
}
return JetDecompiledData.isKotlinFile(project, file);
} }
@NotNull @NotNull