package com.haskforce.features.intentions; import com.haskforce.utils.FileUtil; import com.intellij.codeInsight.intention.impl.BaseIntentionAction; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFile; import com.intellij.util.Function; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; public class AddLanguagePragma extends BaseIntentionAction { public final String languageName; public AddLanguagePragma(String languageName) { this.languageName = languageName; } @NotNull @Override public String getFamilyName() { return "Add language pragma"; } @NotNull @Override public String getText() { return "Add " + languageName + " language pragma"; } @Override public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { // TODO: Add a setting for this. return true; } @Override public void invoke(@NotNull final Project project, Editor editor, final PsiFile file) throws IncorrectOperationException { FileUtil.updateFileText(project, file, new Function<String, String>() { public String fun(String text) { return "{-# LANGUAGE " + languageName + " #-}\n" + text; } }); } }