在 VS Code 中尝试

2024 年 4 月 (版本 1.89)

更新 1.89.1:本次更新修复了这些问题

下载:Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


欢迎阅读 Visual Studio Code 2024 年 4 月版本。此版本中有许多更新,我们希望您会喜欢,其中一些主要亮点包括

如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。Insiders:想尽快试用新功能?您可以下载每夜构建的 Insiders 版本,并在更新可用后立即试用最新功能。

辅助功能

进度可访问性信号

设置 accessibility.signals.progress 使屏幕阅读器用户能够在用户界面中任何显示进度条的地方听到进度提示。信号会在三秒钟后播放,然后每五秒钟循环播放一次,直到进度条完成。信号播放的示例包括:搜索工作区时、等待聊天响应时、笔记本单元格运行时等。

改进的编辑器可访问性信号

现在,当一行有错误或警告,或光标位于错误或警告上时,都有单独的可访问性信号提示。

我们支持分别自定义在编辑器中行和列之间导航时可访问性信号的延迟。此外,aria 警报信号比音频提示信号的播放延迟更高。

内联建议在显示建议控件时不再触发可访问性信号。

可访问视图

可访问视图 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 使屏幕阅读器用户能够检查工作台功能。

终端改进

现在,当您在终端可访问视图中导航到下一个 (⌥↓ (Windows, Linux Alt+Down)) 或上一个 (⌥↑ (Windows, Linux Alt+Up)) 命令时,您可以听到当前命令是否失败。可以使用设置 accessibility.signals.terminalCommandFailed 来切换此功能。

当从启用了 shell 集成的终端打开此视图时,VS Code 会通过终端命令行发出提示,以获得更好的体验。

聊天代码块导航

当您位于聊天响应的可访问视图中时,现在可以在下一个 (⌥⌘PageDown (Windows, Linux Ctrl+Alt+PageDown)) 和上一个 (⌥⌘PageUp (Windows, Linux Ctrl+Alt+PageUp)) 代码块之间导航。

注释视图

当安装了提供注释的扩展并且注释视图处于焦点状态时,您可以在可访问视图中检查和导航视图中的注释。可从可访问视图中执行扩展提供的注释可用操作。

工作台

语言模型使用报告

对于使用语言模型的扩展,您现在可以在扩展编辑器和运行时扩展编辑器中跟踪它们的语言模型使用情况。例如,您可以查看语言模型请求的数量,如以下截图中 Copilot Chat 扩展所示

Screenshot of the Runtime Status for the Copilot Chat extension, showing the number of language model requests.

本地工作区扩展

本地工作区扩展,于VS Code 1.88 版本中首次引入,现已正式发布。您现在可以直接在工作区中包含扩展,并且仅为该工作区安装它。此功能旨在满足您特定的工作区需求并提供更量身定制的开发体验。

要使用此功能,您需要在工作区中的 .vscode/extensions 文件夹中包含您的扩展。然后 VS Code 会在扩展视图的工作区推荐部分显示此扩展,用户可以从此处安装它。VS Code 仅为该工作区安装此扩展。本地工作区扩展要求用户在安装和运行此扩展之前信任工作区。

例如,考虑VS Code 仓库中的 vscode-selfhost-test-provider 扩展。此扩展提供了测试功能,使贡献者可以直接在工作区中查看和运行测试。以下截图显示了扩展视图中工作区推荐部分的 vscode-selfhost-test-provider 扩展以及安装它的选项。

Screenshot showing a local workspace extension available in the .vscode folder in the Explorer view.

请注意,您应该在 .vscode/extensions 文件夹中包含解压后的扩展,而不是 VSIX 文件。您也可以只包含扩展的源代码,并将其作为工作区设置的一部分进行构建。

快速打开中的自定义编辑器标签

上个月,我们推出了自定义标签,它允许您个性化编辑器选项卡的标签。此功能旨在帮助您更轻松地区分具有相同名称的文件(例如 index.tsx 文件)的选项卡。

在此基础上,我们已将自定义标签的使用扩展到快速打开 (⌘P (Windows, Linux Ctrl+P))。现在,您可以使用您创建的自定义标签搜索文件,使文件导航更加直观。

