mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
always substitute languages in scratch roots
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user