2021 年 8 月(1.60 版)
1.60.1 更新:此更新解决了这些 问题。
1.60.2 更新:此更新解决了这些 问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel Silicon | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2021 年 8 月版本。此版本包含许多更新,我们希望您喜欢它们,其中一些主要亮点包括
- 自动语言检测 - 在您粘贴到 VS Code 中时检测编程语言。
- 内置快速括号对颜色化 - 为大型文件提供快速括号匹配和颜色化。
- 设置编辑器语法高亮显示 - 为设置描述代码块提供丰富的语法高亮显示。
- 自定义终端字形渲染 - 更好地显示方框绘制和块元素字符。
- 设置调试监视值 - 在调试会话期间更改监视的值。
- 笔记本改进 - Markdown 链接导航,更快地渲染大型输出。
- JavaScript/TypeScript 内联提示 - 为参数名称和类型提供内联提示等等。
- 锁定编辑器组预览 - 通过锁定编辑器组来保持首选的编辑器布局。
- Python 扩展测试更新 - 更好地支持测试发现、导航和状态。
- Web 扩展作者指南 - 了解如何在浏览器中为 VS Code 更新您的扩展。
如果您想在线阅读这些发行说明,请访问 更新 页面,该页面位于 code.visualstudio.com 上。
加入我们的直播,参加 VS Code 团队直播,该直播将于 9 月 2 日星期四太平洋时间上午 8 点(伦敦时间下午 4 点)举行,观看此版本中新功能的演示,并向我们现场提问。
内部人员:想要尽早尝试新功能?您可以下载夜间 内部人员 版本,并在新功能可用后立即尝试最新更新。
工作台
自动语言检测
在上一版本中,我们引入了针对无标题文件的实验性功能,该功能会根据内容自动设置文件的语言模式。自动语言检测功能使用机器学习来猜测语言,机器学习模型完全在您的机器上本地运行。该模型由开源 ML 库 Tensorflow.js 提供支持,并且来自 GitHub 用户 @yoeo 的 Guesslang 中的 ML 模型为其提供支持。
在此版本中,我们默认启用自动语言检测,并将检测扩展到包括没有文件扩展名的文件。在笔记本中,我们提供了一种使用语言选择器请求语言检测的简单方法。
我们添加此功能是因为我们发现 VS Code 的一些新用户不知道如何设置语言模式,也不知道这对于获得 VS Code 的丰富功能集(语言颜色化和扩展推荐)是必需的。使新用户能够快速查看 VS Code 提供的语言功能和扩展,有助于他们在编辑器中快速上手。
此外,使用无标题文本编辑器作为草稿纸的资深用户不再需要显式设置语言模式,我们希望这将简化他们的工作流程。
以下是自动语言检测启用的几个有趣场景。
从网上获取示例并将其粘贴到无标题编辑器中
主题:熊猫主题
"管道到代码" 语言检测(展示对无扩展名文件的检测)
主题:熊猫主题
笔记本语言选择器中的自动检测选项
主题:熊猫主题
终端编辑器确认对话框
在关闭具有正在运行的子进程的终端编辑器时显示的对话框现在特定于终端编辑器,并且不再提供“保存”终端的方法。
在编辑器无法恢复时保持打开状态而不是关闭
以前,如果编辑器在重新加载窗口或重新启动应用程序后无法恢复,则编辑器将自动关闭,直到找到成功加载的编辑器为止。此行为会导致令人沮丧的结果,即精心创建的编辑器布局会由于编辑器关闭而消失。
在本版本中,即使无法恢复,以前成功打开的编辑器也不会关闭。编辑器会指示问题并提供重试操作的选项。
设置编辑器中的代码块语法高亮显示
设置描述中的 围栏代码块 现在具有语法高亮显示。
将设置编辑器打开到旁边
现在可以通过使用 `openToSide` 参数配置键绑定来将设置编辑器打开到侧边组中。
{
"key": "cmd+,",
"command": "workbench.action.openSettings",
"args": {
"openToSide": true
}
}
这也适用于 `workbench.action.openSettingsJson` 命令。
编辑器
高性能括号对颜色化
编辑器现在支持原生括号对颜色化。
可以通过设置 `“editor.bracketPairColorization.enabled”: true` 来启用括号对颜色化。所有颜色都是可主题化的,最多可以配置六种颜色。
我们实现了此功能以解决著名扩展 Bracket Pair Colorizer(由 CoenraadS 创建)的性能问题。
现在,即使大型文档中的更改也会立即反映出来。
自动完成中的内联建议
当显示自动完成小部件时,内联建议现在可以扩展建议预览。如果自动完成小部件中选定的建议可以通过内联完成提供程序扩展,则扩展将以斜体显示。按一次 `Tab` 键仍将仅接受自动完成建议。再次按 `Tab` 键将接受内联建议。
此功能要求启用建议预览(`“editor.suggest.preview”: true`)。
更新的 Peek 视图
我们对 Peek 视图进行了视觉刷新,使其与其他编辑器视图保持一致。
终端
自定义渲染方框绘制和块元素字符
方框绘制和块元素字符现在使用像素完美的自定义字形,而不是在 GPU 加速开启(`terminal.integrated.gpuAcceleration`)时使用字体。这意味着,例如,即使您在终端中设置了行高或字间距,方框也会没有间隙地绘制。
以下是一个终端应用程序 Zenith 的示例,它显示了部分周围的方框绘制字符以及图表中的块元素。
可以通过设置 `“terminal.integrated.customGlyphs”: false` 来禁用此功能。
改进某些字体的下划线渲染
终端中下划线的渲染方式存在一些历史问题,其中大部分问题已通过切换到 WebGL 渲染器(默认值)而得到解决。有一个例外,即在 Linux 上,字体中的下划线字符意外地绘制在单元格边界下方。
注意,下排的下划线是如何绘制在单元格边界下方的。
虽然这在大多数情况下都能正常工作,但在底行会失败,因为它绘制在画布边界之外。
我们现在通过检测这种字体并将下划线纹理向上移动到单元格边界内来解决这个问题。此解决方案也适用于画布渲染器,该渲染器以前不会显示任何行的下划线,因为它会裁剪行以避免重叠。
重新加载窗口后更快地重新连接
之前,当重新加载窗口时,解析终端缓冲区的状态可能需要长达 300 毫秒,并且还存在损坏的可能性。对于多个繁忙的终端,这会很快累加!为了解决这个问题,还原缓冲区的方法已经从在 pty 主机 上记录大量最近的原始终端事件更改为在 pty 主机上维护一个无头终端前端并将所有数据写入该前端。
这种方法带来了很多好处
- 可以微调要恢复的滚动回退量。默认情况下现在为 100,这在速度和数据量之间取得了良好的平衡。可以通过
terminal.integrated.persistentSessionScrollback
设置更改滚动回退量。 - 由于 xterm.js' 快速解析器,这应该对 CPU 使用率的影响最小,并减少 pty 主机上的总内存使用量。
- 现在明确恢复了终端模式,这些模式以前可能会被遗漏并导致缓冲区损坏。
- 不再需要重播代价高昂的调整大小事件,因为终端的缓冲区始终与其大小同步。
- 由于恢复速度相对较快,因此所有操作都在一帧内完成。这意味着宝贵的 CPU 时间不会浪费在渲染部分恢复的终端上,从而进一步降低速度。
这种新的实现可以提高多少速度取决于许多因素,例如终端数量、硬件、终端缓冲区大小以及终端中发生的情况。恢复完整终端缓冲区的粗略估计应该能带来大约 5-10 倍的速度提升。
我们还在 npm 上发布了新的 xterm-headless 包,这样你就可以在自己的项目中使用这项工作。
调试
在 WATCH 视图中设置值
现在可以使用 WATCH 视图上下文菜单中的“设置值”操作来设置监视表达式的值。
调试扩展必须选择加入此功能才能使用“设置值”。目前,JS-debug、C# 和 C++ 扩展支持此功能,但我们预计其他调试扩展很快就会跟进。
次要 UI 改进
-
VS Code 现在还可以在 VARIABLES 视图、WATCH 视图和调试悬停中检测值的链接。当变量的值是链接时,这将使通过单击链接来跟踪链接变得更容易。
-
当启动另一个正在运行的调试会话的实例时,现在将出现一个模态确认对话框,以防止意外启动两个会话。
-
单击编辑器断点栏中的禁用断点现在将启用断点,而不是将其删除。
-
当调试会话处于活动状态时,“运行到行”操作现在可在编辑器断点栏上下文菜单中使用
新设置
-
如果你想避免在调试会话期间意外关闭窗口,可以启用新的设置
debug.confirmOnExit
。将此设置为always
时,系统将提示你确认是否要停止关闭窗口时的调试会话。 -
新的设置
debug.console.acceptSuggestionOnEnter
控制是否应在调试控制台中按Enter
时接受建议。Enter
也用于评估在调试控制台中键入的内容,因此此选项可以让用户更好地控制按Enter
时发生的情况。
JavaScript 调试
旧的节点调试器已消失
VS Code 长期以来都包含一个内置的 Node.js 调试器,并且发布了一个单独的 Chrome 调试器。去年,我们为 Node.js 和 Chrome 引入了一个新的调试器,并且从 VS Code 1.47(2020 年 7 月)开始,它已成为默认调试器,并提供了一个“选择退出”选项。
在本版本中,旧 调试器已从产品中删除,并在市场中标记为已弃用。如果你属于大多数没有选择退出新 JavaScript 调试器的 VS Code 用户,则不会发生任何变化。
如果你需要旧调试器(例如,调试 Node.js 6 程序),则可以安装 [已弃用] Node Debug 或 [已弃用] Debugger for Chrome 扩展并分别使用 legacy-node
或 legacy-chrome
启动类型。
改进异步函数和 Node.js 内部结构中的单步执行
你可以将调试器的 skipFiles 设置为避免单步执行某些代码,包括 Node.js 内部结构,这些内部结构在异步函数周围单步执行时经常会遇到。
但是,Node.js 在处理 “黑盒” 脚本时并不总是表现出正确的行为,因此,在本迭代中,我们在调试器中引入了“合成黑盒”。这应该在处理 Node.js 程序时(尤其是在单步执行异步函数时)显著提高可靠性。
在我们下一个版本中,我们计划默认情况下让调试器跳过 Node.js 内部结构。
安装程序
默认情况下注册 VS Code 以支持文件类型
Windows 11 引入了一个 新的文件资源管理器上下文菜单,该菜单将“打开方式”放在菜单的顶部,与“打开”分组在一起。此更新使查找所有可用编辑器和更改默认设置变得更容易。
遵循新的最佳实践,VS Code 的复选框“注册 VS Code 作为关联文件类型的编辑器”现在将在 Windows 安装期间默认选中。我们还审查了关联文件类型的列表,并将其扩展以包含更多经常打开的文件类型。
Windows 11 上的 Microsoft Store
随着即将发布的 Windows 11,新的 Microsoft 商店可以支持更多传统的应用程序类型和安装程序。如果你已经在通过 Windows 预览体验成员计划测试 Windows 11,那么你现在可以通过在商店中搜索 VS Code 来安装最新版本。安装后,你将拥有与从我们的网站上获取的用户安装相同的 VS Code,并且更新将通过应用内处理,就像今天一样。
笔记本
Markdown 单元之间的链接
笔记本现在支持 Markdown 单元之间的链接
你可以使用以下方法创建一个指向 Markdown 单元中标题的链接
[Link text](#_header-slug)
header-slug
是标题的字母小写文本,其中任何空格或特殊字符都替换为 -
。上面的示例中的链接将跳转到标题 # Header Slug
。
处理大型输出时的性能改进
我们优化了在笔记本中处理大型输出的方式,以显著提高性能。
在幕后,VS Code 使用 Uint8Arrays 将笔记本输出存储为二进制数据。以前,在扩展主机进程和渲染器进程之间传输输出数据时,数据首先转换为数字值数组,然后序列化为 JSON。
要了解为什么这对性能不利,请考虑一个输出以下文本的笔记本:Hello Code!
。这在内部存储为一个 Uint8Array
new Uint8Array([72, 101, 108, 108, 111, 32, 67, 111, 100, 101, 33]);
该数据长 11 字节。旧的实现将随后将二进制数据转换为 JSON 字符串
'[72,101,108,108,111,32,67,111,100,101,33]';
此字符串长 41 字节,是原始数据大小的 3.5 倍以上!这需要传输大量额外的字节,并且接收方现在必须将该字符串解析为 JSON,以将其转换回 Uint8Array
。对于大小为数十 MB 的笔记本输出,这种解析可能会成为重大的瓶颈。
在新的实现中,笔记本输出在传输时保持为二进制数据。你可以在 拉取请求中 详细了解它是如何实现的。
此修复显著改善了加载保存到其中的大型输出的笔记本,以及在笔记本在执行期间生成大型输出时的性能。
onNotebook 激活事件改进
当在工作区中打开笔记本时,VS Code 会发出 onNotebook:{type}
和 onNotebook:*
事件,以便笔记本扩展可以在监听这些事件时被激活。以前,VS Code 会在打开文件之前等待所有监听这两个事件的扩展,但现在它只会等待特定笔记本的序列化器注册。例如,当用户在新的工作区中打开 ipynb
文件时,内置的 ipynb
序列化器扩展将被激活,并且文件会立即打开。同时,VS Code 会向所有其他扩展发出激活事件,例如 Jupyter、.NET Interactive 或 Julia 扩展。其他扩展的激活不会减慢文件操作,以确保笔记本快速打开。
笔记本布局自定义
你现在可以直接通过编辑器工具栏自定义笔记本布局设置。
语言功能
TypeScript 4.4
VS Code 现在包含 TypeScript 4.4。此更新带来了对许多新的语言功能和改进的支持,包括 静态块 和 新的严格性选项。它还添加了新的工具改进并修复了一些重要的错误。
你可以在 TypeScript 博客 上详细了解 TypeScript 4.4。
JavaScript 和 TypeScript 的内联提示
TypeScript 4.4 中最显著的新工具功能是内联提示支持。内联提示在源代码中添加其他内联信息,以帮助你了解代码的功能。
例如,参数名称内联提示会在函数调用中显示参数的名称
这可以帮助你一目了然地理解每个参数的含义,这对接受布尔标志或参数容易混淆的函数特别有用。
要启用参数名称提示,请设置 javascript.inlayHints.parameterNames.enabled
或 typescript.inlayHints.parameterNames.enabled
设置。有三个可能的值
none
- 禁用参数内联提示。literals
- 仅对字面量(字符串、数字、布尔值)显示内联提示。all
- 对所有参数显示内联提示。
此外,VS Code 还提供内联提示,这些提示会在你的 JavaScript 和 TypeScript 代码中显示隐式类型信息。
变量类型内联提示会显示没有显式类型注释的变量的类型。
设置 - javascript.inlayHints.variableTypes.enabled
和 typescript.inlayHints.variableTypes.enabled
属性类型内联提示会显示没有显式类型注释的类属性的类型。
设置 - javascript.inlayHints.propertyDeclarationTypes.enabled
和 typescript.inlayHints.propertyDeclarationTypes.enabled
参数类型提示会显示隐式类型参数的类型。
设置 - javascript.inlayHints.parameterTypes.enabled
和 typescript.inlayHints.parameterTypes.enabled
返回值内联提示显示没有显式类型注解的函数的返回值类型。
设置 - javascript.inlayHints.functionLikeReturnTypes.enabled
和 typescript.inlayHints.functionLikeReturnTypes.enabled
我们计划在未来继续改进内联提示,所以请务必分享您对新功能的任何反馈!
JavaScript 文件中的拼写建议
VS Code 现在可以帮助您在 JavaScript 文件中捕获简单的拼写错误
只有当我们相当有信心它们是真正的错误,而不是我们 IntelliSense 引擎无法理解的代码模式时,才会显示拼写建议。您可以阅读有关此添加此功能的 PR 中的更多详细信息。
您还可以通过设置来禁用这些建议
"javascript.suggestionActions.enabled": false
对于更全面的检查,请尝试在您的 JavaScript 代码中启用完全语义检查。这不仅可以帮助捕获更多错误,还可以启用一些有用的快速修复。
typescript.tsserver.useSyntaxServer
新的 typescript.tsserver.useSyntaxServer
设置允许您控制 TypeScript 是否启动一个专用服务器来快速处理与语法相关的操作,例如计算代码折叠。它取代了现在已弃用的 typescript.tsserver.useSeparateSyntaxServer
设置。
可能的值是
auto
- 生成一个完整的服务器和一个专门用于语法操作的轻量级服务器。语法服务器用于加速代码折叠等语法操作,并在项目加载时提供 IntelliSense。(默认)always
- 使用一个轻量级语法服务器来处理所有 IntelliSense 操作。此语法服务器只能为打开的文件提供 IntelliSense。never
- 不使用专用语法服务器。使用单个服务器来处理所有 IntelliSense 操作。
预览功能
锁定编辑器组
随着编辑器区域中终端的引入,我们收到了用户报告,他们感到沮丧的是,终端编辑器会太容易或意外地被文件编辑器替换。默认情况下,文件将始终在活动编辑器组中打开,因此,即使终端处于活动状态,文件也会打开并隐藏终端。
锁定编辑器组提供了一种新的方法来处理此问题,不仅适用于终端,也适用于任何编辑器。如果您打开了多个编辑器组,您现在可以锁定它,可以使用新命令之一,也可以从"..."溢出菜单中锁定它。
锁定组的行为与未锁定组不同
- 新的编辑器不会在锁定组中打开,除非用户显式将其移动到那里(例如,通过拖放)。
- 如果编辑器跳过锁定组以进行打开,它将在最近使用的未锁定组中打开,或者在锁定组旁边创建一个新组。
- 编辑器组的锁定状态会持久化并在重启后恢复。
- 您也可以锁定空组,从而实现更稳定的编辑器布局。
- 锁定组由操作工具栏(右上角)中的锁定图标表示。
请参阅以下关于锁定编辑器组行为的演示。即使 Markdown 预览处于活动状态,新文件也会在左侧编辑器组中打开
为此功能添加的命令是
workbench.action.experimentalLockEditorGroup
workbench.action.experimentalUnlockEditorGroup
workbench.action.experimentalToggleEditorGroupLock
一个新的上下文键 activeEditorGroupLocked
可用于根据组的锁定状态有条件地绑定命令。
注意:相关设置和命令是实验性的,直到我们最终确定锁定编辑器组的设计。我们希望您对这个新功能提出反馈,所以请不要犹豫报告问题。
自动锁定编辑器组
在新的锁定编辑器组概念的基础上,新的 workbench.editor.experimentalAutoLockGroups
设置允许您选择应在打开时自动锁定组的编辑器。这仅适用于编辑器是第一个在其他空组或新组中打开的编辑器。
默认情况下,终端被配置为自动锁定新组。在下面的简短视频中,即使终端处于活动状态,从终端选择的也会在左侧编辑器组中打开
如果您希望 Markdown 预览自动锁定组,可以将 mainThreadWebview-markdown.preview: true
添加到 experimentalAutoLockGroups
设置中。
在接下来的里程碑中,我们将努力改进设置 UX,以便能够选择编辑器而无需知道其标识符。相关设置和命令是实验性的,直到我们最终确定锁定编辑器组的设计。我们再次希望收到您的反馈。
“按文件名搜索”快速选择中的引号支持
在此迭代中,我们添加了从“按文件名搜索”快速选择(⌘P (Windows, Linux Ctrl+P))中排除模糊搜索结果的功能,方法是将搜索字符串放在引号中。
此功能大放异彩的场景
当查询只有几个字符时
如果您想减少结果的“杂乱”
我们喜欢这种引号体验,它感觉很直观,因为大多数搜索引擎都使用类似的机制,但我们希望收到您的反馈。我们还在考虑在问题 #131431中讨论的其他方法。
对扩展的贡献
Jupyter
逐行运行
VS Code 现在支持 Jupyter 笔记本中的逐行运行功能。这是一种简单的调试模式,允许您逐行执行单元格的代码。要试用它,请确保您已安装 ipykernel
v6+ 作为您的选定内核,然后选择逐行运行按钮。
调试
还对使用 VS Code 的完整调试功能调试 Jupyter 笔记本提供实验性支持。要试用它,请确保您已安装 ipykernel
v6+ 作为您的选定内核,设置 "jupyter.experimental.debugging": true
,设置断点,然后选择调试单元格命令。
Jupyter 键映射
我们将 Jupyter 经典键绑定提取到一个单独的Jupyter 键映射扩展中,如果您希望使用来自 Marketplace 的另一组笔记本键绑定,可以禁用它。
Python
改进的测试界面
感谢新的测试 API,Python 扩展 改进了其测试功能。您现在可以享受更稳定的测试发现、导航和状态呈现体验,以及新的功能,例如搜索测试、运行部分测试、重新运行最后执行的测试等等!
从编辑器在终端中运行和调试 Python 文件
您现在可以使用 Python 扩展直接从编辑器在终端中运行和调试您的 Python 文件。
GitHub 拉取请求和问题
现在提供了在GitHub 拉取请求和问题扩展中展开和折叠所有评论的备受期待的功能。可以使用GitHub 拉取请求:展开所有评论和GitHub 拉取请求:折叠所有评论命令展开和折叠所有评论。还有一个设置 githubPullRequests.commentExpandState
来控制展开折叠状态。最后,您还可以从评论 UI 中折叠所有评论
要了解所有新功能和更新,您可以查看扩展的0.30.0 版本的完整变更日志。
扩展创作
Web 扩展
当 VS Code 在浏览器中运行时,扩展会被加载到也在浏览器中运行的扩展宿主中。“Web 扩展宿主”受到浏览器的限制,扩展无法访问本地文件系统或平台功能。为了帮助扩展作者更新他们的扩展以支持在 Web 版 VS Code 中运行,现在有一个Web 扩展 编写指南。在这里,您将了解哪些类型的扩展最适合在 Web 上运行,如何访问 VS Code API 以及如何使用虚拟文件系统。
除了 Web 扩展指南之外,yo code
扩展生成器 现在有一个选项可以搭建一个Web 扩展,并且还包括对 @vscode/test-web
模块的支持,以便从命令行测试 Web 扩展。
如果您还没有看到 Web 版 Visual Studio Code 的实际运行情况,您可以在 GitHub 代码库的<> Code选项卡中按 '.'
(句点键),您将启动一个基于 Web 的 VS Code 版本来浏览和编辑源代码。
命令的简短标题
The commands 贡献点允许扩展为命令定义 UI 属性,例如标题、类别或图标。另一方面,菜单是“位置”,显示命令,菜单可能会呈现一些或所有命令的 UI 属性。例如,一些菜单仅呈现图标,而另一些菜单呈现标题或类别加标题。作为扩展作者,很难想出一个适用于全局菜单和本地菜单的命令标题。例如,命令面板可以显示比上下文菜单更多的单词。
为了允许使用不同的标题,有一个新的 shortTitle
属性。它允许命令提供一个更短的标题,该标题适用于不同的 UI,例如命令面板中的笔记本:清除所有单元格输出以及笔记本工具栏中的更短的清除所有。
添加到环境命名空间的应用程序宿主
.env
命名空间现在包含应用程序宿主 appHost
属性。appHost
允许扩展开发人员确定 VS Code 托管的环境。示例包括桌面、GitHub Codespaces、github.dev 和 vscode.dev。
RendererContext.workspace.isTrusted 用于笔记本渲染器
传递给笔记本渲染器 的上下文对象上的新 workspace.isTrusted
属性允许扩展作者检查当前工作区是否受信任。
import type { ActivationFunction } from 'vscode-notebook-renderer';
export const activate: ActivationFunction<void> = (ctx) => {
return {
renderOutputItem: (outputInfo, element) => {
if (ctx.workspace.isTrusted) {
// Render normally. Still take precautions to avoid script injection and
// only enable as much functionality as your renderer needs.
} else {
// Only render safe content. Always make sure it has been properly sanitized.
}
}
}
};
特定于平台的扩展
我们一直在为 特定于平台的扩展 取得进展,它允许扩展作者为不同的平台(Windows、macOS、Linux)创建单独的扩展版本。我们一直在与市场团队合作开发此功能,并最终确定了一个解决方案。在此里程碑中,我们开始了实施工作,并计划很快将其提供给扩展作者。您可以关注 问题 #23251 以获取更新并提供反馈。
更新的 codicons
以下新图标已添加到我们的 codicon 库
folder-library
run-errors
更新了演练贡献
使用可主题化 SVG 作为演练步骤媒体
演练步骤现在可以在其 media
对象中指定一个 svg
属性。除了更好的缩放支持外,SVG 还提供了对主题令牌的访问,这使得媒体能够在视觉上与工作台的其余部分相匹配。有关更多信息,请参阅有关 主题化 Webview 内容 的指南。
声明演练感兴趣的文件
演练现在支持一个可选的 featuredFor
参数,该参数列出了给定演练适用的文件类型。当这些文件在工作区文件夹中找到时,演练将以更高的视觉优先级呈现。
任务默认组 API
TaskGroup
的 isDefault
属性已最终确定。扩展程序现在可以获取任务,然后读取任务 group
的 isDefault
属性,以确定该任务是否是该组的默认任务。
调试器扩展创作
“DebugSessionOptions” 上的新“managedByParent” 属性
managedByParent
新标志已添加到 DebugSessionOptions
类型中。当传递给 startDebugging
API 时,它控制是否将 disconnect
和 restart
等生命周期请求发送到新创建的会话或其父会话。
调试适配器协议的“showUser” 属性
当 launch
请求失败时,VS Code 现在将遵守调试适配器响应中发送的 showUser
属性。如果提供了 showUser
属性且为 false,VS Code 不会显示带有错误的模式对话框。如果 showUser
属性缺失或为 true
,VS Code 将像以前一样工作,并显示错误对话框。
对于其他调试适配器协议 (DAP) 请求,没有任何变化。如果 showUser
为 true
,则将使用通知显示错误。否则,不会向用户显示任何内容。
VS Code 不再为“noDebug” 调试会话注册断点
当 DAP launch
请求的 noDebug
属性设置为 true
时,VS Code 将不再调用任何断点注册 DAP 请求(setBreakpoints
、setExceptionBreakpoints
、setDataBreakpoints
、setFunctionBreakpoints
、setInstructionBreakpoints
)。
VS Code 现在支持 DAP“setExpression” 请求
如果调试适配器实现了 setExpression
请求(supportsSetExpression
功能为 true
),VS Code 将在两种情况下使用 setExpression
- 在 VARIABLES 和 WATCH 视图中,用于更改变量的值,如果调试适配器不支持
setVariable
请求(supportsSetVariable
功能缺失或为false
),并且如果变量具有evaluateName
属性且可编辑(VariablePresentationHint
中的readOnly
属性不为true
)。 - 在 WATCH 视图中,用于更改可分配表达式的值,如果监视表达式可编辑(
VariablePresentationHint
中的readOnly
属性不为true
)。
抑制 DAP 错误消息中的“打开 launch.json” 按钮
调试适配器协议允许 Message 的 ErrorResponse 返回一个 url
,其中可以找到有关该消息的更多信息,以及一个 urlLabel
,该标签作为打开 URL 的 UI 显示给用户。当 VS Code 在模式对话框中向用户显示该消息时,将显示一个带有 urlLabel
字样的按钮。在此版本之前,VS Code 还会添加一个标题为 打开 launch.json 的按钮。如果消息的 url
使用“command”方案(例如 command:myExtension.fixError
),则该按钮将不再添加。
调试适配器协议
发布了新的“memory” 事件
memory
事件已完成,现在可以在 调试适配器协议 的 1.49 版以及相应的 npm 模块中使用。如果调试适配器已为 initialize
请求的 supportsMemoryEvent
功能收到了 true
值,则调试适配器可以发出 memory
事件以指示某些内存范围已更新。
建议的扩展 API
每个里程碑都会带来新的 API 提议,扩展作者可以试用它们。与往常一样,我们希望您提供反馈。以下是您试用 API 提议的方法:
- 您必须使用 Insiders,因为 API 提议会频繁更改。
- 您的扩展
package.json
文件中必须包含以下行:"enableProposedApi": true
。 - 将 vscode.proposed.d.ts 文件的最新版本复制到项目的源代码位置。
您无法发布使用 API 提议的扩展。下一个版本中可能会有重大更改,我们不希望破坏现有的扩展。
支持类型层次结构
有一个 API 提议用于 TypeHierarchyProvider,它允许扩展为符号提供超类型和子类型。该 API 已准备好试用,如果您发现问题或有建议,可以在 VS Code 代码库 中提交。
在任何地方创建终端
提议的终端位置 API 允许在面板中以及在编辑器区域创建终端拆分。
查询和事件,以确定终端是否已“交互”
Terminal.state 和 window.onDidChangeTerminalState 的新 API 提议允许查询终端是否已“交互”。交互意味着数据已发送到进程,并且可能由于各种原因发生,主要原因是键盘输入。
快速选择项中的按钮
有一个 API 提议用于 在快速选择项中添加和处理按钮。我们希望这能使扩展能够为用户提供与快速选择更丰富的交互。
试用一下,让我们知道您的想法。需要注意的是,快速选择的滚动位置目前存在已知问题,我们认为这将被此新的 API 提议放大。我们正在努力制定一套正确的 API 来解决此问题。请通过 参与该问题 告诉我们您的想法。
测试标签
测试标签 是一种 API 提议,它提供了一种组织测试的方法,同时也指示哪些测试是可运行的。
非错误测试输出
测试 API 支持测试失败消息,但以前没有方法将非错误输出与特定测试用例关联起来。我们正在评估一种方法来实现这一点,方法是将可选的 TestItem
和 location
传递给 TestRun.appendOutput
方法。如果您有任何意见,请在 问题 #129201 上留下反馈!
内联完成提供程序:与自动完成小部件交互
InlineCompletionContext
有一个新的字段 selectedCompletionInfo
,其中包含自动完成小部件中当前选定建议的详细信息。此外,InlineCompletionItemProvider
在用户更改自动完成小部件中选定的项目时会要求内联建议。如果内联建议扩展了选定的建议项目,则扩展将以斜体显示。
工程
修复对 RHEL7 和 Centos7 发行版的支持
在 VS Code 1.53 版本中,我们更新了我们的构建镜像以使用更新的 Electron 版本,这会导致原生模块的 CXXABI 要求发生变化,从而导致我们的一些发行版中的 rpm 包出现故障 问题 #115784。随着 Electron v13 的更新,我们现在能够使用与运行时相同的编译器工具链构建我们的原生模块,具体而言,我们现在使用 Clang 并从运行时静态链接 libcxx。这使我们能够绕过 CXXABI 要求,仅使二进制文件大小略微增加(约 10 MB),并恢复对这些发行版的支持。感谢您的耐心等待和帮助测试 Insiders 版本。
文档
VS Code 中的 Julia
有一个新的 VS Code 中的 Julia 主题描述了 VS Code 中对 Julia 编程语言 的支持,以及 Julia 扩展。Julia 扩展包括丰富的语言功能,例如代码完成、代码导航和调试,以及集成的 REPL 和绘图导航器。
Azure 机器学习
您可以阅读 VS Code 中的 Azure 机器学习 概述,了解 Azure 机器学习扩展 如何让您直接从 VS Code 使用 Azure 机器学习云端 机器学习模型。
值得注意的修复
- 82489:使用“AltGr”键时键盘输入错误
- 115945:工具栏停靠时,调试工具栏贡献的命令消失
- 118196:重新启动调试会话时,args-list 中的元素不会更新
- 121201:菜单选择在 iPad 上未正确呈现
- 124128:调试停止时,扩展开发窗口不会拆卸
- 125259:调试不会在启动前保存 launch.json
- 126102:SkipFiles 仍然会打开文件以临时跳过,导致速度变慢
- 126911:扩展调试:停止调试会话不会关闭窗口
- 128484:调试:禁用启动失败时显示模式对话框的选项
- 129019:以关闭状态启动的树视图需要另一个刷新(或重新打开)才能显示内容
- 129469:设置编辑器输入框可以更大
- 129645:在设置 UI 中启用代码块语法突出显示
- 129844:markdownEnumDescriptions 在设置 UI 中不会删除 markdown <backtick>##<backtick>,并且在 settings.json 中不会删除 ##
- 130265:节点调试器不会在未处理的 Promise 拒绝时中断
感谢
最后但同样重要的是,衷心感谢本月为 VS Code 做出贡献的人们。
对我们问题跟踪的贡献
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- CodeCrazy-ywt (@CodeCrazy-ywt)
- Sandeep Rajakrishnan (@san-coding)
- ArturoDent (@ArturoDent)
对 vscode
的贡献
- @afonsomatos (Afonso Matos): 修复 Shadow Dom 中拖放不起作用的问题 PR #131392
- @akosyakov (Anton Kosyakov): 为打开的选项卡使用单独的事件循环 PR #126341
- @AkatQuas (Akat)
- 修复了一些注释中的错别字,重命名了一些方法 PR #130470
- 修复(存储): 修复方法错别字 PR #131051
- @chrisyeh96 (Christopher Yeh): 在渲染调用之间持久化 KaTeX 宏 PR #129747
- @Chigusa0w0 (Chigusa0w0): 修复使用触控板以低速向下滚动时的奇怪行为 PR #131231
- @erha19 (Dan): 修复: 调试控制台变量输出问题 PR #127132
- @Eskibear (Yan Zhang): 预览类型层次结构 PR #130922
- @gjsjohnmurray (John Murray)
- 修复 #126842 当刷新成功时清除资源管理器根文件夹错误指示器 PR #126843
- 修复 #129296 在导航简单文件对话框时保留权限、查询和片段 PR #129310
- 如果 DA 提供了命令,则在错误对话框上禁止“打开 launch.json”命令 (#_124020) PR #130754
- 改进 workbench.editor.experimentalAutoLockGroups 文本 PR #131157
- 修复 #131743 仅在添加“运行到行”时添加菜单分隔符 PR #131744
- @jeanp413 (Jean Pierre)
- 修复重新加载后拆分第一个终端有时会非常窄 PR #129668
- 修复在 markdown 中,cmd+click 无效链接以创建新文件不起作用 PR #130815
- 修复笔记本 UI 显示在终端之上 PR #130854
- 修复参数提示应使用链接悬停颜色 PR #130963
- 修复建议详细信息应使用链接悬停颜色 PR #130966
- @jihoon-ernesto: 添加终端键绑定以使 cmd+. → ctrl+c 匹配 macOS 终端 PR #131025
- @jsjoeio (Joe Previte): 功能: 添加带有端口名称的 asWebviewUri 测试 PR #131447
- @Kingwl (Wenlu Wang): 修复内联提示的折叠范围 PR #130399
- @lezgomatt (Matthew Go): 修复自定义选择框悬停样式 PR #129970
- @nickofolas: 修复状态栏中的语法问题 PR #131271
- @nrayburn-tech (Nicholas Rayburn): 修复 #124276 批处理 Markdown 文件请求 PR #124545
- @remcohaszing (Remco Haszing): 定义 window.MonacoEnvironment PR #128949
- @sdissegna-maystreet: [#131407] 修复浏览器中的服务工作者版本检查 PR #131408
- @spahnke (Sebastian Pahnke): [独立编辑器] 添加对注册
CodeActionProvider
时列出提供的代码操作类型的支持 PR #131254 - @spasche (Sylvain Pasche): 在拆分终端时从基准复制 URI 权限,修复 #127811 PR #130291
- @ssigwart (Stephen Sigwart): 更新选择以匹配括号方向 PR #128931
- @suzmue (Suzy Mueller): 按响应顺序排序线程 PR #128686
- @threeal (Alfi Maulana): 功能: 添加 .tpp 和 .txx 作为 c++ 扩展 PR #130101
- @tony-xia (Tony Xia)
- 更新方法名称 PR #129224
- 更新变量名称 PR #129226
- @vagusX (vagusX): 修复: 从 vscode.FileDecoration api 中删除无用的 priority 字段 PR #129501
- @xgdgsc: 点击禁用断点启用而不是删除 #125904 PR #125931
- @xisui-MSFT
- 修复反汇编视图中聚焦的堆栈帧颜色 PR #129721
- 将事件监听器移动到反汇编视图中的 renderTemplate PR #129734
- 改进反汇编视图中的可访问性 PR #129788
- 在反汇编不可用时添加特殊条目 PR #129797
- @yannickowow (Yanis HAMITI): [debugService #113742] 调试会话结束时显示变量 PR #131016
- @yash112-lang (Yash Singhal): 修复垂直对齐 PR #130327
对 vscode-generator-code
的贡献
- @octref (Pine): 添加本地开发技巧 PR #296
对 vscode-js-debug
的贡献
- @Manish-Giri (Manish Giri): 更新 userDataDir 选项文档 PR #1078
对 vscode-pull-request-github
的贡献
- @joshuaobrien (Joshua O'Brien)
- @RishabhKothaari (Rishab): 让视图了解 PR 的审核状态 PR #1833
对 debug-adapter-protocol
的贡献
- @robertoaloi (Roberto Aloi): 添加 Erlang 适配器 PR #202
对 language-server-protocol
的贡献
- @okuramasafumi (OKURA Masafumi): 最新版本现在是 3.16 PR #1321
- @OliverKovacs (Oliver Kovacs): 修复了错别字 PR #1332
- @vintagedave (David Millington): 调整了按语言的字母顺序排序 PR #1323
- @Wilfred (Wilfred Hughes): 修复 honorsChangeAnnotations 描述中的错别字 PR #1322
对 monaco-editor
的贡献
- @SpaceComet: 网站游乐场的小更新 PR #2616
- @thien-do (Thien Do): 将使用 Vite 添加到 ESM 集成文档 PR #2632
对 monaco-html
的贡献
- @Pranomvignesh (Pranom Vignesh): 修复(workerManager.js) : 添加了对 worker 存在的检查 PR #15
对 monaco-languages
的贡献
- @ladyrick (LadyRick): 修复(cpp): 修复 cpp 语言整数后缀 PR #156