use of com.intellij.psi.PsiLanguageInjectionHost in project intellij-community by JetBrains.
the class HtmlScriptLanguageInjector method getLanguagesToInject.
@Override
public void getLanguagesToInject(@NotNull MultiHostRegistrar registrar, @NotNull PsiElement host) {
if (!host.isValid() || !(host instanceof XmlText) || !HtmlUtil.isHtmlTagContainingFile(host)) {
return;
}
XmlTag scriptTag = ((XmlText) host).getParentTag();
if (scriptTag == null) {
return;
}
final Language language = getScriptLanguageToInject(scriptTag);
if (language == null || HtmlScriptInjectionBlockerExtension.isInjectionBlocked(scriptTag, language)) {
return;
}
if (LanguageUtil.isInjectableLanguage(language)) {
registrar.startInjecting(language).addPlace(null, null, (PsiLanguageInjectionHost) host, TextRange.create(0, host.getTextLength())).doneInjecting();
}
}
use of com.intellij.psi.PsiLanguageInjectionHost in project intellij-community by JetBrains.
the class PyDocstringTest method doTestIndentation.
private void doTestIndentation(boolean hasErrors) {
String inputDataFileName = getTestName(true) + ".py";
myFixture.configureByFile(inputDataFileName);
final InjectedLanguageManager languageManager = InjectedLanguageManager.getInstance(myFixture.getProject());
final PsiLanguageInjectionHost host = languageManager.getInjectionHost(myFixture.getElementAtCaret());
assertNotNull(host);
final List<Pair<PsiElement, TextRange>> files = languageManager.getInjectedPsiFiles(host);
assertNotNull(files);
for (Pair<PsiElement, TextRange> pair : files) {
assertEquals(hasErrors, PsiTreeUtil.hasErrorElements(pair.getFirst()));
}
}
use of com.intellij.psi.PsiLanguageInjectionHost in project intellij-community by JetBrains.
the class PyTypingTest method doTestNoInjectedText.
private void doTestNoInjectedText(@NotNull String text) {
myFixture.configureByText(PythonFileType.INSTANCE, text);
final InjectedLanguageManager languageManager = InjectedLanguageManager.getInstance(myFixture.getProject());
final PsiLanguageInjectionHost host = languageManager.getInjectionHost(getElementAtCaret());
assertNull(host);
}
use of com.intellij.psi.PsiLanguageInjectionHost in project intellij-community by JetBrains.
the class PyDocstringFile method getLanguageLevel.
@Override
public LanguageLevel getLanguageLevel() {
final InjectedLanguageManager languageManager = InjectedLanguageManager.getInstance(getProject());
final PsiLanguageInjectionHost host = languageManager.getInjectionHost(this);
if (host != null)
return LanguageLevel.forElement(host.getContainingFile());
return super.getLanguageLevel();
}
use of com.intellij.psi.PsiLanguageInjectionHost in project intellij-plugins by JetBrains.
the class FreeMarkerCssInlineStyleInjector method getLanguagesToInject.
@Override
public void getLanguagesToInject(@NotNull final MultiHostRegistrar multiHostRegistrar, @NotNull final PsiElement psiElement) {
if (CSS_ELEMENT_PATTERN.accepts(psiElement)) {
final TextRange range = new TextRange(1, psiElement.getTextLength() - 1);
multiHostRegistrar.startInjecting(CssFileType.INSTANCE.getLanguage()).addPlace("inline.style {", "}", (PsiLanguageInjectionHost) psiElement, range).doneInjecting();
}
}
Aggregations