MPS 2019.3 最新变化

Quick Definition 操作

Quick Definition 操作

Quick Definition 与它在 IntelliJ IDEA 中的对应项类似。 点击节点,按住 Ctrl-Shift-I,您会看到一个弹出窗口,其中包含节点的定义。 在此弹出窗口中,您可以导航,选择其他节点并执行 Find 操作。 这样,您每次想要快速查看节点时就无需打开一个新标签页。

了解详情

模型卸载

模型卸载

现在可以通过明确地从内存中移除所有模型来改进内存消耗。 您可以点击内存指示器或通过 Registry 操作设置计划清理参数(以秒为单位)。 目前,此功能处于实验性阶段,我们计划在未来版本中改进这一功能。

了解详情

独立生成器模块

独立生成器模块和每种语言多个生成器

现在,您可为语言创建多个生成器,将它们托管在语言中(与历史版本相同)或者将它们作为常规顶级模块添加到语言旁。 使用生成器计划让您能够充分利用多个生成器。 为了帮助转换,对于没有显式生成计划的模块,只会调用一个语言生成器。 新的生成器可以从语言上下文菜单创建,您可以使用以下对话框中的新复选框确保生成器独立。

概念和接口转换

概念和接口转换

我们添加了一个新意图,可以将概念转换为接口概念,以及进行反向转换。 创建语言结构时可以使用此意图,它不会更改用法。

根据用例创建

根据用例创建

现在可以从代码中的用法创建概念、方法和类。 此意图可以在新语句上创建类,在表达式中创建方法,以及在子/引用角色和扩展/实现中创建概念与接口。

生成有效的 java 标识符

从 INamedConcept 生成有效的 java 标识符

新的生成器语句让您能够从任意 INamedConcept 生成有效的 Java 标识符。 这会通过移除非法符号、大写和添加前缀(如有需要)创建独一无二的名称。

Find Usages:编写查找器时用于报告任意搜索结果的新语句

在之前的 MPS 版本中,查找器上的 add result 语句仅允许用于基于 node<> 的搜索结果。 现在,使用 add raw result,语言设计师可以显示 Find Usages 视图能够可视化的任意结果。

修复内容

生成器:控制动态引用警告

MPS 生成器在尝试解析动态引用但失败时会发出警告,考虑到不是所有的生成器都遵守使用标签映射的严格引用结构方法,这会导致出现很多警告。 因此,我们添加了新的设置,用于控制是否出现警告。

了解详情

提升了 JavaStubs 加载性能 客户赞助

我们显著改进了加载存根模型时的性能,特别是从较大且强连接的 jar 集加载时。 我们目标项目的加载速度比在 2019.2 中快 2-3 倍(从 18 秒降到 6 秒)。 此提升也向后移植到了 MPS 2019.1 和 MPS 2019.2 中。

生成语言:显式模型根

MPS 过去只能将一组特定文件(即 *.mps*.mpsr)作为模型处理,不过,借助自定义模型持久性,文件名可以不同。 要确保在生成模块时捆绑所有必要的模型文件,在有助于自定义文件名模式的生成脚本中,存在适用于模块的显式模型根声明。

文档

自定义持久性示例和新生成解决方案向导文档已更新。 文档页面上数学示例和断开的链接中的生成时间错误已修复。 多个对话框和工具窗口也已得到更正。

基本语言

现在支持二进制和八进制文字,并且能够正确处理 Javadoc 中的类型参数。 还修复了许多其他问题

更新模块/模型标识对象的快速修复

MPS 会检测过期的名称并提供快速修复来确保 SModel 语言中的对象为最新名称。

了解详情

模块 facet 功能更新

利用“Tests”模块 facet,语言设计师现在完全自由,MPS 不会再要求语言模块必须有 facet。

了解详情

Surround with...

选择多个节点时,现在可以使用 Surround with… 操作。 之前,仅会针对包含单个节点的选择范围启用它。

Root History 对话框中的 Show Affected Files 操作

对于根历史记录中的修订,您现在可以查看同一修订中更改的其他文件。

按根持久性中模型的 Root History

2019.2 中引入的 Show Root History 操作可用于单个文件内模型中的根。 现在,按根持久性中的模型也受到支持。

Favorites 视图更新

MPS 集成了维护良好的 IntelliJ 平台 Favorites 工具。

了解详情

元数据语言样式

在键盘导航、编辑器中的占位符单元格行为和“New Root”外观方面,所有元语言现在都提供相同的样式和编辑体验。