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

2018 年 10 月 (版本 1.29)

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

下载:Windows:x64 | Mac:Intel | Linux 64 位:deb rpm tarball | 32 位:deb rpm tarball


欢迎使用 2018 年 10 月发布的 Visual Studio Code。此版本中有许多重大更新,我们希望您会喜欢,其中包括以下主要亮点:

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

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

  • 工作台 - 平台特定的行尾字符,突出显示已修改的文件选项卡。
  • 集成终端 - 分割终端 cwd 选项,Cmd+Backspace 删除到行首。
  • 语言 - 悬停时显示 CSS 特异性,处理未知 CSS 属性。
  • 调试 - 多个调试控制台,启动时停止在入口,设置 console.log 消息样式。
  • 扩展编写 - 活动终端 API,对自定义视图的更多控制。

Insider 版本:想尽快看到新功能吗?您可以下载每晚的 Insider 版本构建,并尽快尝试最新的更新。有关 Visual Studio Code 的最新新闻、更新和内容,请在 Twitter 上关注我们:@code

VS Code 现在支持多行搜索!与编辑器中一样,正则表达式搜索仅在其包含 `\n` 字面量时才以多行模式执行。搜索视图会在每个多行匹配项旁边显示提示,以及额外匹配行的数量。

Multiline search

此功能得益于 ripgrep 工具在实现多行搜索方面所做的工作。

现在还可以通过设置 `search.usePCRE2: true` 在正则表达式搜索中使用反向引用前瞻断言。这将配置 ripgrep 使用 PCRE2 正则表达式引擎。虽然 PCRE2 支持许多其他功能,但我们只支持在 JavaScript 中仍然有效的正则表达式,因为打开的编辑器仍然使用基于编辑器的 JavaScript 搜索进行搜索。

Fancy regex search

如果您仍然缺少后瞻断言,请不要担心!该功能最近才被 JavaScript 支持,应该会在以后的 Electron shell 更新中加入 VS Code。

我们添加了一个设置 `search.showLineNumbers`,它将在搜索视图中显示每个匹配项的行号。

禁用搜索和替换预览

新增一个设置 `search.useReplacePreview`,它允许您在搜索视图中执行搜索/替换时禁用出现的预览差异。

line numbers

Git 允许您使用 `core.excludesfile` 配置属性配置全局 `gitignore` 文件。默认情况下,搜索不尊重全局 `gitignore` 文件,但您现在可以通过启用新设置 `search.useGlobalIgnoreFiles` 来更改此设置。

工作台

macOS Mojave 暗模式支持

VS Code 现在更好地支持 macOS Mojave 暗模式。以前,即使 macOS 运行在暗主题下,VS Code 菜单和对话框也会显示默认的亮主题。现在,如果启用,所有原生 UI 元素都将显示暗模式。

macOS Mojave Dark Mode

macOS 全屏支持

引入了一个新设置 `window.nativeFullScreen`,如果设置为 `false`,它将启用 VS Code 的全屏模式,该模式不使用 macOS 原生全屏功能。这样做的好处是进入全屏模式不会在桌面上创建 macOS 空间。默认情况下,VS Code 仍将使用 macOS 原生全屏。

`files.eol` 的新默认值:`auto`

`files.eol` 行尾设置现在有一个新的默认值 `auto`。当设置为 `auto` 时,新文件的行尾字符特定于操作系统。在 Windows 上是 `\r\n`,在 macOS 和 Linux 上是 `\n`。您仍然可以明确地将 `file.eol` 设置为 `\n` 或 `\r\n`。

突出显示已修改的选项卡

新设置 `workbench.editor.highlightModifiedTabs` 在编辑器脏(有未保存的更改)时,在编辑器选项卡顶部显示粗边框。这使得更容易找到需要保存的文件。边框的颜色可以自定义(见下文)。

Highlight modified tabs

居中编辑器布局自动调整大小

当打开多于 1 个编辑器组时,居中布局视图现在将自动调整大小以达到最大宽度。这应该使居中布局更易于使用,并且需要更少的手动切换。此行为由新设置 `workbench.editor.centeredLayoutAutoResize` 控制,该设置默认启用。

面包屑中的符号顺序

