我正在使用一个在类中生成方法的插件。
问题是我生成的代码会在其他字段和方法之间随机插入。例如。我有4个字段,我的方法插入第二个和第三个字段之间,分为两部分。
问题:如何在字段后插入新代码?
以下是我使用的代码:
MyMembersHandlerBase extends GenerateMembersHandlerBase {
@Override
protected List<? extends GenerationInfo> generateMemberPrototypes(
PsiClass psiClass, ClassMember[] members) {
PsiMethod method1 = // method generation logic
PsiMethod method2 = // ...
return asList(
new PsiGenerationInfo(method1),
new PsiGenerationInfo(method2),
...
);
}
@Override
protected ClassMember[] getAllOriginalMembers(PsiClass psiClass) {
// ...
}
}
更新:我在UI中找到了"Rearrange Code"功能。以编程方式调用它可能会解决我的问题,但到目前为止我还没有找到如何做到这一点。
答案 0 :(得分:1)
可以通过这种方式调用此操作:
Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor();
ActionManager actionManager = ActionManager.getInstance();
AnAction rearrangeAction = actionManager.getAction("RearrangeCode");
DataContext dataContext = DataManager.getInstance()
.getDataContext(editor.getContentComponent());
Presentation presentation = rearrangeAction.getTemplatePresentation();
rearrangeAction.actionPerformed(
AnActionEvent.createFromDataContext("", presentation, dataContext)
);
但恕我直言更正确的是搜索AST的第一种方法或结束声明并在正确的位置插入方法。