always substitute languages in scratch roots

This commit is contained in:
Gregory.Shrago
2015-02-17 16:12:04 +03:00
parent 6f7b55b3f7
commit fecd73b4e6
3 changed files with 25 additions and 24 deletions
@@ -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);
}
}
@@ -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;
}
}
@@ -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<Language> 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