释放

2021.1议员正式发布!

阅读这篇其他语言的文章:
英语Русский

今年的第一个版本现已发布!在过去的几个月,我们完善了产品中的不同子系统以提高用户体验。阅读更多关于上述新功能的信息,或者如果您更喜欢直观可视化的内容,您还可以观看我们的屏幕截图


下载议员2021.1

编辑器

放大和缩小

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

改进了缩进布局性能

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

字体粗细选项

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

版本控制系统

根注解改进

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

合并提交的差异对话框

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

在差异编辑器中同步滚动

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

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

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

保存到架子上

您可以使用新的保存到架子上操作将变更保留在本地并复制到架子上。您可以通过在macOS上按⇧⌘一(在Windows或Linux上按Ctrl + Shift +一个)并输入保存到架子上来访问这个操作。

生成器

改进的循环宏美元变量访问

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

更新了GenPlan声明中的变换语句

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

编译模板增强

IDE中的发电机的偏好包含一个名为当孩子不能进入角色时要发出警告的选项,它检查生成的节点模板是否符合父节点的适当角色。这个选项也可以通过构建项目设置来使用。生成器可能会发出警告,这通常表明模板中有一些不一致的地方,例如放置位置不正确的模板片段COPY-SRC注解。

然而,编译模板并没有进行这种检查。在国会议员2021.1中,如果该选项激活,编译模板现在会进一步检查子节点在父节点中的位置是否正确。

综合

适用于包含Java方面的议员模块的Java编译器

议员模块的Java编译方式发生了很大变化。这解决了我们一个票数最高的问题,即注解处理支持。我们切换了议员Java编译器基础架构来利用API的javax.tools.JavaCompiler集,因此,议员现在可以使用实现此标准API的任何编译器。自v2021.1开始,议员们将使用为此API配置的默认编译器运行,其中包括一个使用Eclipse Java编译器(ECJ)的选项(如果存在)。当ECJ库在类路径中时,您可以用mps.compiler.java = ecj作为系统属性将议员切换到使用ECJ(例如,通过编辑mps.vmpoptions)。请注意,如果您在使用新的编译器架构时遇到无法恢复的问题,也可以通过改变mps.compiler.java = ecjlegacy作为系统属性的配置,切换回直接ECJ API的旧版机制。

此外,我们现在用释放选项来运行编译器,其版本在项目偏好设置(首选项- > Java编译器)中指定。这个选项比议员在以前版本中所依赖的源/—target选项的组合更为严格,因为它控制了某些版本中可用的库API的用法。如果您遇到由于使用某些版本中不可用的API而导致的编译问题,您可能需要更新您项目中Java版的本。

项目迁移的基线议员版本

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

如果该项目没有版本,则默认版本为2018.1,迁移将根据该版本进行。您仍然可以在任何项目中通过从迁移菜单手动运行任何项目迁移。

方法签名重构改进

方法签名重构对话框现在包括一种为新参数或类型发生变化的参数指定默认值的方式。如果某个参数已被移除,但仍在方法中使用,将引入一个新的局部变量来确保引用不会丢失。此外,现在还可以处理可变长度类型参数。

如果方法调用与其签名不匹配,则可以根据调用来意图操作更改方法签名。这个意图操作已经被改进。它现在更智能地映射现有参数,因此可以重用最大数量的现有参数并保留其引用。

BaseLanguage注释的新选的项

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

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

改进了朗。smodel中的表达式

表达式model.rootsIncludingImported model.roots (), ()model.nodesIncludingImported ()现在支持#表达式来指定概念,就像model.nodes ()

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

长期以来,议员假设所有来自语言插件的模块对终端用户是可见的。随着语言数量的增加,以及插件的复杂性,有些情况下,语言设计者希望隐藏某些模块,以避免最终用户被大量不相关的语言或解决方案所迷惑或淹没。插件通过com.intellij.mps.LanguageLibrary它扩展点告知议员们要贡献的模块。扩展点现在可能会提供可选的隐藏= " true "特性,这使插件的模块可以通过使用com.intellij.mps.VisibleModuleMask指定的模式进行筛选。大多数的议员插件现在都有这个标志,如果语言设计者需要隐藏议员自己的语言,可以方便地筛选它们。议员作为jetbrains.mps.ide.devkit插件的一部分为自己的模块提供掩码。自定义IDE的作者一般不把这个插件包含在发行版中,并可以完全控制自己产品中的可见模块。

其他改进

内置HTML预览

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

苹果硅支持

您现在可以在搭载M1芯片的Mac上使用议员。首先,请从我们的网站下载适用于苹果硅的JetBrains议员的安装程序,或者从工具箱应用获取。

自动导入设置

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

改进了辅助功能

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

其他小变化

我们还修复了一些错误。您的反馈对我们很重要,请在下面的评论区让我们知道您对新功能的看法。请记住,在我们的问题跟踪器中,您可以创建功能请求,并对当前的请求进行投票,这有助于我们为未来新版本定义新的功能。

祝您愉快!

您的JetBrains议员团队

发展的动力

blog_footer_bw@2x

Baidu