Quick Definition is similar to its counterpart in IntelliJ IDEA. Click on a node, press and hold Ctrl-Shift-I, and you will get a popup with the definition of the node. In this popup, you can navigate, select other nodes, and perform the Find action. This way, you don’t need to open a new tab every time you want a quick glance at the node.
It's now possible to improve memory consumption by explicitly removing all models from memory. You can either click the memory indicator or set a scheduled cleanup parameter (in seconds) with Registry Action. At the moment, this feature is experimental, and we're planning to improve it in future releases.
Now you can create more than one generator for a language, and either host them inside a language (as in previous versions) or add them next to a language as a regular top-level module. Using generator plans allows you to take full advantage of multiple generators. To help with the transition, only one of the language generators will continue to be involved for a model without an explicit generation plan. The new generator can be created from the language context menu, and the following dialog has a new checkbox you can use to make it standalone.
We’ve added a new intention that converts a concept to an interface concept and vice versa. This can be used when creating a language structure, and it does not change usages.
Now it's possible to create concepts, methods, and classes from usages in code. The intention can create a class on new statements, methods in expressions, as well as concepts and interfaces in child/reference roles and in extends/implements.
A new generator statement allows you to generate a valid Java identifier from any INamedConcept. This will create a unique name by removing illegal symbols, capitalizing, and adding a prefix if needed.
In previous MPS versions, the add result statement on the finder only
node<>-based search results. Now with add raw
result, the language designer can display any result that the Find
Usages view is capable of visualizing.
The MPS generator issues a warning when it tries to resolve a dynamic reference but fails, and this causes a lot of warnings given the fact that not all generators adhere to a strict reference construction approach using label mappings. Therefore, we’ve added a new setting to control whether the warning appears.
We have significantly improved performance when loading stub models, especially from large and strongly connected sets of jars. Loading times are now 2-3 times faster on our target project than they were in 2019.2 (from 18 seconds down to 6 seconds). This boost has also been backported to MPS 2019.1 and MPS 2019.2.
MPS used to treat only a specific set of files as models, namely
*.mpsr, however, with custom model persistence the file names differ. To make
sure that all the necessary model files get bundled when a module is built, there's an
explicit model root declaration for a module in the build script that facilitates custom
file name patterns.
The custom-persistence samples and documentation for the new build solution wizard have had an update. The generation-time errors in the Math sample and broken links on the documentation pages have been fixed. Several dialogs and tool windows have also been corrected.
Binary and octal literals are now supported, and type parameters in Javadocs are handled correctly. Many other issues have been fixed as well.
MPS detects outdated names and provides a quick-fix to bring them up to date for objects from SModel Language.
With the 'Tests' module facet, language designers now have complete freedom, and MPS no longer demands that the facet be present for the Language module.
The Surround with… action is now available when multiple nodes are selected. Previously it was enabled only for selections containing a single node.
For a revision in a root history, you can now take a look at the other files changed in the same revision.
The Show Root History action, which was introduced in 2019.2, has been available for roots from models kept in a single file. Now, models in per-root persistence are supported as well.
MPS integrates the well-maintained IntelliJ Platform Favorites tool.
All meta-languages now offer the same style and editing experience with respect to, among other things, keyboard navigation, placeholder cell behavior in editors, and "New Root" appearance.