MPS 2025.3 ヘルプ

エクステンションサポート

拡張機能は、ソリューションや言語の特定の側面を拡張する機能を提供します。これらの側面は、標準的な言語機能やプラグイン機構ではカバーされていません。一般的に、MPS プラグインやスタンドアロン IDE など、ディストリビューションモデルに応じて言語の動作を若干変更する必要がある場合があります。このような場合、拡張ポイントをインターフェースとして定義し、異なるディストリビューションモデルで異なる実装が提供されるようにします。

エクステンションのサポート

  • 言語

  • プラグインソリューション

クイック使い方

  1. 拡張ポイントを作成する

    • 拡張ポイントは、言語のプラグインアスペクトまたはプラグインソリューションで定義する必要があります。

    • プラグインソリューションでは、ソリューションプロパティダイアログの Java タブで MPS の拡張に貢献オプションを yes に設定する必要があります。

  2. 1 つ以上の拡張機能を作成する

    • 拡張機能は、言語のプラグインの側面またはプラグインソリューションで定義する必要があります。

    • プラグインソリューションでは、ソリューションプロパティダイアログの Java タブで MPS の拡張に貢献オプションを yes に設定する必要があります。

    • 各拡張はオブジェクトを返す get メソッドを提供しなければなりません

    • 各拡張機能は、有効化 / 無効化の通知を受信するように選択できます。

    • クラスができるように、エクステンションはフィールドを宣言することができます

拡張言語

jetbrains.mps.lang.extension という言語は、拡張機能の構築に必要な概念を宣言しています。

拡張ポイント

ExtensionPointDeclaration の概念は拡張ポイントを表します。拡張オブジェクト型はパラメーターとして指定する必要があります。

extensionpoint.png

拡張

具体的な拡張を作成するために拡張の概念が使用されています。

extension.png

拡張ポイントにアクセスする

拡張ポイントは、拡張ポイント式を使用して参照によってアクセスできます。

extensionpointexpr.png

拡張オブジェクトへのアクセス

拡張ポイントは、その拡張によって提供されるすべてのオブジェクトにアクセスする方法を含みます。

extensionobjects.png

Java API

public interface Extension<T> { String getExtensionPointId (); T get (); void activate (); void deactivate (); } public class ExtensionPoint<T> { public static <T> ExtensionPoint<T> generify(ExtensionPoint raw) { ... } public ExtensionPoint(String id) { ... } public String getId() { ... } }

拡張ポイントと拡張機能は、ExtensionRegistry コアコンポーネントによって管理されます。

2025 年 7 月 07 日