MPS 2021.2 最新变化

MPS 2021.2 引入拼写检查机制、自动补全弹出窗口和 VCS 增强功能等。

自动补全弹出窗口

代码补全通常由 Ctrl/Cmd + Space 调用,现在会在您停止输入后自动弹出,默认延迟半秒。 同时仍然可以按需要手动打开。 了解更多

在 VCS 差异中包装和解包更改的改进

在 VCS 差异中包装和解包更改的改进

包装更改现在更加灵活。 独立内部更改可以在包装和解包更改中进行。 此外,可以有多个相邻的包装和解包更改。 现在可以在 ID 发生变化的节点内检测到内部移动。

节点特性更改的改进显示

改进了节点特性更改的显示

先前在 Diff 对话框中未正确高亮显示特性的编辑器单元。 通常,如果添加或删除了特性,则具有该特性的整个节点都会高亮显示,而不仅仅是相关的特性。

通用拼写检查机制

通用拼写检查机制

MPS 功能采用 IntelliJ IDEA 拼写检查机制检查注释和字符串文字的拼写错误和问题,经扩展现已能够处理可能出现在标签单元中的任何文本。 要指示必须根据字典(如 Preferences 中的配置)检查单元的文本,您只需在编辑器声明中将 spellcheck 样式添加到单元。

对于富客户端平台 (RCP),应在发行版中包含 jetbrains.mps.editor.spellcheck 插件。

用于迁移的项目版本

用于迁移的项目版本

我们已经解决已迁移到较新 MPS 版本的项目被具有较旧 MPS 版本的开发者访问的情况。 现在,迁移子系统会在应用迁移时跟踪 MPS 平台版本,如果您尝试打开的项目已迁移到较新版本,它将发出警告。 这有助于防止模型意外损坏。

优化引用范围

新增一个机制,可以在单个模型读取期间共享评估的范围代码段。 在 j.m.lang.constraints 中引入了用于共享范围的新表达式: for model [ factory, key]visible roots [concept]visible nodes [concept],以替代 new ModelPlusImportedScope(model, rootsOnly, concept)。 新表达式可将模型的范围保存到缓存中,因此只需要记录和计算一次。

修改节点时没有限制

扩展程序作者在编写适用于 MPS 模型的代码时必须选择要授予的访问权限类型。 对于 SNode 操作(例如 setProperty()、addChild() 等),即使没有 UI 交互,也只能授予命令访问权限。 此限制现已解除,任何拥有模型写入权限的代码现在都可以修改节点。

工具提示雷达

工具提示雷达

工具提示现在具有“雷达”功能,可以显示哪些单元具有工具提示。 按住 Ctrl 键可激活工具提示雷达。

钻石运算符

现在可以在 BaseLanguage 中于构造函数上使用 Java 钻石运算符来从上下文推断泛型形参。 新编写的代码将默认启用钻石运算符。 要在现有构造函数上启用,应移除现有类型形参并在检查器中将 infer type parameters 设置为 true,或再次输入 <> 并移除空形参。

BaseLanguage 属性改进

现在可以在类型检查时正确考虑 BaseLanguage 中的属性。 当属性继承接口或抽象方法时,不会引发未实现方法的错误。 当定义具有泛型类型的属性时,正确的类型将用于访问实例上的属性。

请注意,为 T 类型的属性公开的 setter 将返回 T 类型的对象,而不是 void

统一的 Show Diff

统一的 Show Diff

现在,MPS 会在编辑器标签页中显示初始文件与版本更改后的文件之间的差异。 无论您如何调用 Show Diff 操作,IDE 默认都会在编辑器中打开差异。

如果您更喜欢在单独的窗口中跟踪更改,则可以从编辑器中拖动所需的文件。 这样操作后,IDE 会记住您的偏好,并将在单独的窗口中打开后续差异。

其他改进

Preferences/Settings 中的新导航选项

Preferences/Settings 中的新导航选项

新箭头位于 Preferences/Settings 中窗口的右上角,可帮助您浏览各个部分。 允许您在各部分之间跳转。

拖放工具窗口

现在可以更轻松地将工具窗口拖放到主 IDE 窗口或将其作为单独窗口。 您可以点击并按住工具窗口名称栏将其拖放到任何高亮显示的位置。

内置 HTML 预览

终端增强功能

内置终端中添加了新的光标形状选项。 此外,终端还为将 Option (⌥) 用作 Meta 键的快捷键提供了新支持。 例如,您可以使用以下快捷键:

  • ⌥+F – 转到下一个词
  • ⌥+B – 转到上一个词
  • ⌥+D – 删除下一个词