diff --git a/java/java-analysis-impl/src/com/intellij/openapi/roots/JavaProjectRootsUtil.java b/java/java-analysis-impl/src/com/intellij/openapi/roots/JavaProjectRootsUtil.java index 6adf0c47ce9d..9f8b331d8d92 100644 --- a/java/java-analysis-impl/src/com/intellij/openapi/roots/JavaProjectRootsUtil.java +++ b/java/java-analysis-impl/src/com/intellij/openapi/roots/JavaProjectRootsUtil.java @@ -18,6 +18,7 @@ package com.intellij.openapi.roots; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.NonPhysicalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiCodeFragment; import com.intellij.psi.PsiFile; @@ -42,6 +43,7 @@ public class JavaProjectRootsUtil { if (psiFile instanceof PsiCodeFragment) return false; final VirtualFile file = psiFile.getVirtualFile(); if (file == null) return false; + if (file.getFileSystem() instanceof NonPhysicalFileSystem) return false; final ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(psiFile.getProject()).getFileIndex(); return !projectFileIndex.isUnderSourceRootOfType(file, JavaModuleSourceRootTypes.SOURCES) && !projectFileIndex.isInLibrarySource(file) && !projectFileIndex.isInLibraryClasses(file); diff --git a/platform/diff-impl/src/com/intellij/diff/DiffContentFactoryImpl.java b/platform/diff-impl/src/com/intellij/diff/DiffContentFactoryImpl.java index c03b2fdbf4c9..29da3e6002b5 100644 --- a/platform/diff-impl/src/com/intellij/diff/DiffContentFactoryImpl.java +++ b/platform/diff-impl/src/com/intellij/diff/DiffContentFactoryImpl.java @@ -423,10 +423,10 @@ public class DiffContentFactoryImpl extends DiffContentFactoryEx { @NotNull String fileName, boolean readOnly) { return ReadAction.compute(() -> { - LightVirtualFile file = new LightVirtualFile(fileName, DiffPsiFileType.INSTANCE, content); + LightVirtualFile file = new LightVirtualFile(fileName, fileType, content); file.setWritable(!readOnly); - file.putUserData(DiffPsiFileType.ORIGINAL_FILE_TYPE_KEY, fileType); + file.putUserData(DiffPsiFileSupport.KEY, true); Document document = FileDocumentManager.getInstance().getDocument(file); if (document == null) return null; diff --git a/platform/diff-impl/src/com/intellij/diff/contents/DiffPsiFileType.java b/platform/diff-impl/src/com/intellij/diff/contents/DiffPsiFileSupport.java similarity index 55% rename from platform/diff-impl/src/com/intellij/diff/contents/DiffPsiFileType.java rename to platform/diff-impl/src/com/intellij/diff/contents/DiffPsiFileSupport.java index c5c6b29f14eb..28f83801977e 100644 --- a/platform/diff-impl/src/com/intellij/diff/contents/DiffPsiFileType.java +++ b/platform/diff-impl/src/com/intellij/diff/contents/DiffPsiFileSupport.java @@ -21,81 +21,16 @@ import com.intellij.codeInsight.daemon.impl.IntentionActionFilter; import com.intellij.codeInsight.daemon.impl.analysis.DefaultHighlightingSettingProvider; import com.intellij.codeInsight.daemon.impl.analysis.FileHighlightingSetting; import com.intellij.codeInsight.intention.IntentionAction; -import com.intellij.icons.AllIcons; -import com.intellij.lang.Language; import com.intellij.lang.annotation.HighlightSeverity; -import com.intellij.openapi.fileTypes.*; -import com.intellij.openapi.fileTypes.ex.FileTypeIdentifiableByVirtualFile; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.LanguageSubstitutor; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import javax.swing.*; - -public class DiffPsiFileType extends LanguageFileType implements FileTypeIdentifiableByVirtualFile, PeripheralFileType { - public static final Key ORIGINAL_FILE_TYPE_KEY = Key.create("Diff.DiffPsiFileType.OriginalFileTypeKey"); - public static final LanguageFileType INSTANCE = new DiffPsiFileType(); - - DiffPsiFileType() { - super(PlainTextLanguage.INSTANCE); - } - - @Override - public boolean isMyFileType(@NotNull VirtualFile file) { - return isDiffFile(file); - } - - @NotNull - @Override - public String getName() { - return "Diff"; - } - - @NotNull - @Override - public String getDescription() { - return "Diff"; - } - - @NotNull - @Override - public String getDefaultExtension() { - return ""; - } - - @Nullable - @Override - public Icon getIcon() { - return AllIcons.Diff.Diff; - } - - @Override - public boolean isReadOnly() { - return true; - } - - @Nullable - @Override - public String getCharset(@NotNull VirtualFile file, @NotNull byte[] content) { - return null; - } - - - public static class Substitutor extends LanguageSubstitutor { - @Nullable - @Override - public Language getLanguage(@NotNull VirtualFile file, @NotNull Project project) { - FileType originalType = getOriginalFileType(file); - if (originalType instanceof LanguageFileType) { - return ((LanguageFileType)originalType).getLanguage(); - } - return null; - } - } +public class DiffPsiFileSupport { + public static final Key KEY = Key.create("Diff.DiffPsiFileSupport"); public static class HighlightFilter implements HighlightInfoFilter { @Override @@ -128,12 +63,6 @@ public class DiffPsiFileType extends LanguageFileType implements FileTypeIdentif } private static boolean isDiffFile(@Nullable VirtualFile file) { - return file != null && getOriginalFileType(file) != null; - } - - @Nullable - private static FileType getOriginalFileType(@NotNull VirtualFile file) { - FileType fileType = file.getUserData(ORIGINAL_FILE_TYPE_KEY); - return fileType instanceof DiffPsiFileType ? null : fileType; + return file != null && file.getUserData(KEY) == Boolean.TRUE; } } diff --git a/platform/platform-resources/src/META-INF/PlatformExtensions.xml b/platform/platform-resources/src/META-INF/PlatformExtensions.xml index 45fd1312c53c..8f0116eb6614 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensions.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensions.xml @@ -107,11 +107,10 @@ - - - + + + implementation="com.intellij.diff.contents.DiffPsiFileSupport$HighlightingSettingProvider"/>