From fecd73b4e6ca46615ccbb3e81b8dc418354d369a Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Tue, 17 Feb 2015 16:09:59 +0300 Subject: [PATCH] always substitute languages in scratch roots --- .../execution/console/IdeConsoleRootType.java | 17 ------------- .../com/intellij/ide/scratch/RootType.java | 24 ++++++++++++++++++- .../intellij/ide/scratch/ScratchRootType.java | 8 ++----- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/console/IdeConsoleRootType.java b/platform/lang-impl/src/com/intellij/execution/console/IdeConsoleRootType.java index 4e2cd9a5eeea..7fcbdcd47a1c 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/IdeConsoleRootType.java +++ b/platform/lang-impl/src/com/intellij/execution/console/IdeConsoleRootType.java @@ -16,11 +16,7 @@ package com.intellij.execution.console; import com.intellij.icons.AllIcons; -import com.intellij.lang.Language; import com.intellij.openapi.fileEditor.FileEditorManager; -import com.intellij.openapi.fileTypes.FileType; -import com.intellij.openapi.fileTypes.FileTypeManager; -import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; @@ -41,13 +37,6 @@ public class IdeConsoleRootType extends ConsoleRootType { return findByClass(IdeConsoleRootType.class); } - @Nullable - @Override - public Language substituteLanguage(@NotNull Project project, @NotNull VirtualFile file) { - FileType fileType = getFileType(file); - return fileType instanceof LanguageFileType ? ((LanguageFileType)fileType).getLanguage() : null; - } - @Nullable @Override public Icon substituteIcon(@NotNull Project project, @NotNull VirtualFile file) { @@ -59,10 +48,4 @@ public class IdeConsoleRootType extends ConsoleRootType { RunIdeConsoleAction.configureConsole(file, source); } - @Nullable - private static FileType getFileType(@NotNull VirtualFile file) { - String extension = file.getExtension(); - if (extension == null) return null; - return FileTypeManager.getInstance().getFileTypeByExtension(extension); - } } diff --git a/platform/lang-impl/src/com/intellij/ide/scratch/RootType.java b/platform/lang-impl/src/com/intellij/ide/scratch/RootType.java index 11d3de6668a5..123b7e0ca659 100644 --- a/platform/lang-impl/src/com/intellij/ide/scratch/RootType.java +++ b/platform/lang-impl/src/com/intellij/ide/scratch/RootType.java @@ -19,10 +19,13 @@ import com.intellij.lang.Language; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileEditor.FileEditorManager; +import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.LanguageSubstitutors; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -80,7 +83,7 @@ public abstract class RootType { @Nullable public Language substituteLanguage(@NotNull Project project, @NotNull VirtualFile file) { - return null; + return substituteLanguageImpl(getOriginalLanguage(file), file, project); } @Nullable @@ -101,4 +104,23 @@ public abstract class RootType { public void fileOpened(@NotNull VirtualFile file, @NotNull FileEditorManager source) { } + + @Nullable + protected static Language substituteLanguageImpl(Language language, VirtualFile file, Project project) { + return language != null && language != ScratchFileType.INSTANCE.getLanguage() ? + LanguageSubstitutors.INSTANCE.substituteLanguage(language, file, project) : language; + } + + @Nullable + protected static FileType getOriginalFileType(@NotNull VirtualFile file) { + String extension = file.getExtension(); + if (extension == null) return null; + return FileTypeManager.getInstance().getFileTypeByExtension(extension); + } + + @Nullable + protected static Language getOriginalLanguage(@NotNull VirtualFile file) { + FileType fileType = getOriginalFileType(file); + return fileType instanceof LanguageFileType ? ((LanguageFileType)fileType).getLanguage() : null; + } } diff --git a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchRootType.java b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchRootType.java index e128110c388b..742920fc0009 100644 --- a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchRootType.java +++ b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchRootType.java @@ -17,10 +17,8 @@ package com.intellij.ide.scratch; import com.intellij.icons.AllIcons; import com.intellij.lang.Language; -import com.intellij.lang.PerFileMappings; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.LanguageSubstitutors; import com.intellij.ui.LayeredIcon; import com.intellij.util.ObjectUtils; import org.jetbrains.annotations.NotNull; @@ -44,10 +42,8 @@ public final class ScratchRootType extends RootType { @Override public Language substituteLanguage(@NotNull Project project, @NotNull VirtualFile file) { - PerFileMappings mapping = ScratchFileService.getInstance().getScratchesMapping(); - Language language = mapping.getMapping(file); - return language != null && language != ScratchFileType.INSTANCE.getLanguage() ? - LanguageSubstitutors.INSTANCE.substituteLanguage(language, file, project) : language; + Language language = ScratchFileService.getInstance().getScratchesMapping().getMapping(file); + return substituteLanguageImpl(language, file, project); } @Nullable