有一个新设置控制面包屑选择器中符号的顺序:`breadcrumbs.symbolSortOrder`。

允许的值为

  • `position` - 文件中的位置(默认)
  • `name` - 字母顺序
  • `type` - 符号类型顺序

下面的示例显示了按名称排序的面包屑符号列表

Breadcrumb picker ordered by name

面包屑和预览编辑器

当在中键单击面包屑导航中的项目时,它们现在会在新编辑器中打开,并且不会重复使用预览编辑器。此行为现在与资源管理器中中键单击文件相匹配。

即使显示按钮,通知也会自动隐藏

以前,如果通知包含按钮,VS Code 永远不会隐藏它们。这导致通知有可能堆积在右下角并覆盖编辑器的一部分。在此版本中,即使通知显示按钮,它们也会在超时后隐藏。

有两个例外

  • 严重性为 `error` 的通知将不会被隐藏,前提是用户需要采取一些操作。
  • VS Code 中的一些特定通知将保持打开状态。例如,在浏览 VS Code Marketplace 后询问您是否要安装扩展的通知。

注意:即使通知被隐藏,您也始终可以从通知中心访问所有通知,无论是通过单击状态栏中的小铃铛图标还是通过显示通知 (`notifications.toggleList`) 命令。

面板位置按钮到上下文菜单

为了节省水平空间并减少混乱,我们从面板标题区域中移除了切换面板位置按钮(移至右侧移至底部)。现在,该操作在面板标题区域上下文菜单中以及视图 > 外观 > 切换面板位置主菜单中可用。删除此按钮的另一个原因是,我们认为用户会设置一次布局,并且通常不会来回切换。

Move panel

按文件类型更新的文件图标

上一个版本中,我们为常见的 VS Code 文件类型添加了自定义图标。我们现在将这些图标添加到了较小的视图中,因此它们将显示在列表视图中。

Updated file icons

在设置编辑器中,当设置在当前选定范围(用户、工作区)之外的范围中配置时,我们会显示一个提示。现在,其他范围提示是一个链接,会将您带到其他范围中的设置。

modified in link

树形控件性能

VS Code 树形控件在 VS Code UI 的许多地方使用,但在某些特定用例(问题面板、大纲视图)中达到了性能限制。我们一直在研究更快的虚拟树形控件实现,它可以适应不同级别的性能与 API 便利性。您可以在此处阅读更多信息。

新的 `ObjectTree` 控件现在正用于问题面板中,我们已经看到了显著的改进。我们能够显著提高工作台可以处理的问题项目数量,并提高某些操作(例如全部折叠)和高级筛选场景的速度。这些改进现在使得处理更大集合大小成为可能。

工作台导航命令

添加了四个命令以改进工作台导航

  • `workbench.action.nextSideBarView`:转到侧边栏中的下一个视图。
  • `workbench.action.previousSideBarView`:转到侧边栏中的上一个视图。
  • `workbench.action.nextPanelView`:转到下一个面板。
  • `workbench.action.previousPanelView`:转到上一个面板。

默认情况下,这些命令没有键盘快捷键。

还添加了两个上下文键 `sideBarFocus` 和 `panelFocus`。这允许在不同的工作台区域中使用相同的键绑定来执行不同的命令

[
  { "key": "cmd+]", "command": "workbench.action.nextEditor" },
  { "key": "cmd+[", "command": "workbench.action.previousEditor" },
  {
    "key": "cmd+]",
    "command": "workbench.action.nextSideBarView",
    "when": "sideBarFocus"
  },
  {
    "key": "cmd+[",
    "command": "workbench.action.previousSideBarView",
    "when": "sideBarFocus"
  },
  {
    "key": "cmd+]",
    "command": "workbench.action.nextPanelView",
    "when": "panelFocus"
  },
  {
    "key": "cmd+[",
    "command": "workbench.action.previousPanelView",
    "when": "panelFocus"
  }
]

workbench-navigation

显示视图组父级

“打开视图”命令(快速打开中的 `view`)现在显示每个视图组的父级,以更好地表示视图层次结构。例如,资源管理器组现在显示为侧边栏 / 资源管理器,终端组显示为面板 / 终端

structured-view

编辑器

