您的位置:首页 > 编程语言 > Java开发

intellij idea 插件开发---live template

2017-11-07 00:00 106 查看
摘要: 在使用intellij idea 时有个很方便的功能,如:userList.for,这时按回车,会自动生成for循环遍历集合,很方便,这就是live template,本文就模仿此快捷键,自定义一个live template来创建单元测试方法。

注:创建plugin项目可参考本人之前的博客https://my.oschina.net/u/2526698/blog/1548929
一.最终效果

1.输入test出现快捷提示,回车便创建测试方法,效果如下图


--->


以此类推,你可以创建controller 方法,等等

二.实现步骤

1.创建testTemplate.xml文件,路径为:resources\liveTemplates\testTemplate.xml

编辑testTemplate.xml,代码如下:

<templateSet group="TEST">
<template name="test" value="@Test
public void $TEXT$Test() {
  $END$
}" description="create test method." toReformat="true" toShortenFQNames="true">
<variable name="TEXT" expression="" defaultValue="" alwaysStopAt="true" />
<context>
<option name="JAVA" value="true" />
</context>
</template>
</templateSet>

name="test":表示我们输入test的时候,idea将自动出现模板提示,value便是模板内容,配置内容反映在idea界面上:settings--->live templates,后面演示;

2.创建TestTemplateProvider类,实现DefaultLiveTemplatesProvider接口,如下所示:

public class TestTemplateProvider  implements DefaultLiveTemplatesProvider {

@Override
public String[] getDefaultLiveTemplateFiles() {
//模板
return new String[]{"liveTemplates/testTemplate"};
}

@Nullable
@Override
public String[] getHiddenLiveTemplateFiles() {
return new String[0];
}
}

3.创建TestContext类,继承TemplateContextType类,如下所示:

public class TestContext extends TemplateContextType {

protected TestContext() {
super("JAVA", "Java");
}

@Override
public boolean isInContext(@NotNull PsiFile file, int offset) {
return file.getName().endsWith(".java");
}
}

其中,super("JAVA", "Java");约束了作用范围,记得需要在之前配置的xml文件添加对应的<context>

4.配置plugin.xml,将刚才创建的两个类配置到extensions中

<extensions defaultExtensionNs="com.intellij">
<!-- Add your extensions here -->
<defaultLiveTemplatesProvider implementation="TestTemplateProvider"/>
<liveTemplateContext implementation="TestContext"/>
</extensions>

至此,插件已完成,可以编译安装到idea上使用了。

三.界面上配置live template

除了以上方法外,也可以在界面上配置或修改模板,如下图:



你可以直接在界面上增加模板,也可以修改。idea本身内置了一些常用的变量,

如:

$TEXT$表示创建完后,此处会变为红色框,可输入代码。

$END$表示创建模板后,光标最后停留的位置;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息