IntelliJ 插件 - 如何自动生成代码片段 [Java]
IntelliJ Plugin - How to automatic generate Code Snippet [Java]
我目前正在从事一个通过 IntelliJ 插件实现的项目。不幸的是,我找不到 example/guide 如何为 "automatic code generation" 设置函数。
例如 IntelliJ 的 getter/setter 方法。 (Alt + 插入)
我想用"my Plugin"在当前文件中建立一个小的Java方法。
如果有人能给我提示甚至代码示例,那就太好了。
我知道一般结构 -(plugin.xml -> group-id="GenerateGroup"
等)
好吧,我还没找到真正的教程...
我的解决方案:
Add/Change <depends>com.intellij.modules.java</depends>
在你的 plugin.xml
当您使用 gradle 项目时,在您的 build.gradle
中添加:intellij { plugins 'java'
这只是我的新构造函数版本
public void actionPerformed(AnActionEvent e)
{
WriteCommandAction.runWriteCommandAction(null, new Runnable() {
@Override
public void run() {
Editor editor = e.getRequiredData(CommonDataKeys.EDITOR);
Project project = e.getData(CommonDataKeys.PROJECT);
PsiFile file = PsiUtilBase.getPsiFileInEditor(editor, project);
PsiJavaFile psiJavaFile = (PsiJavaFile)file;
PsiClass[] classes = psiJavaFile.getClasses();
PsiClass psiClass = classes[0];
PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory();
PsiMethod newConstructor = factory.createMethodFromText("puplic " + psiClass.getName() + "() {//new Constructor }", psiClass);
final PsiMethod[] psiMethods = psiClass.getMethods();
PsiMethod firstMethod = (psiMethods.length == 0) ? null : psiMethods[0];
psiClass.addBefore(newConstructor, firstMethod);
}
});}
也许有人可以看一下并提出改进建议
我目前正在从事一个通过 IntelliJ 插件实现的项目。不幸的是,我找不到 example/guide 如何为 "automatic code generation" 设置函数。
例如 IntelliJ 的 getter/setter 方法。 (Alt + 插入)
我想用"my Plugin"在当前文件中建立一个小的Java方法。
如果有人能给我提示甚至代码示例,那就太好了。
我知道一般结构 -(plugin.xml -> group-id="GenerateGroup"
等)
好吧,我还没找到真正的教程...
我的解决方案:
Add/Change
<depends>com.intellij.modules.java</depends>
在你的 plugin.xml当您使用 gradle 项目时,在您的 build.gradle
中添加:
intellij { plugins 'java'
这只是我的新构造函数版本
public void actionPerformed(AnActionEvent e)
{
WriteCommandAction.runWriteCommandAction(null, new Runnable() {
@Override
public void run() {
Editor editor = e.getRequiredData(CommonDataKeys.EDITOR);
Project project = e.getData(CommonDataKeys.PROJECT);
PsiFile file = PsiUtilBase.getPsiFileInEditor(editor, project);
PsiJavaFile psiJavaFile = (PsiJavaFile)file;
PsiClass[] classes = psiJavaFile.getClasses();
PsiClass psiClass = classes[0];
PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory();
PsiMethod newConstructor = factory.createMethodFromText("puplic " + psiClass.getName() + "() {//new Constructor }", psiClass);
final PsiMethod[] psiMethods = psiClass.getMethods();
PsiMethod firstMethod = (psiMethods.length == 0) ? null : psiMethods[0];
psiClass.addBefore(newConstructor, firstMethod);
}
});}
也许有人可以看一下并提出改进建议