Child pages
  • What's new in MPS 2.5 M1

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Dependencies analyzer

Dependencies analyzer can be called from main menu or from popup menu on a set of modules/models::

...

The lower panel shows usages of items selected in the right panel in the left tree scope selection 

Module Dependencies Tool

With this tool it is possible to overview all the module (or set of modules) dependencies and used languages, detect cyclic dependencies as well as see in details paths that lead to the given dependency. The tool can be invoked from the project pane when one or more modules selected there.

...

For some types of dependencies it is possible to show usages or safe delete with popup menu. For "depends on" (dependency without re-export) Dependencies Analyzer will be invoked on Show Usages.

Changes in Refactoring language

UI for getting refactoring parameters now is removed from refactoring language. Now choosers for parameters are not called, it is not allowed to show UI in init (e.g. ask and ask boolean), keystroke has no effect. All this functionality should be moved to an action correspondent to the refactoring.

...

  • create action for refactoring
  • copy caption, create context parameters
  • add refactoring keystroke with the newly created action to KeymapChangesDeclaration
  • create ActionGroupDeclaration for refactoring that modifies jetbrains.mps.ide.actions.NodeRefactoring action group at default position
  • add isApplicable clause to the action created; usually it is just is applicable refactoring< >() call
  • add execute clause to the action created; all the parameter preparations that were in init of refactoring should be moved here; at the end it is necessary to execute refacoring with prepared parameters (with execute refactoring< >(); statement)
  • remove all parameter preparation from init of refactoring, they should be ready on entry to init; you can still validate parameters and return false if validation fails

Suppressing errors

It is possible to suppress errors in editor (and in model checker) now.

...

Now the error isn't highlighted, but there is a cross icon in the left pane. SuppressErrorsAttribute can be removed either by pressing on that cross or by applying corresponding intention

Extensions support

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.

...

  • languages
  • plugin solutions

Quick howto

  1. Create an extension point
  2. Create one or more extensions
  3. Both must be in the plugin model
    1. Each extension must provide a get method, returning an object
    2. Each extension may opt to receive activate/deactivate notifications
    3. An extension may declare fields, just like class

Extension language

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

Extension point

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

Extension

Extension concept is used to create a concrete extension.

Accessing extension point

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

Accessing extension objects

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

Note
titleBe Careful

Objects returned by the extensions have transient nature: they may become obsolete as soon as a module reloading event happens. It is not recommended to e.g. cache these objects, instead is it better to get a fresh copy each time.

Java API

Code Block
java
java
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.

Saving Transient Models Status In The Status Bar

A button in the status bar allows to enable and disable saving transient models with one click.

...