MPS 2020.2 Is Released!
We are happy to share all the new improvements that we’ve made for this release. If you are a visual person, you can watch our screencast, which describes the new features.
UI improvements to the VCS
We’ve improved the look and feel of the Version Control System. The width of the editor area is no longer fixed, so the splitter can now be moved in both directions. The way changes are highlighted has also been improved. Tooltips for the changes are displayed both in the editor area and in the splitter area. Additionally, we have replaced the triangles and trapezoids in the splitter area with smooth polygons.
Improved root and node histories in VCS
The existing “Show Root History” action in VCS did not always display results that were correct. With this fix, the models are compared instead of the source files, which results in the output always being meaningful. Furthermore, it is now possible to display the history for any node, not just root nodes.
New change type in VCS
MPS is now able to structurally diff/merge non-referenceable parts of BaseLanguage models. For any instances of BaseLanguage concepts that are not supposed to be reference targets (e.g. BlockStatement or ForStatement), the MPS diff/merge algorithm will ignore the ID of the node and compare the actual node structure instead. This will prevent MPS users from struggling with structurally identical changes leading to merging errors.
Therefore, we’ve added a special way for these non-functional ID changes to be handled in VCS. Changes to the new type can be hidden in the Diff dialog with the help of the new toolbar button. Additionally, during the merge process, changes in two branches are considered to be non-conflicting if they differ only with respect to the IDs of nodes which cannot be a target for the reference.
We are going to improve the algorithm even more in upcoming MPS releases.
Select next sibling
It is now possible to use Shift + Left/Right to select multiple sibling nodes. This shortcut can be used for method parameters, array literal values, or statement siblings.
Test quick-fixes in an editor test case
The editor test language has been extended with the ApplyQuickFix concept. Use it in the code section of your test case as if you were testing an intention. You can choose either to run the quick-fix that is available on the selected node or you can choose a concrete quick-fix to run explicitly.
Specific Fix
The fix that is available on the selected node:
Color scheme switcher and font settings
You now have the option to switch the editor’s color scheme without changing the IDE theme. The new settings can be found in Settings -> Editor -> Color Scheme.
Font settings have been moved from Settings -> Editor -> General to Settings -> Editor -> Font (as they have in all other JetBrains IDEs). And under Settings -> Editor -> Color Scheme there are two additional sub-settings: Color Scheme Font and Console Font, which can be used to configure the font in the editor and the terminal (the MPS console is considered an editor for now). And yes, ligatures have finally come to the MPS editor!
You may notice that some checkboxes are missing from Settings -> Editor -> General. They‘ve actually just been moved :
- Antialiasing can be configured in Settings -> Appearance & Behavior -> Appearance in the Antialiasing section, and they can be configured separately for the IDE and for the Editor
- Power Save Mode has already been added in Main Menu -> File -> Power Save Mode – the redundant duplication was removed from the settings
And one last thing – switching the theme or the color scheme of the IDE no longer requires restarting the IDE for the changes to take effect!
Enhancements to Generation Plans
The ‘Show Generation Plan’ action offers a handy resource for understanding the exact steps involved in the transformation of a model. Now, in addition to transformation steps, the action also identifies where the generation plan comes from (e.g. from a custom module facet or a devkit), and gives its name along with a link to the generation plan node.
Moreover, the transformation steps keep the name of the generator module when the name of the template model is not qualified, which helps keep similarly named models distinct.
One common complaint has been that it is difficult to find languages excluded from a model transformation due to the restrictions of a generation plan. We are happy to report that we’ve addressed this issue. Languages that are used in the model but that are not covered by the associated plan are now included in the result of the ‘Show Generation Plan’ action. In addition, the ‘Used Languages’ tab in the Model Properties section also offers a warning about such languages.
Improvements to the Build language
There’s now an option to use macros for version parts in idea branding (BuildMps_Branding). The ${version.major}, ${version.minor}, ${version.bugfixNr} and ${version.eap} macros have been added to the MPS build script. The old version format still works, but it is deprecated. To switch to the new version in your build script, use the “Convert deprecated branding version to the new format” intention.
Other improvements
Full GitHub pull request support
The details of open pull requests are now one click away in a separate vertical tool window. The main editor window shows the conversation, and you can add comments directly. Pre-commit check results are displayed at the bottom of the window. If you have permission to manage pull requests, you can now browse, assign, manage, and merge them, view and submit comments, and accept changes right from inside the IDE.
Improved Git Actions dialogs
For this release, we’ve revised the visual consistency for merge, pull, and rebase dialogs. We’ve also improved the dialogs so that they clearly identify what Git commands will be executed, and we’ve included some missing options. We’ve also added –rebase and –no-verify to the pull and merge dialogs, respectively.
Squash and drop local commits from the log
You can now select multiple commits from a local branch and squash them. In the Git tool window, open the Log tab, select local commits, and choose Squash Commits. If you decide to change the commit message, all the changes in those commits will be put into one single commit together with the updated message. In addition, you can now drop commits from the Git log.
Improved result display for the Compare Branches action
When you compare two branches in MPS 2020.2, the IDE shows their commits all in one view by opening their logs in the editor. In contrast to the VCS tool window, this view has enough space for a full report on what commits are in each branch and which files are affected.
Authorization
We’ve switched GitHub authorization from the password-based system, which is deprecated and will stop working soon, to OAuth.
As always, we also fixed a long list of bugs that members of the community reported to our issue tracker.
Stay safe and have a great day!
Your JetBrains MPS team
The Drive to Develop