MPS 2024.3 introduces improvements to the UI, reworked internals of many components, and
binary-enabled TextGen. You will also find enhanced support for icons and numerous platform updates.
Check out the detailed list of enhancements below.
The ProjectView tool window now provides three top-level folders to keep the structure of the project better organized:
The Checkpoints and Transient Models folder is always displayed below the Modules Pool, and is empty unless any transient or checkpoint models are available. These models are displayed under this folder, and not at the top level as they used to be.
As a side effect, the new Checkpoints and Transient Models folder allows the ProjectView tool window to remember the expanded and collapsed subtrees of the project structure across MPS restarts.
The following options to enable/disable the Preview Tab provided by the IntelliJ Platform are now respected by MPS and guarantee the same behavior of the editor as in other JetBrains tools:
An additional option, reports dir, has been added to the options section of a
test configuration
in build scripts. The user can specify the
output directory where the generated JUnit test reports are to be stored.
A new section named applicable has been added to Quick-Fix definitions
to let you control the applicability of a quick-fix. The default value
<always>
guarantees unrestricted applicability.
Icons and images that use a path relative to the module are no longer copied during generation next to the places of their individual usage. Instead, they are copied to the distribution module once as image files and are available for use at this single location. This has two immediate benefits: avoiding the duplication of image files to save disk space and the ability to access the images both from the distribution and from the source module.
In addition to the existing TextIcon and FileIcon concepts, a new
ConstantFieldIcon concept is now available. It allows an icon to be specified
by reference to a concrete static field declaration holding an instance of
javax.swing.Icon
.
Inspired by the need for better handling of icon files, we’ve added a new mechanism
to produce binary output during the text generation process, instead of text. The
new API consists of a write
operation that directly manipulates data as
instances of byte[]
.
All tool windows, such as Inspector, HierarchyView, and Usages, have been reworked to no longer follow the long-deprecated mechanism of the IntelliJ Platform’s project components (ProjectComponent). The changes to the API have been minimal, but for some tool windows, there is a change in how they are obtained from code:
Project.getComponent()
method no longer returns any of the tool
windows.
com.intellij.openapi.project.Project.tool <ToolConcept>
.
getInstance()
method:
UsagesViewTool.getInstance()
InspectorTool.getInstance()
EditorContext.inspectorTool()
.
In addition to tool windows, most of the MPS core functionality has been reworked not to use IntelliJ IDEA’s ApplicationComponent and ProjectComponent.
MPS used to rely heavily on the IntelliJ Platform facilities to compose the complete application. Now, most of the legacy components have been refactored to use contemporary MPS or IntelliJ IDEA APIs (like IntelliJ IDEA’s application/project services and extension points, MPS’ CoreComponents and extensions, etc.). There are still a few components left, which the MPS team plans to get rid of completely in the next release.
Most users probably won’t notice any difference, with the exception of reduced startup times.
Please consult the Migration Guide if your code fails to locate any of the platform components because it uses an obsolete retrieval mechanism.
MPS now uses the new UI. The old version of the UI can be enabled by installing the Classic UI plugin.
As usual, this build fixes quite a few bugs. You can find the full list of issues we’ve fixed here.
We’re transitioning from JetBrains Runtime 17 (JBR17) to JetBrains Runtime 21 (JBR21). Starting with IntelliJ IDEA 2024.2, all IDE updates will come with JBR21, offering enhanced security and performance as well as Wayland rendering support for Linux.
IntelliJ IDEA now automatically detects system proxy settings configured on your machine and uses them by default, facilitating seamless interaction with external resources and services.
We’ve redesigned the layout and behavior of the UI elements in the Customize Main Toolbar dialog, making it more intuitive and organized. It’s now easier to search for, add, and delete actions in the main toolbar.
We’ve increased the default tab limit in the editor to 30. This means you can now keep more tabs open before the IDE starts closing the ones used least recently. You can control this setting in Settings | Editor | General | Editor Tabs.
IntelliJ IDEA can now natively render mathematical expressions in Markdown files.
When working with Markdown, you can use $
to insert inline math
expressions and $$
for code blocks with math content.
We’ve given tags a dedicated node in the Version Control widget, making it easier to check them out. The node is displayed by default, but if you prefer to hide it, simply click the gear icon and uncheck the Show Tags option.
All settings related to the Log tool window have been consolidated into a dedicated settings page, which you can access either through Settings/Preferences | Version Control | Log or via a new drop-down menu on the Log tool window’s toolbar.
The Welcome screen now shows the branch name, helping you stay organized when handling multiple project versions and allowing you to easily switch between working directories.
We’ve added new Git options to simplify viewing branch histories. Use the First Parent option to focus on the mainline changes by hiding individual commits from merges. Alternatively, you can filter out merge commits entirely with the No Merges option. Both options are now available under the Graph Options icon in the Git tool window, making it easier to track changes in your branches.
The new terminal now offers enhanced command processing, and the alignment of its UI has been refined, delivering a smoother, more intuitive experience. The terminal is now more responsive and processes prompts faster. Session switching is now seamless, with consistent state retention across tabs to ensure your workflow is not interrupted. Autocompletion accesses command names, flags, and paths more quickly, reducing manual input. We've also introduced additional customization options, including for prompt styles, session names, and environment variables, giving you greater control over your terminal environment.
For every major release, we prepare instructions on how to migrate from older MPS versions to ensure everything goes smoothly. Please review them carefully.