![](https://img-blog.csdnimg.cn/f42c4907dd974bca926a0ee71a11227d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Intellij IDE插件开发
文章平均质量分 85
Intellij idea plugin程序开发
korgs
原某互联网大厂P8架构师,多年耕耘电商、医疗、网络安全领域,现主要从事CNN深度学习图像处理开发。腾讯、钉钉、支付宝、阿里云兼职讲师,曾参与ACP、开悟AI、斑马智行车机等多套认证课程制作。阿里云社区/51CTO/腾讯云等多个开发者社区专家博主。全栈工程师,精通java、python、objective-C、swift、c++、react语言。
展开
-
idea插件开发-自定义语言7-Code Completion
Intellij idea plugin程序开发-代码自动完成原创 2024-01-24 12:35:27 · 1454 阅读 · 0 评论 -
idea插件开发(1)-第一个Idea插件
3分钟搭建一个idea插件。原创 2023-03-30 12:10:14 · 2980 阅读 · 6 评论 -
idea插件开发(2)-插件详细配置
本章详细讲解下插件工程的配置,官方在github上创建了一个idea开发的模板工程,此工程模板与idea中创建的工程最大不同之处就是配置了github的ci-action流程以及junit-test,其它方面没有区别,本文会详细讲解下在进行编码进行要掌握的必要的插件配置相关的知识。原创 2023-05-15 15:25:02 · 3803 阅读 · 6 评论 -
idea插件开发(3)-插件开发基础
上两篇文章主要描述了idea插件工程创建和idea插件的配置,本文继承上述两篇文章,详细描述下插件开发基础的第三块内容。也是开发具体插件功能前必须要了解的内容,否则开发过程中有可能会经常卡壳。原创 2023-05-16 16:05:16 · 540 阅读 · 1 评论 -
idea插件开发(4)-平台提供的功能
一个正式的插件开发需要涉及的技术点比较多,一个插件如果要正式发布,除了核心代码外还有一些类似日志、异常等这样的框架级的功能。本章就详细介绍下这些框架技术。原创 2023-05-17 14:41:17 · 1575 阅读 · 0 评论 -
idea插件开发(5)-Swing图形化设计
Java-GUI提供了两套设计AWT和Swing,其中Swing是基于AWT开发的,两者在功能上基本一样。发展至今天,最大的区别就是在显示样式上,AWT会匹配当前操作系统的UI而在不同平台下表现出不同的样式,但Swing不会。所以建议插件开发时采用Swing-GUI。原创 2023-05-18 13:04:43 · 9970 阅读 · 0 评论 -
idea插件开发(6)-toolWindows
工具窗口指IDEA的子窗口,这些窗口通常沿着主窗口的外边缘有自己的工具栏,包含一个或多个工具窗口按钮,这些按钮激活显示在主 IDE 窗口左侧、底部和右侧的面板。每侧包含两个工具窗口组,主要组和次要组,并且每次只能激活每个组中的一个工具窗口。原创 2023-05-20 00:52:37 · 2128 阅读 · 2 评论 -
idea插件开发(7)-Dialog和Popup
Dialog在idea中只有模式窗口的形式,是DialogWrapper应该用于 IntelliJ 平台中显示的所有模态对话框(和一些非模态对话框)的基类。默认有一个展示的样式,一个标题然后带两个按钮,可通过重写createActions()方法来自定义按钮。同时也提供以下功能供选择:按钮布局上下文帮助记住对话框的大小非模态验证(当输入到对话框的数据无效时显示错误消息文本)原创 2023-05-20 11:17:43 · 1685 阅读 · 0 评论 -
idea插件开发(8)-Notification
在idea的UI设计中,通知主要用于重要信息提示或是选择操作。原创 2023-05-20 13:29:01 · 1291 阅读 · 0 评论 -
idea插件开发-文件选择器
在IDEA中文件选择分为两种,一种是选择文件和目录、另外一种是选择类和包。原创 2023-05-24 13:29:50 · 858 阅读 · 2 评论 -
idea插件开发-Status Bar Widgets
是基本的小部件实现,需要重写ID()方法。位置面板调用getPresentation()方法可得到UI,如果要创建具有自定义内容的小部件,应该实现CustomStatusBarWidget接口,覆盖getComponent()以返回要显示的自定义小部件的组件。内存使用面板。原创 2023-05-29 08:52:17 · 723 阅读 · 0 评论 -
idea插件开发-Icon and Image
通过注册com.intellij.iconDescriptionBundle扩展点,可自动为所有工具栏配置默认图标,然后在资源文件中就可以按如下格式定义icon..tooltip,比如。如果插件要支持新UI,则需要经过以下操作,比如原默认UI图标的存放路径为/src/main/resources/icons。图标一般放在src/main/resources文件夹下的特定文件夹中,比如icons,然后可以通过IconLoader工具类来获取;. 每一帧代表一个图标,以及到下一帧的延迟。原创 2023-05-29 08:51:49 · 2251 阅读 · 0 评论 -
idea插件开发-JCEF
Chromium 嵌入式框架 (CEF)。一个用于在其他应用程序中嵌入基于 Chromium 的浏览器的简单框架,Chromium源码可看,在IDEA中是javaFX的替代器,在2020.2版本后就不再默认支持了,可查看。原创 2023-05-23 08:35:43 · 2074 阅读 · 3 评论 -
idea插件开发-AnAction
本章主要讲解AnAction的核心实现,更多的配置可查看之前章节,Idea-IDE的动作系统允许插件将Anction添加到基于 IntelliJ 平台的 IDE 菜单和工具栏,如下图所示,Action可以单独添加到工具栏或右键菜单中也可以先添加到Group中,再以Group方式添加。原创 2023-05-24 13:32:07 · 1476 阅读 · 0 评论 -
idea插件开发(5)-Idea的UI体系
idea平台的UI是基于Swing开发,但在几个特殊组件上idea提供了优化的替代方案,建议但不强制使用。原创 2023-05-21 13:18:12 · 2612 阅读 · 0 评论 -
idea插件开发-插件配置持久化
IntelliJ 平台提供了名为com.intellij.openapi.components.PersistentStateComponent的API,允许组件或服务在 IDE 重启之间保持它们的状态。状态类实例通常存储为PersistentStateComponent类中的一个字段,它是通过序列化的方式把bean或属性最终序列化为一个xml格式再进行存储,如果bean中的某个字段不需要持久化,可用@com.intellij.util.xmlb.annotations.Transient注解来标注一下。原创 2023-05-21 13:12:07 · 701 阅读 · 0 评论 -
idea插件开发-settings/preferences
定义AppSettingsState类@State(@Nullable@Override@Overridename: 指定的是实现类的全路径;storages:默认路径为~/Library/Application Support/JetBrains/IntelliJIdea2023.1/plugins;测试时此文件位于code_samples /settings /build /idea-sandbox /config /options/中;原创 2023-05-26 08:44:50 · 1340 阅读 · 0 评论 -
idea插件开发-File
虚拟文件系统 (VFS) 是 IntelliJ 平台的一个组件,它封装了大部分用于处理表示为Virtual File 的文件的活动。仅存储那些至少通过 VFS API 请求过一次的文件,并异步更新以匹配磁盘上发生的更改。快照是应用程序级的,而不是项目级的——因此,如果某个文件(例如 JDK 中的一个类)被多个项目引用,则只有其内容的一个副本将存储在 VFS 中。所有 VFS 访问操作都通过快照。原创 2023-05-23 08:37:37 · 465 阅读 · 0 评论 -
idea插件开发-Editor
idea中操作文件有两种方式一种是通过Document另一种是PSI方式,其中Editor就是操作Document的载体-编辑器。Ediotr更的是如何打开、定位文档等功能。本章将通过一个例子来完成以下功能:1、使用文本;2、编辑坐标系;3、编辑器事件;4、文本选择;5、文本编辑。 上述代码中可能过以下两种方式取得Editor中的数据模型DataContext: Editor可选择的数据模型:CaretModel、FoldingModel、Inden原创 2023-05-30 15:52:47 · 1524 阅读 · 0 评论 -
idea插件开发-runConfig
runConfig就是扩展运行的面板,可添加一个自定义的配置。可扩展的地方如图所示,这个界面点完+号后会有两个扩展点:1、类型-下图左侧红框内;2、配置工厂-比如Docker中会有多个子节点,这些子节点称为工厂;原创 2023-05-25 09:19:41 · 691 阅读 · 0 评论 -
idea插件开发-testings
idea插件的测试建议在真实环境中测试。但同时也可以采用一些三方框架,官方基本是采用junit做的单元测试。原创 2023-05-26 08:44:26 · 467 阅读 · 0 评论 -
idea插件开发-Project
IntelliJ IDEA 中的项目主要由Project、Module、Library、Facet、SDK这5部分组成。由ProjectSettingsService类来控制。本章主要介绍projec操作的基本知识。原创 2023-05-31 08:31:11 · 1038 阅读 · 0 评论 -
idea插件开发-Project Wizard
自定义向导概述起来要完成以下工作。修改配置向导视图向向导添加新步骤为项目创建提供额外设置在项目创建期间处理活动初始环境配置项目向导如果是对特定工具和技术的额外支持就需要定义一个新Module,新的模型可以通过ModuleBuilder来生成一个ModuleType派生,ModuleType主要定义了Module实例的注册和实例化。然后定义扩展。在构造器中需要实现以下方法,可参考 JavaModuleBuilder 的实现,对于idea中已提供的模块如果要修改的话,继承这些实现就可以了。原创 2023-05-30 15:53:16 · 706 阅读 · 1 评论 -
idea插件开发-必备文档
intellij plugin开发过程中需要关注的网站及常用的工具原创 2023-05-24 14:57:25 · 1990 阅读 · 0 评论 -
idea插件开发-Module
模块是一个离散的功能单元,可以独立运行、测试和调试。模块包括源代码、构建脚本、单元测试、部署描述符等。模块的关键组件有:Content root:存储模块的文件(源代码、资源等)的目录。每个目录只能属于一个模块;不可能在多个模块之间共享内容根;Source root:一个Content root目录下可以有多个Source root目录。Source root可以有不同的类型:src、test、resources等。原创 2023-06-01 08:05:49 · 397 阅读 · 0 评论 -
idea插件开发-SDK
每个项目都使用软件开发工具包 (SDK)。对于 Java 项目,SDK 称为 JDK(Java 开发工具包)。SDK 决定使用哪个 API 库来构建项目。如果一个项目是多模块的,默认情况下项目 SDK 对项目中的所有模块都是通用的。或者,可以为每个模块配置单独的 SDK。原创 2023-05-31 08:30:47 · 1165 阅读 · 0 评论 -
idea插件开发-Library
要管理应用程序和项目库的列表, Appliecation级库表列表通过调用访问LibraryTablesRegistrar.getLibraryTable()获取,而Project级库表列表通过调用访问LibraryTablesRegistrar.getLibraryTable(Project)获取。4、将内容添加到库中,对于模块级别,可以使用工具类ModuleRootModificationUtil类把内容添加到库中。2、获取要添加库的库表。获取库中依赖的jar文件内容。2、获取库的可修改模型,使用。原创 2023-06-09 08:27:10 · 1736 阅读 · 0 评论 -
idea插件开发-Facet
表示特定于特定框架/技术的配置,与模块相关联。一个模块可以有多个Facet。例如,Spring Framework 特定配置存储在 Spring facet 中。可使用FacetManager管理Facet, 通过com.intellij.facet.toolWindow扩展点可注册依赖于给定面的存在的工具窗口。原创 2023-06-01 08:06:06 · 651 阅读 · 0 评论 -
idea插件开发-集成三方系统
IntelliJ 平台提供了一种在 IDE 中支持它们的机制,可以集成如Maven、Gradle这样的外部系统。一般外部系统都会提供自己的功能,这样就可以实现将外部系统的逻辑和IDE 处理分开。Intellij平台对外部子系统提供了一个简单的 API,用于包装外部系统元素和可扩展的 IDE 特定处理逻辑。原创 2023-06-03 08:01:59 · 211 阅读 · 0 评论 -
idea插件开发-FileTemplate
模板文件存放在本地的根目录,如果没有自定义的模板文件,则没有此目录。目前idea不支持自定义的插件中同时创建带有多个文件的模板。创建文件模板有几下几种方式:1、File | Save File as Template…;文件类别包含用于创建新文件的模板,会出现在File | New File菜单中的内容。这是主要类别,它包括直接放在fileTemplates目录中的所有模板;包含可重复使用的片段,使用 Apache Velocity 指令的#parse()原创 2023-06-03 08:02:36 · 1006 阅读 · 0 评论 -
idea插件开-Intentions
可以Settings| Editor | Intentions中进行设置,这个功能就是类似代码优化建议的意思,当编辑代码时有时IDE会提示警告或错误,此时一般按ALT+1快捷键盘会弹出一些提示窗口进行快速修复原创 2023-05-25 09:20:07 · 447 阅读 · 0 评论 -
idea插件开发-Analysing
Intellij IDEA 插件开发,Analysing主要是平台提供的对正在编辑的源码进行操作的高级功能,比如错误检查、高亮显示、注解器等功能。原创 2023-06-06 03:24:05 · 545 阅读 · 0 评论 -
idea插件开发-Project View
插件作者可以修改项目视图中节点的表示。例如,这用于更改模块节点的图标以反映模块类型或将 URL 和服务器路径添加到 Python Jupyter 目录作为位置字符串。要修改项目视图节点表示,需要注册com.intellij.projectViewNodeDecorator扩展,实现decorate()方法。如果需要在某些事件上更新节点ProjectViewNode,需要调用ProjectView.update()。原创 2023-06-05 07:52:15 · 277 阅读 · 0 评论 -
idea插件开发-开发属于自己的IDE开发平台
IntelliJ 平台本身并不是一个产品,而是提供了一个用于构建 IDE 的平台。这个平台本身是开源的,源码可从intellij-community源码,任何人都可以使用。但基于此平台开发的软件比如idea、phpStorem可能是收费的。原创 2023-06-08 15:35:05 · 1610 阅读 · 0 评论 -
idea插件开发-Listener
本章会实现一个监听器的例子,实现功能是当打开project时给予Dialog提示信息。不是太复杂,所以直接上代码。其它监听器也是类似的实现。原创 2023-05-28 09:22:26 · 784 阅读 · 0 评论 -
idea插件开发-PSI
程序结构接口(Program Structure Interface)简称PSI,PSI是IDEA插件开发最复杂的一块内容,后续会有大量实战来强化理解此处的知识。PSI是IntelliJ 平台中的一个层,负责解析文件并创建语法和语义代码模型,为平台的众多功能提供支持。原创 2023-06-07 08:46:23 · 3206 阅读 · 0 评论 -
idea插件开发-UAST
UAST(统一抽象语法树)是针对 JVM(Java 虚拟机)的不同编程语言的PSI上的抽象层。它提供了一个统一的 API,用于处理公共语言元素,如类和方法声明、文字值和控制流运算符。不同的 JVM 语言有它们自己的PSI,但许多 IDE 功能,如检查、装订线标记、引用注入和许多其他功能,对所有这些语言都以相同的方式工作。使用 UAST 允许使用单个实现提供可在所有受支持的 JVM 语言中工作的功能。比如spring框架插件就使用了这种技术,完全支持java和kotlin。UAST 是只读 API。原创 2023-06-07 08:46:46 · 860 阅读 · 0 评论 -
idea插件开发-Indexing and PSI Stubs
在构建存根树的时候,可以同时将存根元素的一些数据放入多个索引中,用于通过相应的键查找PSI元素。与基于文件的索引不同,存根索引不支持将自定义数据存储为值;该值始终是 PSI 元素。存根索引中的键通常是字符串(例如类名);如果需要,也支持其他数据类型。存根索引是一个AbstractStubIndex扩展在最常见的情况下,当键类型为String时,建议使用更具体的基类,即StringStubIndexExtension. 存根索引需实现com.intellij.stubIndex扩展点。原创 2023-05-28 09:22:10 · 357 阅读 · 0 评论 -
idea插件开发-XML DOM API
在idea平台中针对XML是一套专门的API,本文适用于以编辑 XML 创建自定义 Web 服务器集成的UI的插件。它描述了IntelliJ 平台中的文档对象模型(DOM) ,使用 DOM 本身(读/写标签内容、属性和子标签)以及通过将 UI 连接到 DOM ,最终实现在在UI中编辑 XML。原创 2023-06-06 03:25:16 · 666 阅读 · 0 评论 -
idea插件开发-自定义语言00-开发导航
源码原创 2023-08-15 22:03:36 · 306 阅读 · 0 评论