2018 年 10 月 (版本 1.29)
更新 1.29.1:本次更新解决了这些问题。
下载:Windows:x64 | Mac:Intel | Linux 64 位:deb rpm tarball | 32 位:deb rpm tarball
欢迎来到 Visual Studio Code 的 2018 年 10 月发布版。此版本中有许多重要的更新,我们希望您会喜欢。以下是一些主要亮点:
- 多行搜索 - 使用 regex 多行表达式跨文件进行搜索。
- IntelliSense 中的文件图标 - 在 IntelliSense 中快速区分文件类型。
- 更好的 macOS 支持 - 全屏模式控制和 Mojave 深色模式支持。
- 可折叠的堆栈帧 - 折叠不感兴趣的堆栈帧以清晰查看您的代码。
- 改进的加载脚本视图 - 显示相关资源,例如原始源文件。
- 更新的扩展示例 - 统一的样式和结构、README 以及 API 使用方式。
- 扩展的 CI 秘诀 - 使用 Azure Pipelines 构建扩展的秘诀。
- 预览:查找所有引用 - “查找所有引用”视图显示引用搜索结果。
如果您想在线阅读这些发布说明,请访问 code.visualstudio.com 上的更新页面。
您还可以查看由云开发者布道师 Brian Clark 制作的 1.29 版本亮点视频。
发布说明按照 VS Code 关注领域分为以下几个部分。以下是一些进一步的更新:
- 工作台 - 平台特定的行尾字符,高亮显示已修改的文件选项卡。
- 集成终端 - 分割终端 cwd 选项,Cmd+Backspace 删除到行首。
- 语言 - 悬停时显示 CSS 特异性,处理未知 CSS 属性。
- 调试 - 多个调试控制台,启动时在入口处停止,美化 console.log 消息。
- 扩展开发 - 活动终端 API,更多自定义视图控制。
Insiders 版: 想尽快看到新功能?您可以下载每晚构建的 Insiders 版本,并在最新更新可用时立即尝试。获取 Visual Studio Code 的最新新闻、更新和内容,请在 Twitter 上关注我们 @code!
搜索
多行搜索
VS Code 现在支持多行搜索!与编辑器中一样,正则表达式搜索仅在其包含 \n
字面量时才以多行模式执行。“搜索”视图在每个多行匹配旁边显示提示,以及额外的匹配行数。
此功能得益于 ripgrep 工具为实现多行搜索所做的工作。
搜索中的后向引用和先行断言
通过设置 "search.usePCRE2": true
,现在还可以在 regex 搜索中使用后向引用和先行断言。这将配置 ripgrep 使用 PCRE2 regex 引擎。虽然 PCRE2 支持许多其他功能,但我们仅支持在 JavaScript 中仍然有效的 regex 表达式,因为打开的编辑器仍然使用编辑器基于 JavaScript 的搜索进行搜索。
如果您仍然缺少后向断言,请不要担心!该功能刚刚在 JavaScript 中得到支持,应该会在未来的 Electron shell 更新中添加到 VS Code。
在搜索中显示行号
我们添加了一个设置 search.showLineNumbers
,它将在“搜索”视图中显示每个匹配项的行号。
禁用搜索和替换预览
有一个新设置 search.useReplacePreview
,允许您禁用在“搜索”视图中进行搜索/替换时出现的预览差异。
在搜索中使用全局 .gitignore 文件
Git 允许您使用 core.excludesfile
配置属性配置全局 gitignore
文件。默认情况下,搜索不遵循全局 gitignore
文件,但您现在可以通过启用新设置 search.useGlobalIgnoreFiles
来更改此行为。
工作台
macOS Mojave 深色模式支持
VS Code 现在更好地支持 macOS Mojave 深色模式。以前,即使 macOS 运行在深色主题下,VS Code 菜单和对话框也会显示默认的浅色主题。现在,如果启用深色模式,所有原生 UI 元素都将显示深色模式。
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
会在编辑器选项卡脏(有未保存的更改)时在顶部显示一个粗边框。这使得更容易找到需要保存的文件。边框的颜色可以自定义(见下文)。
居中编辑器布局自动调整大小
当打开多个编辑器组时,居中布局视图现在会自动调整到最大宽度。这应该使居中布局更容易使用,并且需要较少的手动切换。此行为由新设置 workbench.editor.centeredLayoutAutoResize
控制,该设置默认启用。
面包屑中的符号顺序
有一个新设置控制“面包屑”选取器中符号的排序方式:breadcrumbs.symbolSortOrder
。
允许的值包括:
position
- 文件中的位置(默认)name
- 按字母顺序type
- 按符号类型顺序
以下示例显示按名称排序的“面包屑”符号列表:
面包屑和预览编辑器
当在中键点击“面包屑”导航中的项目时,它们现在会在新编辑器中打开,而不会重用预览编辑器。此行为现在与在资源管理器中中键点击文件的行为一致。
即使显示按钮,通知也会自动隐藏
以前,如果通知包含按钮,VS Code 将永远不会隐藏它们。这可能导致通知在右下角堆积并遮盖部分编辑器。在此版本中,即使通知显示按钮,它们也会在超时后隐藏。
有两个例外:
- 严重性为
error
的通知不会被隐藏,因为假定用户需要采取一些行动。 - VS Code 中的一些特定通知将保持打开状态。例如,询问您是否要在浏览 VS Code Marketplace 后安装扩展的通知。
注意:即使通知被隐藏,您始终可以通过单击状态栏中的小铃铛图标或使用显示通知 (notifications.toggleList
) 命令从通知中心访问所有通知。
面板位置按钮移至上下文菜单
为了节省水平空间并减少混乱,我们从面板标题区域移除了切换面板位置按钮(移至右侧,移至底部)。该操作现在可在面板标题区域的上下文菜单中找到,也可在视图 > 外观 > 切换面板位置主菜单中找到。移除此按钮的另一个原因是,我们认为用户通常只设置一次布局,而不会频繁切换。
按文件类型更新文件图标
在上一版本中,我们为常见的 VS Code 文件类型添加了自定义图标。现在我们将这些图标添加到较小的视图中,以便它们在列表视图中显示。
设置编辑器中的“修改于”提示现在是一个链接
在设置编辑器中,当设置在当前选定范围之外的其他范围(用户、工作区)中配置时,我们会显示提示。该其他范围提示现在是一个链接,点击它将带您到其他范围中的设置。
树形控件性能
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"
}
]
显示视图组父级
打开视图命令(在快速打开中为 view
)现在显示每个视图组的父级,以便更好地表示视图层次结构。例如,“资源管理器”组现在显示为侧边栏 / 资源管理器,而“终端”组显示为面板 / 终端。
编辑器
IntelliSense 中的文件和文件夹图标
IntelliSense 控件现在根据您的文件图标主题显示文件补全的文件和文件夹图标。这提供了统一的外观,并帮助您快速识别不同的文件类型。
格式化选区
为了加快小型格式化操作,在没有编辑器选区的情况下执行格式化选区命令现在会格式化当前行。
显示错误代码
如果定义了错误代码,编辑器现在会显示问题的错误代码。错误代码显示在行尾的方括号中。
您可以在下方看到 TypeScript 显示错误代码 '2339':
集成终端
分割终端可以继承工作目录
添加了设置 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
以在任务运行前清空终端。
调试
可折叠的堆栈帧
有时调试器中的调用堆栈包含用户不感兴趣的堆栈帧(外部代码、跳过的文件等)。为了减少混乱并节省垂直空间,我们现在将这些不感兴趣的堆栈帧渲染为折叠状态。
改进的加载脚本视图
在此里程碑中,我们更新了加载脚本视图以支持文件图标,并添加了将相关资源显示为子元素的功能。调试扩展可以使用此功能来显示已转译为脚本的源文件。
以下来自 Node.js 调试器的图片显示了 JavaScript 文件的 TypeScript 源(在源映射中可用):
请注意,相关资源功能需要调试扩展选择启用。在 10 月份的版本中,只有 node-debug
对 Node.js < 8.0 版本(即“旧版”)实验性地支持此功能。
多个调试控制台
当调试多个调试会话时,我们现在在不同的调试控制台中显示它们的输出。这使得区分哪个调试会话负责哪个输出和评估变得更容易。
启动调试并在入口处停止
对于 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
。
断点控件扩展到多行
断点控件现在可以扩展到多行,使用 Shift+Enter
插入额外一行,或者直接粘贴多行条件或日志消息。这有助于编辑更复杂的条件和日志消息。
语言
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 属性
使用 CSS 预处理器(例如 PostCSS)时,您可能会使用在开发期间被编译为有效属性的无效属性。[css/less/scss].lint.validProperties
设置可以防止 VS Code 将这些无效属性标记为错误。
改进的 CSS 零单位警告
CSS 现在会检查 CSS 速记属性值中使用的零单位。例如,0px
现在会触发警告。
优雅地处理 JSON Schema 加载错误
如果 VS Code 无法下载用于 IntelliSense 或 JSON 文件错误检查的 JSON Schema,将在状态栏中显示警告。
过去,您会在编辑器中看到一个错误。
工程
持续探索 Electron 3.0
在此里程碑中,我们继续探索将 Electron 3.0.0 集成到 VS Code 中。这是一个重要的 Electron 版本,包含 Chrome 66 和 Node.js 10.x(相比我们当前使用 Chrome 61 和 Node.js 8.x 的版本有了重大飞跃)。我们计划在不久的将来向 Insiders 用户推送此更新,以收集更多反馈。如果您有兴趣提供帮助,请务必安装 VS Code Insiders 版本。
核心 VS Code 中的严格 null 检查
在此里程碑中,我们还开始了工作,以在核心 VS Code 源码中启用 TypeScript 的严格 null 检查。严格 null 检查有助于捕获许多常见的编程错误,并使程序员的意图更加明确。我们已经在 VS Code 的内置扩展中看到了使用严格 null 检查的明显好处。
由于 VS Code 的核心源码包含数千个文件,我们正在逐步采用严格 null 检查。我们首先对没有导入的文件进行严格 null 检查,现在正在迭代地在只导入其他已进行严格 null 检查的文件的文件中启用严格 null 检查。这将持续到整个代码库完成转换。
启用严格 null 检查是一项重大的工程工作,但我们认为在源代码和产品质量方面的回报是值得的。您可以在此处跟踪我们的严格 null 检查进度。
杂项
低对比度菜单栏
如果您正在使用 Ubuntu 18.10 或混合了浅色或深色上下文菜单与应用程序菜单栏主题相反的 GTK 主题,您可能会遇到难以阅读的低对比度菜单栏。
对此有两种可能的解决方法:
- 通过将设置
window.titleBarStyle
配置为custom
来尝试 VS Code 的自定义标题栏样式。 - 更改您的 GTK 主题。您可以通过安装 Gnome Tweaks 应用程序并使用先前的默认主题
Adwaita
来实现。
可以在问题 62593 中跟踪此问题的信息。
Electron 更新
在此版本中,我们将 Electron 从 2.0.9 更新到 2.0.12。
预览功能
预览功能尚未准备好发布,但已足够使用。我们欢迎您在开发阶段提供早期反馈。
引用视图
新增了一个命令查找所有引用,它显示一个专门的侧边栏视图,其中包含引用搜索结果。这补充了现有的 Peek 视图呈现方式,并提供了更稳定的引用列表。在上下文菜单中,选择查找所有引用 (),引用将显示在一个单独的视图中,就像搜索结果一样。
结果是稳定的,并且可以清除单个结果,如果您将该视图用作待办事项列表,这将非常有用。您可以使用 F4 和 ⇧F4 (Windows, Linux Shift+F4) 来导航结果,无需离开键盘。
请告诉我们您的想法,我们将在下一次更新中改进体验。
扩展开发
规范化的扩展示例
vscode-extension-samples 中的 VS Code 扩展示例已更新以保持一致性。
每个扩展示例现在包括:
- 统一的编码风格和结构。
- 一个 README 文件,通过一个简短的动画解释示例的功能。
- 每个示例中使用的
vscode
API 或贡献点列表。
捆绑扩展
捆绑的扩展加载速度更快。因此,我们创建了一个示例,展示如何使用 webpack 打包扩展。
无需发布者即可开发扩展
为了简化初始扩展开发,Yeoman 扩展生成器模板中移除了 publisher
字段。对于没有 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 上运行扩展测试。
提议的扩展 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 提供了 折叠所有 功能,并在所有选择此功能的视图中显示相同的图标和位置。
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);
}
隐藏源代码管理输入框
在 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 modules 时支持的一些关键功能
- 代码导航(转到定义、签名帮助、悬停时的符号信息)
- 代码补全
- 代码覆盖率
- 代码诊断
- 包相关命令,例如 Go: Add Import 和 Go: Browse Packages
有关更多详细信息,请阅读关于 Visual Studio Code 中 Go modules 支持 的 wiki。
Go 扩展中的其他值得注意的功能包括
- Sourcegraph 提供的 Language Server 现在也支持 Windows。
- 自动补全小部件现在显示建议符号的文档。按下 ⌃Space (Windows, Linux Ctrl+Space) 可以展开/折叠自动补全小部件的详细信息部分。
- 交叉编译时现在支持自动补全。这在你尝试使用 Go 1.11 中新的 WebAssembly 支持 时特别有用。
- 调试视图的“变量”窗格中现在提供了包含复制值、复制为表达式和添加到监视选项的上下文菜单。
- 保存文件时仅对当前文件进行 lint 检查的选项。
TypeScript TSLint 插件
新的 TypeScript TSLint 插件 使 TSLint 能够作为 TypeScript 语言服务插件工作。这些插件可以在任何使用 TypeScript 语言服务的编辑器中工作,包括 VS Code、Visual Studio、Atom 和 Sublime Text。
我们还发布了 一个扩展,它捆绑了 TypeScript TSLint 插件,这样你就不必在工作区中配置该插件。
GitHub 拉取请求
在这个里程碑中,我们改进了 GitHub 拉取请求 扩展。该扩展现在支持在编辑器内和描述页面上编辑和删除评论,并且对尚未提交的评论有更好的缓存。你可以在此处阅读该扩展的完整发行说明。
新文档
部署 Python 教程
有两个新的 Python 教程展示了如何使用 VS Code 部署 Python Web 应用程序。
调试秘籍
有新的 VS Code 调试秘籍,适用于 PHP、Python 和 Ruby on Rails。
重要修复
- 54214: vscode 中的 startDebugging 方法在构建失败时仍然返回 true
- 57289: 设置 UI 在重新加载时应记住其搜索内容
- 57321: 设置搜索没有结果时显示“清除搜索”和“清除筛选”按钮
- 59305: 在 .code-workspace 文件中显示“打开工作区”按钮
- 59430: 不再能在 node 内部文件中设置断点
- 61711: 所有断点均未验证
- 62085: debugAdapter 未收到 PauseRequest
- 62346: 调试会话初始化时无法取消
- 62354: Node 10.12 后远程调试问题
感谢
最后但同样重要的是,向以下帮助 VS Code 变得更好的朋友们表示衷心的*感谢!*
对 vscode
的贡献
- Agustín Rodríguez (@agurodriguez)
- Ahmed Atito (@atitoa93)
- Robert Balent (@balent)
- Anurag Banerjee (@banuragprdxn): 重写/更改文案 PR #60996
- Brett Larney (@bblarney): 修复文档拼写错误: 'guardeed' -> 'guaranteed' PR #61186
- @benjamenhogben
- Alex Boyko (@BoykoAlex): 根据模式条件性地打开 http/https 的符号处理程序 PR #61509
- Brendon Crawford (@brendoncrawford): 修复在 Fedora 上因错误的 OS 检查导致的测试错误 PR #60917
- Chris Sinco (@c5inco): 将字体栈对齐到最新版本 PR #61419
- Emil Hessman (@ceh): 移除重复的 switch case PR #59677
- Joshua (@cookiej91): 修复评论中的拼写错误 PR #61909
- Daksh (@DakshMiglani)
- Dick van den Brink (@DickvdBrink): 修复在 debian 8 上安装时的警告 PR #59406
- Jonathan Dierksen (@dierksen): 为 Swift 语法使用 textmate/swift.tmbundle。 PR #59639
- Douglas Gabriel (@douglasgabriel): 从 'build/monaco/api.ts' 中移除死代码 PR #60024
- Frieder Bluemle (@friederbluemle): 修复 Markdown 文件中的空白错误 PR #62299
- Gary Mathews (@garymathews): 修复资源管理器输入框对齐问题 PR #60539
- Guillaume Poussel (@gpoussel): 修复快速打开视图上的 'null' 工具提示 PR #62268
- Len Smith (@ignu): 为 macOS 添加 window.nonNativeFullscreen 选项 PR #55267
- Ilya Biryukov (@IlyaBiryukov)
- joan xie (@infinnie)
- Matt Q (@irrationalRock): Emmet 语法配置 tag_nl 不产生额外空格 PR #60108
- John Graham (@J-Graham): 在面包屑资源管理器中中键点击文件会打开… PR #59797
- Jason Bright (@jgbright): 在 .code-workspace 文件中添加打开工作区按钮 PR #59586
- Kai Wood (@kaiwood): 修复代码注释中的拼写错误 PR #62282
- karan verma (@karanisverma): enablePreview 描述更改 PR #61603
- Karl Schärlund (@kscharlund): 支持奇数缩进大小(修复 #17639) PR #59568
- Kyra (@kyranet): snippets: 添加 setInterval 片段 PR #61351
- Samuel Attard (@MarshallOfSound): 启用 mojave 暗黑模式支持 PR #59742
- Maksym Dogadailo (@mdogadailo): 分割视图中的项目在没有分隔线边框时无法拖动 PR #59830
- Josip Medved (@medo64): 纠正 minLength 和 maxLength 验证消息 PR #61556
- Prem Kagrani (@michaelscof): 修复了拼写错误和单词 PR #61171
- Michael Kopf (@Michel73): 预填充快速打开 PR #55752
- Mine Starks (@minestarks): 支持配置 TypeScript 插件 PR #61756
- Matthew J. Clemente (@mjclemente): 修复 vscode 命名空间 API 中的断开链接 PR #61651
- mnikn (@mnikn): 在弹出菜单中添加接受所有传入或当前更改的选项。 PR #53649
- Matthew Knox (@mrkno): 问题视图筛选器有巨大的延迟 PR #60080
- Niclas van Eyk (@NiclasvanEyk): 将 #57321 中的操作添加到“未找到设置”消息中 PR #59739
- Nick Schonning (@nschonni)
- Olivier Truong (@oltruong): 修复拼写错误 PR #62196
- @orangegrove1955: 纠正了评论中的拼写错误 PR #61216
- Karthikayan (@ParkourKarthik): 在 requestItem 中包含优先级并添加到请求队列 PR #60582
- Antoine (@Poke1650): 在评论中添加缺失的句号。 PR #61827
- Maxime Guerreiro (@PunKeel): 从文档中移除重复的 "the"。 PR #59897
- Roni Hacohen (@ronihcohen): 为片段格式选项添加 Pascal case PR #59758
- Roy Tang (@roytang): 格式化选区的键盘快捷键将… PR #61206
- Ryan Clarke (@ryanclarke): 为面包屑符号树添加排序选项 PR #61420
- Sankt Petersbug (@sankt-petersbug): 修复 Markdown 预览错误地编码链接 PR #61530
- Prabhanjan S Koushik (@skprabhanjan)
- Tharun Jose (@tharunjose): 更新 README.md PR #60100
- Marcus Farkas (@ToothlessGear): 添加设置以允许禁用替换预览 PR #60153
- Stepan Usatyuk (@usaatyuk): 重新加载时保留设置搜索 PR #59704
- Alexander (@usernamehw)
- Varan Shukla (@varanshukla): 修复了拼写错误 PR #61789
- Jeremy Shore (@w9jds)
- Konrad Borowski (@xfix): 在非内置语言列表末尾添加分号 PR #62284
- Literallie (@xxyy): 减少 JSON 模式解析问题的错误消息干扰 PR #60219
- sk (@yeahok): 修复 R 图标大小 PR #59891
- Yisrael Veller (@YisraelV): 多行断点小部件 - 实现 #56521 PR #61859
- Richard Harlen (@zimbo73): 更新 src/vs/workbench/services/files/electron-browser/fileService.ts PR #62296
对 vscode-eslint
的贡献
- Loune Lam (@loune): 添加抑制当前行规则/抑制文件规则快速操作/显示文档 PR #530
- Nguyen Long Nhat (@torn4dom4n): 更新变量参考 #553
- David Broder-Rodgers (@broder): 修复 eslintServer 中的一些拼写错误 PR #555
对 vscode-languageserver-node
的贡献
- Vic Nightfall (@Victorious3): 异常中的拼写错误 PR #419
- Chris Wendt (@chrismwendt): 修复 README 中的示例 PR #428
- Thibaud Colas (@thibaudcolas): 更新 lockfile 中的版本以匹配 package.json PR #431
对 language-server-protocol
的贡献
- Tobias Bieniek (@Turbo87): 概述:修复示例响应 id PR #575
- Jonathan Yee (@jonyeezs): Readme:使用逗号使列表更易读 PR #578
- Lewis Cowper (@lewiscowper): 将标题转换为超链接(网站) PR #577
- Remy Suen (@rcjsuen): 纠正请求名称中的拼写错误 PR #589
- @fghzxm: 修复错误的括号 PR #590
对 vscode-html-languageservice
的贡献
对 vscode-css-languageservice
的贡献
- Will Bender (@Ragnoroct): 在 CSS 选择器悬停时显示特异性。 PR #129
- Richard Samuelson (@ricsam): 移除 package-lock.json PR #125
- Thomas Lent (@tlent)
对 vscode-json-languageservice
的贡献
- Debasish Sahoo (@debck): 向 readme 添加许可证徽章 PR #31
- Flo Edelmann (@FloEdelmann): 不在数组和对象完成中换行 PR #29
- Levertion (@Levertion): 使用 'if' 创建补全 PR #27
- Literallie (@xxyy)
对 debug-adapter-protocol
的贡献
- Igor Kulaychuk (@ayuckhulk): 将 NetCoreDbg 添加到 Debug Adapter Protocol 实现者列表 PR #9
- Mario Loriedo (@l0rd): 将 Theia 添加到 Dev Tools 中 PR #10
- Sven Efftinge (@svenefftinge): Theia 由 Eclipse 社区维护 PR #11
对 vscode-debugadapter-node
的贡献
对 vscode-chrome-debug-core
的贡献
对 vscode-generator-code
的贡献
- Diogo Simões (@s1moe2): 在安装依赖项的模板中添加了 npm/yarn 选项 PR #133
- Randy (@TheQwerty): 修复拼写错误:commmand -> command PR #140
对 vscode-vsce
的贡献
- Fabio Spampinato (@fabiospampinato): 添加了对
VSCE_IGNORE_KEYWORDS_LENGTH
环境变量的支持 PR #298
对 vscode-extension-samples
的贡献
- Eunice Park (@eunicode): 向 theme-sample 添加 README PR #115
对 vscode-recipes
的贡献
- Alistair Chapman (@agc93): 添加调试 Cake 脚本的秘籍 PR #168
- Akshay Avinash (@akshay11298)
- @amiya-1998
- André Vargas (@andrevargas): 添加调试 Gatsby.js 的说明 PR #160
- Taylor (@ATaylor1181): 修复 Ruby On Rails Readme 中的拼写错误 PR #153
- Calvin Wong (@calvwng): 澄清 launch.json 步骤并添加 Nuxt.js 调试链接 PR #147
- Cameo Langford (@cameo-myob): 更新 Ruby on Rails 调试以修复拼写错误 PR #151
- Cody Condon (@codycc): 修复 README 中的拼写错误 PR #139
- @guymcmanusgithub: 清理了 README 前几段的语言… PR #154
- John Hinson (@jlhinson): 修复了 Meteor 秘籍中的几个语法和拼写问题。 PR #133
- Kirk Clemons (@kcclemo): 各种语法更改。 PR #161
- Maddie Kreamer (@maddiekreamer): 拼写错误已修复 PR #167
- Nisaruj (@nisaruj): 修复一些拼写问题 PR #138
- Luiz Machado (@odahcam): 添加 PHP 说明 PR #136
- Peter Blazejewicz (@peterblazejewicz): Angular cli 秘籍微小更改 PR #134
- @qhieu45: 向 README.md 和 launch.json 添加 "skipFiles" 选项 PR #164
- Robin Cher (@robincher): PR - 添加 Mocha 默认测试选项 PR #148
- Sam Warner (@sjwarner-bp): 更新 Docker-TpeScript README.md 并更改语法 PR #149
对 inno-updater
的贡献
- @edawine: 修复 strings.rs 中不完整的错误消息 PR #4
- Isaac Whitfield (@whitfin): 轮询退出时移除不必要的分配 PR #6
- Jared De La Cruz (@jareddlc): 使日志记录更一致 PR #7
对 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.