2018年3月(版本1.22)

更新 1.22.2: 此次更新解决了这些问题

下载:Windows | Mac | Linux 64位:.tar.gz .deb .rpm | Linux 32位:.tar.gz .deb .rpm


欢迎来到2018年3月发布的Visual Studio Code。此版本中有许多重要的更新,我们希望您会喜欢,一些关键的亮点包括:

如果您想在线阅读这些发布说明,请访问更新code.visualstudio.com上。
您还可以查看这个1.22版本的亮点视频,由云开发者倡导者Brian Clark提供。

发布说明按与VS Code重点领域相关的以下部分排列。以下是一些进一步的更新:

  • Editor - Emmet性能和智能匹配改进,新增片段日期变量。
  • Workbench - 在Windows上更平滑的滚动,搜索和替换期间的自动保存。
  • 调试 - 改进的Node.js进程选择器,launch.json中的postDebugTask。
  • Tasks - 更好的命令和参数引用及转义支持。
  • Languages - 在JSDoc中更简单的智能感知,CSS路径补全。
  • 扩展开发 - 支持取消的长时间运行操作,向诊断信息中添加相关信息。

内部人员:想要尽快看到新功能吗?您可以下载每晚的内部版本,并在更新可用时立即尝试最新更新。

编辑器

语法感知折叠

在HTML、JSON、Markdown、CSS、LESS和SCSS中的折叠范围现在默认基于语言的语法计算,不再依赖于格式良好的缩进。

语法折叠

还支持TypeScript和JavaScript,可以通过设置"typescript.experimental.syntaxFolding": true来启用。

如果您希望为上述一种(或所有)语言切换回基于缩进的折叠,请使用:

  "[html]": {
    "editor.foldingStrategy": "indentation"
  },

提示: 查看此功能如何用于折叠Markdown文件中的标题区域

为扩展提出了一个新的API,以便其他语言也可以提供其语法感知的折叠提供者。

跨文件的错误和引用导航

在此版本中,通过F8转到下一个问题)导航错误和警告时,会考虑所有报告的错误。它不会仅在一个文件内循环,而是会将您带到下一个有错误的文件并返回。

访问所有诊断

同样地,有一个新的命令可以导航到参考搜索结果。在符号上触发查找所有引用,现在使用F4⇧F4 (Windows, Linux Shift+F4)来访问每个引用。这对于在所有引用符号的地方进行编辑非常有用,因为你的手指不需要离开键盘。

访问所有引用

编辑器中的提示

扩展API现在支持创建'提示'诊断。它们不是错误或警告,而是关于如何使某些内容变得更好的建议,例如,通过运行某种重构。

我们在相关单词的开头下方用省略号 ... 渲染提示诊断。

提示诊断

扩展作者最好始终在代码操作中包含提示,因为提示诊断可以帮助宣传代码操作。然而,有些用户可能不想在编辑器中显示提示,因此也要支持禁用它们。

提示: 在这个版本中,我们为JavaScript/TypeScript添加了几个重构的提示。

扩展API现在支持向诊断添加相关信息,并且这会在所有显示诊断的地方显示:悬停时、错误Peek窗口以及问题面板

在下面的示例中,您可以看到相关信息,指出首次使用两次赋值变量的位置:

相关诊断信息

更简便的方式打开大文件

以前,在编辑器中打开大文件(约2GB以上)会提示你从命令行重新启动,并使用标志--max-memory=NEWSIZE。为了减少这种不便,当你尝试打开一个需要比应用程序当前允许使用的内存更多的文件时,将会出现一个新的通知,让你可以快速重新启动,并为应用程序提供更多可用内存。重新启动后可用的最大内存可以通过一个新的设置files.maxMemoryForLargeFilesMB进行配置,默认值为4096(4GB)。

大文件通知

语法高亮优化

随着这个版本的发布,我们将在文件打开后立即根据视口中内容的范围进行语法高亮显示。这导致颜色化速度大大加快,如下所示,当用户使用转到定义命令打开新文件时。

