new scratch file/scratch widget: use language substitutor in a proper way [^greg]

This commit is contained in:
Sergey Ignatov
2014-10-17 18:24:59 +04:00
parent 31853e9539
commit 3e5f5659c0
2 changed files with 10 additions and 4 deletions
@@ -35,7 +35,9 @@ import com.intellij.openapi.ui.popup.util.BaseListPopupStep;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.LanguageSubstitutors;
import com.intellij.psi.PsiFile;
import com.intellij.testFramework.LightVirtualFile;
import com.intellij.util.Consumer;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.EmptyIcon;
@@ -79,13 +81,18 @@ public class NewScratchFileAction extends AnAction implements DumbAware {
@Override
public void consume(Language language) {
FeatureUsageTracker.getInstance().triggerFeatureUsed("scratch");
VirtualFile file = ScratchpadManager.getInstance(project).createScratchFile(language);
VirtualFile file = ScratchpadManager.getInstance(project).createScratchFile(substitute(project, language));
FileEditorManager.getInstance(project).openFile(file, true);
}
});
popup.showCenteredInCurrentWindow(project);
}
@NotNull
public static Language substitute(@NotNull Project project, @NotNull Language language) {
return LanguageSubstitutors.INSTANCE.substituteLanguage(language, new LightVirtualFile(), project);
}
@NotNull
static ListPopup buildLanguagePopup(@NotNull Project project, @Nullable Language context, final Consumer<Language> onChoosen) {
List<Language> languages = LanguageUtil.getFileLanguages();
@@ -28,7 +28,6 @@ import com.intellij.openapi.wm.CustomStatusBarWidget;
import com.intellij.openapi.wm.StatusBarWidget;
import com.intellij.openapi.wm.impl.status.EditorBasedWidget;
import com.intellij.openapi.wm.impl.status.TextPanel;
import com.intellij.psi.LanguageSubstitutors;
import com.intellij.testFramework.LightVirtualFile;
import com.intellij.ui.ClickListener;
import com.intellij.ui.awt.RelativePoint;
@@ -51,7 +50,7 @@ class ScratchWidget extends EditorBasedWidget implements CustomStatusBarWidget.M
new ClickListener() {
@Override
public boolean onClick(@NotNull MouseEvent e, int clickCount) {
Project project = getProject();
final Project project = getProject();
Editor editor = getEditor();
final LightVirtualFile selectedFile = getScratchFile();
if (project == null || editor == null || selectedFile == null) return false;
@@ -59,7 +58,7 @@ class ScratchWidget extends EditorBasedWidget implements CustomStatusBarWidget.M
ListPopup popup = NewScratchFileAction.buildLanguagePopup(project, selectedFile.getLanguage(), new Consumer<Language>() {
@Override
public void consume(Language language) {
selectedFile.setLanguage(LanguageSubstitutors.INSTANCE.substituteLanguage(language, selectedFile, myProject));
selectedFile.setLanguage(NewScratchFileAction.substitute(project, language));
FileContentUtilCore.reparseFiles(selectedFile);
update();
}