From b0fa5ca1f5079dfcd1d4ae71ddd8d39937a7e769 Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Mon, 25 Nov 2013 18:37:47 +0400 Subject: [PATCH] Added comment-based language injector for Python --- .../META-INF/intellilang-python-support.xml | 3 ++- .../python/intelliLang/PyCommentInjector.java | 25 +++++++++++++++++++ .../PyLanguageInjectionSupport.java | 9 +++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 python/IntelliLang-python/src/com/jetbrains/python/intelliLang/PyCommentInjector.java diff --git a/python/IntelliLang-python/src/META-INF/intellilang-python-support.xml b/python/IntelliLang-python/src/META-INF/intellilang-python-support.xml index 624d146a0378..ce37b6ba8beb 100644 --- a/python/IntelliLang-python/src/META-INF/intellilang-python-support.xml +++ b/python/IntelliLang-python/src/META-INF/intellilang-python-support.xml @@ -7,7 +7,8 @@ - + + \ No newline at end of file diff --git a/python/IntelliLang-python/src/com/jetbrains/python/intelliLang/PyCommentInjector.java b/python/IntelliLang-python/src/com/jetbrains/python/intelliLang/PyCommentInjector.java new file mode 100644 index 000000000000..45eb96bfaca0 --- /dev/null +++ b/python/IntelliLang-python/src/com/jetbrains/python/intelliLang/PyCommentInjector.java @@ -0,0 +1,25 @@ +package com.jetbrains.python.intelliLang; + +import com.intellij.lang.Language; +import com.intellij.psi.PsiElement; +import com.jetbrains.python.codeInsight.PyInjectorBase; +import org.intellij.plugins.intelliLang.inject.InjectedLanguage; +import org.intellij.plugins.intelliLang.inject.InjectorUtils; +import org.intellij.plugins.intelliLang.inject.config.BaseInjection; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * @author vlan + */ +public class PyCommentInjector extends PyInjectorBase { + @Nullable + @Override + public Language getInjectedLanguage(@NotNull PsiElement context) { + final BaseInjection injection = InjectorUtils.findCommentInjection(context, "comment", null); + if (injection != null) { + return InjectedLanguage.findLanguageById(injection.getInjectedLanguageId()); + } + return null; + } +} diff --git a/python/IntelliLang-python/src/com/jetbrains/python/intelliLang/PyLanguageInjectionSupport.java b/python/IntelliLang-python/src/com/jetbrains/python/intelliLang/PyLanguageInjectionSupport.java index 43db1f20d814..dee16d27646f 100644 --- a/python/IntelliLang-python/src/com/jetbrains/python/intelliLang/PyLanguageInjectionSupport.java +++ b/python/IntelliLang-python/src/com/jetbrains/python/intelliLang/PyLanguageInjectionSupport.java @@ -15,10 +15,13 @@ */ package com.jetbrains.python.intelliLang; +import com.intellij.openapi.util.Ref; +import com.intellij.psi.PsiElement; import com.intellij.psi.PsiLanguageInjectionHost; import com.jetbrains.python.patterns.PythonPatterns; import com.jetbrains.python.psi.PyElement; import org.intellij.plugins.intelliLang.inject.AbstractLanguageInjectionSupport; +import org.intellij.plugins.intelliLang.inject.config.BaseInjection; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -51,4 +54,10 @@ public class PyLanguageInjectionSupport extends AbstractLanguageInjectionSupport public String getHelpId() { return "reference.settings.language.injection.generic.python"; } + + @Nullable + @Override + public BaseInjection findCommentInjection(@NotNull PsiElement host, @Nullable Ref commentRef) { + return null; + } }