: VS Code 1.21 : VS Code 1.22

语法高亮优化

大型文件的查找和替换改进

我们在上一个版本中推出了一个新的文本缓冲区实现(更多信息请阅读我们的博客文章),并且我们继续优化了大文件的查找和替换功能。

可配置的保存时格式化超时

VS Code 可以在保存文件到磁盘之前运行格式化程序,因此速度很重要,因为一个慢的扩展可能会减慢保存速度。出于这个原因,VS Code 对保存非常严格,并在 750 毫秒后取消保存时的格式化请求。对于一些扩展,特别是处理大文件时,这个时间不够,因此我们添加了一个新的设置 "editor.formatOnSaveTimeout" 来配置超时时间。如果语言扩展知道它需要更多时间进行格式化,它可以修改超时时间作为默认的 语言特定设置

为了监控保存进度,状态栏上现在有一个进度指示器。

保存参与者

更多代码片段变量

现在有新的片段变量用于引用当前日期和时间。除了数字,例如28/3/2018,你现在可以使用像“3月28日”这样的名称。新的变量是:

  • ${CURRENT_DAY_NAME} - 星期几的名称('星期一')。
  • ${CURRENT_DAY_NAME_SHORT} - 星期几的简称('Mon')。
  • ${CURRENT_MONTH_NAME} - 月份的全称('七月')。
  • ${CURRENT_MONTH_NAME_SHORT} - 月份的缩写名称('Jul')。

Emmet

使用缩写预览

当使用Emmet: 使用缩写包裹Emmet: 使用缩写逐行包裹命令时,您现在可以看到包裹文本的预览效果。

使用缩写预览包裹文本

更快的缩写扩展

现在在大型CSS/SCSS/Less文件中扩展Emmet缩写要快得多。这是通过在尝试确定当前位置是否适合扩展Emmet缩写时,仅解析光标周围的小区域而不是整个文件来实现的。

更智能的代码片段匹配

样式表中的Emmet缩写与预定义的片段进行模糊匹配,以提供最接近的匹配结果。您可以通过更改emmet.preferences中的css.fuzzySearchMinScore设置来控制模糊匹配的准确性。css.fuzzySearchMinScore设置了一个片段被视为匹配所需的最低分数。增加分数将导致更少但更准确的匹配。默认值为0.3,您可以提供0到1之间的任何值。

"emmet.preferences": {
    "css.fuzzySearchMinScore": 0.3
}

工作台

Windows上的自动后台更新

我们已经在Windows上为我们的Insider用户推出了自动后台更新,已经有一段时间了。我们决定在三月份的发布中为所有人启用此功能。

最长的更新进程现在可以在后台运行,同时您可以继续工作。当它准备好时,它会通知您以应用最终的更新,这是一个更短的步骤。这意味着在更新到最新的VS Code时,您可以更长时间地继续工作!

您可以使用update.enableWindowsBackgroundUpdates配置设置来禁用此功能,以防您希望恢复旧的行为,或者新更新程序在您的机器上出现问题。

Windows: 滚动延迟的解决方法

我们收到报告称,在某些设备的Windows上滚动非常卡顿,无法流畅移动(详情请参见问题13612)。为了解决平滑滚动的问题,可以设置一个新的选项window.smoothScrollingWorkaroundtrue。由于这是一个临时解决方案,并且在你从任务栏恢复窗口时可能会导致闪烁,因此默认情况下未启用此设置。如果你启用此设置,应该不会看到其他副作用。

在没有参数的情况下启动VS Code时打开空窗口

