现已发布!阅读关于 11 月的新功能和修复。

2018 年 3 月 (版本 1.22)

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

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


欢迎使用 Visual Studio Code 2018 年 3 月版。此版本中有许多重要的更新,我们希望您会喜欢,其中一些主要亮点包括

如果您想在线阅读这些发行说明,请访问 更新code.visualstudio.com
您还可以观看 Cloud Developer Advocate Brian Clark 制作的关于 1.22 版本的 亮点视频

发行说明按 VS Code 的重点领域分为以下几个部分。以下是一些进一步的更新

  • 编辑器 - Emmet 性能和智能匹配改进,新的代码片段日期变量。
  • 工作台 - Windows 上更流畅的滚动,搜索和替换期间自动保存。
  • 调试 - 改进的 Node.js 进程选择器,launch.json 中的 postDebugTask。
  • 任务 - 更好的命令和参数引用和转义支持。
  • 语言 - JSDoc 中更轻松的 IntelliSense,CSS 路径补全。
  • 扩展编写 - 可取消的长时间运行操作,向诊断添加相关信息。

Insiders: 想尽快看到新功能吗?您可以下载每日 Insiders 版本,并尝试最新的可用更新。

编辑器

语法感知折叠

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

Syntax folding

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

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

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

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

为了也让其他语言能够提供其语法感知折叠提供程序,提出了用于扩展的新 API 提案

跨文件错误和引用导航

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

Visit All Diagnostics

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

Visit All References

编辑器中的提示

扩展 API 现在支持创建“提示”诊断。它们不是错误或警告,而是关于如何改进某些内容的建议,例如,通过运行特定的重构。

我们在问题词的开头用省略号 ... 呈现提示诊断。

Hint Diagnostics

扩展作者的最佳实践是始终在提示中包含代码操作,因为提示诊断可以帮助宣传代码操作。但是,一些用户可能不想在编辑器中显示提示,因此也应支持禁用它们。

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

扩展 API 现在支持向诊断添加相关信息,并且这会在显示诊断的所有位置显示:悬停时、错误预览窗口和问题面板

在下面的示例中,您可以看到相关信息指出了第二次分配变量的第一个位置

Related Diagnostics Information

更轻松地打开大文件

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

Large File Notification

语法高亮优化

在此版本中,我们将在文件打开后立即根据视口中的内容范围对视口进行语法高亮显示。这可以实现更快的着色,如下所示,当用户使用转到定义命令打开新文件时。

左侧: VS Code 1.21 右侧: VS Code 1.22

Syntax highlighting optimization

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

我们在上一个版本中发布了一个新的文本缓冲区实现(有关详细信息,请阅读我们的 博客文章),并且我们继续优化大型文件的查找和替换。

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

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

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

Save Participant

更多代码片段变量

有新的代码片段变量用于引用当前日期和时间。除了数字(例如,2018/3/28),您现在可以使用诸如“3 月 28 日”之类的名称。新变量是

  • ${CURRENT_DAY_NAME} - 日期的名称(“星期一”)。
  • ${CURRENT_DAY_NAME_SHORT} - 日期的短名称(“周一”)。
  • ${CURRENT_MONTH_NAME} - 月份的完整名称(“七月”)。
  • ${CURRENT_MONTH_NAME_SHORT} - 月份的短名称(“七月”)。

Emmet

使用缩写包裹预览

当使用Emmet: 使用缩写包裹Emmet: 使用缩写包裹单行命令时,您现在可以查看包裹文本的外观预览。

Wrap text with abbreviation preview

更快的缩写扩展

现在,在大型 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.smoothScrollingWorkaround 设置为 true。由于这是一种解决方法,并且在您从任务栏恢复窗口时可能会导致闪烁,因此默认情况下未启用此设置。如果您启用该设置,您应该不会看到其他副作用。

在不带参数启动 VS Code 时打开空窗口

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

在搜索和替换时自动保存

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

搜索包含/排除模式

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

Combined search patterns inputs

树:水平滚动支持

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

集成终端

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

Multiline terminal links

该实现仍然存在一些问题,尤其是在调整窗口大小时。当我们实现重排时,这些问题将得到修复。

命令跟踪

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

Terminal command tracking

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

  • 滚动到上一个命令:Cmd+向上箭头*
  • 滚动到下一个命令:Cmd+向下箭头*
  • 选择到上一个命令:Cmd+Shift+向上箭头
  • 选择到下一个命令:Cmd+Shift+向下箭头

* 注意:向上/向下滚动一行已移动到 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

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

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 调试

自动附加到 Node.js 进程

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

Auto Attach

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

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

请注意,此功能(尚未)不适用于“tmux”之类的终端多路复用器(其中启动的进程不是 VS Code 集成终端的子进程)。

改进的进程选择器

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

在此版本中,我们已将选择器作为附加到 Node 进程操作提供,可以在没有启动配置的情况下使用。

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

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

