diff --git a/platform/core-api/src/com/intellij/lang/LanguageUtil.java b/platform/core-api/src/com/intellij/lang/LanguageUtil.java index 54d60df592eb..cb4b5f60a761 100644 --- a/platform/core-api/src/com/intellij/lang/LanguageUtil.java +++ b/platform/core-api/src/com/intellij/lang/LanguageUtil.java @@ -28,6 +28,7 @@ import com.intellij.psi.LanguageSubstitutors; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.templateLanguages.TemplateLanguage; +import com.intellij.testFramework.LightVirtualFile; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -58,7 +59,9 @@ public final class LanguageUtil { @Nullable public static Language getFileLanguage(@Nullable VirtualFile file) { - return file == null ? null : getFileTypeLanguage(file.getFileType()); + if (file == null) return null; + Language l = file instanceof LightVirtualFile? ((LightVirtualFile)file).getLanguage() : null; + return l != null ? l : getFileTypeLanguage(file.getFileType()); } @Nullable diff --git a/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java b/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java index a32a589457fa..1cecb94c5bd7 100644 --- a/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java +++ b/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java @@ -128,13 +128,6 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi } private static Language calcBaseLanguage(@NotNull VirtualFile file, @NotNull Project project, @NotNull final FileType fileType) { - if (file instanceof LightVirtualFile) { - final Language language = ((LightVirtualFile)file).getLanguage(); - if (language != null) { - return language; - } - } - if (fileType.isBinary()) return Language.ANY; if (isTooLargeForIntelligence(file)) return PlainTextLanguage.INSTANCE; diff --git a/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java b/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java index 9b5d1e27698e..99412fe4645e 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java @@ -19,12 +19,12 @@ package com.intellij.psi.impl.file.impl; import com.intellij.injected.editor.DocumentWindow; import com.intellij.injected.editor.VirtualFileWindow; import com.intellij.lang.Language; +import com.intellij.lang.LanguageUtil; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileTypes.FileType; -import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.FileIndexFacade; @@ -136,7 +136,7 @@ public class FileManagerImpl implements FileManager { myVFileToViewProviderMap.clear(); for (Iterator iterator = fileToPsiFileMap.keySet().iterator(); iterator.hasNext();) { VirtualFile vFile = iterator.next(); - Language language = getLanguage(vFile, vFile.getFileType()); + Language language = LanguageUtil.getLanguageForPsi(myManager.getProject(), vFile); if (language != null && language != fileToPsiFileMap.get(vFile).getBaseLanguage()) { iterator.remove(); } @@ -274,7 +274,7 @@ public class FileManagerImpl implements FileManager { @NotNull public FileViewProvider createFileViewProvider(@NotNull final VirtualFile file, boolean eventSystemEnabled) { FileType fileType = file.getFileType(); - Language language = getLanguage(file, fileType); + Language language = LanguageUtil.getLanguageForPsi(myManager.getProject(), file); FileViewProviderFactory factory = language == null ? FileTypeFileViewProviders.INSTANCE.forFileType(fileType) : LanguageFileViewProviders.INSTANCE.forLanguage(language); @@ -283,16 +283,6 @@ public class FileManagerImpl implements FileManager { return viewProvider == null ? new SingleRootFileViewProvider(myManager, file, eventSystemEnabled, fileType) : viewProvider; } - @Nullable - private Language getLanguage(@NotNull VirtualFile file, final FileType fileType) { - if (fileType instanceof LanguageFileType) { - Language language = ((LanguageFileType)fileType).getLanguage(); - return LanguageSubstitutors.INSTANCE.substituteLanguage(language, file, myManager.getProject()); - } - - return null; - } - public void markInitialized() { LOG.assertTrue(!myInitialized); myDisposed = false;