From 7800b289ba900957c5f1366a58a6d4e195cf4232 Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Tue, 8 Feb 2022 09:45:49 +0100 Subject: [PATCH] appcode/clion: add migration guide for plugins targeting 2020.3+ --- .../getting_started/plugin_compatibility.md | 50 +++++++++++++------ topics/products/appcode/app_code.md | 2 +- topics/products/clion/clion.md | 7 +-- 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/topics/basics/getting_started/plugin_compatibility.md b/topics/basics/getting_started/plugin_compatibility.md index 482a4f9b9..16e8db0e0 100644 --- a/topics/basics/getting_started/plugin_compatibility.md +++ b/topics/basics/getting_started/plugin_compatibility.md @@ -69,22 +69,24 @@ A plugin project is compatible with PHP functionality if it declares a dependenc The following table lists **(1)** modules or built-in plugins that provide specific functionality, and the products currently shipping with them. -| Module or Plugin for `` Element
Declaration in plugin.xml File |
Functionality | IntelliJ Platform-Based
Product Compatibility | -|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `com.intellij.modules.java` See **(2)** below.
`com.intellij.java` | **Java** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | IntelliJ IDEA, Android Studio | -| `com.intellij.modules.androidstudio` | Android SDK Platform, Build Tools, Platform Tools, SDK Tools | Android Studio | -| `com.intellij.modules.appcode` | CocoaPods, Core Data Objects, Device & Simulator Support | AppCode | -| `com.intellij.modules.cidr.lang` | **C, C++, Objective-C/C++** language PSI Model, Swift/Objective-C Interaction, Inspections, Intentions, Completion, Refactoring, Test Framework | AppCode, CLion | -| `com.intellij.modules.cidr.debugger` | Debugger Watches, Evaluations, Breakpoints, Inline Debugging | AppCode, CLion, RubyMine | -| `com.intellij.modules.clion` | CMake, Profiler, Embedded Development, Remote Development, Remote Debug, Disassembly | CLion | -| `com.intellij.database` | **Database Tools and SQL** language PSI Model, Inspections, Completion, Refactoring, Queries | DataGrip, IntelliJ IDEA Ultimate, AppCode, PhpStorm, PyCharm Professional, RubyMine, CLion, GoLand, Rider, and WebStorm if the Database Tools and SQL plugin is installed. | -| `com.intellij.modules.go` | **Go** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | GoLand | -| `com.intellij.modules.python` | **Python** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PyCharm, and other products if the Python plugin is installed. | -| `com.intellij.modules.rider` | Connection to **ReSharper** Process in Background | Rider | -| `com.intellij.modules.ruby` | **Ruby** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | RubyMine, and IntelliJ IDEA Ultimate if the Ruby plugin is installed. | -| `com.intellij.modules.ultimate` | Licensing | All commercial IDEs (IntelliJ IDEA Ultimate, PhpStorm, DataGrip, ...) | -| `com.jetbrains.php` | **PHP** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PhpStorm, and other products if the PHP plugin is installed. | -| `JavaScript` | **JavaScript** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | WebStorm, and other products if the JavaScript plugin is installed. | +| Module or Plugin for `` Element
Declaration in plugin.xml File |
Functionality | IntelliJ Platform-Based
Product Compatibility | +|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `com.intellij.modules.java` See **(2)** below.
`com.intellij.java` | **Java** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | IntelliJ IDEA, Android Studio | +| `com.intellij.modules.androidstudio` | Android SDK Platform, Build Tools, Platform Tools, SDK Tools | Android Studio | +| `com.intellij.modules.cidr.lang` | **C, C++, Objective-C/C++** language PSI Model, Swift/Objective-C Interaction, Inspections, Intentions, Completion, Refactoring, Test Framework | AppCode, CLion | +| `com.intellij.modules.cidr.debugger` | Debugger Watches, Evaluations, Breakpoints, Inline Debugging | AppCode, CLion, RubyMine | +| `com.intellij.modules.appcode` See **(3)** below.
`com.intellij.appcode` | Xcode Project Model, CocoaPods, Core Data Objects, Device & Simulator Support | AppCode | +| `com.intellij.modules.clion` See **(3)** below.
`com.intellij.clion` | CMake, Profiler, Embedded Development, Remote Development, Remote Debug, Disassembly | CLion | +| `com.intellij.cidr.base` | Native Debugger Integration, Utility Classes, C/C++ Project Model/Workspace Support (OCWorkspace, CidrWorkspace, etc.), C/C++ Build and Run Support | AppCode, CLion | +| `com.intellij.database` | **Database Tools and SQL** language PSI Model, Inspections, Completion, Refactoring, Queries | DataGrip, IntelliJ IDEA Ultimate, AppCode, PhpStorm, PyCharm Professional, RubyMine, CLion, GoLand, Rider, and WebStorm if the Database Tools and SQL plugin is installed. | +| `com.intellij.modules.go` | **Go** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | GoLand | +| `com.intellij.modules.python` | **Python** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PyCharm, and other products if the Python plugin is installed. | +| `com.intellij.modules.rider` | Connection to **ReSharper** Process in Background | Rider | +| `com.intellij.modules.ruby` | **Ruby** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | RubyMine, and IntelliJ IDEA Ultimate if the Ruby plugin is installed. | +| `com.intellij.modules.ultimate` | Licensing | All commercial IDEs (IntelliJ IDEA Ultimate, PhpStorm, DataGrip, ...) | +| `com.intellij.swift` | **Swift** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | AppCode, CLion | +| `com.jetbrains.php` | **PHP** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PhpStorm, and other products if the PHP plugin is installed. | +| `JavaScript` | **JavaScript** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | WebStorm, and other products if the JavaScript plugin is installed. | **Notes about Module and Plugin Dependency:** @@ -101,6 +103,22 @@ Consequently, [dependencies](plugin_dependencies.md) on Java functionality are e * Syntax _required_ for releases prior to 2019.2, _allowable_ in all releases: * plugin.xml add `com.intellij.modules.java` +**(3)** The [AppCode and CLion code was restructured](https://blog.jetbrains.com/clion/2020/12/migration-guide-for-plugins-2020-3/) in version 2020.3. +This refactoring extracted some functionalities into specific modules for easier maintainability and reuse between AppCode/CLion and other JetBrains IDEs. +Consequently, [dependencies](plugin_dependencies.md) on AppCode and CLion functionalities are expressed differently in plugin.xml depending on the version of the AppCode/CLion Platform being targeted: + +* Syntax for 2020.3 and later releases: + * plugin.xml _allowable alternative_ add: + * `com.intellij.appcode` for AppCode + * `com.intellij.clion` for CLion + * build.gradle _required_ define dependency on plugin: + * `intellij { plugins = ['com.intellij.appcode'] }` for AppCode + * `intellij { plugins = ['com.intellij.clion'] }` for CLion +* Syntax _required_ for releases prior to 2020.3, _allowable_ in all releases: + * plugin.xml add: + * `com.intellij.modules.appcode` for AppCode + * `com.intellij.modules.clion` for CLion + ## Exploring Module and Plugin APIs Once the [dependency on a module or plugin](plugin_dependencies.md) is declared in plugin.xml, it's useful to explore the packages and classes available in that dependency. The section below gives some recommended procedures for discovering what's available in a module or plugin on which a project depends. diff --git a/topics/products/appcode/app_code.md b/topics/products/appcode/app_code.md index a3a645a03..a01d139be 100644 --- a/topics/products/appcode/app_code.md +++ b/topics/products/appcode/app_code.md @@ -34,7 +34,7 @@ Click on an entry in the table's *Attribute* column to go to the documentation a [dsl]: https://github.com/JetBrains/gradle-intellij-plugin#running-dsl The dependency on the AppCode APIs must be declared in the plugin.xml file. -As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the `` tags must declare `com.intellij.modules.appcode`. +As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the `` tags must declare `com.intellij.modules.appcode` module dependency, or `com.intellij.appcode` plugin dependency for plugins targeting only versions 2020.3+. ## Available AppCode APIs diff --git a/topics/products/clion/clion.md b/topics/products/clion/clion.md index fda5ac725..3c449b16f 100644 --- a/topics/products/clion/clion.md +++ b/topics/products/clion/clion.md @@ -33,12 +33,7 @@ Click on an entry in the table's *Attribute* column to go to the documentation a [dsl]: https://github.com/JetBrains/gradle-intellij-plugin#running-dsl The dependency on the CLion APIs must be declared in the plugin.xml file. -As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the `` elements should contain the CLion module, as illustrated in the plugin.xml snippet below: - -```xml - - com.intellij.modules.clion -``` +As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the `` tags must declare `com.intellij.modules.clion` module dependency, or `com.intellij.clion` plugin dependency for plugins targeting only versions 2020.3+. ## Available CLion APIs