Screenshot showing the use of custom labels in Quick Open to distinguish between multiple 'index.jsx' files.

自定义键绑定

我们使自定义用户界面操作的键绑定变得更加简单。右键单击工作台中的任何操作项,然后选择自定义键绑定。如果操作具有 when 子句,它将自动包含在内,从而更容易按需设置键绑定。

树控件中的查找键绑定

我们解决了树控件中频繁意外打开查找控件的问题。例如,查找控件出现在资源管理器视图中而不是在编辑器中搜索。

为了减少这些意外激活,我们将树控件中打开查找控件的默认键绑定更改为 ⌥⌘F (Windows, Linux Ctrl+Alt+F)。如果您喜欢以前的设置,可以使用键盘快捷方式编辑器轻松恢复 list.find 命令的原始键绑定。

自动检测系统颜色模式改进

如果您希望主题跟随系统的颜色模式,您已经可以通过启用设置 window.autoDetectColorScheme 来实现。

启用后,深色模式下的当前主题由 workbench.preferredDarkColorTheme 设置定义,浅色模式下的当前主题由 workbench.preferredLightColorTheme 设置定义。

在这种情况下,则不再考虑 workbench.colorTheme 设置。仅当 window.autoDetectColorScheme 关闭时才使用此设置。

在此里程碑中,新功能是主题选择器对话框(首选项:颜色主题命令)现在能够识别系统颜色模式。请注意,当系统处于深色模式时,主题选择如何只显示深色主题

Screenshot showing the theme selection dialog configuring the theme for Dark mode.

对话框还有一个新按钮,可直接将您带到 window.autoDetectColorScheme 设置

Screenshot showing the theme selection dialog, highlighting the button to configure the autoDetectColorScheme setting.

在注释控件的输入编辑器中,粘贴链接的行为与在 Markdown 文件中粘贴链接的行为相同。将显示粘贴选项,您可以选择粘贴 Markdown 链接,而不是复制的原始链接。

Screenshot of Comments control, showing the paste link context menu.

源代码管理

切换分支时保存/恢复打开的编辑器

在此里程碑中,我们解决了在源代码管理分支之间切换时保存和恢复编辑器的长期存在的功能请求。使用 scm.workingSets.enabled 设置启用此功能。

首次切换到分支时,要控制打开的编辑器,可以使用 scm.workingSets.default 设置。您可以选择没有打开的编辑器 (empty),或使用当前打开的编辑器 (current,默认值)。

用于查看更改的专用命令

为了更轻松地在多文件 diff 编辑器中查看特定类型的更改,我们向命令面板添加了一组新命令:Git: View Staged ChangesGit: View ChangesGit: View Untracked Changes

笔记本

极简错误渲染器

您可以使用设置 notebook.output.minimalErrorRendering 为笔记本错误渲染器使用新的布局。此新布局仅显示错误和消息,以及一个将完整错误堆栈展开到视图中的控件。

禁用大型笔记本的备份

现在,大型笔记本文件已禁用定期文件备份,以减少将文件写入磁盘所需的时间。可以使用设置 notebook.backup.sizeLimit 调整限制。我们还在试验一个选项,通过 notebook.experimental.remoteSave 设置在保存笔记本文件时避免阻塞渲染器,以便自动保存可以在不影响性能的情况下进行。

修复大纲/粘性滚动性能退步

在过去几个月里,我们收到了关于笔记本编辑器性能退步的反馈。这些退步很难精确定位且不易重现。感谢社区持续提供的日志和反馈,我们得以确定退步源于我们在大纲和粘性滚动功能中添加新功能时引入的问题。这些问题已在此版本中修复。

我们感谢社区的反馈和耐心,我们将继续改进笔记本编辑器的性能。如果您仍然遇到性能问题,请随时在VS Code 仓库中提出新问题。

快速搜索使您能够快速在工作区文件之间执行文本搜索。快速搜索不再是实验性功能,因此请在命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 中使用搜索: 快速搜索命令来尝试一下吧!✨🔍

主题:Night Owl Light(在 vscode.dev 上预览)

请注意,所有快速搜索命令和设置在其标识符中不再包含“experimental”关键字。例如,命令 ID workbench.action.experimental.quickTextSearch 变为 workbench.action.quickTextSearch。如果您有使用这些旧 ID 的设置或键绑定,这可能会有所影响。

