mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
python injectors: perform cheap checks first
This commit is contained in:
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
|
||||
import com.jetbrains.python.codeInsight.PyInjectionUtil;
|
||||
import com.jetbrains.python.codeInsight.PyInjectorBase;
|
||||
import com.jetbrains.python.psi.PyElement;
|
||||
import org.intellij.plugins.intelliLang.Configuration;
|
||||
import org.intellij.plugins.intelliLang.inject.InjectedLanguage;
|
||||
import org.intellij.plugins.intelliLang.inject.InjectorUtils;
|
||||
@@ -35,6 +36,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
public class PyConfigurationInjector extends PyInjectorBase {
|
||||
@Override
|
||||
public void getLanguagesToInject(@NotNull MultiHostRegistrar registrar, @NotNull PsiElement context) {
|
||||
if (!(context instanceof PyElement)) return;
|
||||
final PyInjectionUtil.InjectionResult result = registerInjection(registrar, context);
|
||||
if (!result.isStrict()) {
|
||||
InjectorUtils.putInjectedFileUserData(context, getInjectedLanguage(context), InjectedLanguageUtil.FRANKENSTEIN_INJECTION, Boolean.TRUE);
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiLanguageInjectionHost;
|
||||
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
|
||||
import com.jetbrains.python.codeInsight.PyInjectionUtil;
|
||||
import com.jetbrains.python.codeInsight.PyInjectorBase;
|
||||
import com.jetbrains.python.psi.PyElement;
|
||||
import org.intellij.plugins.intelliLang.inject.InjectedLanguage;
|
||||
import org.intellij.plugins.intelliLang.inject.InjectorUtils;
|
||||
import org.intellij.plugins.intelliLang.inject.TemporaryPlacesRegistry;
|
||||
@@ -48,10 +49,10 @@ public class PyTemporaryInjector extends PyInjectorBase {
|
||||
@Nullable
|
||||
@Override
|
||||
public Language getInjectedLanguage(@NotNull PsiElement context) {
|
||||
final TemporaryPlacesRegistry registry = TemporaryPlacesRegistry.getInstance(context.getProject());
|
||||
if (context instanceof PsiLanguageInjectionHost) {
|
||||
final PsiFile file = context.getContainingFile();
|
||||
final InjectedLanguage injectedLanguage = registry.getLanguageFor((PsiLanguageInjectionHost)context, file);
|
||||
if (context instanceof PsiLanguageInjectionHost && context instanceof PyElement) {
|
||||
PsiFile file = context.getContainingFile();
|
||||
InjectedLanguage injectedLanguage = TemporaryPlacesRegistry.getInstance(file.getProject())
|
||||
.getLanguageFor((PsiLanguageInjectionHost)context, file);
|
||||
if (injectedLanguage != null) {
|
||||
return injectedLanguage.getLanguage();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user