Disabled editor highlighting for alien files.

This commit is contained in:
Evgeny Gerashchenko
2013-07-24 17:51:57 -07:00
parent 2520f11bdc
commit 81d33b78b7
2 changed files with 22 additions and 9 deletions
@@ -20,7 +20,6 @@ import com.intellij.lang.annotation.AnnotationHolder;
import com.intellij.lang.annotation.Annotator;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.checkers.DebugInfoUtil;
@@ -40,13 +39,10 @@ public class DebugInfoAnnotator implements Annotator {
@Override
public void annotate(@NotNull PsiElement element, @NotNull final AnnotationHolder holder) {
if (!isDebugInfoEnabled() || !JetPsiChecker.isErrorReportingEnabled()) {
if (!isDebugInfoEnabled() || !JetPsiChecker.isErrorReportingEnabled() || !JetPsiChecker.isInSourceContent(element)) {
return;
}
if (!ProjectFileIndex.SERVICE.getInstance(element.getProject()).isInContent(element.getContainingFile().getVirtualFile())) {
return;
}
if (element instanceof JetFile) {
JetFile file = (JetFile) element;
try {
@@ -28,8 +28,10 @@ import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.MultiRangeReference;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiReference;
import com.intellij.xml.util.XmlStringUtil;
import org.jetbrains.annotations.NotNull;
@@ -100,18 +102,21 @@ public class JetPsiChecker implements Annotator {
@Override
public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder holder) {
if (!isInSourceContent(element)) {
return;
}
for (HighlightingVisitor visitor : getBeforeAnalysisVisitors(holder)) {
element.accept(visitor);
}
if (element instanceof JetFile) {
JetFile file = (JetFile)element;
JetFile file = (JetFile) element;
try {
BindingContext bindingContext = WholeProjectAnalyzerFacade.analyzeProjectWithCacheOnAFile(file).getBindingContext();
boolean isInContent = ProjectFileIndex.SERVICE.getInstance(element.getProject()).isInContent(file.getVirtualFile());
if (errorReportingEnabled && isInContent) {
if (errorReportingEnabled) {
Collection<Diagnostic> diagnostics = Sets.newLinkedHashSet(bindingContext.getDiagnostics());
Set<PsiElement> redeclarations = Sets.newHashSet();
for (Diagnostic diagnostic : diagnostics) {
@@ -270,4 +275,16 @@ public class JetPsiChecker implements Annotator {
annotation.setTooltip(getMessage(redeclarationDiagnostic));
return annotation;
}
static boolean isInSourceContent(PsiElement element) {
PsiFile containingFile = element.getContainingFile();
if (containingFile == null) {
return false;
}
VirtualFile virtualFile = containingFile.getVirtualFile();
if (virtualFile == null) {
return false;
}
return ProjectFileIndex.SERVICE.getInstance(element.getProject()).isInSourceContent(virtualFile);
}
}