搜索树递归展开

我们添加了一个新的上下文菜单选项,允许您在搜索树中递归打开选定的树节点。

主题:Night Owl Light(在 vscode.dev 上预览)

终端

默认启用 Git Bash shell 集成

Git Bash 的 shell 集成现在自动启用。这为 Git Bash 带来了许多功能,例如命令导航粘性滚动快速修复等。

配置中键粘贴

在大多数 Linux 发行版上,中键单击会粘贴选定的内容。现在可以通过将 terminal.integrated.middleClickBehavior 配置为 paste,在其他操作系统上启用类似的行为,这会在中键单击时粘贴常规剪贴板内容。

通过OSC 8 转义序列创建的 ANSI 超链接以前仅支持 httphttps 协议,但现在适用于任何协议。默认情况下,出于安全原因,仅激活带有 filehttphttpsmailtovscodevscode-insiders 协议的链接,但您可以通过 terminal.integrated.allowedLinkSchemes 设置添加更多协议。

终端的新图标选择器

从终端选项卡上下文菜单中选择更改图标现在会打开为配置文件构建的新图标选择器

Screenshot showing the new icon picker shows a preview and the id of the icon as well as a filter box

主题:Sapphire(在 vscode.dev 上预览)

支持窗口大小报告

终端现在响应以下转义序列请求

  • CSI 14 t 报告终端窗口的像素大小
  • CSI 16 t 报告终端单元格的像素大小
  • CSI 18 t 报告终端窗口的字符大小

⚠️ Canvas 渲染器已弃用

终端具有三种不同的渲染器:DOM 渲染器、WebGL 渲染器和 canvas 渲染器。我们一直想移除 canvas 渲染器,但由于 DOM 渲染器性能不可接受以及 WebKit 未实现 webgl2 而受阻。这两个问题现在都已解决!

在此版本中,我们从回退链中移除了 canvas 渲染器,因此仅当 terminal.integrated.gpuAcceleration 设置明确设置为 "canvas" 时才启用它。我们计划在下一版本中完全移除 canvas 渲染器。如果将 terminal.integrated.gpuAcceleration 设置为 "on""off" 时遇到问题,请告诉我们。

调试

JavaScript 调试器

JavaScript 调试器现在会在 runtimeExecutable 配置中自动查找出现在 node_modules/.bin 文件夹中的二进制文件。现在,它会按名称自动解析它们。

请注意在以下示例中,您可以直接引用 mocha,而无需指定二进制文件的完整路径。

{
	"name": "Run Tests",
	"type": "node",
	"request": "launch",
-	"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/mocha",
-	"windows": {
-		"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/mocha.cmd"
-	},
+	"runtimeExecutable": "mocha",
}

语言

Markdown 路径补全中的图像预览

VS Code 内置的 Markdown 工具为 Markdown 中的链接和图像提供路径补全功能。当完成图像或视频文件的路径时,我们现在直接在补全详情中显示小预览。这可以帮助您更轻松地找到所需的图像或视频。

Screenshot showing a preview of an image in Markdown path completions

悬停预览 Markdown 中的图像和视频

想在不打开完整Markdown 预览的情况下快速预览 Markdown 中的图像或视频吗?现在您可以将鼠标悬停在图像或视频路径上以查看其小预览

Screenshot showing hovering over an image's path to preview it

改进的 Markdown 标题重命名

您知道吗,VS Code 内置的 Markdown 支持允许您使用 F2 重命名标题?这很有用,因为它还会自动更新指向该标题的所有链接。在此迭代中,我们改进了处理 Markdown 文件中存在重复标题时的重命名情况。

考虑以下 Markdown 文件

