IDEA插件开发之基础篇

本文介绍了IntelliJ IDEA插件开发的基础知识,包括插件的主要功能,如自定义语言支持、框架集成、工具增强和界面定制。重点讲述了插件开发的常用场景,如操作对象(PsiFile、PsiClass等)和Action机制,提供了获取当前项目、编辑器对象、创建类、字段和方法等操作的实例。
摘要由CSDN通过智能技术生成

一.插件功能

IntelliJ IDEA 是一款流行的JAVA 开发 IDE,对于提高编程效率有非常大的帮助。但是,还是会有一些特殊的需求它并不能满足,此时我们就需要通过开发插件来实现了。

主要的插件功能包含以下四种类型:

  • 自定义语言支持:如果有 IDEA 暂时不支持的语言,可以自己写一个插件来支持,例如 Go 语言原来的支持就是通过插件做的,官方有自定义语言插件支持的教程;

  • 框架支持:例如Struts 2 的框架支持;

  • 工具集成:可以给 IDEA 的自带功能进行增强,例如对 Git 的操作增加 CodeReview 的功能;

  • 用户界面:自定义插件来改变用户界面,比如 BackgroundImage;

二.插件开发常用场景

1.常用对象

JAVA相关应用里面的常用对象:

PsiFile: 应用中的文件,如.Java的文件或者是.xml的文件等;

PsiDirectory: 应用中的目录;

PsiJavaFile: Java源文件,如Demo.java;

PsiClass: 某个类,一个文件中可能会有多个类;

PsiMethod: 类中的某个方法;

PsiField: 类中的某个属性;

PsiAnnotation: 注解;

2.常用操作

Action 是 IDEA 插件开发中比较基本的概念,插件利用 Action 来往菜单栏和工具栏添加新的菜单或按钮,它继承了 com.intellij.openapi.actionSystem.AnAction,当对应的菜单栏或者工具按钮被点击,则Action被调用,最为关键的就是 actionPerformed 方法。它的定义如下:

public void actionPerformed(@NotNull AnActionEvent anActionEvent) {
   }

定义好之后就可以在方法里面编写我们想要实现的插件功能了,常用的操作如下:

(1). 获取当前项目:

Project project = anActionEvent.getProject();

(2). 获取当前的编辑器对象:

Editor editor = anActionEvent.getData(CommonDataKeys.EDITOR);

(3). 获取当前编辑的文件:

PsiFile psiFile = PsiDocumentManager.getInstance
C++中的vector是一种动态数组,可以存储不同类型的元素。sort函数是C++ STL库中的一个算法函数,用于对容器中的元素进行排序。该函数可以接受三个参数,分别是要排序的容器的起始迭代器、结束迭代器和一个比较函数。 在引用中的例子中,使用sort函数对vector容器中的元素进行排序。sort函数默认使用小于号运算符(operator<)进行比较,因此默认情况下是按照升序对容器中的元素进行排序。 在引用中的例子中,定义了两个比较函数GreaterSort和LessSort,分别用于降序和升序排序。通过传入这些比较函数作为sort函数的第三个参数,可以实现自定义的排序方式。 在引用中的例子中,使用greater<int>()作为sort函数的第三个参数,实现了对容器中元素的降序排序。而没有传入第三个参数时,默认按照小于号运算符进行升序排序。 因此,C++中的vector容器可以通过sort函数进行排序,并且可以根据需要使用默认比较函数或自定义比较函数来实现不同的排序方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [C++中,结构体vector使用sort排序](https://blog.csdn.net/zhouxun623/article/details/49887555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [C++vector容器使用sort排序(含升序以及降序)](https://blog.csdn.net/G_matinal/article/details/126769371)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盛夏温暖流年

可以赏个鸡腿吃嘛~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值