首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Intellij插件: Psi类

Intellij插件: Psi类
EN

Stack Overflow用户
提问于 2016-04-27 06:18:17
回答 1查看 379关注 0票数 0

我在Intellij idea中开发一个插件。在语句后插入一段代码时,我被困住了。

例如:

代码语言:javascript
复制
mHelper.launchPurchaseflow(str,str,str);

我需要找到元素launchPurchaseflow,并在该语句之后添加一段代码,我使用PsiElement和string来获得相应的字符串。

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

代码语言:javascript
复制
psiClass.addAfter(newElement, PsiElement.getContext());

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

例如:

其加法位置

代码语言:javascript
复制
mHelper.launchPurchaseflow(str,str,str)//newElement;

但我得补充一下

代码语言:javascript
复制
mHelper.launchPurchaseflow(str,str,str); // new Element.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-28 08:43:20

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

代码语言:javascript
复制
// Should represent "mHelper.launchPurchaseflow(str,str,str);" with the semicolon
PsiElement parent = myElement.getParent();

如果在此节点之后添加代码,则应生成有效的语句。

或者,如果getParent()不返回一个PsiStatement,并且您希望确保具有完整的语句,则可以这样做:

代码语言:javascript
复制
PsiElement statement = PsiTreeUtil.getParentOfType(myElement, PsiStatement.class);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36881768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档