# Readme
- [Example 1](#_example)
- [Example 2](#_example-1)

## Example
...

## Example
...

这两个 ## Example 标题具有相同的文本,但可以使用唯一的 ID(#example#example-1)分别链接到它们。以前,如果您将第一个 ## Example 标题重命名为 ## First Example,则 #example 链接会正确更改为 #first-example,但 #example-1 链接不会更改。然而,重命名后 #example-1 不再是有效链接,因为不再有重复的 ## Example 标题。

我们现在正确处理这种情况。例如,如果您在上面的文档中将第一个 ## Example 标题重命名为 ## First Example,则新文档将是

# Readme
- [Example 1](#_first-example)
- [Example 2](#_example)

## First Example
...

## Example
...

请注意,现在两个链接都已自动更新,以便它们都保持有效!

远程开发

远程开发扩展允许您使用开发容器、通过 SSH 连接的远程计算机或远程隧道,或适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。

亮点包括

  • 通过 SSH 连接到 WSL

您可以在远程开发发行说明中了解有关这些功能的更多信息。

对扩展的贡献

GitHub Copilot

终端内联聊天

终端内联聊天现在是终端中的默认体验。在终端获得焦点时,使用 ⌘I (Windows, Linux Ctrl+I) 键盘快捷方式将其调出。

Screenshot showing opening terminal inline chat opens and focuses an input box similar to inline chat in the editor

终端内联聊天使用 @terminal 聊天参与者,该参与者具有关于集成终端的 shell 及其内容的上下文。

Screenshot showing that you can ask complex questions like "list the top 5 largest files in the src dir"

建议命令后,使用 ⌘Enter (Windows, Linux Ctrl+Enter) 在终端中运行命令,或使用 ⌥Enter (Windows, Linux Alt+Enter) 将命令插入终端。也可以在运行命令之前直接在 Copilot 的响应中编辑命令(目前在 Windows 和 Linux 上是 Ctrl+downTabTab,在 macOS 上是 Cmd+downTabTab)。

Screenshot showing that complex queries are OS and shell-specific

Copilot 支持的重命名建议按钮

现在可以通过重命名控件中的星光图标触发 Copilot 支持的重命名建议。

内容排除

GitHub Copilot 内容排除现在已在 Copilot Chat 中支持所有 Copilot for Business 和 Copilot Enterprise 客户。有关配置内容排除的信息可在GitHub Docs上找到。

当文件被内容排除排除时,Copilot Chat 无法看到文件内容或路径,并且不会用于生成 LLM 建议。

Screenshot showing a file which has been excluded in panel chat, displaying a warning about decreased suggestion quality

Screenshot showing a file which has been excluded in inline chat, showing an error that inline chat cannot be used

预览:在笔记本编辑器中生成

我们现在支持在笔记本编辑器中插入自动激活内联聊天的新单元格。当 notebook.experimental.generate 设置为 true 时,我们在笔记本工具栏和单元格之间的插入工具栏上显示一个生成按钮。当焦点位于笔记本列表或单元格容器上时,也可以通过在 macOS 上按 Cmd+I(或在 Windows/Linux 上按 Ctrl+I)来触发它。此功能可以帮助简化在语言模型的帮助下在新单元格中生成代码的过程。

Python

“实现所有继承的抽象类”代码操作

使用 Pylance 时,处理抽象类现在更容易。定义继承自抽象类的新类时,您现在可以使用实现所有继承的抽象类代码操作自动实现父类的所有抽象方法和属性

主题:Catppuccin Macchiato(在 vscode.dev 上预览)

新的自动缩进设置

以前,Pylance 的自动缩进行为是通过 editor.formatOnType 设置控制的,如果您想禁用自动缩进但启用其他支持工具的键入时格式化,这会是个问题。为了解决此问题,Pylance 有自己的设置来控制其自动缩进行为:python.analysis.autoIndent,此设置默认启用。

Screenshot showing Python Analysis Auto Indent setting to control auto indentation with Pylance

Debugpy 已从 Python 扩展中移除,转而使用 Python Debugger 扩展

现在调试功能由Python Debugger扩展处理,我们已从 Python 扩展中移除 debugpy。

作为此更改的一部分,您的 launch.json 文件中指定的 "type": "python""type": "debugpy" 都将引用 Python Debugger 扩展的路径,无需更改 launch.json 文件即可有效运行和调试。今后,我们建议使用 "type": "debugpy",因为它直接对应于 Python Debugger 扩展。

现在可以在测试期间禁用 Socket

现在可以在 Python 测试重写中从测试 UI 运行禁用 socket 的测试。这得益于 Python 扩展和测试运行子进程之间的通信切换为现在使用命名管道。

次要测试错误已更新

测试视图现在正确显示使用 unittest 进行测试场景以及嵌套类中的参数化测试的项目。此外,测试资源管理器现在处理包含符号链接的工作区中的测试,特别是作为符号链接路径子项的工作区根,这在 WSL 场景中特别有用。

Pylance 的性能改进

Pylance 团队收到了关于 Pylance 在过去几个版本中性能有所下降的反馈。我们在内存消耗和索引性能方面进行了一些较小的改进,以解决各种报告的问题。然而,对于可能仍然遇到 Pylance 性能问题的用户,我们恳请通过命令面板中的Pylance: Report Issue命令提交问题,最好附带日志、代码示例和/或工作环境中安装的包。

十六进制编辑器

十六进制编辑器现在除了长期存在的“替换”模式外,还具有插入模式。插入模式允许在文件中以及文件末尾添加新字节,并且可以使用 Insert 键或从状态栏切换。

十六进制编辑器现在还在状态栏中显示当前悬停的字节。

GitHub Pull Requests

GitHub Pull Requests 扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括

  • 通过隐藏设置 "githubPullRequests.experimentalUpdateBranchWithGitHub": true 启用后,即可对未检出的 PR 使用实验性冲突解决功能。此功能使您无需在本地检出分支即可解决 PR 中的冲突。该功能仍处于实验阶段,并非适用于所有情况。
  • 当从拉取请求和问题视图触发打开辅助功能帮助时,会显示一个辅助功能帮助对话框。
  • 当有足够的空间时,所有审阅操作按钮都会显示在活动拉取请求侧边栏视图中。

查看扩展 0.88.0 版本的变更日志以了解其他亮点。

TypeScript

文件监视由 VS Code 核心处理

一个新的实验性设置 typescript.tsserver.experimental.useVsCodeWatcher 控制 TS 扩展是否使用 VS Code 的核心文件监视支持来满足文件监视需求。TS 广泛使用文件监视,通常采用基于 node.js 的自有实现。通过使用 VS Code 的文件监视器,监视应该更高效、更可靠并消耗更少的资源。我们计划在 5 月份逐步为用户启用此功能,并监测是否存在退步。

预览功能

PowerShell 的 VS Code 原生智能提示

一段时间以来,我们一直在终端中提供 PowerShell 智能提示的原型,最近才投入更多时间进行完善。效果如下所示

目前,它会在输入 - 字符或按下 Ctrl+Space 时触发。要启用此功能,请在您的 settings.json 文件中设置 "terminal.integrated.shellIntegration.suggestEnabled": true(目前它不会显示在设置 UI 中)。

此功能尚处于早期阶段,但我们很乐意听取您对此的反馈。我们为此计划的一些重要事项包括使其触发更可靠(#211222),无论在哪里触发弹出窗口,都使建议更加一致(#211364),并使体验尽可能接近编辑器智能提示体验(#211076#211194)。

假设您正在编写一些 Markdown 文档,然后意识到文档中的某个部分实际上属于其他地方。于是,您将其复制并粘贴到另一个文件中。一切顺利,对吧?然而,如果复制的文本包含任何相对路径链接、引用链接或图像,那么这些链接现在很可能会损坏,您将不得不手动修复它们。这可能非常令人头痛,但幸运的是,新的粘贴时更新链接功能可以提供帮助!

要启用此功能,只需设置 "markdown.experimental.updateLinksOnPaste": true。启用后,当您在当前编辑器中的 Markdown 文件之间复制和粘贴文本时,VS Code 会自动修复所有相对路径链接、引用链接以及所有带有相对路径的图像/视频。

粘贴后,如果您发现您实际上想要插入您复制的原始文本,可以使用粘贴控件切换回正常的复制/粘贴行为。

支持 TypeScript 5.5

我们现在支持 TypeScript 5.5 beta。查看TypeScript 5.5 beta 博客文章迭代计划了解此版本的详细信息。

编辑器亮点包括

  • 正则表达式的语法检查。
  • 文件监视改进。

要开始使用 TypeScript 5.5 beta,请安装TypeScript Nightly 扩展。请分享反馈,并告知我们您在使用 TypeScript 5.5 时是否遇到任何错误。

API

改进了对注释输入编辑器中语言功能的支持

编写新注释时,VS Code 会创建一个精简的文本编辑器,该编辑器由 TextDocument 支持,就像 VS Code 中的主编辑器一样。在此迭代中,我们在这些注释文本编辑器中启用了一些额外的 API 功能。其中包括

  • 支持工作区编辑。
  • 支持诊断。
  • 支持“粘贴为”提议的 API。

注释文本文档可以使用具有 comment 方案的 URI 进行标识。

我们期待看到扩展利用这项新功能构建出什么!

窗口活动 API 已定稿

窗口活动 API 已定稿。此 API 提供了一个简单的附加布尔值 WindowState.active,扩展可以使用它来确定窗口最近是否已被交互。

vscode.window.onDidChangeWindowState(e => console.log('Is the user active?', e.active));

提议的 API

视图的辅助功能帮助对话框

可以通过 accessibilityHelpContent 属性为任何扩展贡献的视图添加辅助功能帮助对话框。在视图获得焦点时,屏幕阅读器用户会听到打开对话框的提示 (⌥F1 (Windows Alt+F1, Linux Shift+Alt+F1)),其中包含概述和有用的命令。

此 API 由 GitHub Pull Request 扩展的问题和 PR 视图使用。

语言模型和聊天 API

语言模型命名空间 (vscode.lm) 导出新函数,用于检索语言模型信息和计算给定字符串的 token 数。它们分别是 getLanguageModelInformationcomputeTokenLength。您应该使用这些函数来构建在语言模型限制范围内的提示。

注意:内联聊天现在由即将推出的聊天参与者 API 提供支持。这也意味着 registerInteractiveEditorSessionProvider 已弃用并将很快被移除。

更新的文档粘贴提议

我们继续迭代文档粘贴提议的 API。此 API 使扩展能够挂接到文本文档中的复制/粘贴操作。

对 API 的显著更改包括

  • 一个新的 resolveDocumentPasteEdit 方法,用于在粘贴操作时填充编辑内容。如果计算编辑耗时较长,则应使用此方法,因为它仅在实际需要应用粘贴编辑时才调用。

  • 所有粘贴操作现在都由 DocumentDropOrPasteEditKind 标识。这与现有的 CodeActionKind 工作方式类似,并用于粘贴操作的键绑定和设置中。

文档粘贴扩展示例包含所有最新的 API 更改,因此您可以测试 API。请务必分享对更改和整体 API 设计的反馈。

悬停详细程度

在此迭代中,我们添加了一个新的提议的 API 用于折叠/展开悬停,称为 editorHoverVerbosityLevel。它引入了一个名为 VerboseHover 的新类型,该类型具有两个布尔字段:canIncreaseHoverVerbositycanDecreaseHoverVerbosity,它们表示悬停的详细程度可以增加或减少。如果其中一个设置为 true,则悬停会显示带有 +- 图标,可用于增加/减少悬停的详细程度。

提议的 API 还为 provideHover 方法引入了一个新签名,该方法接受类型为 HoverContext 的附加参数。当用户发送悬停详细程度请求时,悬停上下文会填充先前的悬停以及一个 HoverVerbosityAction,后者指示用户希望增加还是减少详细程度。

扩展触发的 TestRuns 上的 preserveFocus

有一项提议,建议为扩展触发的测试运行请求添加一个 preserveFocus 布尔值。以前,从扩展 API 触发的测试运行从未导致焦点移至测试结果视图,这使得某些扩展需要重新实现以保持用户体验兼容性。可以在 TestRunRequest 上设置此新选项,以要求编辑器移动焦点,就像测试运行是从编辑器内触发的一样。

值得注意的修复

  • 209917 辅助窗口:恢复最大化状态(Linux、Windows)

致谢

最后但同样重要的一点,非常感谢 VS Code 的贡献者们。

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-css-languageservice 的贡献

vscode-emmet-helper 的贡献

vscode-eslint 的贡献

vscode-hexeditor 的贡献

vscode-json-languageservice 的贡献

vscode-languageserver-node 的贡献

vscode-python-debugger 的贡献

vscode-vsce 的贡献

language-server-protocol 的贡献

monaco-editor 的贡献