Intellij idea 插件:Psi 类

Intellij idea plugin: Psi Classes

我正在用Intellij idea开发一个插件。我一直卡在语句后插入一段代码。

例如:

mHelper.launchPurchaseflow(str,str,str);

我需要找到元素 launchPurchaseflow 然后添加一段代码 statement.I 使用 PsiElement 和字符串匹配器来获取相应的字符串。

现在是我的 PsiElement = mhelper.launchPurchaseFlow。 如果我使用

psiClass.addAfter(newElement, PsiElement.getContext());

它只是试图在结束后添加 paranthesis.So 它作为不正确的语句弹出我的新元素。

例如:

位置添加
mHelper.launchPurchaseflow(str,str,str)//newElement;

但我需要在

添加
mHelper.launchPurchaseflow(str,str,str); // new Element.

很难给你一个正确的答案,因为你没有向我们展示你是如何插入新文本的,但假设你有一个包含 表达式的变量 PsiElement myElement =25=] mHelper.launchPurchaseflow(str,str,str)(没有分号)。 如果您对该元素调用 getParent(),您可能会访问表示方法调用的 语句

// Should represent "mHelper.launchPurchaseflow(str,str,str);" with the semicolon
PsiElement parent = myElement.getParent();

如果您在此节点之后添加代码,它应该会生成一个有效语句。

或者,如果 getParent() 没有 return 一个 PsiStatement 并且您想确保获得完整的声明,您可以这样做:

PsiElement statement = PsiTreeUtil.getParentOfType(myElement, PsiStatement.class);