IntelliSense 中的文件和文件夹图标

IntelliSense 小部件现在根据您的文件图标主题显示文件完成的文件和文件夹图标。这提供了统一的外观,并帮助您快速识别不同的文件类型。

File Icons in IntelliSense

格式化选中内容

为了加快小格式化操作,格式化选中内容命令在没有编辑器选择的情况下现在将格式化当前行。

显示错误代码

如果定义了错误代码,编辑器现在会显示问题的错误代码。错误代码显示在行尾的方括号中。

在下面,您可以看到 TypeScript 正在显示错误代码 '2339'

error codes

集成终端

分割终端可以继承工作目录

添加了一个设置 `terminal.integrated.splitCwd` 来控制终端分割时新终端的当前工作目录 (cwd)

  • `workspaceRoot` - 以前的行为;新的分割终端将使用工作区根目录作为工作目录。在多根工作区中,将提供选择哪个根文件夹的选项。
  • `initial` - 新的分割终端将使用父终端启动时的工作目录。
  • `inherited` - 在 macOS 和 Linux 上,新的分割终端将使用父终端的工作目录。在 Windows 上,这与 `initial` 的行为相同。

Cmd+Backspace 删除到行首

在 macOS 上添加了一个新键绑定 `Cmd+Backspace`,它向终端发送 `\u0015` (Ctrl+U)。在 bash 中,这将从光标删除到行首,在 zsh 中,它将删除整行。

实验性缓冲区改进

新设置 `terminal.integrated.experimentalBufferImpl` 允许将终端存储其缓冲区的方式更改为基于 `TypedArray` / `ArrayBuffer` 的实现。如果您想选择加入,可以期待全面的性能改进,包括减少内存使用和垃圾回收,以及整体提高终端的吞吐量。

{
  "terminal.integrated.experimentalBufferImpl": "TypedArray"
}

这仅仅是个开始,我们预计在接下来的几个版本中,在将其作为默认实现之前,吞吐量和内存使用将得到进一步改进。特别感谢来自 xterm.js 团队的 @jerch,他一直是这个多月项目背后的主要推动力。

任务

在执行任务前清空终端

任务 `presentation` 配置中添加了一个新属性 `clear`。将 `clear` 属性设置为 `true` 可在任务运行前清空终端。

调试

可折叠堆栈帧

有时调试器中的调用堆栈包含用户不感兴趣的堆栈帧(外部代码、跳过的文件等)。为了减少混乱并节省垂直空间,我们现在将这些不感兴趣的堆栈帧渲染为已折叠。

stack frames

改进的已加载脚本视图

在此里程碑中,我们更新了已加载脚本视图以支持文件图标,并添加了将相关资源显示为子元素的功能。调试扩展可以使用此功能来显示已转译为脚本的源文件。

Node.js 调试器中的下图显示了 JavaScript 文件的 TypeScript 源(如源映射中可用)

loaded scripts view

请注意,相关资源功能需要调试扩展选择加入。在 10 月版本中,只有 `node-debug` 对 Node.js 版本 < 8.0(又称“旧版”)的此功能有实验性支持。

多个调试控制台

在调试多个调试会话时,我们现在将它们的输出显示在不同的调试控制台中。这使得区分哪个调试会话负责哪个输出和评估变得更容易。

multiple debug consoles

启动调试并在入口处停止

对于 Node.js 调试,我们添加了一个新命令调试:启动调试并在入口处停止(`extension.node-debug.startWithStopOnEntry`)。如果您想启动调试并立即在程序入口处停止,请使用此命令。默认键绑定是 F11。请注意,此命令仅在您选择的启动配置类型为 `node` 时才可用。

Node 调试支持 console.log 样式

调试 Node.js(或使用“Debugger for Chrome”扩展的 Chrome)时,您现在可以使用 `%c` 对 `console.log` 的消息进行样式设置,类似于 Chrome DevTools 支持的功能。支持的属性有 `color`、`background`、`font-weight: bold` 和 `text-decoration: underline`。

console styles

断点小部件扩展为多行

断点小部件现在可以扩展为多行,使用 `Shift+Enter` 插入新行,或直接粘贴多行条件或日志消息。这应该有助于编辑更复杂的条件和日志消息。