引入了一个新的设置 window.openWithoutArgumentsInNewWindow 来控制在没有参数的情况下启动 VS Code 时是否应该聚焦到最后一个活动实例或打开一个新的空窗口。在 Windows 和 Linux 上,默认启用此设置以更好地匹配平台行为。启用后,从桌面双击 VS Code 图标或从命令行运行 VS Code 而不带参数将打开一个新的空窗口。在 Windows 上,当在任务栏图标上中键单击或按住 Shift 键单击时也是如此。通过显式将 window.openWithoutArgumentsInNewWindow 设置为 off 来禁用此行为。

搜索和替换时自动保存

在替换所有搜索结果时,您不再需要保存所有关闭所有。替换操作现在将替换并保存更改。

搜索包含/排除模式

搜索视图中的包含和排除模式的框已合并为一个框。功能完全相同,只是排除模式必须以!为前缀。例如,!*.js将跳过搜索具有.js扩展名的文件。

组合搜索模式输入

树:水平滚动支持

有一个新的全局设置,workbench.tree.horizontalScrolling,它启用了工作台中多个树小部件的水平滚动。使用它可以为宽树元素(如文件资源管理器中的深层文件系统层次结构)提供更好的可读性。

集成终端

跨越多行的路径和URL现在将作为链接工作。

多行终端链接

实现中仍然存在一些问题,特别是在调整窗口大小时。当我们实现reflow时,这些问题将会得到修复。

命令跟踪

终端现在具有“命令跟踪”功能,该功能尝试猜测何时运行命令,并允许在它们之间轻松导航和选择。

终端命令跟踪

此功能在macOS上具有以下默认键绑定:

  • 滚动到上一个命令:Cmd+Up*
  • 滚动到下一个命令:Cmd+Down*
  • 选择上一条命令:Cmd+Shift+Up
  • 选择下一个命令:Cmd+Shift+Down

* 注意: 向上/向下滚动一行已移至 Cmd+Alt+PgUp/Cmd+Alt+PgDown

在Windows和Linux上,您可以通过将这些命令添加到keybindings.json文件中来配置自定义键绑定

{ "key": "ctrl+down",       "command": "workbench.action.terminal.scrollToNextCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+up",         "command": "workbench.action.terminal.scrollToPreviousCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+shift+down", "command": "workbench.action.terminal.selectToNextCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+shift+up",   "command": "workbench.action.terminal.selectToPreviousCommand",
                               "when": "terminalFocus" },

更自然的滚动

终端应用程序内的滚动现在将感觉更加自然,因为现在会考虑操作系统滚动设置,这些设置定义了是按像素、行还是页滚动。

在使用VS Code作为Git编辑器后重新聚焦终端

当使用VS Code作为Git编辑器并且从集成终端触发Git时,完成消息后,焦点现在将返回到终端。

调试

日志点

此里程碑包括我们首次对Logpoints的工作。Logpoint是断点的一种变体,它不会“中断”进入调试器,而是将消息记录到控制台。Logpoints在调试无法停止的生产服务器时特别有用,可以注入日志记录。

日志点由一个“菱形”图标表示。日志消息是纯文本,但可以包含在大括号('{}')内评估的表达式。

日志点

就像常规断点一样,日志点可以被启用或禁用,并且也可以通过条件和/或命中次数来控制。

Logpoints 目前由 VS Code 内置的 Node.js 调试器支持,但我们预计其他调试扩展将很快跟进。

launch.json 中的 postDebugTask

我们已经在launch.json中添加了postDebugTask支持。此任务在调试会话结束后运行。与preLaunchTask类似,您可以通过名称引用tasks.json中的任务。以下是一个使用postDebugTask的启动配置示例:

{
  "name": "Attach to node server",
  "type": "node",
  "request": "attach",
  "port": 8008,
  "preLaunchTask": "Start Server",
  "postDebugTask": "Stop Server"
}

节点调试

自动附加到Node.js进程

VS Code的Node.js调试器新增了一个自动附加功能的初始版本。如果启用此功能,Node调试器会自动附加到从VS Code的集成终端以调试模式启动的Node.js进程。

自动附加

要启用该功能,可以使用切换自动附加操作,或者如果Node调试器已经激活,可以使用自动附加状态栏项。

