Skip to end of metadata
Go to start of metadata



x-model generator: CP models keep reference to a previous CP and therefore Generator can find mapped nodes with an input that spans several transitions (few CP away)


Make no longer overwrites files with identical content.


Generator: legacy incremental generation is history



Build language got updated DevKit deployment. Now, devkit modules are no longer deployed as a file, but as a regular module, and get bundled into a jar. Corresponding migration script updates layout elements in your build projects, and replaces devkit layout files with 'module' layout element


Build language - no more hardcoded file masks to copy resources into deployed module. Now, there's 'resources' content root for a module, with default value assigned by migration equal to the values previously hardcoded in templates (i.e. icons/**, resources/**).


Make for a model now looks into model dependencies and make dependent models that are changed, too.


lang.smodel - nodePointer expression is capable to reference child elements now.


Model Clone action correctly updates cross-root references for element of the cloned model (cross-root references used to point to elements of original model before).





Undo stack restored on undo root node deletion

After undoing a root node deletion you can now undo any previous modifications performed inside a root prior to its deletion.

Ant Tasks

Any MPS-specific ant task provides full control over repository contents. 

The following tags may be used under <repository>:

  • <allmpsmodules/> - loads all modules provided with MPS (excluding modules from the plugins)
  • <modules dir="DIR"/> - finds and loads all modules under DIR
  • <module file="FILE"/> - loads a specified module. FILE must be a packaged module jar-file or the module file (.msd, .mpl, .devkit)

Migration Ant task

Was made more user-friendly

  • Reports errors that occurred during migration
  • Makes the ant script fail if there were problems during migration
  • Any of the mps.home and mps_home properties as well as the mpshome task attribute may be used to specify the folder with MPS installation

Customize font family for cell

Now you can specify font family inside editor definition alongside font size and font style.

Similarly, you can write queries which will dynamically change the font family. The query should return a string with the desired font family, but you can use special fontFamily literal instead.

In both cases, auto-completion will suggest fonts available in your OS. Note that the fonts available in your system may be unavailable on machines of users of your language. You can use jetbrains.mps.nodeEditor.cells.FontRegistry::getAvailableFontFamilyNames to check that.

Select All

Ctrl+A now works. Shrinking selection after Ctrl+A also works.

Similarly to other actions, SELECT_ALL action, which is invoked by Ctrl+A, can be customized in action maps. For instance, in console Ctrl+A will select just the command under the cursor, not the whole console.


Since Ctrl+A in fact keeps extending the selection while it is applicable, and its custom implementation is probably going to mirror that logic with some special conditions, we provide the jetbrains.mps.nodeEditor.selection.SelectUpUtil class with executeWhile method which does exactly that.


Generic placeholders and free-floating comments

We introduce the generic placeholder which is the whitespace between the nodes. Placeholder could be added to any multiple collections of the nodes.

Just press ctrl (cmd) shift+Enter and the placeholder will appear in the current multiple collection.

You may invoke the completion on the placeholder and replace it with the usual node. Also, you may press Enter on the placeholder, it will add the usual node next to the placeholder.

Placeholder also may contain the content. We provide the text content for the placeholder. 

Include jetbrains.mps.lang.text language or general-purpose devkit and press "[" (open square bracket) on the placeholder.

You will get the text which is editable.

The text is multiline and consists of words.

The word could be bold (press ctrl+B), italic (press ctrl+I) and underlined (press ctrl+U).

The word also may contain the clickable link. To add the link press the alt+Enter and invoke "Add Link" intention.

Also, the text may contain the sample node.

Invoke completion on the text and select "node". The node placeholder will appear, so you may input any sample node.

  • No labels