IntelliJ插件开发教程之开发思路

news2024/10/1 21:32:00
JetBrains公司系列产品IDEA、WebStrom、PyCharm、CLion、GoLand等都是基于IntelliJ Platform开发而成,掌握IntelliJ插件开发技能便能拥有提升开发效率的终极武器。本教程Dmeo源码请关注微信公众号“开发效率”进行获取。

如果您是JetBrains产品的用户,那您一定要看看这篇文章:JetBrains IntelliJ支持自动切换输入法,写代码如丝般顺滑

前言

自己探索IntelliJ插件开发之路并不好走,国内这方面资料较少且不成体系,虽然有官方的开发教程,但是英文版不太好理解而且讲得太浅,以至于会遇到很多无法解决的问题。因此,作者写了这篇系列教程,为了让中文开发者快速入门。授人予鱼不如授人予渔,作者觉得自我解决问题的思路比教程更重要,所以开篇首先给大家总结作者在开发过程的思路。

官方文档

IntelliJ Platform Plugin SDK是插件开发的官方文档(文末有链接),这里对IntelliJ IDE做了简单而全面的介绍,我们需要尽量去通读这篇文档,我觉得它最重要的作用是告诉我这个概念用英文怎么描述,这个对后续遇到问题时查找解决方案非常重要。所以当我们不知道该怎么描述我们遇到的问题的时候,首先来这里找下有没有对应的介绍。

开源插件

IntelliJ插件很多都是开源的,我们可以学习里面的代码,看是否能解决我们的问题。如果能找到一款实现功能很相近的开源插件,那将事半功倍。

IntelliJ插件市场是一个非常好寻找开源插件的地方,在这里可以根据关键字寻找你想要的插件,然后进入插件详情页面,找到Source Code,如下所示,有时作者可能没有设置Source Code,也许你可以去作者的Github找到远吗。

另外一个寻找开源插件的好地方就是Github,输入IDEA+关键字可以找到很多开源插件。

IntelliJ Platform源码

IntelliJ Platform是一个开源项目,在Github可以找到源代码intellij-community,另外我们也可以在插件项目中查看到源代码,那样会更方便。IDE里面的很多官方功能其实也是插件的形式提供的,所以我们可以参考他们的实现来完成我们的想法。其中最关键的还是需要知道IDE里面的概念如何用英文描述,只有知道某个功能的英文描述我们才能找到相应的类,才能知道他们是怎么实现的。所以,如果安装了中文汉化包的话赶紧把它卸载吧。

举个我自己的实际例子,我想知道键盘事件怎么监听,我知道IDE有个功能点击shift两次便能查找类或方法,通过IDE使用界面我了解到这个功能叫SearchEverywhere,于是我在项目工程里面用SearchEverywhere功能搜索关键字SearchEverywhere,于是找到了最相近的实现类com.intellij.ide.actions.SearchEverywhereAction,通过阅读源代码找到了点击两次shift与SearchEverywhere功能的联系,如下图中所示,它是通过ModifierKeyDoubleClickHandler类注册了点击两次shift后激活SearchEverywhere功能。

继续深入到ModifierKeyDoubleClickHandler里面,我找到了怎么监听键盘事件的代码如下所示,通过IdeEventQueue.EventDispatcher应该可以监听到IDEA里面所有事件,通过event instanceof KeyEvent判断是否为键盘事件,点击左上角插头形状图标,发现这个类还需要在plugin.xml里面进行注册,如下所示。

<ideEventQueueDispatcher implementation="com.intellij.openapi.keymap.impl.ModifierKeyDoubleClickHandler$MyEventDispatcher"/>

参考

  1. IntelliJ Platform Plugin SDK:https://plugins.jetbrains.com/docs/intellij/welcome.html#getting-started

  1. JetBrains Plugins Marketplace :https://plugins.jetbrains.com

如果您是JetBrains产品的用户,那您一定要看看这篇文章:JetBrains IntelliJ支持自动切换输入法,写代码如丝般顺滑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/374555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《C Primer Plus》第13章复习题与编程练习

《C Primer Plus》第13章复习题与编程练习复习题1. 下面的程序有什么问题&#xff1f;2. 下面的程序完成什么任务&#xff1f;&#xff08;假设在命令行环境中运行&#xff09;3. 假设程序中有下列语句&#xff1a;4. 编写一个程序&#xff0c;不接受任何命令行参数或接受一个命…

在Linux终端管理你的密码!

大家好&#xff0c;我是良许。 现在是互联网时代&#xff0c;我们每天都要跟各种 APP 、网站打交道&#xff0c;而这些东西基本上都需要注册才可以使用。 但是账号一多&#xff0c;我们自己都经常记不清对应的密码了。有些小伙伴就一把梭&#xff0c;所有的账号密码都是一样。…

计算机学生如何找到第一份实习?

作为一名计算机专业的学生&#xff0c;找到第一份实习是非常重要的一步&#xff0c;它不仅可以帮助你更好地了解行业&#xff0c;增加实践经验&#xff0c;还可以为即将到来的校招提供有力支持。计算机专业的校招&#xff0c;每年都在变得越来越卷。5年前&#xff0c;可能你只要…

android 加载隐私协议策略

背景&#xff1a;app各平台对隐私政策的监管越来越严格&#xff0c;app上线后&#xff0c;存在各种隐私协议的多次更新&#xff0c;每次更新都需要走发版流程&#xff0c;耗时耗力&#xff0c;为了解决这一问题&#xff0c;后端管理系统通过富文本 &#xff08;模板&#xff09…

数据结构与算法——2.算法概述

