MPS 2020.3 ヘルプ

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

拡張機能は、標準的な言語の側面やプラグインのメカニズムではカバーされていない、ソリューションや言語の特定の側面を拡張する可能性を提供します。通常、ディストリビューションモデル(MPS プラグイン、IntelliJ IDEA プラグイン、またはスタンドアロン IDE)に応じて、言語の動作をわずかに変更する必要があります。そのような場合、あなたの拡張ポイントを、異なる実装が異なるディストリビューションで提供されるインターフェースとして定義します。

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

  • 言語

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

クイック使い方

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

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

  3. 拡張ポイントと拡張の両方がプラグインモデルになければなりません
    1. 各拡張はオブジェクトを返す get メソッドを提供しなければなりません

    2. Each extension may opt to receive the activate/deactivate notifications

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

拡張言語

The language jetbrains.mps.lang.extension declares concepts necessary for building extensions.

拡張ポイント

The ExtensionPoint concept represents an extension point. The extension object type must be specified as a parameter.

Extensionpoint

拡張

The 拡張 concept is used to create a concrete extension.

Extension

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

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

Extensionpointexpr

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

An extension point includes a way to access all objects provided by its extensions.
Extensionobjects

Java API

public interface Extension<T> { String getExtensionPointId (); T get (); void activate (); void deactivate (); } public class ExtensionPoint<T> { public ExtensionPoint (String id, Class<T> type) { ... } public Class<T> getType () { ... } public Iterable<Extension<T>> getExtensions () { ... } public Iterable<T> getObjects () { ... } public String getNamespace () { ... } public String getId () { ... } }

Extension points and extensions are managed by the ExtensionRegistry core component.