尝试以扩展 VS Code 中的代理模式!

2021 年 9 月 (版本 1.61)

更新 1.61.1:本次更新解决了这些问题

更新 1.61.2:本次更新解决了这些问题

下载:Windows:x64 Arm64 | Mac:通用 Intel Apple 芯片 | Linux:deb rpm tarball Arm snap


欢迎来到 Visual Studio Code 2021 年 9 月版本。此版本中有许多我们希望您会喜欢的更新,其中一些主要亮点包括:

如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。

在 VS Code 团队的发布派对中观看此版本新功能的亮点。您可以在我们的 YouTube 频道上找到活动的录像

内测版:想尽快尝试新功能?您可以下载每晚的内测版构建,并尽快尝试最新的更新。

工作台

不创建新组即可拆分编辑器

添加了一个新命令在组内拆分 (⌘K ⇧⌘\ (Windows, Linux Ctrl+K Ctrl+Shift+\)),用于将编辑器拆分为两部分,而无需第二个编辑器组。这允许您在同一文件上并排工作。您还可以通过切换布局按钮在垂直或水平拆分之间切换布局,如短视频所示。

如果希望拆分为垂直或水平,有一个新的设置workbench.editor.splitInGroupLayout

有一些新命令可以通过键盘绑定使用此功能:

  • workbench.action.splitEditorInGroup
  • workbench.action.toggleSplitEditorInGroup
  • workbench.action.joinEditorInGroup
  • workbench.action.toggleSplitEditorInGroupLayout

以及在两部分之间导航的命令:

  • workbench.action.focusFirstSideEditor
  • workbench.action.focusSecondSideEditor
  • workbench.action.focusOtherSideEditor

新的颜色sideBySideEditor.border用于设置分隔两部分的边框颜色。

锁定编辑器组

我们上一个里程碑引入了锁定编辑器组作为一项实验性新功能。在此里程碑中,设置体验得到了改进,允许您轻松选择在打开时应自动锁定组的编辑器类型。

Locked editor group setting

该设置现在称为workbench.editor.autoLockGroups。同样,与编辑器组锁定相关的命令已重命名,并且不再是实验性的。

  • workbench.action.lockEditorGroup
  • workbench.action.unlockEditorGroup
  • workbench.action.toggleEditorGroupLock

通过装饰指示已删除和只读编辑器

打开的编辑器可以指示它们是只读的,或者它们关联的资源是否已从磁盘中删除。此指示通过在编辑器标签后附加“deleted”和/或“readonly”来给出,这需要相当多的空间。

VS Code 现在为此目的使用装饰:

  • 资源已删除的编辑器显示为删除线和红色。
  • 只读资源的编辑器显示锁定图标。

Editor readonly and deleted decorations

将编辑器拆分到现有组中

当您将编辑器拆分到旁边时,VS Code 会打开一个新的编辑器组,即使旁边已经存在一个组。但是,有时您希望将编辑器拆分到已存在的组中。

为了支持这一点,添加了新命令:

  • workbench.action.splitEditorToPreviousGroup:拆分到上一个组。
  • workbench.action.splitEditorToNextGroup:拆分到下一个组。
  • workbench.action.splitEditorToAboveGroup:拆分到当前组上方的组。
  • workbench.action.splitEditorToBelowGroup:拆分到当前组下方的组。
  • workbench.action.splitEditorToLeftGroup:拆分到当前组左侧的组。
  • workbench.action.splitEditorToRightGroup:拆分到当前组右侧的组。
  • workbench.action.splitEditorToFirstGroup:拆分到第一个组。
  • workbench.action.splitEditorToLastGroup:拆分到最后一个组。

Diff 编辑器使用更短的标签

当您比较两个文件时,文件名前会带有工作区相对文件夹路径,这使得很难看到正在比较的文件名。

在此版本中,文件夹现在从标签中隐藏,除非两个文件名相同,这与普通编辑器标签的行为一致。

如果两个文件名相同,则会显示一个描述,提示文件夹差异:

Diff editor comparing two files

macOS:文件菜单更改

在 macOS 上,如果从文件菜单中选择打开...菜单项,您可以同时打开文件和文件夹。对于新用户来说,这可能会感到惊讶,并且人们尝试使用打开工作区命令来打开文件夹,而该菜单项专门用于打开.code-workspace文件。

