CodeGlance 开源项目教程
1. 项目的目录结构及介绍
CodeGlance 是一个用于在代码编辑器中嵌入代码迷你地图的插件。以下是其基本的目录结构:
CodeGlance/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── s/
│ │ │ └── vektah/
│ │ │ └── codeglance/
│ │ │ ├── config/
│ │ │ ├── renderers/
│ │ │ ├── scraper/
│ │ │ ├── ui/
│ │ │ └── util/
│ │ └── resources/
│ │ └── META-INF/
│ │ └── plugin.xml
│ └── test/
│ └── java/
│ └── s/
│ └── vektah/
│ └── codeglance/
├── .gitignore
├── LICENSE
├── README.md
└── build.gradle
目录结构介绍
src/main/java/s/vektah/codeglance/
:包含项目的主要代码,分为多个子包:config/
:配置相关类。renderers/
:渲染器相关类。scraper/
:代码解析相关类。ui/
:用户界面相关类。util/
:工具类。
src/main/resources/META-INF/plugin.xml
:插件的描述文件。src/test/java/s/vektah/codeglance/
:测试代码。.gitignore
:Git 忽略文件配置。LICENSE
:项目许可证。README.md
:项目说明文档。build.gradle
:Gradle 构建脚本。
2. 项目的启动文件介绍
CodeGlance 的启动文件是 plugin.xml
,位于 src/main/resources/META-INF/
目录下。这个文件定义了插件的基本信息和启动配置。
<idea-plugin>
<id>com.github.vektah.codeglance</id>
<name>CodeGlance</name>
<version>1.5.4</version>
<vendor email="adam@vektah.com" url="http://vektah.com">Adam Brandizzi</vendor>
<description><![CDATA[
Embeds a code minimap similar to the one found in Sublime into the editor pane.
]]></description>
<change-notes><![CDATA[
<p>1.5.4</p>
<ul>
<li>Fix for IntelliJ 2017.1</li>
</ul>
]]></change-notes>
<idea-version since-build="141.0"/>
<extensions defaultExtensionNs="com.intellij">
<applicationConfigurable groupId="editor" displayName="CodeGlance" id="codeglance.config" instance="s.vektah.codeglance.config.Configurable"/>
</extensions>
<actions>
<!-- Add your actions here -->
</actions>
</idea-plugin>
启动文件介绍
<id>
:插件的唯一标识。<name>
:插件的名称。<version>
:插件的版本号。<vendor>
:插件的作者信息。<description>
:插件的描述。<change-notes>
:版本变更记录。<idea-version>
:支持的 IntelliJ 平台版本。<extensions>
:插件扩展点配置。<actions>
:插件动作配置。
3. 项目的配置文件介绍
CodeGlance 的配置文件主要涉及插件的设置和用户自定义选项。配置文件的入口是 Configurable.java
,位于 src/main/java/s/vektah/codeglance/config/
目录下。
package s.vektah.codeglance.config;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import org.jetbrains.annotations.N