开发插件原由
近期项目组考虑到编写代码的时候有个繁琐的工作
- class -> className
- for -> htmlFor
- style
就是遇到类似上面这些字符的时候得转换成相应的字符
开发插件的步骤
1、Step 新建插件项目
开发工具是 IDEA
选择 File
->New
->Project
选择 IntelliJ Platform Plugin
如图:选好 JDK
就可以了
2、Step
编写 plugin.xml
<actions>
<group id="StringConversion.Generate" text="StringConversion" description="对 JS 文件中的特需字符转换">
<action id="StringConversion.StringAction"
class="com.caituo.plugin.StringConversion"
text="StringConversion" description="StringConversion">
<add-to-group group-id="EditMenu" anchor="first"/>
<add-to-group group-id="EditorPopupMenu" anchor="first"/>
<keyboard-shortcut keymap="$default" first-keystroke="shift ctrl P"/>
</action>
</group>
</actions>
actions
节点理解成 Android Studio XML 文件里的application
group id
节点理解成 Android Studio XML 文件里的activity
add-to-group group-id
导航栏设置
keyboard-shortcut
快捷键设置
3、Step
编写类继承
com.intellij.openapi.actionSystem.AnAction
/**
* 执行插件的入口,相当于java中的main方法
*
* @param anActionEvent
*/
@Override
public void actionPerformed(AnActionEvent anActionEvent) {
if (!isFastClick(1000)) {
Logger.init(getClass().getSimpleName(), Logger.DEBUG);
}
Editor editor = anActionEvent.getData(PlatformDataKeys.EDITOR);
if (editor == null) {
return;
}
SelectionModel model = editor.getSelectionModel();
String text = model.getSelectedText();
if (TextUtils.isEmpty(text)) {
return;
}
Logger.debug(text);
//下面这句话也可以使用 lambda 语法写:Runnable runnable = () -> editor.getDocument().replaceString(selectionModel.getSelectionStart(), selectionModel.getSelectionEnd(), TransitionUtils.spacingText(selectedText));
Runnable runnable = new Runnable() {
@Override
public void run() {
//先对空格、制表符进行换掉,然后再重新进行分隔处理。其中分行不处理,因为在写文章的时候复制的一些内容分行是有意义的。
editor.getDocument().replaceString(model.getSelectionStart(),
model.getSelectionEnd(),
TransitionUtils.spacingText(RegexExpressionUtils.replace(text, "\\f|\\r|\\t", "")));
}
};
WriteCommandAction.runWriteCommandAction(anActionEvent.getData(PlatformDataKeys.PROJECT), runnable);
}
4、Step
打包生成
.jar
文件
GitHub 地址:Conversion