Check Out More Than 200 Open-Source PluginsOctober 26th, 2012 by Andrey Cheptsov
Yesterday we published the recording of the webinar Writing Plugins for IntelliJ IDEA, where John Lindquist discussed the plugin development process with Mihai Toader.
We received a lot of feedback from the community. Getting started with plugin development is perceived to be difficult mostly due to lack of documentation and resources now. We hope to improve the documentation base in the nearest future.
In the meanwhile we would like to share a list of more than 200 open-source plugins. This may serve you as examples code base and should definitely set you on the right path for getting started.
What should I look for in an open-source plugin?
Every plugin requires plugin.xml which describes the features and the contents of a plugin. See an example.
Parameters name, id, description and vendor are all required to get your plugin registered correctly with the plugin database. See an example
Parameter depends describes which products you are targeting (WebStorm, RubyMine, etc.).
The rest of plugin.xml describes what features you want your plugin to add. There are quite a few options, so its best browse the plugin.xml’s for the open-source plugins to get a better idea of what is possible. For general descriptions, read the bottom of Plugin Structure page.
Because you register your features in plugin.xml, they will typically be extending classes provided by IntelliJ to hook into the architecture. For example, actions typically extend AnAction and DumbAwareAction to hook into the action system. Keep an eye out for how these base classes are used through each of the open-source plugins.
Don’t waste your time writing common code that is already found in the IntelliJ code base. To highlight a couple examples, EditorUtil will help you with many common editor operations. The class PsiUtil will provides help with the PSI.
That’s all for now. Again, our next plugin Webinar will be Thursday, November 29th where we’ll try to build a plugin from scratch.