[英]How to include Kotlin PSI classes (e.g. KtClass) in Intellij IDEA Gradle plugin project written in Kotlin?
[英]Intellij idea plugin: Psi Classes
我正在开发Intellij想法的插件。 我被困在声明后插入一段代码。
例如:
mHelper.launchPurchaseflow(str,str,str);
我需要找到元素launchPurchaseflow
并在该语句后添加一段代码。我使用了PsiElement
和字符串匹配器来获取相应的字符串。
现在我的PsiElement = mhelper.launchPurchaseFlow
。 如果我用
psiClass.addAfter(newElement, PsiElement.getContext());
它只是试图在结束括号之后添加。因此它弹出了我的新元素作为Incorrect Statement。
例如:
其添加位置
mHelper.launchPurchaseflow(str,str,str)//newElement;
但是我需要添加
mHelper.launchPurchaseflow(str,str,str); // new Element.
很难给您正确的答案,因为您没有向我们展示如何插入新文本,但是假设您有一个变量PsiElement myElement
,其中包含表达式 mHelper.launchPurchaseflow(str,str,str)
(不带分号) )。 如果在该元素上调用getParent()
,则可能可以访问表示方法调用的语句 :
// Should represent "mHelper.launchPurchaseflow(str,str,str);" with the semicolon
PsiElement parent = myElement.getParent();
如果将代码添加到此节点之后,它将产生一个有效的语句。
另外,如果getParent()
没有返回PsiStatement
并且您希望确定具有完整的语句,则可以执行以下操作:
PsiElement statement = PsiTreeUtil.getParentOfType(myElement, PsiStatement.class);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.