Idea Plugin Dev-16-04-Build System
外部构建流程工作流程
当用户调用涉及执行外部构建(Make、Build Artifacts 等)的操作时,会发生以下步骤:
编译前任务在 IDE 进程中执行。
一些依赖于 PSI 的源代码生成任务(例如,UI 设计器表单到源代码编译)在 IDE 进程中执行。
调用 BuildTargetScopeProvider 扩展来计算外部构建的范围(根据要进行的目标模块和已知的更改集进行编译的...
2017-10-13 02:24:52 |
Java
Idea Plugin Dev-16-03-Project View
装饰项目视图节点-Decorating Project View Nodes
插件作者可以修改项目视图中节点的表示。
例如,这用于更改模块节点的图标以反映模块类型或将 URL 和服务器路径添加到 Python Jupyter 目录作为位置字符串。
要修改项目视图节点表示,请实施 ProjectViewNodeDecorator 并将其注册为 com.intellij.projectVi...
2017-10-13 02:24:52 |
Java
Idea Plugin Dev-16-02-Analyzing
Syntax Errors
IntelliJ 平台提供了一种用于分析 PSI 树和突出显示开箱即用的语法错误的机制。
在构建代码的 PSI 树时,解析器会尝试根据语言语法使用标记。
当它遇到语法错误时,如意外标记,将创建一个 PsiErrorElement 并将其添加到 PSI 树中,并附上适当的错误描述。
在代码分析守护进程中,IDE 访问树中的每个 PSI 元素,当遇到 PsiE...
2017-10-13 02:24:52 |
Java
Idea Plugin Dev-15-01-PsiMethod 中进一步学习
详细介绍一下 PsiCodeBlock
PsiCodeBlock 是 IDEA 插件开发中的一个接口,表示 Java 代码中的代码块,即由大括号 {} 包围的一组语句。
它是 PsiElement 接口的子接口之一,用于表示方法、构造函数、初始化块等中的代码块。
PsiCodeBlock 接口提供了许多方法来访问和处理代码块中的语句和元素。以下是一些常用的方法:
PsiCode...
2017-10-13 02:24:52 |
Java
Idea Plugin Dev-16-01-Editing
Postfix Completion
Postfix Completion 功能允许开发人员通过在要包装、扩展或修改的表达式后键入模板缩写来使用预定义模板包装代码片段。
它使开发人员免于键入重复或重要的代码,或者有助于更快地创建代码,例如,编写代码部分并用所需的块将其包围而不向后导航插入符号通常很方便。
考虑这样一种情况,开发人员对当前的 Java 项目 API 不是很熟悉,并且不知道...
2017-10-13 02:24:52 |
Java
Idea Plugin Dev-15-08-spi IntelliJ IDEA 插件开发指南
进入插件世界
类别
插件主要分为如下几类:
UI Themes(UI主题)
Custom language support (自定义编程语言支持,如Kotlin)
Framework integration (框架集成,例如Spring,T插件正属于此类)
Tool integration (工具集成,如Maven、Gradle、Git)
User interface add-ons ...
2017-10-13 02:24:52 |
Java
Idea Plugin Dev-15-07-xml doc api
XML DOM API
本文适用于创建自定义 Web 服务器集成或一些 UI 以轻松编辑 XML 的插件作者。
它描述了 IntelliJ 平台中的文档对象模型 (DOM) -
一种使用 DTD 或基于模式的 XML 模型的简单方法。 将涵盖以下主题:使用 DOM 本身(读/写标签内容、属性和子标签)以及通过将 UI 连接到 DOM 在 UI 中轻松编辑 XML。
假定读者熟悉 Ja...
2017-10-13 02:24:52 |
Java
Idea Plugin Dev-15-06-UAST - Unified Abstract Syntax Tree
UAST
UAST(统一抽象语法树)是针对 JVM(Java 虚拟机)的不同编程语言的 PSI 上的抽象层。
它提供了一个统一的 API,用于处理公共语言元素,如类和方法声明、文字值和控制流运算符。
不同的 JVM 语言有自己的 PSI,但许多 IDE 功能,如检查、装订线标记、引用注入和许多其他功能,对所有这些语言都以相同的方式工作。
使用 UAST 允许使用单一实现提供可在所有支...
2017-10-13 02:24:52 |
Java