为了避免混淆,我们对 macOS 上的文件菜单进行了细微调整:

  • 一个新的条目打开文件夹...用于打开文件夹。
  • 打开工作区...已重命名为从文件打开工作区...

macOS File menu

遥测设置

有一个新的遥测设置telemetry.telemetryLevel,它提供了更高的配置粒度,并允许用户选择是否只发送错误遥测而不发送通用使用数据。可选值为onerroroffonerror的值也将启用崩溃报告器。

现有的设置telemetry.enableTelemetrytelemetry.enableCrashReporter已标记为弃用,以支持新的telemetry.telemetryLevel设置,但它们将继续受尊重。

小地图背景透明度

现在可以使用新添加的minimap.foregroundOpacity颜色,独立于小地图文本的不透明度来配置小地图背景不透明度。

更新的帮助菜单项

随着入门体验的持续改进,帮助菜单项已更新为更常用的名称。这是基于新用户的学习经验,但希望让每个人都能更容易地找到帮助。入门视频现在是视频教程交互式练习场变成了编辑器练习场。您将在帮助菜单和命令面板中找到新的名称。帮助菜单还包含一个显示所有命令条目,作为打开命令面板的额外入口点。

编辑器

括号对指南

编辑器现在支持基本的括号对指南。括号对指南使用与括号对着色功能相同的颜色和算法。括号对匹配算法在最近的“括号对着色速度提高 10,000 倍”博客文章中详细描述。

与缩进指南类似,活动的括号对指南会高亮显示。

Bracket pair guides shown in the editor

通过配置editor.guides.bracketPairs设置(默认为false)可以启用括号对指南。我们将在下个版本中继续迭代此功能并探索垂直指南。

缩进指南设置

editor.renderIndentGuideseditor.highlightActiveIndentGuide设置已弃用,取而代之的是editor.guides.indentationeditor.guides.highlightActiveIndentation

源代码管理

Git 仓库的“发布”或“同步”操作按钮

Git 扩展现在在源代码管理视图中添加了一个新的“操作”按钮,让您可以更轻松地发布或同步任何未推送的更改。

New Source Control view Sync button

主题:Amethyst 主题

默认情况下,如果存在未推送的提交,Git 扩展将添加如上所示的同步更改按钮;如果分支尚未发布,则添加发布更改按钮。此外,用户可以通过配置git.showUnpublishedCommitsButton设置来定制此行为,该设置默认为whenEmpty,因此仅当存在未推送的提交且视图中没有其他更改时,按钮才会显示。

这个新的操作按钮作为源代码管理扩展的一个新的建议 API 提供,有关更多详细信息,请参阅下面的建议的 API 部分

最后,用户可以通过新的scm.showActionButton设置完全禁用源代码管理视图中任何操作按钮的可见性,该设置会覆盖任何源代码管理扩展的行为。

增加了更改文件显示限制

在此版本之前,Git 扩展有一个硬编码的 5000 更改限制,可以在源代码管理视图中显示。此限制是为了防止用户在 VS Code 处理 Git 报告的所有更改时等待过长时间。此限制现在增加到 10,000 更改,并且有一个新的git.statusLimit设置允许用户自定义限制(如果需要,可以按每个仓库设置)。此设置也可以设置为0以完全禁用限制,但请注意,如果存在大量更改,这可能会导致更新需要很长时间。

此外,当超出限制时,我们在输入框上添加了以下警告指示器。

New warning indicator, which reads "Too many changes were detected. Only the first 10,000 changes will be shown below"

终端

固定尺寸

您现在可以通过终端:设置固定尺寸命令(workbench.action.terminal.setDimensions)静态设置终端尺寸。这对于行换行可能令人不适或中断的情况很有用。

该命令将显示一个提示,您可以在其中输入首选的宽度和/或高度。

Terminal Set Fixed Dimensions column width prompt

自定义标题和描述

终端名称通常是它们关联的进程的名称,有时很难区分不同的终端。

您现在可以使用terminal.integrated.tabs.titleterminal.integrated.tabs.description设置中的变量来配置标题和描述。

当前的默认值为:

{
  "terminal.integrated.tabs.title": "${process}",
  "terminal.integrated.tabs.description": "${task}${separator}${local}${separator}${cwdFolder}"
}

