Added comment-based language injector for Python

This commit is contained in:
Andrey Vlasovskikh
2013-11-25 18:37:47 +04:00
parent 16650f3293
commit b0fa5ca1f5
3 changed files with 36 additions and 1 deletions

View File

@@ -7,7 +7,8 @@
</extensions>
<extensions defaultExtensionNs="com.intellij">
<patterns.patternClass className="com.jetbrains.python.patterns.PythonPatterns" alias="py"/>
<multiHostInjector implementation="com.jetbrains.python.intelliLang.PyTemporaryInjector"/>
<multiHostInjector implementation="com.jetbrains.python.intelliLang.PyCommentInjector"/>
<multiHostInjector implementation="com.jetbrains.python.intelliLang.PyConfigurationInjector"/>
<multiHostInjector implementation="com.jetbrains.python.intelliLang.PyTemporaryInjector"/>
</extensions>
</idea-plugin>

View File

@@ -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;
}
}

View File

@@ -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<PsiElement> commentRef) {
return null;
}
}