breakpoint widget

语言

TypeScript 3.1.4

此版本包括 TypeScript 3.1.4,这是一个小更新,修复了一些重要的错误

Markdown 片段改进

内置的 Markdown 片段,例如链接和代码块的片段,现在默认使用当前选定的文本。这允许您创建键绑定,将当前选定的文本转换为链接或标题

{
  "key": "cmd+k",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
    "langId": "markdown",
    "name": "Insert link"
  }
}

悬停消息中的 CSS 特异性

CSS 悬停现在显示 CSS 特异性

css-specificity

处理未知 CSS 属性

使用 CSS 预处理器(如 PostCSS)时,您可能会使用在开发期间编译为有效属性的无效属性。`[css/less/scss].lint.validProperties` 设置可防止 VS Code 将这些无效属性标记为错误。

改进的 CSS 零单位警告

CSS 现在会对 CSS 简写属性值中使用的零单位进行 linting。例如,`0px` 现在会引起警告。

JSON 架构加载错误的优雅处理

如果 VS Code 无法下载用于 IntelliSense 或 JSON 文件错误检查的 JSON 架构,状态栏中将显示警告

json-schema-loading

过去,您会在编辑器中看到错误。

工程

继续探索 Electron 3.0

在此里程碑期间,我们继续探索将 Electron 3.0.0 捆绑到 VS Code 中。这是一个重要的 Electron 版本,包含 Chrome 66 和 Node.js 10.x(与我们当前包含 Chrome 61 和 Node.js 8.x 的版本相比,这是一个重大飞跃)。我们计划在不久的将来向 Insider 用户推出更新,以收集更多反馈。如果您有兴趣提供帮助,请务必安装 VS Code Insiders

严格空检查核心 VS Code

在此里程碑中,我们还开始工作,以在核心 VS Code 源代码中启用 TypeScript 的严格空检查。严格空检查有助于捕获许多常见的编程错误,并使程序员的意图更明确。我们已经看到,将严格空检查用于 VS Code 的内置扩展带来了明显的好处。

由于 VS Code 的核心源代码包含数千个文件,我们正在逐步采用严格空检查。我们首先对没有导入的文件进行严格空检查,现在正在迭代地在只导入其他严格空检查过的文件上启用严格空检查。这将持续到整个代码库都转换完毕。

启用严格空检查是一项重大的工程工作,但我们认为在源代码和产品质量方面带来的回报是值得的。您可以在此处跟踪我们的严格空检查进度。

杂项

低对比度菜单栏

如果您使用的是 Ubuntu 18.10 或混合浅色/深色上下文菜单与相反主题的应用菜单栏的 GTK 主题,您可能会遇到难以阅读的低对比度菜单栏。

对此有两种可能的解决方法

  • 通过将设置 `window.titleBarStyle` 配置为 `custom` 来尝试 VS Code 自定义标题栏样式。
  • 更改您的 GTK 主题。您可以通过安装 Gnome Tweaks 应用程序并使用以前的默认主题 `Adwaita` 来完成此操作。

此问题的信息可以在问题 62593 中跟踪。

Electron 更新

在此版本中,我们从 Electron 2.0.9 更新到 2.0.12。

预览功能

预览功能尚未准备好发布,但已足够实用。我们欢迎您在这些功能开发期间提供早期反馈。

引用视图

新增了一个命令查找所有引用,它显示了一个专门的侧边栏视图,显示引用搜索结果。这补充了现有的 Peek 视图呈现,并提供了更稳定的引用列表。在上下文菜单中,选择查找所有引用),引用将显示在单独的视图中,就像搜索结果一样。

References View

