我在Intellij idea中开发一个插件。在语句后插入一段代码时,我被困住了。
例如:
mHelper.launchPurchaseflow(str,str,str);我需要找到元素launchPurchaseflow,并在该语句之后添加一段代码,我使用PsiElement和string来获得相应的字符串。
现在是我的PsiElement = mhelper.launchPurchaseFlow。如果我用
psiClass.addAfter(newElement, PsiElement.getContext());它只是试图在关闭的paranthesis.So之后添加它弹出的新元素作为不正确的语句。
例如:
其加法位置
mHelper.launchPurchaseflow(str,str,str)//newElement;但我得补充一下
mHelper.launchPurchaseflow(str,str,str); // new Element.发布于 2016-04-28 08:43:20
很难给出正确的答案,因为您没有向我们展示如何插入新文本,但是假设您有一个变量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);https://stackoverflow.com/questions/36881768
复制相似问题