繁体   English   中英

Intellij Idea插件:Psi类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM