释放

MPS 2021.1已被释放!

阅读这篇其他语言的文章:
Русский.简体中文

今年的第一个版本就在这里!在过去的几个月里,我们一直在增强产品的不同子系统,以改善用户体验。阅读更多关于上面的新功能,或者如果你是一个更直观的人,看我们的截屏视频


下载MPS 2021.1.

编辑

放大和缩小

通过保持CTRL并滚动鼠标滚轮,可以在打开的编辑器窗口中快速调整字体大小。字体大小更改不持久,因此在重新打开文件时,文本大小将被重置为默认值。您可以启用/禁用此功能首选项|编辑器|常规部分:改变字体大小与Ctrl/Cmd+鼠标滚轮

在缩进布局上提高性能

在一些核心情况下,缩进布局的实现是递增的,这将减少主要使用缩进布局的语言(如basellanguage)中大型模型的渲染时间。可通过“虚拟机”选项禁用该特性mps.indent_layout.disable_incremental

的字体选项

选择一个编辑器字体,您可以在没有困难的长时间的时间内看起来至关重要。最近添加的排版设置使得该选择有点易于个性化。在V2021.1中,您可以微调主要和粗体字体样式的重量偏好|编辑|字体

版本控制系统

根注释的改进

版本控制系统支持可提高根注释。用于计算具有移动跟踪的修订变化的新算法现在用于根注释。注释线/单元的颜色仅使用那些改变根的修订来确定。注释单元格当注释列打开时,现在具有特殊的上下文菜单组。你可以申请本修订号展示差异,以及对每个注释单元格的其他操作。

合并提交的Diff对话框

Diff对话框用于Git日志中的合并提交。查看器显示三个面板-中央面板用于合并的模型,左右面板用于合并的两个分支的模型。

在Diff编辑器中同步滚动

现在可以在Diff对话框中用按钮关闭编辑器滚动同步。

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

根注释和root /节点历史记录算法先前基于订购的文件修订列表,计算两个相邻修订之间的根目的的更改。然而,对于这些修订来说,可以从两个不同的分支,在这种情况下,所获得的变化没有意义。合并修订也没有正确处理。从较新合并修订版本的更改可能会错误地显示来自旧版本轮的更改。现在,算法在制定变更历史记录时考虑修订图。

保存到架子上

我们的新保存到架子上操作允许您将更改复制到货架时,同时将它们保留在本地更改中。您可以按按键访问此操作⇧⌘在macOS (Ctrl + Shift +一个在Windows或Linux上)和打字保存到架子上

发电机

改进了访问$循环$宏变量

现在可以参考输入节点循环使用a的宏循环。inputNode表达式,消除了使用VAR的需要宏。索引循环也可以通过使用可以在同一名称空间下访问Loop.Index.并替换先前用户定义的上下文变量。

更新变换Genplan宣言中的声明

为了提高生成计划可扩展性,有一种新的机制,包括计划设计师未知的语言或发电机。现在,与变换语句时,语言设计器可以包含针对或扩展给定语言的语言。当我们说语言B“目标”语言A时,我们的意思是语言B的生成器产生语言A的构念。

编译模板增强

发电机的偏好IDE中包含一个名为的选项警告孩子不能被置于角色,它检查产生的节点模板是否适合父节点的正确角色。该选项也可通过构建项目设置使用。生成器可以发出警告,这通常表示模板中存在一些不一致,例如不正确放置模板片段复制-SRC.注释。

然而,编译后的模板并没有执行这种检查。在MPS 2021.1中,编译后的模板现在会多做一些工作,如果选项是活动的,就会检查子节点是否被正确地放置到父节点中。

杂项

使用Java facet的MPS模块的Java编译器

我们在我们的Java编译的MPS模块的方法中发生了很大的变化。这是我们的一个地址top-voted问题注解处理支持。我们切换了MPS Java编译器基础设施来利用javax.tools.JavaCompiler一组API,所以MPS现在可以使用任何实现这个标准API的编译器。从2021.1版开始,MPS使用为这个API配置的默认编译器运行,如果存在的话,还可以选择使用Eclipse编译器(ECJ)。当ECJ库位于类路径中时,您可以切换MPS以使用ECJmps.compiler.java = ECJ.作为系统属性(例如通过编辑mps.vmpoptions.).请注意,如果您在使用新的编译器基础设施时遇到了不可恢复的问题,还可以通过更改配置来切换回直接ECJ API的遗留机制mps.compiler.java = ecjlegacy作为系统属性。

此外,我们现在使用释放选项,使用项目首选项中指定的版本(首选项-> Java Compiler)。这个选择比组合更严格源/—targetMPS在以前的版本中依赖的选项,因为它控制在某些版本中可用的库api的使用。如果由于使用某些版本中不可用的api而遇到编译问题,则可能需要更新项目中的Java版本。

项目迁移的基线MPS版本

当创建一个新项目时,将会保存一个“基线”MPS版本。从比项目基线版本更早的MPS版本进行项目迁移是不适用的。这样,作者就可以灵活地为项目迁移提供一个指定的“基线”版本,他们可以在项目迁移接口中使用新的“getBaselineVersion():int”方法来修改这个版本。

当项目没有版本时,默认版本将是2018.1,迁移将根据该迁移运行。对于任何项目,您仍然可以通过从迁移菜单手动运行它来应用任何项目迁移。

方法签名重构的改进

方法签名重构对话框现在包括了为新参数或类型已经改变的参数指定默认值的方法。当一个参数被删除但仍在方法中使用时,就会引入一个新的局部变量,这样引用就不会丢失。此外,现在处理变参数类型参数。

当方法的调用与其签名不匹配时,意图操作允许您根据调用更改方法签名。这一意图行动得到了改进。现在,它更智能地映射现有参数,因此可以重用现有参数的最大数量,并保留它们的引用。

基准语言评论中的新选项

lang.text语言已经被赋予了一些新的功能,这些功能直接增强了basellanguage中的单行和多行注释。

  • 文本选择现在允许您在选择上和向下时突出显示部分的部分。
  • 等操作大胆的用斜体字,下划线选择选择。
  • 从纯文本复制/粘贴到纯文本已经实现。
  • 现在支持项目符号和编号列表。

改进了lang.smodel中的表达式

的表情model.rootsIncludingImported model.roots (), ()model.nodesincludingimported()现在支持#表达式来指定概念,就像model.nodes()所做的事。

控制插件发布的模块的可见性

很长一段时间以来,MPS假设所有来自语言插件的模块对终端用户都是可见的。随着语言数量的增加,以及插件的复杂性的增加,有些情况下,语言设计者希望隐藏某些模块,以免大量不相关的语言或解决方案使最终用户感到困惑或不知所措。插件告诉MPS关于它们贡献的模块的方式com.intellij.mps.LanguageLibrary扩展点。现在,到目前为止的扩展可以提供可选的隐藏=“true”属性,该属性使插件的模块符合按照指定的模式进行过滤的条件com.intellij.mps.VisibleModuleMask.大多数MPS插件现在都承受标志,如果语言设计者需要隐藏它们,促进了MPS自己的语言的过滤。MPS为自己的模块提供掩码jetbrains.mps.ide.devkit插件,自定义IDE的作者通常不将该插件包含到发行版中,并完全控制其产品中的可见模块。

其他改进

内置的HTML预览

新的内置浏览器预览允许您快速预览HTML文件。要打开它,请在编辑器的右上角的小部件中使用MPS徽标单击图标。如果在HTML中进行任何更改或更改链接的CSS和JavaScript文件,则预览将在飞行中更新。

苹果硅支持

现在,您可以在带有M1芯片的mac电脑上使用MPS。要开始,请直接从我们的苹果芯片下载Jetbrains MPS的安装程序网站或从工具箱应用程序获取它。

Auto-import设置

在MPS 2021.1中导入设置每次安装新版本的MPS时都会显示对话框,只有当您没有相应的设置和配置时,才会显示。

改进了可访问性

在这个版本中,我们已经在Welcome屏幕、Project Structure视图和VCS日志中为UI元素添加了更多的标签。当启用屏幕阅读器时,这些元素和排水沟图标现在可以正确地读出。我们还在努力改善对macOS用户的可访问性支持。

轻微的变化

我们也固定了a很多错误.你的反馈对我们来说很重要,所以请在下面的评论区告诉我们你对新功能的看法。记住在我们的问题跟踪器您可以创建功能请求并升空当前的请求,这有助于我们为即将发布的版本定义新功能。

祝你有愉快的一天!

你的JetBrains MPS团队

开发的驱动器

blog_footer_bw@2x

发现更多的

Baidu