可用变量有:

  • ${cwd} - 终端的当前工作目录
  • ${cwdFolder} - 终端的当前工作目录。
  • ${workspaceFolder} - 启动终端的工作区。
  • ${local} - 在远程工作区中指示本地终端。
  • ${process} - 终端进程的名称。
  • ${separator} - 一个条件分隔符(“ - ”),仅当被有值的变量或静态文本包围时才显示。
  • ${sequence} - 进程提供给 xterm.js 的名称。
  • ${task} - 指示此终端与任务关联。

表情符号 IME

macOS 上的输入法编辑器 (IME) 现在支持表情符号。

Dialog showing Emojis available in the Integrated Terminal for IME on macOS

Alt 缓冲区活动上下文键

某些终端 UI 应用程序(如 nano)使用的键盘快捷键会被 VS Code 工作台占用,这限制了它们在 VS Code 中集成时的功能。一个新的when 子句上下文TerminalContextKeys.altBufferActive,可以在 alt 缓冲区处于活动状态时将键盘绑定指向终端而不是工作台,以解决此问题。

语言

新的 JavaScript 和 TypeScript 语言状态项

当前的 TypeScript 版本和 IntelliSense 状态现在显示在语言状态栏项中:

The JavaScript and TypeScript IntelliSense status item showing config file and TypeScript version

以前,TypeScript 版本总是显示在状态栏中。您可以固定版本以恢复旧行为:

语言状态项还会显示当前文件的jsconfig/tsconfig,并指示您当前是否处于部分模式

无标题文件之间的 IntelliSense

所有无标题的 JavaScript 和 TypeScript 文件现在都被视为同一项目的一部分。这意味着在一个无标题文件中定义的全局符号现在将作为建议出现在其他文件中。

这更好地匹配了工作区中磁盘上文件的行为。您可以向无标题文件添加importexport,将其转换为模块,这将使其全局变量对其他文件隐藏。

Web 文件之间的 IntelliSense

当 VS Code 在浏览器中运行时,IntelliSense 现在适用于vscode.devgithub.dev上的 JavaScript 和 TypeScript 文件。

Cross file JavaScript IntelliSense on github.dev

请记住,当 VS Code 在浏览器中运行时,它只能访问您当前打开的文件,因此 VS Code 无法提供项目范围的 IntelliSense 功能,例如自动导入。

更一致地折叠 JSX 标签

当您在 JavaScript 或 TypeScript 中折叠 JSX 标签时,VS Code 现在会继续显示闭合标签:

Folding in JSX

这与 HTML 中折叠的工作方式一致。

预览功能

TypeScript 4.5 支持

此更新包括对即将发布的 TypeScript 4.5 版本的初步支持。有关新语言和工具功能的更多信息,请参阅TypeScript 4.5 Beta 公告文章。一些工具亮点:

  • JSX 属性补全的初步支持。
  • 引用 CodeLens 的引用计数更准确。

要开始使用 TypeScript 4.5 每夜构建,请安装TypeScript Nightly 扩展

请分享您的反馈,并告诉我们您在使用 TypeScript 4.5 时是否遇到任何错误。

在应用程序重启后恢复终端会话

当 VS Code 窗口关闭时,终端进程会被处理掉。在此版本中,有一个新的选择启用设置,用于记录和恢复缓冲区,并使用它重新创建进程。将terminal.integrated.persistentSessionReviveProcess设置为启用此功能。

The terminal buffer gets restored on application restart with a message indicating when the snapshot was taken

将终端尺寸切换到内容宽度

您可以通过⌥Z (Windows, Linux Alt+Z)或使用标签上下文菜单操作切换到内容宽度来在适应完整内容和换行之间切换终端宽度。

这与编辑器中切换换行类似,并共享键盘绑定。

对扩展的贡献

Jupyter

目录

Jupyter Notebook 的目录现在可以通过命令面板中的Jupyter: 显示目录命令访问。此功能也可以通过 Notebook 工具栏中的图标访问。

此功能适用于 VS Code 中的所有 Notebook,因此可以通过文件资源管理器中的大纲视图访问。

通过“新建文件”菜单创建新 Notebook

您现在可以使用菜单项文件 > 新建文件...创建新的 Jupyter Notebook。此菜单也可以从欢迎页面或命令面板中的新建文件...项访问。

调试

VS Code 现在支持 Jupyter Notebook 的完整调试功能。要尝试此功能,请确保您已将ipykernel v6+ 安装为选定的内核,设置断点,然后选择调试单元命令。

