MPS 2019.1ヘルプ

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

Extensions provide a possibility to extend certain aspects of a solution or a language, which are not covered by the standard language aspects and the plugin mechanisms. Typically you may need your language to slightly alter its behavior depending on the distribution model - MPS plugin, IntelliJ IDEA plugin or a standalone IDE. In such cases you define your extension points as interfaces to which then different implementations will be provided in different distributions.

Support for extensions exists in

  • 言語

  • plugin solutions

Quick howto

  1. Create an extension point

  2. Create one or more extensions

  3. Both the extension point and the extension must be in the plugin model
    1. Each extension must provide a get method, returning an object

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

    3. An extension may declare fields, just like classes can

Extension language

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

Accessing extension point

An extension point can be accessed by reference using extension point expression.

extensionpointexpr

Accessing extension objects

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.

最終更新日: 2019年6月7日