一个进程是否处于“调试模式”是通过分析程序参数来确定的。目前,我们检测的模式包括 --inspect, --inspect-brk, --inspect-port, --debug, --debug-brk, --debug-port(所有这些都可以选择性地后跟一个'='和一个端口号)。

请注意,此功能(尚)不适用于像'tmux'这样的终端复用器(在这些情况下,启动的进程不是VS Code集成终端的子进程)。

改进的进程选择器

在之前的版本中,Node.js进程的进程选择器仅作为“交互式变量”提供,可以在启动配置中使用。

在此版本中,我们已将选择器作为附加到节点进程操作提供,无需启动配置即可使用。

为了使选择器和新的操作更加有用,我们现在支持通过调试端口附加到Node.js进程(除了通过进程ID附加之外)。

除了Node.js进程,选择器现在还会显示所有使用各种形式的--debug--inspect参数启动的程序。这使得可以附加到Electron或VS Code的辅助进程。

Node.js 进程选择器

选择器中列出的各个进程项除了显示进程ID外,还显示调试端口和检测到的协议。

任务

改进的参数引用

任务已更新,以便用户在像bash或PowerShell这样的shell中执行时,更好地控制参数和命令本身的引用方式。类型为shell的任务现在支持分别提供命令及其参数。下面是一个列出名为folder with spaces(注意名称中的空格)的文件夹目录的任务示例。

{
  "label": "dir",
  "type": "shell",
  "command": "dir",
  "args": ["folder with spaces"]
}

由于shell任务单独指定了参数,VS Code知道应该将其作为一个参数传递给'dir'命令,并根据使用的shell对参数进行引号处理。对于cmd.exe,VS Code使用",对于PowerShell使用',对于Linux和macOS下的shell也使用'。如果你想控制参数的引号方式,参数可以是一个指定值和引号风格的文字。例如:

{
  "label": "dir",
  "type": "shell",
  "command": "dir",
  "args": [
    {
      "value": "folder with spaces",
      "quoting": "escape"
    }
  ]
}

这将使用 shell 的转义字符来转义参数中的空格,PowerShell 下是反引号,bash 下是 \。如果使用的 shell 不支持字符转义,则使用强引号。