远程调试

您还可以使用逐行运行和远程内核调试 Jupyter Notebook。要尝试此功能,请使用Jupyter: 指定用于连接的本地或远程 Jupyter 服务器命令连接到您的远程内核,确保您已将ipykernel v6+ 安装为选定的内核,然后像往常一样使用逐行运行或调试。

单独的渲染器扩展

Jupyter Notebook 渲染器已拆分为一个单独的扩展(Jupyter Notebook 渲染器),允许用户在vscode.devgithub.dev上查看 Notebook 输出,如 plotly、vega、latex 等。

Python

新的 Python 演练

Python 扩展现在提供了一个演练,其中包含一些基本设置步骤,以改善 VS Code 中 Python 的入门体验。

New Python walkthrough

改进的调试体验

在没有launch.json配置文件的工作区中工作时,Python 扩展每次您开始调试 Python 文件或项目时都会显示一个调试器配置菜单。这在调试带有自定义参数的 Web 应用程序(如 Flask、Django 或 FastAPI)时可能特别烦人。

您现在不再需要在每次开始调试时选择配置,因为您第一次的选择将在会话的其余部分中重复使用。

GitHub 拉取请求和议题

GitHub Pull Requests and Issues扩展的开发仍在继续,该扩展允许您处理、创建和管理拉取请求和问题。查看扩展0.31.0 版本的更新日志以了解亮点。

远程开发

远程开发扩展的开发仍在继续,该扩展允许您将容器、远程机器或适用于 Linux 的 Windows 子系统 (WSL) 用作功能齐全的开发环境。

1.61 版的功能亮点包括:

  • 转发端口中的 DNS 名称。
  • 轻松选择容器附加功能。
  • Dev Containers 扩展可以在 WSL 中执行 CLI 命令。

您可以在远程开发发布说明中了解新的扩展功能和错误修复。

扩展创作

特定于平台的扩展

扩展现在可以为 VS Code 支持的每个平台(Windows、Linux、macOS)发布不同的 VSIX。从 VS Code 1.61.0 版本开始,VS Code 会查找与当前平台匹配的扩展包。从 1.99.0 版本开始,vsce扩展发布工具支持发布特定于平台的扩展

如果您的扩展具有特定于平台的库或依赖项,则特定于平台的扩展非常有用,因此您可以控制平台包中包含的确切二进制文件。一个常见的用例是当扩展使用原生 Node.js 模块时。

有关此内容的更多信息,请参阅我们的特定于平台的扩展文档

测试标签和非错误输出

本月,我们发布了基于新测试 API的扩展的其他 API。

  • 测试标签允许您配置是否以及如何运行某些测试,或不运行。

  • 非错误输出允许您将额外的控制台输出与特定的测试用例关联起来。

    输出中的消息会内联显示,类似于失败消息。

    Image showing "hello world" displayed inline beside a console.log statement

启用文件系统提供程序声明文件为只读

文件系统提供程序现在可以通过在FileStat对象上设置permissions属性的值为FilePermission.Readonly来将单个文件标记为只读。只读文件不可编辑。

注意:如果所有文件都应被视为只读,您可以在调用registerFileSystemProvider时使用现有的isReadonly选项。

设置编辑器扩展类别

当存在类别时,设置编辑器现在会为扩展的contributes.configuration端点显示一个子树。

要创建多个类别,contributes.configuration接受一个配置数组,每个配置的title键用于章节标题。还有一个order字段,允许在子树中重新排序类别。

New Setting editor table of contents showing CSS language features having its own subtree

类型层级

添加类型层级提供程序的 API 提案已最终确定。

WebviewOptions.enableForms

WebviewOptions上的新enableForms属性允许您启用或禁用 Webview 内部的表单。为了向后兼容,如果您已设置enableScripts,则enableForms默认为 true。否则,它默认为 false。

除非您的 Webview 内容需要表单,否则我们建议禁用它们。

终端状态

除了相应的window.onDidChangeTerminalState事件之外,Terminal对象上还公开了一个新的state属性,指示终端是否已被用户交互。例如,扩展可能希望等到用户与终端交互后才运行操作。

在测试数据上运行 Web 扩展测试

@vscode/test-web Node.js 模块提供了 CLI 和 API,用于在 Chromium、Firefox 或 Webkit 中测试 Web 扩展。

