mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
new scratch file/scratch widget: use language substitutor in a proper way [^greg]
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user