结果是稳定的,单个结果可以清除,这非常适合将视图用作待办事项列表。您可以使用 F4⇧F4(Windows、Linux Shift+F4来导航结果,而无需将手离开键盘。

请告诉我们您的想法,我们将在下一次更新中完善体验。

扩展开发

规范化扩展示例

vscode-extension-samples 上的 VS Code 扩展示例已更新以保持一致性。

每个扩展示例现在都包含

  • 统一的编码风格和结构。
  • 一个解释示例功能的 README,并附有简短动画。
  • 每个示例中使用的 `vscode` API 或贡献点的列表。

捆绑扩展

捆绑的扩展加载速度更快。因此,我们创建了一个示例,展示如何将扩展 webpack 化

无需发布者即可开发扩展

为了简化初始扩展开发,`publisher` 字段已从 Yeoman 扩展生成器模板中移除。对于没有 `publisher` 标识符的扩展,VS Code 现在将它们加载为 `undefined_publisher` 作为其发布者。但是,如果您在尝试将扩展发布到 Marketplace 时缺少有效的发布者,`vsce` 发布工具将发出警告。

活动终端 API

提供对活动终端访问权限的提议 API `window.activeTerminal` 和 `window.onDidChangeActiveTerminal` 现已稳定。

带有按钮的通知在超时后隐藏

如果您的扩展正在使用带有非模态选项和按钮的 `showInformationMessage` 或 `showWarningMessage` API,请注意这些通知现在会在一定超时后隐藏。只有通过 `showErrorMessage` 触发且带有按钮的通知才会像以前一样保持打开。如果您必须立即从用户获取输入或需要显着显示消息,您仍然可以使用 `modal: true` 作为选项。这将弹出一个模态对话框,阻止用户执行任何操作直到解除。但是,我们不鼓励过度使用此选项,因为它会中断用户。

自定义视图:展开显示元素

您现在可以使用 `reveal` API 中的 `expand` 选项来展开元素以显示。它还支持通过传递级别数来递归展开子元素。

注意:您最多只能展开 3 层。

/**
 * Reveals the given element in the tree view.
 * If the tree view is not visible then the tree view is shown and element is revealed.
 *
 * By default revealed element is selected.
 * In order to not to select, set the option `select` to `false`.
 * In order to focus, set the option `focus` to `true`.
 * In order to expand the revealed element, set the option `expand` to `true`. To expand recursively set `expand` to the number of levels to expand.
 * **NOTE:** You can expand only to 3 levels maximum.
 *
 * **NOTE:** [TreeDataProvider](#_TreeDataProvider) is required to implement [getParent](#_TreeDataProvider.getParent) method to access this API.
 */
reveal(element: T, options?: { select?: boolean, focus?: boolean, expand?: boolean | number }): Thenable<void>;

新主题颜色

有新的主题颜色

  • `tab.activeModifiedBorder`:活动组中已修改(脏)活动选项卡顶部的边框。
  • `tab.inactiveModifiedBorder`:活动组中已修改(脏)非活动选项卡顶部的边框。
  • `tab.unfocusedActiveModifiedBorder`:非焦点组中已修改(脏)活动选项卡顶部的边框。
  • `tab.unfocusedInactiveModifiedBorder`:非焦点组中已修改(脏)非活动选项卡顶部的边框。
  • `editor.stackFrameHighlightBackground`:编辑器中顶部调试堆栈帧高亮背景颜色。默认情况下,此颜色为黄色。
  • `editor.focusedStackFrameHighlightBackground`:编辑器中焦点调试堆栈帧高亮背景颜色。默认情况下,此颜色为绿色。

Git 扩展 API 添加

Git 扩展 API 已更新,以公开每个存储库实际更改的详细信息。

此外,还公开了以下方法

使用 Azure Pipelines 进行扩展 CI

我们更新了有关如何使用 Azure Pipelines 为您的扩展设置持续集成解决方案的文档。新指南提供了一种配置,您可以同时在 Windows、macOS 和 Linux 上运行扩展测试。

Azure Pipelines CI results

提议的扩展 API

每个里程碑都附带新的提议 API,扩展作者可以试用它们。一如既往,我们渴望您的反馈。以下是试用提议 API 所需的操作:

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

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

剪贴板 API

我们有一个提议的 API 来访问剪贴板。它遵循即将推出的浏览器 Clipboard API,目前允许读取和写入文本

export interface Clipboard {
  readText(): Thenable<string>;
  writeText(value: string): Thenable<void>;
}
export namespace env {
  const clipboard: Clipboard;
}

补全文本插入规则

有一个新的提议 API 用于修改补全项的插入行为。默认情况下,多行补全会“重新格式化”以匹配当前行的缩进。有时这种缩进是不需要的,新的提议 API 允许补全将其关闭。`CompletionItemInsertTextRule` 是一个位掩码,它有一个补全可以设置的 `KeepWhitespace` 规则。

自定义视图

全部折叠操作

您只需在创建 `TreeView` 时将 `showCollapseAll` 选项设置为 `true` 即可将全部折叠操作添加到视图中。

/**
 * Options for creating a [TreeView](#_TreeView]
 */
export interface TreeViewOptions<T> {
  /**
   * A data provider that provides tree data.
   */
  treeDataProvider: TreeDataProvider<T>;

  /**
   * Whether to show collapse all action or not.
   */
  showCollapseAll?: boolean;
}

namespace window {
  export function createTreeView<T>(
    viewId: string,
    options: TreeViewOptions<T>
  ): TreeView<T>;
}

VS Code 提供全部折叠功能,并为所有选择加入的视图显示相同的图标和位置。

Collapse All

TreeItem 标签高亮

您可以通过使用 `highlights` 选项提供范围来高亮显示 `TreeItem` 标签。由于这是一个提议的 API,您必须使用 `TreeItem2` 来更新高亮。

/**
 * Label describing the [Tree item](#_TreeItem)
 */
export interface TreeItemLabel {
  /**
   * A human-readable string describing the [Tree item](#_TreeItem).
   */
  label: string;

  /**
   * Ranges in the label to highlight. A range is defined as a tuple of two number where the
   * first is the inclusive start index and the second the exclusive end index
   */
  highlights?: [number, number][];
}

export class TreeItem2 extends TreeItem {
  /**
   * Label describing this item. When `falsy`, it is derived from [resourceUri](#_TreeItem.resourceUri).
   */
  label?: string | TreeItemLabel | /* for compilation */ any;

  /**
   * @param label Label describing this item
   * @param collapsibleState [TreeItemCollapsibleState](#_TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#_TreeItemCollapsibleState.None)
   */
  constructor(label: TreeItemLabel, collapsibleState?: TreeItemCollapsibleState);
}

Label highlights

隐藏源代码管理输入框

`SourceControlInputBox` 实例上有一个新的提议 API 属性,它将允许您隐藏源代码管理提供程序 UI 视图顶部的输入框。

export interface SourceControlInputBox {
  /**
   * Controls whether the input box is visible (default is  true`).
   */
  visible: boolean;
}

SignatureHelpContext

提议的 `SignatureHelpContext` 为 `SignatureHelpProviders` 提供了有关请求签名帮助的额外信息

export interface SignatureHelpProvider {
  provideSignatureHelp(
    document: TextDocument,
    position: Position,
    token: CancellationToken,
    context: SignatureHelpContext
  ): ProviderResult<SignatureHelp>;
}

`SignatureHelpContext` 包括

  • 导致签名帮助触发的操作
  • 触发字符(如果有)
  • 这是否是重新触发?(签名帮助已显示)
/**
 * Contains additional information about the context in which a
 * [signature help provider](#_SignatureHelpProvider.provideSignatureHelp) is triggered.
 */
export interface SignatureHelpContext {
  /**
   * Action that caused signature help to be requested.
   */
  readonly triggerReason: SignatureHelpTriggerReason;

  /**
   * Character that caused signature help to be requested.
   *
   * This is `undefined` when signature help is not triggered by typing, such as when invoking signature help
   * or when moving the cursor.
   */
  readonly triggerCharacter?: string;

  /**
   * Whether or not signature help was previously showing when triggered.
   *
   * Retriggers occur when the signature help is already active and can be caused by typing a trigger character
   * or by a cursor move.
   */
  readonly isRetrigger: boolean;
}

/**
 * How a [Signature provider](#_SignatureHelpProvider) was triggered
 */
export enum SignatureHelpTriggerReason {
  /**
   * Signature help was invoked manually by the user or by a command.
   */
  Invoke = 1,

  /**
   * Signature help was triggered by a trigger character.
   */
  TriggerCharacter = 2,

  /**
   * Signature help was triggered by the cursor moving or by the document content changing.
   */
  ContentChange = 3
}

此外,该提案允许 `SignatureHelpProvider` 使用一组 `triggerCharacters` 和一组不同的 `retriggerCharacters` 进行注册

export interface SignatureHelpProviderMetadata {
  readonly triggerCharacters: ReadonlyArray<string>;
  readonly retriggerCharacters: ReadonlyArray<string>;
}

namespace languages {
  export function registerSignatureHelpProvider(
    selector: DocumentSelector,
    provider: SignatureHelpProvider,
    metadata: SignatureHelpProviderMetadata
  ): Disposable;
}

`retriggerCharacters` 仅在签名帮助已显示时才导致调用签名帮助提供程序。

对扩展的贡献

我们的团队维护或贡献了许多 VS Code 扩展。本月最值得注意的是

Go

以下是 Go 扩展在使用 Go 1.11 中的新 Go 模块时现在支持的一些主要功能

  • 代码导航(转到定义、签名帮助、悬停时显示符号信息)
  • 代码补全
  • 代码覆盖率
  • 代码诊断
  • 包相关命令,如Go:添加导入Go:浏览包

有关更多详细信息,请阅读维基上的Visual Studio Code 中的 Go 模块支持

Go 扩展中的其他值得注意的功能是

  • Sourcegraph 的语言服务器现在也支持 Windows。
  • 自动补全小部件现在显示建议符号的文档。按下 ⌃Space(Windows、Linux Ctrl+Space可展开/折叠自动补全小部件的详细信息部分。
  • 现在在交叉编译时支持自动补全。当您尝试 Go 1.11 中新的WebAssembly 支持时,这尤其有用。
  • 调试视图的“变量”窗格中现在提供带有复制值复制为表达式添加到监视选项的上下文菜单。
  • 在文件保存时仅对当前文件进行 linting 的选项。

TypeScript TSLint 插件

新的 TypeScript TSLint 插件将 TSLint 作为 TypeScript 语言服务插件启用。这些插件适用于任何使用 TypeScript 语言服务的编辑器,包括 VS Code、Visual Studio、Atom 和 Sublime Text。

我们还发布了一个捆绑了 TypeScript TSLint 插件的扩展,这样您就不必在工作区中配置该插件。

GitHub 拉取请求

在此里程碑中,我们致力于改进 GitHub Pull Requests 扩展。该扩展现在支持在编辑器和描述页面中编辑和删除评论,并且对尚未提交的评论具有更好的缓存。您可以在此处阅读该扩展的完整发布说明。

新文档

部署 Python 教程

有两个新的 Python 教程,展示如何使用 VS Code 部署 Python Web 应用程序。

调试食谱

有适用于 PHPPythonRuby on Rails 的新 VS Code 调试食谱

值得注意的修复

  • 54214:即使构建失败,vscode 中的 startDebugging 方法仍然返回 true
  • 57289:设置 UI 应该在重新加载时记住其搜索
  • 57321:当设置搜索没有结果时,显示“清除搜索”和“清除筛选器”按钮
  • 59305:在 .code-workspace 文件中显示“打开工作区”按钮
  • 59430:无法再在 Node 内部文件中设置断点
  • 61711:所有断点均未验证
  • 62085:调试适配器未收到 PauseRequest
  • 62346:调试会话初始化时无法取消
  • 62354:Node 10.12 后远程调试问题

感谢

最后但同样重要的是,衷心感谢!以下帮助使 VS Code 变得更好的各位:

vscode 的贡献

vscode-eslint 的贡献

vscode-languageserver-node 的贡献

language-server-protocol 的贡献

vscode-html-languageservice 的贡献

vscode-css-languageservice 的贡献

vscode-json-languageservice 的贡献

debug-adapter-protocol 的贡献

对 `vscode-debugadapter-node` 的贡献

vscode-chrome-debug-core 的贡献

  • @digeff
    • 我们适应最新版本的 Node.js,它使用 file:///,我们不为存在的文件发送 sourceRef PR #373
    • 修复 NTVS 单元测试第一行未命中 BPs PR #369
    • 修复节点在网络路径中未命中断点 PR #368
  • @rdegelo
    • 改进调试控制台样式。添加下划线和背景支持 PR #374
    • 添加了对调试控制台中基本颜色转义序列的支持 PR #367

vscode-generator-code 的贡献

vscode-vsce 的贡献

vscode-extension-samples 的贡献

vscode-recipes 的贡献

inno-updater 的贡献

localization 的贡献

Transifex VS Code 项目团队有近 1400 名成员,每月约有 100 名活跃贡献者。我们感谢您的贡献,无论是提供新翻译、对翻译投票还是建议流程改进。

以下是此版本的贡献者快照。有关项目(包括贡献者名单)的详细信息,请访问项目网站:https://aka.ms/vscodeloc

  • 波斯尼亚语:Dario Fuzinato。
  • 保加利亚语:Любомир Василев。
  • 加泰罗尼亚语:joanmiro pisa。
  • 捷克语:Vít Staniček、Kryštof Černý、Michal Franc。
  • 荷兰语:Gerald Versluis、Vincent Verbist。
  • 英语(英国):Matthew John Cheetham、Alexander Ogilvie。
  • 芬兰语:Petri Niinimäki、Feetu Nyrhinen。
  • 法语:Antoine Griffard、Adrien Clerbois。
  • 德语:J.M. Rütter、Volkmar Rigo。
  • 希腊语:Dimitris Siakavelis、Christos Koutsiaris。
  • 印地语:Ashwini Gupta、Bimal .、Brahma Dev、Rahul Bhammarker。
  • 匈牙利语: Tar Dániel.
  • 简体中文:Joel Yang、pluwen、Zijian Zhou、Simon Chan。
  • 繁体中文:Duran Hsieh、Poy Chang、Alan Tsai、Kevin Yang、Winnie Lin。
  • 印尼语:Rizki A. Wibowo、Laurensius Dede Suhardiman、Fahmi Irsyad khairi、Wildan Mubarok、G-RiNe Project、Pratikto Ariestyadi、Joshua Siagian、William Tantiono、Herman Prawiro、Febrian Setianto (Feber)、Angger Rafi Akbar、Joseph Aditya P G、Oka bRionZ、rodin。
  • 意大利语:Alessandro Alpi、Riccardo Cappello、Marco Dal Pino、Roberto Albano、Andrea Dottor、Luigi Bruno。
  • 日语:Shunya Tajima、Yuichi Nukiyama、Satoshi Kajiura、Yoshihisa Ozaki。
  • 卡纳达语:Sanjay !。
  • 韩语:Kyunghee Ko、Junseong Jang。
  • 立陶宛语:Martynas Jusys。
  • 马拉雅拉姆语:Ajith S Punalur、Anand Chalakkal Jose Mohan、Kiren Paul。
  • 挪威语布克莫尔语:Espen Klein Nilsen。
  • 波兰语:Artur、Andrzej Supermocny、Jan Bońkowski、Mateusz Wyczawski、Warchlak。
  • 葡萄牙语(巴西):Rodrigo Crespi、Roberto Fonseca、Danilo Dantas、Thiago Aragão、Thiago Moreira de Souza Arrais、Atílio Dadalto、Marcelo Fernandes、Douglas Heydt、Robson Cassiano、Lucas Miranda、Thiago Custodio。
  • 葡萄牙语(葡萄牙):Diogo Barros、António Santos、Antonio Lourenco。
  • 俄语:Ivan Kuzmenko、Roman Slauta、Michael Crane。
  • 西班牙语:José M. Aguilar、Matias Menich、Alberto Poblacion、Daniel J. Pérez Nieto、Andrés Reyes Galgani。
  • 泰米尔语:Nadar Solomon Sunder、Sarath Jasrin、Sakthi Raj、rajakvk、Avinash、ஜெகன் லங்கா சாமி துரை、Anand AV、Jeyanthinath Muthuram、Narayanan Singaram。
  • 泰卢固语:Rama Chandu、Hari Jujjavarapu、Sai Pavan Koundinya Upadhyayula。
  • 乌克兰语:Svitlana Galianova、Borys Lebeda、Dmytro Kyrychuk、Victor Kubrak、Volodymyr Holovka。
  • 乌尔都语:Haseeb Anwer、Saqib Ameen、Ahmad Awais。
  • 越南语:Thanh Phu、Daniel Nguyen、Nguyễn Nhật Tân、Hung Nguyen、Vuong。