Make and Rebuild
Since this release there'll be no more "Generate" and "Regenerate" actions in the UI. They have been replaced by "Make" and "Rebuild". See below for details.
The main "Build" menu has been re-worked completely. Here's what changed:
- New actions "Make Project" and "Rebuild Project"
- "Generate" is now called "Make"
- "Regenerate" is now called "Rebuild"
- What was previously called "Make" and "Rebuild" are now "Compile" and "Recompile"
- The old "Generate" options are still available
- There is a new button on the main toolbar, replacing three obsolete ones
The obsolete feature "generate used languages that require generation" is removed. It is superseded with the new make action.
- Menus for solutions and models have been updated too
Generated Text Preview
A new action "Preview Generated Text" opens preview in an multi-tab editor. Each tab corresponds to a single file.
The action is available on a model and is also bound to a shortcut ctrl+alt+shift+F9 (MacOS cmd+alt+shift+F9).
New Breakpoints and Watches in Java Debugger
New Breakpoints Features
- Debugger API improvements:
- support for different kinds of breakpoints;
- breakpoint properties panel;
- create breakpoint button in Breakpoints View.
- Java breakpoints:
- field watchpoints;
- exception breakpoints;
- suspend policy for java breakpoints;
- relevant breakpoint data (like thrown exception or changed field value) is displayed in variables tree.
Watches API and low-level watches for java debugger are implemented. "Low-level" means that user can write expressions using variables, available on the stack. To edit a watch, a so-called "context"(used variables, static context type and this type) must be specified. If the stack frame is available at the moment, context is filled automatically.
Watches can be viewed in "Watches" tree in "Debug" tool window. Watches could be created, edited and removed via context menu or toolbar buttons.
Trace information generation is done via textGen language
Trace information generation is done now via textGen language. Concepts that require trace information generation should implement one of the three interface concepts:
UnitConcept. Use script "Upgrade Trace Info Generation" from plugin language to upgrade.
See more infomation in Debugger documentation page
Tables support in editor
- New language jetbrains.mps.lang.editor.table was added to MPS distribution. This language should be imported into the editor model to enable table support. For now this language supports two different kinds of table: table and hierachical table:
- table cell model was intended for generic table support in editor. An instance of TableModel interface must be returned from model function in Table cell section within inspector of this cell model:
Specified TableModel instance used to create and edit table grid. Each table child cell contains common MPS editor specified for given child node. TableModel interface as well as a number of it's reusable implementations are defined in jetbrains.mps.lang.editor.table.runtime solution.
- hierarchical table cell model was created to cover rather frequent use case of table-based child nodes editing then a concept, represented by table, has multiple child reference to another concept Row keeping table cells as it's children:
On this screenshot rows is a name of child role keeping Row concept instances and cells is a name of child role defined within Row concept keeping DataCell concept which will be displayed within table grid. In addition optional headerRowlinkDeclaration - multiple child reference keeping nodes representing table header row - can be specified there.
- jetbrains.mps.editor.tableTest language with exemplary table editors were added to MPS distribution. This language contains possible table-based concept editor definitions. Some table editing tricks are:
- new table row can be added by pressing Enter on a cell located outside table grid either before- or after- current row
- new table column can be added by pressing Enter in the beggining/end of any existing cell in a column
- common MPS editor with completion can be used to edit child nodes
New Tabbed Editors
The tabbed editors part of plugin language was slightly improved. Now new aspects can be added for a concept from any language, which will allow to "extend" tabbed editors, in contrast with old TabbedEditor allowing to define the set of aspects only once.
The editors themselves changed their appearance - now there is no 3rd level of tabs. Instead, an editor has a toolbar showing all aspects available for the main node and allowing to create a new ones.m
Plugin framework improvements
Now it's possible to create a non-language plugin for MPS. This will allow to create "standalone" plugins, which will not require the presence of plugin's module for the plugin to work (e.g. a VCS plugin).
Note: Icons in actions don't work properly in non-language plugins for now.
In addition, plugin components are no more created via reflection. This will improve reloading performance of large plugins.