这篇文章&#xff0c;我们来讲一下算法的概述&#xff0c;大致理解一下什么是算法。 目录 1.定义 2.生活实例 3.算法目标 4.实际案例 4.1案例一 4.2案例二 5.小结 1.定义 官方解释&#xff1a; 算法是指解题方案的准确而完整的描述&#xff0c;是一系列解决问题的清…

前端面试题 —— 计算机网络(一)

目录 一、常见的HTTP请求头和响应头 二、HTTP状态码304是多好还是少好&#xff1f; 三、OPTIONS请求方法及使用场景 四、对keep-alive的理解 五、HTTP协议的优点和缺点 六、URL有哪些组成部分&#xff1f; 七、HTTPS通信&#xff08;握手&#xff09;过程 八、HTTPS的特…

浅析Windows Access Token以及利用方法

1 前置概念 关于Windows Access Token Windows Access Token(访问令牌)&#xff0c;它是一个描述进程或者线程安全上下文的一个对象。每个用户登录计算机都会产生一个AcessToken以用于创建进程和线程&#xff0c;用户注销以后会将主令牌切换成模拟令牌&#xff0c;也就是授权…

《网络安全入门到精通》 - 2.1 - Windows基础 - DOS命令Windows防火墙Windows共享文件

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「订阅专栏」&#xff1a;此文章已录入专栏《网络安全入门到精通》 Windows基础一、DOS命令1、目录文件操作dir 列出目录文件cd 切换目录md 创建目录rd 删除目录move 移动文件或目…

零入门kubernetes网络实战-18->命令行式操作tun设备介绍

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 1、如何操作tun设备呢&#xff1f; 主要提供两种形式&#xff1a; 命令行操作tun设备 openvpn(不介绍)tunctl(不介绍&#xff0c;不同系统间可能存在兼容…

第五章.最邻近规则分类(KNN)

第五章.最邻近规则分类&#xff08;KNN&#xff09; 5.1 最邻近规则分类&#xff08;KNN&#xff09; 1.KNN的计算方式 1).为了判断未知实例的类别&#xff0c;以所有已知类别的实例作为参照选择参数K。 2).计算未知实例与所有已知实例的距离 (利用欧氏距离公式) 其他距离衡量…

Nginx 原理

nginx是一个反向代理服务器&#xff0c;那么他是如何做到和服务器的连接呢&#xff0c;怎么进行负载均衡呢&#xff1f;如何支持高并发&#xff1f;&#xff1f;&#xff1f; Nginx的特点 &#xff08;1&#xff09;跨平台&#xff1a;Nginx 可以在大多数 Unix like OS编译运行…

mysql源码编译安装、mysql的主从复制、IOSQL线程优化

文章目录前言一、mysql源码编译安装二、主从复制1.主从复制的作用、原理2.实验过程三、gtid模式四、半同步模式&#xff1a;优化IO线程五、并行复制/多线程复制&#xff1a;优化SQL线程六、延迟复制前言 mysql是现在普遍使用的数据库&#xff0c;但是如果宕机了必然会造成数据…

用PS设置宽480像素*高640像素,分辨率300dpi,24位真彩色 大小限制20K到40K之间的照片

最近需要设置一组照片&#xff0c;是学生录取大学的电子照片&#xff0c;具体要求如下&#xff1a;宽480像素*高640像素&#xff0c;分辨率300dpi&#xff0c;24位真彩色 大小限制20K到40K之间&#xff1b;照片底色为白色或者蓝色&#xff0c;其他颜色均不符合条件。首先&#…

python+pytest接口自动化(3)-接口测试一般流程及方法

首先我们要明确&#xff0c;通常所接口测试其实就属于功能测试&#xff0c;主要校验接口是否实现预定的功能&#xff0c;虽然有些情况下可能还需要对接口进行性能测试、安全性测试。在学习接口自动化测试之前&#xff0c;我们先来了解手工接口测试怎样进行。URL组成为了更好的理…

数学建模介绍

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a; &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我最大的激励…

【分布式系统】MinIO之Multi-Node Multi-Drive架构分析

文章目录架构分析节点资源硬盘资源服务安装安装步骤创建系统服务新建用户和用户组创建环境变量启动服务负载均衡代码集成注意最近打算使用MinIO替代原来使用的FastDFS&#xff0c;所以一直在学习MinIO的知识。这篇文章是基于MinIO多节点多驱动的部署进行研究。 架构分析 节点资…

迁移系统:换电脑或者硬盘转移磁盘文件的方法!

为什么要将操作系统迁移到新驱动&#xff1f; “将操作系统转移到新驱动您好&#xff0c;我刚刚为我的台式机订购了一个新的2TB希捷Barracuda硬盘&#xff0c;我想知道如何将我的Windows 10操作系统与我下载的其他一些软件一起转移过来。我使用新的/大的硬盘&#xff0c;然…

SpringBoot配置文件(properties yml)

查看官网更多系统配置项&#xff1a;https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties 1.配置⽂件作⽤ 整个项⽬中所有重要的数据都是在配置⽂件中配置的&#xff0c;⽐如&#xff1a;数据库的连接信息&am…

【华为OD机试模拟题】用 C++ 实现 - 能力组队(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明能力组队题目输入输出示例一输入输出说明示例二输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 O…

如何调教ChatGPT成为你的策略助手

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 『正文』 ˇ 去年12月的时候我们初次体验ChatGPT,《ChatGPT生成量化交易策略》. 当时还是很惊喜的&#xff0c;可以辅助写代码&#xff0c;写注释&#xff0c;给出一些示例。使用的时间长了发现写一…