除了转义,还支持以下值:

  • strong: 使用 shell 的强引用机制,该机制会抑制字符串内的所有评估。在 PowerShell 以及 Linux 和 macOS 下的 shell 中,使用单引号 (')。对于 cmd.exe,使用 "
  • weak: 使用 shell 的弱引用机制,该机制仍然会评估字符串内的表达式(例如,环境变量)。在 PowerShell 以及 Linux 和 macOS 下的 shell 中,使用双引号(")。cmd.exe 不支持弱引用,因此 VS Code 也使用 "

如果命令本身包含空格,VS Code 默认会使用强引号将命令括起来。与参数一样,用户可以使用相同的字面量风格来控制命令的引号使用。

请注意,仍然支持在command属性中包含整个命令行的旧样式。

同样的支持已添加到任务API中,因此任务提供者也可以完全控制引用和转义。

语言

按标题级别折叠Markdown

您现在可以按标题折叠Markdown文档:

Markdown折叠

折叠标题会收起该标题下的所有内容和子标题。

TypeScript 2.8

VS Code 现在搭载了 TypeScript 2.8。此更新带来了一些酷炫的新语言特性的支持,以及许多重要的错误修复和工具改进。

JSDoc 中改进的快速建议

你知道吗,VS Code 提供了对 JSDoc 类型的 IntelliSense 支持?这个功能在几个版本之前就已经添加了,但你可能没有意识到,因为 IntelliSense 只有在手动调用时才会显示。在 VS Code 1.22 中,JSDoc 类型的快速建议现在默认启用。只需开始输入,IntelliSense 就会自动启动:

JSDoc 建议

JavaScript 和 TypeScript 的建议代码操作

我们还改进了JavaScript和TypeScript建议代码操作的可发现性。这些是建议的更改,可以帮助您快速改进或清理源代码。它们使用灯泡小部件显示,但与快速修复不同,它们不解决源代码中的特定错误或警告。示例建议代码操作包括:将ES5类转换为ES6类,以及将CommonJS模块转换为ES6模块。

建议代码操作现在在编辑器中由...表示:

编辑器中的三个点表示建议的代码操作

将光标移动到 ... 上,然后点击灯泡或按下 ⌘. (Windows, Linux Ctrl+.) 以显示可用的代码操作:

悬停在建议指示器上

点击灯泡

应用代码操作后

我们计划继续添加更多的建议。如果您有任何想要看到的建议,请告诉我们。

建议代码操作在JavaScript和TypeScript中默认启用。您可以通过设置"typescript.suggestionActions.enabled": false"javascript.suggestionActions.enabled": false来禁用它们。

CSS路径补全

除了HTML之外,路径补全现在也适用于CSS:

CSS路径补全

扩展开发

将长时间运行的操作显示为支持取消的通知

我们添加了一个新的API,用于在通知中心显示长时间运行的操作,并支持可选取消。在这里显示长时间运行的操作的好处是:

  • 多个操作可以同时报告进度。
  • 您可以显示操作进度。
  • 用户可以选择取消操作。

长时间运行的任务

使用新的进度位置 ProgressLocation.Notification 调用 window.withProgress。将 cancellable 设置为 true 以显示取消按钮,并在回调中检查提供的 CancellationToken 是否被取消。要显示进度,请在报告进度时利用 increment 值。查看 进度示例 以了解使用此新 API 的扩展。

我们添加了一个API来提供诊断的相关信息 - DiagnosticRelatedInformation。想象一下,由于变量名在作用域内被重复使用而导致编译器错误的情况。实际的错误可能是“不允许重复定义符号'Foo'”,并且它会指向非法的声明。通过在诊断中包含相关信息,您还可以指向符号'Foo'的首次声明,使错误更容易理解和修复。

释放 CancellationTokenSource 不再将令牌设置为取消状态

CancellationTokenSource上调用dispose()之前会设置令牌为取消状态并触发取消事件。我们改变了行为,以便能够在不取消令牌的情况下处理它们。如果你依赖于令牌的取消,请调用cancel()方法。

简单编辑器不会传递给扩展

使用编辑器的输入(如调试REPL输入)不再作为编辑器传递给扩展。这意味着当用户聚焦于调试REPL时,onDidChangeActiveTextEditor不会触发,onDidChangeTextDocument也不会触发。这一变化的原因是REPL输入将编辑器作为实现细节使用,扩展不应被通知,因为它不是一个“真正的编辑器”。

自定义视图

树视图

您现在可以使用新的TreeView API对您的自定义视图执行操作。这可以通过提供viewIdTreeDataProvider来使用新的API createTreeView进行访问。

const customView = vscode.window.createTreeView<string>('customView', {
  treeDataProvider: new CustomViewDataProvider<string>()
});

注意:现有的registerTreeDataProvider API仍然支持向视图提供数据。您可以使用registerTreeDataProvidercreateTreeView来提供TreeDataProvider,但不能同时使用两者。

揭示

目前,TreeView 提供了一个 reveal 方法来显示并选择视图中的项目。

customView.reveal('element');

默认情况下,要显示的项目是被选中的。为了不选择该项目,将select选项设置为false。例如:

customView.reveal('element', { select: false });

你可以找到更多TreeView示例这里

注意: 要启用 reveal API,贡献的 TreeDataProvider 必须实现 getParent 方法。

新主题颜色

新的'提示'诊断有两种颜色:

  • editorHint.foreground: 编辑器中提示的前景色。
  • editorHint.border: 编辑器中提示的边框颜色。

编辑器可见范围

编辑器可见范围API现已升级为稳定版。

export interface TextEditor {
  /**
   * The current visible ranges in the editor (vertically).
   * This accounts only for vertical scrolling, and not for horizontal scrolling.
   */
  readonly visibleRanges: Range[];
}

export namespace window {
  /**
   * An [event](#_Event) which fires when the selection in an editor has changed.
   */
  export const onDidChangeTextEditorVisibleRanges: Event<TextEditorVisibleRangesChangeEvent>;
}

调试适配器协议

日志点支持

新引入的Logpoints在调试适配器协议中作为SourceBreakpoint上的一个新属性logMessage和一个新能力supportsLogPoints展示。支持Logpoints的调试适配器会为supportsLogPoints能力返回true,并且不会因为非空的logMessage属性而“中断”(停止),而是记录该消息。大括号内的表达式('{...}')会被评估,并且结果会替换日志消息中的'{...}'。

新的clientName属性用于initialize请求

前端可以在initialize请求中使用一个新的可选属性clientName,将前端的人类可读名称传递给调试适配器。

新的 terminateThreads 请求

前端可以使用一个新的terminateThreads请求来终止一个或多个线程。相应的supportsTerminateThreadsRequest能力表示调试适配器支持该请求。

新的setExpression请求

新的setExpression请求可用于为可赋值表达式(也称为“左值”)赋值。相应的supportsSetExpression能力表示调试适配器支持该请求。

新的 preserveFocusHintstopped 事件上

一个近似为真的 preserveFocusHintstopped 事件中建议前端,stopped 事件不应改变焦点。

多选快速选择

我们为QuickPick API添加了一个选项,使其能够返回一个带有新UI的选中项目列表,该UI允许用户选择任意数量的项目:

多选快速选择

请参阅QuickPickOptions.canPickMany选项和QuickPickItem.picked标志,了解如何与现有的window.showQuickPick API函数一起使用这些选项。

提议的扩展API

在这个里程碑中,我们添加了几个新的提议扩展API。我们计划在未来的里程碑中将这些API添加到稳定版本中,一旦我们对它们有足够的信心。我们欢迎任何关于它们如何为您的扩展工作的反馈。

注意: 这些API仍然是提议的,因此要使用它们,您必须通过在package.json中添加"enableProposedApi": true来选择加入,并且您需要将vscode.proposed.d.ts复制到您的扩展项目中。还要注意,您不能发布使用enableProposedApi属性的扩展到市场。

折叠提供者 API

为了使扩展能够提供语言感知的折叠范围,提出了一个新的提供者API:

export namespace languages {
  /**
   * Register a folding provider.
   *
   * Multiple folding can be registered for a language. In that case providers are sorted
   * by their [score](#_languages.match) and the best-matching provider is used. Failure
   * of the selected provider will cause a failure of the whole operation.
   *
   * @param selector A selector that defines the documents this provider is applicable to.
   * @param provider A folding provider.
   * @return A [disposable](#_Disposable) that unregisters this provider when being disposed.
   */
  export function registerFoldingProvider(
    selector: DocumentSelector,
    provider: FoldingProvider
  ): Disposable;
}

查看完整的API 这里.

等效的API作为语言服务器协议的扩展协议被提出这里。欢迎反馈!

任务 API

现在有一个新的任务API,它支持:

  • 查询系统中所有现有的任务。
  • 以编程方式执行任务。
  • 终止正在运行的任务。
  • 监听任务开始和结束事件。

提议的API可以在这里找到 here

新的API还支持执行任务,而无需通过任务提供者预先返回它们。下面的示例执行了一个简单的echo任务。

let task = new vscode.Task(
  {
    type: 'myCustomTask'
  },
  'echo',
  'myExtension',
  new vscode.ShellExecution('echo', ['Hello World'])
);
vscode.workspace.executeTask(task);

可维护性

您现在可以直接在VS Code中提交扩展的问题。问题报告器现在包含一个下拉菜单,用于选择您是在报告VS Code本身的问题还是扩展的问题。如果扩展在GitHub上有仓库,类似问题的搜索和在GitHub上预览提交按钮将使用该仓库。

扩展报告

预览功能

预览功能尚未准备好发布,但功能足够使用。我们欢迎您在开发过程中提供早期反馈。

为JavaScript和TypeScript组织导入

新的组织导入命令()会移除未使用的导入并排序剩余的导入:

组织导入

该命令适用于ES6模块中的JavaScript和TypeScript。

Electron 2.0 探索

在这个里程碑期间,我们探索了将Electron 2.0.0集成到VS Code中。这是一个重大的Electron版本,包含了Chrome 61和Node.js 8.x(与我们当前包含Chrome 58和Node.js 7.x的版本相比,这是一个巨大的飞跃)。我们计划在四月初向我们的Insiders用户推送更新,以收集更多的反馈。如果你有兴趣帮忙,请确保安装VS Code Insiders

显著变化

  • 13905: Windows: 任务栏图标上的鼠标中键点击不会打开新窗口
  • 35675: 在Linux上字体渲染看起来很丑
  • 36307: 实验性文件监视器 - 在“循环”符号链接上CPU使用率高
  • 42401: 更智能的输出通道分组
  • 42402: 添加选项以从通道内显示日志
  • 43813: 更新后扩展不完整
  • 44411: 无法解析变量时退出启动
  • 44554: 允许拖放多个根文件夹
  • 45872: 安装本地化包后提示用户更改UI语言
  • 45972: 资源管理器:减少 isEqualOrParent 的调用次数

感谢您

最后但同样重要的是,向以下帮助使VS Code变得更好的人们表示衷心的感谢!

vscode 的贡献:

vscode-extension-vscode 的贡献:

  • Danny Tuppeny (@DanTup):
    • 检查是否存在代码可执行文件,而不仅仅是文件夹 (#_95) PR #95
    • 将 VS Code 放置在 .vs-test 的 insiders/stable 子文件夹中 (#_97) PR #97
    • 在 Windows 上不要每次都下载 Code (#_102) PR #102
    • 添加对 Mocha 的 forbidOnly 的支持 (#_103) PR #103

vscode-nls的贡献:

language-server-protocol的贡献:

vscode-css-languageservice 的贡献:

vscode-html-languageservice的贡献:

node-jsonc-parser的贡献:

vscode-generator-code 的贡献:

vscode-languageserver-node的贡献:

vscode-loader的贡献:

vscode-azurecli 的贡献:

vscode-azure-account 的贡献:

vscode-chrome-debug的贡献:

vscode-chrome-debug-core的贡献:

  • Chance An (@changsi-an)
    • 引入了一个遥测收集器。PR #314
    • 引入了一种批量发送遥测事件的机制。PR #292
    • 改变了错误信息显示到用户界面的方式。PR #303
    • 为部分事件通知批量发送遥测。PR #300
  • @digeff
    • 添加缺失的 await PR #306
    • 在发送遥测数据之前不要等待全局遥测属性准备就绪 PR #310
    • 在遥测数据中添加版本信息 PR #307
    • 现在启动时间事件可以包含失败原因 PR #316
    • 现在我们为一些错误发送更多的遥测信息 PR #319
    • 报告直到我们启动并显示用户页面之前发生的不同任务的时间 PR #301
    • 以句子形式发送启动时间事件的所有遥测属性 PR #313
    • 修复一些无法解释的断点行为 PR #296
    • 在使用加载时断点时,在 onScriptParsed 而不是 onScriptPaused 时解析挂起的断点 PR #290
  • Raghav Katyal (@rakatyal): 清除上下文以避免发送多个移除事件… PR #318

vscode-node-debug2的贡献:

vscode-recipes的贡献:

localization的贡献:

这个月标志着我们自2017年4月10日在Transifex上开放VS Code社区本地化以来的一周年纪念。

  • Transifex VS Code 项目团队拥有超过800名成员,每月约有100名活跃贡献者。
  • 通过社区贡献,我们已成功向国际用户发布了9种核心语言的月度更新。
  • 此外,还有4种语言由社区成员完全本地化,并作为语言包VS Code扩展发布。更多语言即将推出。
  • 感谢VS Code社区本地化贡献者!!!

这是本次发布的贡献者快照。有关项目的详细信息,包括贡献者名单,请访问项目网站 https://aka.ms/vscodeloc

  • 法语: Antoine Griffard, Adrien Clerbois, Smrman.
  • 意大利语: Alessandro Alpi, Piero Azi, Aldo Donetti, Simone Chiaretta, Emilie Rollandin, Francesco Mugnai.
  • 德语: Dejan Dinic, Jakob von der Haar, Carsten Kneip, Jakob, Ettore Atalan.
  • 西班牙语: Alberto Poblacion, José M. Aguilar, David Silva, Alejandro M, Andy Gonzalez, AlanThinks, David Triana, Santiago Porras Rodríguez, Carlos Mendible, Jorge Serrano Pérez.
  • Japanese: Shunya Tajima, Yuichi Nukiyama, Hiroyuki Mori, Takashi Takebayashi, Seiji Momoto, yoshioms, Yuki Ueda, 小島 富治雄, Satoshi Kajiura.
  • 中文(简体): Joel Yang.
  • Chinese (Traditional): Duran Hsieh, Winnie Lin, Poy Chang, balduran, Will 保哥.
  • 韩语: ChangJoon Lee, Ian Y. Choi.
  • 俄语: Ivan, Andrei Makarov.
  • 保加利亚语: Любомир Василев.
  • 匈牙利语: Tar Dániel.
  • 葡萄牙语(巴西): Roberto Fonseca, Matheus Palu, Rodrigo Crespi, Danilo Dantas, Douglas Ivatiuk Martim, Alessandro Fragnani, Kayky de Brito dos Santos.
  • 葡萄牙语(葡萄牙): Diogo Barros, Ruben Mateus, António Lourenço, João Mata, Gustavo Silva.
  • 土耳其语: Adem Coşkuner, Ömer Büyükçelik, Mustafa Turhan, Tuğrul Kaşıkcı.
  • 波斯尼亚语: Bahrudin Hrnjica, Muharem Basanovic, Ismar Bašanović, Almir Vuk.
  • 捷克: Michal Vondracek, Vít Staniček, Filip Vlček, Vojtěch Habarta, Ferdinand Prantl.
  • 荷兰语: Maurits Kammer, Gerald Versluis, Marco van den Hout.
  • 芬兰语: Feetu Nyrhinen, Petri Niinimäki.
  • 希腊语: Dimitris Trachiotis.
  • 印度尼西亚语: Joseph Aditya P G, Najih Azkalhaq, Adrian M. R., Wildan Mubarok, G-RiNe Project, Lundy Orlando, Azhe-kun, Febrian Setianto, Riwut Libinuko, Laurensius Dede Suhardiman, Mulia Arifandi Nasution, Herman Prawiro.
  • 拉脱维亚语: Pēteris Kļaviņš, Simone Chiaretta, kozete, Lafriks.
  • 立陶宛语: Martynas Jusys.
  • 波兰语: Patryk Brejdak, Joanna Skurzyńska, Paweł Sołtysiak, KarbonKitty.
  • 塞尔维亚语: Марко М. Костић, Nikola Radovanović.
  • 瑞典语: Joakim Olsson, Kalle Wallin, Johan Hedén.
  • 泰语: Sirisak Lueangsaksri, Phongphan Bunlom, ภูมิไผท จันทรศรีวงศ์.
  • 乌克兰语: Андрій Іванченко, R.M., Max Plotitsyn, Svitlana Galianova.
  • 越南语: Hung Nguyen.