mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 06:05:01 +07:00
Fixed IntelliLang default injections for multi-part Python string literals (PY-10983)
This commit is contained in:
+30
@@ -1,12 +1,20 @@
|
||||
package com.jetbrains.python.intelliLang;
|
||||
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiLanguageInjectionHost;
|
||||
import com.jetbrains.python.patterns.PythonPatterns;
|
||||
import com.jetbrains.python.psi.PyElement;
|
||||
import com.jetbrains.python.psi.PyStringLiteralExpression;
|
||||
import org.intellij.plugins.intelliLang.inject.AbstractLanguageInjectionSupport;
|
||||
import org.intellij.plugins.intelliLang.inject.config.BaseInjection;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
*/
|
||||
@@ -34,4 +42,26 @@ public class PyLanguageInjectionSupport extends AbstractLanguageInjectionSupport
|
||||
public boolean useDefaultInjector(PsiLanguageInjectionHost host) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseInjection createInjection(Element element) {
|
||||
// This is how DefaultLanguageInjector gets its injection ranges
|
||||
return new BaseInjection(getId()) {
|
||||
@NotNull
|
||||
@Override
|
||||
public List<TextRange> getInjectedArea(PsiElement element) {
|
||||
if (element instanceof PyStringLiteralExpression) {
|
||||
return ((PyStringLiteralExpression)element).getStringValueTextRanges();
|
||||
}
|
||||
return super.getInjectedArea(element);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addInjectionInPlace(Language language, PsiLanguageInjectionHost psiElement) {
|
||||
// XXX: Disable temporary injections via intention actions for Python elements, since TemporaryPlacesInjector cannot handle elements
|
||||
// with multiple injection text ranges (PY-10691)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user