CLion 2020.2ヘルプ

CLion用のプラグインを開発する

CLionの特定の機能性を欠くとき、独自のプラグインを書くことを考えるかもしれません。この記事は、IntelliJ プラットフォームプラグイン開発の基本を理解し、CLionプラグインを実装する最初のステップを案内することを目的としています。

Any CLion plugin is an extension to the IntelliJ プラットフォーム , so in general it is a specific Java project. There are two supported workflows for IntelliJ plugin development: either using gradle-intellij-plugin(英語) with Gradle as a build system (the recommended way) or DevKit with the IntelliJ IDEA’s own build system.

プラグイン開発用のIDEとして、IntelliJ IDEA CommunityまたはUltimateエディションを使用してください。

IntelliJ IDEA自体とは別に、ターゲットのCLionディストリビューションが必要です。Gradleベースのアプローチでは、ビルドスクリプトによって自動的にダウンロードされます。DevKitを使用する場合は、必ずCLionを手動でインストールしてください。

プラットフォームオープンAPI

CLion doesn’t provide its own public API with the guaranteed stability and detailed descriptions, yet you can use all the features of the プラットフォームオープンAPI . An effective way to explore the Platform API is to obtain and inspect the sources of the IntelliJ IDEA Community Edition from the official repository(英語).

IntelliJプラットフォームのAPIはリリース間で変わる可能性があるため、プラグインの機能に影響します。そのような変更はIntelliJプラットフォームとプラグインの非互換な変更にリストされています。CLionの内部SDKは予告なく変更されることがあります。

CLionプラグインのAPIの使用に関するサポートについては、コミュニティフォーラム(英語)でお気軽にお問い合わせください。

拡張

IntelliJ Platform provides extensions and extension points for the plugins to add new or customize the existing functionality. A plugin should declare that it implements one or several extensions <extenstions> or extension points <extensionPoints> in the plugin.xml file. To get the list of the available extensions and extension points, explore the * Extention / * ExtentionPoints files in this(英語) directory of the Community Edition sources.

一般的な拡張ポイントは次のとおりです。

プラグイン依存関係

プラグインは他のプラグインからのクラスに依存するかもしれません。この場合、プラグインはバンドルされているか、サードパーティか、あるいは独自のものである可能性があります。依存関係の表現方法については、プラグイン依存関係を参照してください。

Your plugin should specify which product or products it will be compatible with (all IntelliJ-based IDEs, CLion only, or some subset). You can do that by declaring module dependencies with the <depends> tag in plugin.xml (see IntelliJ製品とのプラグイン互換性 ).

いくつかのモジュールはすべてのIntelliJベースの製品で利用可能ですが、以下のモジュールはCLionで特に利用可能です:

  • com.intellij.modules.cidr.lang - C/C++言語サポート(このモジュールはAppCodeAndroid Studioでも利用可能です)。

  • com.intellij.modules.cidr.debugger - ネイティブデバッガのサポート(AppCodeおよびAndroid Studioも同様)

  • com.intellij.modules.clion - コアCLion機能。

プラグイン.xmlファイル

plugin.xmlファイルは、プラグインメタデータ(名前、説明、作成者、変更ログ、実装された機能のリスト)を含む重要なプラグイン記述子です。

The values of 名前、ID、説明 , and vendor are required to get your plugin registered correctly in the plugin database. Every depends parameter, as mentioned above, is an ID of a module the plugin depends on; the list of the depends parameters implicitly defines the compatible products.

CLionプラグイン入門

Further on, we’ll focus on the Gradle-based approach as the recommended one for all new plugin projects. The DevKit workflow, which is still supported for existing plugins, is described in DevKItを使う

まず、IntelliJ IDEA CommunityまたはUltimateをインストールします。開始する前に、2つのバンドルされたプラグインGradleDevKitが両方ともIntelliJ IDEAインスタンスで有効になっていることを確認します(設定/環境設定 | プラグイン | インストール済みに進み、名前でプラグインを検索します)。

Gradleベースのワークフロー

Let’s take a basic example of a plugin that adds 挨拶 to the IDE main menu and customize it for CLion.

  1. 追加のライブラリおよびフレームワークのリストでIntelliJ プラットフォーム・プラグインを選択して、新しいGradleプロジェクトを作成します。

    new gradle project for clion plugin
  2. Follow through the process of creating a new Gradle project. It’s recommended to select the デフォルトの gradle ラッパーを使用する option - that way, IntelliJ IDEA will automatically configure everything you need to run Gradle tasks:

    gradle wrapper for clion plugin
  3. When the template plugin project is ready, invoke the Gradle tool window from 表示 | ツール・ウィンドウ | Gradle and notice the runIde task. This task launches the plugin’s target IDE (by default, it’s configured to be IntelliJ IDEA):

    template plugin project

    gradle-intellij-pluginが提供するタスクの完全なリスト(英語)を参照してください。

  4. Now let’s modify the default project:

    • ハローアクションという新しいJavaクラスを追加します。

      import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; public class HelloAction extends AnAction { public HelloAction() { super("Hello"); } public void actionPerformed(AnActionEvent event) { Project project = event.getProject(); Messages.showMessageDialog(project, "Hello world!", "Greeting", Messages.getInformationIcon()); } }
    • 次のダミーコードをplugin.xmlに入れます。

      <idea-plugin> <id>org.helloplugin</id> <name>Hello Action Project</name> <version>0.0.1</version> <vendor email="dummy" url="dummy">dummy</vendor> <depends>com.intellij.modules.lang</depends> <extensions defaultExtensionNs="com.intellij"> </extensions> <actions> <group id="MyPlugin.SampleMenu" text="Greeting" description="Greeting menu"> <add-to-group group-id="MainMenu" anchor="last"/> <action id="Myplugin.Textboxes" class="HelloAction" text="Hello" description="Says hello"/> </group> </actions> </idea-plugin>
    • Change the intellij entry in the build.gradle script (for details, refer to DSLの設定(英語) ):

      intellij { version 'LATEST-EAP-SNAPSHOT' type 'CL' }

      CLionは、2019.2 EAPとともにMaven互換のアーティファクトリポジトリに公開されました。現在、LATEST-EAP-SNAPSHOT または 191-EAP-SNAPSHOT のいずれかをバージョン指定子として使用できます。

  5. これでrunIdeタスクを実行でき、CLionメインメニューの挨拶を見ることができます。

    new menu item as a plugin

さらなるステップ

上記の例は非常に基本的なものであり、CLionの仕様なしで一般的なIntelliJ機能のみを使用しています。さらに深く掘り下げるには、SDKドキュメントのプラグインの構造セクション、IntelliJ SDKドキュメントFAQ(英語)、およびコミュニティフォーラム(英語)を調べてください。

カスタム言語サポート用のプラグインの開発に興味がある場合は、Platform SDKドキュメントの専用セクションを参照し、Antlrのプラグイン開発ノート(英語)を参照してください。PSIビューアー(英語)プラグインは、プログラム構造インターフェースPSIに慣れるのに役立ちます。

プラグインのテストに関するガイダンスドキュメントも参照してください。プラグインの公開のトピックは、Gradleによるプラグインの公開およびDSLの公開(英語)で説明されています。

最終更新日: 2020年5月08日