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);
我正在用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);