MPS 2021.1 最新变化

MPS 2021.1 引入了 Java 注解支持、大量 VCS 改进、Apple Silicon 支持等。

编辑器

放大和缩小

按住 Ctrl 并滚动鼠标滚轮可以在打开的编辑器窗口中快速调整字体大小。 字体大小更改并不是永久的,因此当您重新打开文件时,文字大小将重置为默认值。 您可以在 Preferences | Editor | General 部分中启用/禁用此功能:Change font size with Ctrl/Cmd+Mouse Wheel

改进了缩进布局性能

在某些核心情况下,缩进布局的实现已变成增量式,这将缩短以主要使用缩进布局的语言(例如 BaseLanguage)编写的大型模型的渲染时间。 可以使用 VM 选项 mps.indent_layout.disable_incremental 禁用此功能。

字体粗细选项

字体粗细选项

在长时间的编码工作中,选择一个舒适的编辑器字体非常重要。 最近增加的版式设置让这个选择变得更加简单和个性化。 在 v2021.1 中,您可以在 Preferences | Editor | Fonts 中调整主字体和粗体字体的粗细。

版本控制系统

根注解改进

根注解改进

版本控制系统支持添加了对根注解的改进。 现在,为根注解使用一种通过移动跟踪计算修订版本更改的新算法。 注解行/单元的颜色仅使用根发生变化的修订版本确定。 当注解列打开时,注解单元现在具有特殊的上下文菜单组。 您可以对每个注解单元应用 Copy Revision NumberShow Diff 和其他操作。

合并提交的差异对话框

合并提交的差异对话框

在 Git 日志中为合并提交启用了差异对话框。 该查看器可以显示三个面板 - 用于合并模型的中央面板,以及用于两个合并分支的左右面板。

在差异编辑器中同步滚动

在差异编辑器中同步滚动

现在,可以在差异对话框中使用一个按钮关闭编辑器滚动同步。

用于根注解和根/节点历史记录的修订版本图

根注解和根/节点历史记录算法之前基于文件修订版本的有序列表,计算根在两个相邻修订版本之间的更改。 不过,这些修订版本有可能来自两个不同的分支,在这种情况下,获得的更改没有意义。 合并修订版本也不会得到正确处理。 来自旧修订回合的更改可能被错误地显示为来自新合并修订的更改。 现在,在生成更改历史记录时,算法会考虑修订版本图。

保存到 Shelf

您可以使用新的 Save to Shelf 操作将更改保留在本地并复制到 Shelf。 在 macOS 上按 ⇧⌘A(在 Windows 或 Linux 上按 Ctrl+Shift+A),然后输入 Save to Shelf 即可访问此操作。

生成器

改进的 $LOOP$ 宏变量访问

改进了 $LOOP$ 宏变量访问

现在,可以使用 LOOP.inputNode 表达式引用 LOOP 宏的输入节点,无需使用 VAR 宏。 使用 LOOP.index 并替换之前的用户自定义上下文变量,也可以在同一个命名空间下访问 LOOP 的索引。

更新了 GenPlan 声明中的 Transform 语句

为了提升生成计划的可扩展性,采用一种新的机制来包含计划设计师未知的语言或生成器。 现在,借助 transform 语句,语言设计师可以包含针对或扩展给定语言的语言。 当我们说语言 B“目标是”语言 A 时,我们是指语言 B 的生成器生成语言 A 的结构。

编译模板增强

在 MPS 2021.1 中,如果该选项激活,编译模板现在可以检查子节点在父节点中的位置是否正确。

了解详情

其他

适用于包含 Java facet 的 MPS 模块的 Java 编译器

MPS 模块的 Java 编译方式发生了很大变化。 这解决了我们一个票数最高的问题,即注解处理支持。 我们切换了 MPS Java 编译器基础架构来利用 API 的 javax.tools.JavaCompiler 集,因此,MPS 现在可以使用实现此标准 API 的任何编译器。 自 v2021.1 开始,MPS 将使用为此 API 配置的默认编译器运行,其中包括一个使用 Eclipse Compiler for Java (ECJ) 的选项。

了解详情

项目迁移的基线 MPS 版本

创建新项目时,现在将保存“基线”MPS 版本。 从早于项目基线版本的 MPS 版本的项目迁移将不适用。 这让作者可以灵活地为项目迁移提供指定的所需“基线”版本,他们可以使用新的 ‘getBaselineVersion():int’ 方法在项目迁移接口中修改该版本。

了解详情

方法签名重构改进

方法签名重构改进

Method Signature 重构对话框现在包括一种为新参数或类型发生变化的参数指定默认值的方式。 如果某个参数已被移除,但仍在方法中使用,将引入一个新的局部变量来确保引用不会丢失。 如果方法调用与其签名不匹配,则可以利用一个意图操作更改方法签名,使其与调用匹配。

了解详情

BaseLanguage 注释引入新选项

lang.text 语言添加了多个新功能,增强了 BaseLanguage 中的单行和多行注释。

  • 现在,在上下位置选择时,文本选区让您可以仅高亮显示行的一部分。
  • bolditalicizeunderline 等操作适用于选区。
  • 已实现纯文本复制/粘贴。
  • 现在支持项目符号列表或编号列表。

改进了 lang.smodel 中的表达式

model.nodes() 一样,表达式 model.roots()model.rootsIncludingImported()model.nodesIncludingImported() 现在也支持用于指定概念的 #expression。

控制使用您的插件分发的模块的可见性

插件通过 com.intellij.mps.LanguageLibrary 扩展点告知 MPS 它们要贡献的模块。 扩展点现在可能会提供可选的 hide="true" 特性,这使插件的模块可以通过使用 com.intellij.mps.VisibleModuleMask 指定的模式进行筛选。

了解详情

其他改进

内置 HTML 预览

内置 HTML 预览

新的内置浏览器预览可以让您快速预览 HTML 文件。 要打开预览,请点击编辑器右上角微件中的 MPS Logo。 您如果在 HTML 中进行了更改,或者改变了链接的 CSS 和 JavaScript 文件,则预览将即时更新。

Apple Silicon 支持

您现在可以在搭载 M1 芯片的 Mac 上使用 MPS。 首先,请从我们的网站下载适用于 Apple Silicon 的 JetBrains MPS 的安装程序,或者从 JetBrains Toolbox App 获取。

自动导入设置

在 MPS 2021.1 中,每次安装新版本的 MPS 时出现的 Import Settings 对话框仅在您没有合适的设置和配置时显示。

改进了辅助功能

在这个版本中,我们为欢迎屏幕、Project Structure 视图和 VCS 日志中的 UI 元素添加了更多标签。 现在,启用屏幕阅读器后可以正确地朗读这些元素以及装订区域图标。 我们也在努力改善对 macOS 用户的辅助功能支持。