此里程碑新增的功能是folderPath选项,用于在测试数据上打开 Web 版 VS Code。内存文件系统包含给定位置的资源,以便测试有文件可供使用。

vscode-test-web --browserType=chromium --extensionDevelopmentPath=$extensionLocation $testDataLocation

更新的 codicons

以下新图标已添加到我们的 codicon 库中:

List of codicon icons that were added

  • beaker-stop
  • bracket-dot
  • bracket-error
  • bracket
  • debug-continue-small
  • graph-line
  • graph-scatter
  • pie-chart

Visual Studio Code 的 Webview UI 工具包

Visual Studio Code 的 Webview UI 工具包是一个组件库,用于在 Visual Studio Code 中构建基于 Webview 的扩展

Webview Toolkit component artwork

该库的功能包括:

  • 实现 Visual Studio Code 设计语言:创建与编辑器其余部分具有一致外观和感觉的扩展。
  • 自动支持颜色主题:所有组件都考虑了主题化,并将自动显示当前编辑器主题。
  • 使用任何技术栈:该库作为一组 Web 组件发布,这意味着无论扩展是使用何种技术栈(React、Vue、Svelte 等)构建的,开发人员都可以使用该工具包。
  • 开箱即用的可访问性:所有组件都附带符合 Web 标准的 ARIA 标签和键盘导航。

虚拟工作区扩展指南

有一个新的虚拟工作区扩展指南,可帮助扩展作者在 VS Code 在虚拟环境中运行时测试和更新其扩展。随着GitHub Repositories等创建自己虚拟文件系统的扩展的引入,以及vscode.devgithub.dev等新工作流的出现(其中 VS Code 在您的浏览器中运行),扩展不能再假设它们可以直接访问磁盘文件系统或平台功能。

虚拟工作区扩展指南涵盖:

  • 您的扩展是否无需修改即可在虚拟工作区中运行。
  • 如何更新您的扩展以在没有磁盘文件系统的虚拟工作区中运行。
  • 如何在虚拟工作区中运行时向 VS Code 发送信号以启用或禁用您的扩展。

建议的扩展 API

每个里程碑都会带来新的提议 API,扩展作者可以尝试使用它们。一如既往,我们希望得到您的反馈。要尝试提议的 API,您需要执行以下操作:

  • 您必须使用 Insiders 版本,因为提议的 API 经常更改。
  • 您的扩展的 package.json 文件中必须包含以下行:"enableProposedApi": true
  • 将最新版本的 vscode.proposed.d.ts 文件复制到您项目的源位置。

您不能发布使用提议 API 的扩展。下个版本中可能会有破坏性更改,我们绝不希望破坏现有扩展。

TaskPresentationOptions close 属性

close属性是tasks.json架构中的presentation属性,在TaskPresentationOptions API 中可用。它的功能与匹配的tasks.json属性相同,通过控制任务完成时是否关闭终端。

标签页 API

有一个用于读取和操作标签页的建议 API。这解决了常见的特性请求,例如在没有支持的textDocument时访问打开的资源列表。您可以在问题 #133532中提供有关此 API 的反馈。

MarkdownString.supportHtml

MarkdownString上新建议的supportHtml属性支持渲染出现在 Markdown 文本中原始 HTML 的安全子集。

supportHtml属性默认为false。禁用时,VS Code 将剥离 Markdown 文本中出现的任何原始 HTML 标签。

控制器渲染器脚本现在使用 JavaScript 模块

NotebookController.rendererScripts允许 Notebook 控制器在任何渲染器运行之前将一组 JavaScript 文件预加载到 Notebook 中。这些脚本可以初始化 Notebook 或定义渲染器依赖的全局符号。

渲染器脚本以前是普通的 JavaScript 文件。这些脚本可以使用 VS Code 导出的全局符号来调用 VS Code 特定的 API。

此全局符号不可发现,并且也没有给 VS Code 太多控制渲染器脚本本身的权限。为了解决这个问题,渲染器脚本现在使用导出activate函数的 JavaScript 模块。此函数传递了 VS Code API:

interface KernelPreloadContext {
    readonly onDidReceiveKernelMessage: Event<unknown>;
    postKernelMessage(data: unknown): void;
}

export function activate(ctx: KernelPreloadContext): Promise<void> | undefined {
    ...
}

