IntelliJ Platform SDK DevGuide

Edit page

About this Guide

This guide is split into several parts, similar to a text book. Each part builds on the content of the previous part, but it is not necessary to read the guide in order. The Key Topics page aims to link to the pages that are necessary to be able to understand the architecture and get started building plugins.

  • Part I - Plugins

    Describes how to create a plugin that can extend the IntelliJ Platform. Includes details on how to set up the project, register extension points, target specific versions of the IntelliJ Platform, and how to package, deploy and test your plugins.

  • Part II - Architecture

    Provides a high level, introductory overview of the architecture of the IntelliJ Platform, looking at how it is split into several layers - Base Platform, Project Model, Features, and so on. It also introduces the Program Structure Index (PSI) which provides the IntelliJ Platform with syntactic and semantic models for many different languages.

  • Part III - Base Platform

    Describes the foundational layer of the architecture, which provides many features and utilities, such as the component model, the user interface, documents and editors, the virtual file system, settings and threading and background tasks. The Base Platform layer essentially comprises the functionality of the IntelliJ Platform that does not target language features or parsing.

  • Part IV - Project Model

    Documents the Project Model, which represents the files and configuration of the currently loaded project, as well as the build system used to build the project.

  • Part V - PSI

    The Program Structure Index builds the syntactic and semantic models for lots of different file types. This section describes how to work with the PSI, navigating and manipulating the syntax trees, and also looks at the powerful references system, which allows a syntax tree node to reference an item in the semantic model. It also details how the PSI creates and uses indexes.

  • Part VI - Features

    Describes how to extend and interact with various features that use the PSI layer, such as code completion, navigation, Alt+Enter items, intentions, refactorings and more. See also the section on Custom Languages below for language specific features that are only applicable when adding support for a new langauge.

  • Part VII - Product Specific

    A lot of the functionality in the IntelliJ Platform is language and product agnostic. For example, code inspections work the same in Java as they do in Ruby, it is just the syntax trees and semantic information that is different. This section describes product specific features, such as specific project model differences and how to target them in a plugin.

  • Part VIII - Custom Languages

    Plugins frequently extend support for existing languages, such as adding inspections to Java files. This section describes how to add support to the IntelliJ Platform for a new language, that isn’t supported by default, creating parsers, syntactic and semantic models and all the features that build on top.

  • Part IX - Custom IDEs

    Documents how to use the IntelliJ Platform to create a new, custom IDE, rather than plugins to an existing product, e.g. like WebStorm, or Android Studio.

  • Part X - Plugin Repository API

    Documents the API for the Plugin Repository service that JetBrains maintains and is used to host plugins. It is not necessary to know this API in order to publish plugins - plugins can be uploaded manually, or via the Gradle IntelliJ Plugin.

  • Appendix I - Tutorials

    Provides tutorials and links to working sample code to demonstrate various features and functionality related to the IntelliJ Platform.

  • Appendix II - Resources

    Links to useful resources, such as the IntelliJ Community Edition source code, the Plugin Development forum and the Plugin Developers Gitter room.

Last modified: 9 October 2017