gpt4 book ai didi

java - IntelliJ 插件开发 : insert new code after all fields within a class

转载 作者:行者123 更新时间:2023-11-30 10:19:23 25 4
gpt4 key购买 nike

我正在开发一个在类中生成方法的插件。

问题是我生成的代码被随机插入到其他字段和方法之间。例如。我有 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) {
// ...
}
}

更新:我找到了 "Rearrange Code"用户界面中的功能。可能以编程方式调用它会解决我的问题,但到目前为止我还没有找到如何做到这一点。

最佳答案

Action 可以这样调用:

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 中搜索第一个方法或声明的结尾,然后在正确的位置插入方法。

关于java - IntelliJ 插件开发 : insert new code after all fields within a class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48666074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com