Node.js Process Picker

选择器中列出的各个进程项除了进程 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 folding

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

TypeScript 2.8

VS Code 现在附带 TypeScript 2.8。此更新带来了对一些很棒的新语言功能的支持,以及许多重要的错误修复和工具改进。

改进的 JSDoc 中的快速建议

您是否知道 VS Code 为 JSDoc 类型提供 IntelliSense?此功能是在几个版本之前添加的,但您可能没有意识到它,因为 IntelliSense 仅在您手动调用它时才会显示。在 VS Code 1.22 中,默认情况下在 JSDoc 类型中启用快速建议。只需开始键入即可启动 IntelliSense

JSDoc suggestions

JavaScript 和 TypeScript 的建议代码操作

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

建议代码操作现在在编辑器中用 ... 指示

Triple dots in the editor indicate a suggested Code Action

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

Hovering over a suggestion indicator

Clicking on the lightbulb

After applying the Code Action

我们计划继续添加其他建议。如果您有任何希望看到的建议,请告诉我们。

默认情况下,JavaScript 和 TypeScript 中会启用建议代码操作。你可以通过设置以下选项禁用它们:"typescript.suggestionActions.enabled": false"javascript.suggestionActions.enabled": false

CSS 路径补全

除了 HTML,现在 CSS 也支持路径补全了

CSS Path Completion

扩展编写

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

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

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

long running task

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

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

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

之前在 CancellationTokenSource 上调用 dispose() 会将令牌设置为已取消状态并触发取消事件。我们更改了此行为,以便能够释放令牌而不取消它们。如果你依赖令牌的取消,请调用 cancel() 方法。

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

像调试 REPL 输入这样使用编辑器的输入不再作为编辑器传递给扩展。这意味着当用户聚焦调试 REPL 时,onDidChangeActiveTextEditor 不会触发,并且 onDidChangeTextDocument 也不会触发。此更改背后的原因是 REPL 输入使用编辑器作为实现细节,并且扩展不应该收到此通知,因为它不是一个“真正的编辑器”。

自定义视图

TreeView

现在你可以使用新的 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>;
}

调试适配器协议

日志点支持

新引入的日志点在调试适配器协议中以 SourceBreakpoint 上的新属性 logMessage 和新功能 supportsLogPoints 的形式呈现。支持日志点的调试适配器为 supportsLogPoints 功能返回 true,并且不会因为非空的 logMessage 属性而“中断”(停止),而是改为记录消息。大括号内的表达式(“{…}”)会被计算,结果将替换日志消息中的“{…}”。

initialize 请求的新 clientName 属性

前端可以使用 initialize 请求上的新的可选属性 clientName 将前端的可读名称传递给调试适配器。

新的 terminateThreads 请求

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

新的 setExpression 请求

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

stopped 事件上的新 preserveFocusHint

stopped 事件上的 true-ish preserveFocusHint 向前端表明停止的事件不应更改焦点。

多选 QuickPick

我们在 QuickPick API 中添加了一个选项,该选项会返回一个已选项目的列表,并提供一个新的 UI,允许用户选择任意数量的项目。

Multi-select QuickPick

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

建议的扩展 API

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

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

折叠提供程序 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

新的 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 上预览提交按钮将使用该存储库。

report on extensions

预览功能

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

为 JavaScript 和 TypeScript 组织导入

新的组织导入命令 () 删除未使用的导入并对剩余的导入进行排序

Organize Imports

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

Electron 2.0 探索

在这个里程碑中,我们探索了将 Electron 2.0.0 捆绑到 VS Code 中。这是一个主要的 Electron 版本,它带有 Chrome 61 和 Node.js 8.x(与我们当前的 Chrome 58 和 Node.js 7.x 版本相比,这是一个巨大的飞跃)。我们计划在 4 月初将更新推送给我们的 Insiders 用户,以收集更多反馈。如果你有兴趣提供帮助,请务必安装 VS Code Insiders

重要更改

  • 13905:Windows:在任务栏图标上单击鼠标中键不会打开新窗口
  • 35675:Linux 上字体渲染看起来很丑陋
  • 36307:实验性文件监视器 - “循环”符号链接上的高 CPU 占用率
  • 42401:更智能的输出通道分组
  • 42402:添加从通道内显示日志的选项
  • 43813:更新后扩展不完整
  • 44411:针对无法解析的变量从启动中退出
  • 44554:允许 DND 多个根文件夹
  • 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
    • 更改错误消息在 UI 中呈现的方式。 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 种语言由社区成员完全本地化并作为 Language Pack 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.
  • 日语: Shunya Tajima, Yuichi Nukiyama, Hiroyuki Mori, Takashi Takebayashi, Seiji Momoto, yoshioms, Yuki Ueda, 小島 富治雄, Satoshi Kajiura.
  • 简体中文: Joel Yang.
  • 繁体中文: 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.