package org.elixir_lang.templates; import com.intellij.codeInsight.template.EverywhereContextType; import com.intellij.codeInsight.template.TemplateContextType; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiWhiteSpace; import com.intellij.psi.util.PsiUtilCore; import org.elixir_lang.ElixirLanguage; import org.jetbrains.annotations.NotNull; public class ElixirContextType extends TemplateContextType { ElixirContextType() { super("ELIXIR_CODE", "Elixir", EverywhereContextType.class); } @Override public boolean isInContext(@NotNull PsiFile psiFile, int offset) { if (!PsiUtilCore.getLanguageAtOffset(psiFile, offset).isKindOf(ElixirLanguage.INSTANCE)) return false; PsiElement element = psiFile.findElementAt(offset); return !(element instanceof PsiWhiteSpace) && element != null; } }