此更改还使来自NotebookController的渲染器脚本与贡献的Notebook 渲染器提供的渲染脚本更好地对齐。

快速选择器 keepScrollPosition 属性

您从window.createQuickPick()返回的QuickPick对象上的keepScrollPosition属性已作为建议 API 添加。这允许您控制快速选择器中的滚动位置(cursorTop)是否回到列表顶部。

以下是此 API 的几个用例:

  • 使用建议的QuickPickItemButtons API 实现“从列表中删除此项”选项(例如,Ctrl/Cmd + P x QuickPickItemButton)。
  • 使用建议的QuickPickItemButtons API 实现“以某种方式切换此项”选项(例如,插入代码片段命令)。
  • 在快速选择器中异步加载项(例如setInterval通过重新分配.items属性向列表添加项,此时滚动不应跳到顶部)。

如果没有控制滚动位置的能力,所有这些操作都会强制快速选择器的滚动位置跳到列表顶部。keepScrollPosition允许扩展作者控制此行为。

SourceControl.actionButton

源代码管理 API 现在在SourceControl对象上包含一个actionButton属性,允许 SCM 提供程序有条件地在输入框下方显示一个“操作”按钮。例如,Git 扩展使用此新属性在存在未推送更改时显示发布或同步按钮。

语言服务器协议

新的下一版语言服务器协议,连同相应的 npm 模块,已经发布。新版本包含类型层级的建议实现。

工程

切换到 DOMPurify 以清理渲染的 HTML

我们已切换到内部使用DOMPurify来清理在主工作台中渲染的 HTML。这主要用于清理渲染的 Markdown。

DOMPurify 维护良好,并且开箱即用地符合受信任类型。此切换有助于保护用户,并使我们对启用MarkdownString.supportHtml等功能更有信心。

Big Sur CLI 使用 open 命令

在 macOS Big Sur 上,当从命令行启动时,我们现在使用 open 命令来启动 VS Code。此更改允许 VS Code 像从 macOS Dock 启动一样打开,从而修复了一些涉及权限的问题。

文件监视更改

用于检测磁盘上文件和文件夹更改的文件监视器已更改为可以处理我们所有受支持平台(Windows、Linux、macOS)的,并减少了维护不同平台不同监视器的开销。我们计划在所有平台默认启用此库。本次迭代中,我们已在 Windows 和 macOS 上启用它,并计划很快在 Linux 上启用。

新的监视器应该在启动时更快,并在大型文件夹上减少 CPU 周期消耗。使用该库的一个缺点是,文件监视器不再自动检测工作区中 macOS 上的符号链接文件夹。如果您有此类设置,可以使用新的files.watcherInclude设置明确添加要包含在文件监视中的符号链接路径。好的一面是,您可以在 Windows 上使用此新设置明确包含工作区内的符号链接文件夹——这是以前在 Windows 上不可能实现的。

您应该不会注意到日常工作中的任何差异,但如果文件监视对您不起作用,请报告问题。如果遇到问题,可以使用设置files.legacyWatcher来启用旧的监视器。

文档

高级容器配置

有一个新部分涵盖了Dev Containers扩展的高级容器配置

在容器文档中,您可以了解如何:

高级容器配置文档提供了设置开发容器的提示和代码示例,以及简短的YouTube 视频

值得注意的修复

  • 69665: 在 OS 从睡眠状态恢复时,终端有时显示损坏的纹理
  • 130407: [微不足道] settings>files: exclude changing pattern as (blank) won't deletable (设置>文件:排除将更改模式设为 (空白) 不可删除)
  • 133149: 任务终端因信息/警告级别问题而被标记为失败。
  • 133567: 可访问性:查找引用中顶级树节点的标签都只显示“true”
  • 133910: 在解析 shell 环境失败或超时时显示错误
  • 133976: 允许通过协议 URL 打开 .code-workspace

感谢

最后但同样重要的是,衷心感谢以下本月为 VS Code 做出贡献的人们:

对我们问题跟踪的贡献

vscode 的贡献

vscode-eslint 的贡献

vscode-html-languageservice 的贡献

vscode-json-languageservice 的贡献

vscode-languageserver-node 的贡献

vscode-pull-request-github 的贡献

vscode-references-view的贡献

vscode-vsce 的贡献

language-server-protocol 的贡献

monaco-editor-webpack-plugin的贡献