2018 年 11 月 (版本 1.30)
更新 1.30.2:此更新解决了这些问题。
更新 1.30.1:此更新解决了这些问题。
下载:Windows:x64 | Mac:Intel | Linux 64 位:deb rpm tarball | 32 位:deb rpm tarball
欢迎使用 Visual Studio Code 2018 年 11 月版本。此版本中有许多重大更新,我们希望您会喜欢,其中一些主要亮点包括
- 多行搜索改进 - 无需使用正则表达式即可轻松创建多行搜索模式。
- Linux 上的自定义标题栏 - 自定义标题栏和菜单栏现在是 Linux 上的默认设置。
- 引用视图 - 查找所有引用视图包括最近搜索的历史记录。
- 代码片段注释变量 - 代码片段变量插入每种语言的正确注释。
- JS/TS 回调显示改进 - 现在您可以查看匿名回调的上下文。
- JSDoc Markdown 高亮显示 - 包括 JSDoc 中 Markdown 代码块的语法高亮显示。
- 简化的初始调试配置 - 更好的默认设置和用于初始启动配置的快速选择 UI。
- 在打开文件夹时运行任务 - 配置在您首次打开项目文件夹时运行的任务。
- 选择扩展版本 - 安装 Marketplace 扩展的早期版本。
如果您想在线阅读这些发行说明,请访问 更新,地址为 code.visualstudio.com。
发行说明按与 VS Code 关注领域相关的以下部分进行排列。以下是一些其他更新
- 工作台 - 菜单滚动和改进的溢出处理,一键打开 settings.json。
- 语言 - JS/TS 重命名现在可以处理解构,添加缺失的 'new' 快速修复。
- 调试 - 删除调试控制台,直接从 VS Code 进程资源管理器进行调试。
- 任务 - 清除任务终端,用于任务变量的用户输入,重新运行上次任务命令。
- 扩展开发 - 跳转到声明支持,新的签名帮助上下文。
Insiders:想尽快看到新功能吗?您可以下载每日 Insiders 构建版本,并尝试最新的更新(只要它们可用)。有关最新的 Visual Studio Code 新闻、更新和内容,请在 Twitter 上关注我们 @code!
工作台
多行搜索输入
上个月,我们添加了对多行搜索的支持。这个月,我们改进了搜索 UX,使其更易于使用。现在,您可以使用多行文本进行搜索,而无需编写正则表达式。在搜索框中键入 Shift+Enter
以插入换行符,搜索框将增长以显示您的完整多行查询。您还可以从编辑器中复制和粘贴多行选择到搜索框中。
Linux 上的默认自定义标题栏和菜单栏
在多个版本中,我们一直在通过自定义标题栏和菜单栏改进 Windows 上菜单的可访问性和主题化。虽然它在 Linux 上是可选的,但在本版本中,它现在将默认启用。
要使用本机标题栏,您可以将 window.titleBarStyle
设置为 native
。
滚动菜单
启用自定义菜单栏后,菜单被限制在 VS Code 窗口中呈现。以前,菜单可能会被窗口的边界截断。现在,通过使上下文菜单在需要时可滚动来解决此问题。
菜单栏溢出菜单
当您的窗口宽度不足以容纳菜单栏和窗口标题时,菜单栏还有一个新的溢出菜单 (...)。
移动设置编辑器操作
设置编辑器操作(打开 settings.json、显示已修改的设置等)已从设置编辑器内的 ... 菜单移动到编辑器标题栏。这使它们与其他编辑器类型保持一致,并且现在只需单击大括号 {}
按钮即可打开 settings.json。键盘快捷键编辑器也进行了相同的更改。
引用视图
引用视图已得到改进,不再是预览功能。现在有两个命令
- 查找所有引用,它会打开引用视图。
- 查看引用,它会在查看视图中打开引用。
引用视图在启动时是隐藏的,但一旦使用过就会保持可见。如果所有搜索结果都被清除,它会显示以前搜索的历史记录。
现在视图顶部有一个结果摘要,并且有一个上下文菜单来清除和复制结果。修复了许多错误,整体稳定性得到了提高。
编辑器
代码片段注释变量
有新的代码片段变量可以插入行或块注释,遵守当前语言。对于块注释,使用 BLOCK_COMMENT_START
和 BLOCK_COMMENT_END
,否则使用 LINE_COMMENT
。
以下代码片段在 JavaScript 文件中插入 /* Hello World */
,在 HTML 文件中插入 <!-- Hello World -->
{
"hello": {
"scope": "javascript,html",
"prefix": "hello",
"body": "$BLOCK_COMMENT_START Hello World $BLOCK_COMMENT_END"
}
}
声明与定义
到目前为止,VS Code 提供了用于显示符号定义的命令,例如转到定义和查看定义。这没有考虑到这样一个事实:某些语言在符号的声明和定义之间区分得比其他语言更严格。我们已经修复了这个问题,现在有命令 转到声明和查看声明来获取符号的声明。
诸如转到声明之类的语言功能所需的数据由扩展计算,并且有一个新的 API,您可以在扩展开发部分中阅读它。
平滑光标动画
有一个新设置 editor.cursorSmoothCaretAnimation
,它会在光标移动时启用过渡动画。
Git 集成
更改默认单击操作
您现在可以更改单击源代码管理视图中的文件时的默认操作。默认情况下,VS Code 将打开差异视图,但通过将 git.openDiffOnClick
设置为 false
,该文件将在常规编辑器中打开。
提交时推送或同步
一个新的设置 git.postCommitCommand
允许您在提交后推送或同步您的存储库。可用值为 none
(默认值)、push
和 sync
。
语言
TypeScript 3.2
VS Code 现在包含 TypeScript 3.2.2。此版本带来了一些令人兴奋的新语言功能,包括 bind
、call
和 apply
的严格类型,以及 BigInt 支持。TypeScript 更新还修复了一些重要的错误,并包括新的工具功能和改进
改进的 JavaScript 和 TypeScript 回调显示
JavaScript 和 TypeScript 匿名回调以前在“大纲”视图、“面包屑”视图和文档符号列表中都标记为 <function>
。这使得不可能分辨出您真正想要的是哪个函数
使用 TypeScript 3.2+,VS Code 现在显示更多回调函数的上下文,以便您可以将它们区分开来
重命名可以正确处理 JS/TS 解构
重命名现在可以处理 JavaScript 和 TypeScript 解构,并在需要时引入别名
添加缺失的 new JS/TS 快速修复
在实例化类时忘记了 new
?TypeScript 3.2 带来了一个新的快速修复来帮助您
此快速修复在 TypeScript 和类型检查的 JavaScript 中均有效。
JS/TS 路径建议的文件图标
在 VS Code 1.29 中的工作基础上,IntelliSense 小部件现在为 JavaScript 和 TypeScript 路径建议显示文件图标
JSDoc 注释中 Markdown 元素的高亮显示
现在,JSDoc 块内的围栏代码块和其他 Markdown 元素都进行了语法高亮显示
此内联高亮显示更好地匹配了 VS Code 对悬停和 IntelliSense 文档的 JSDoc 的 Markdown 渲染。
调试
简化的初始调试配置
在这个里程碑中,我们研究了如何简化我们最受欢迎的调试扩展生成的 launch.json
文件。我们的目标是让用户更容易开始和配置调试。这意味着隐藏不必要的启动配置属性,并在生成初始 launch.json
时使用“快速选择”UI 来获得更好的人机交互。有关此工作的更多详细信息,请参见问题 #62851。
调试控制台可以被删除
在上一个里程碑版本中,当调试多个调试会话时,我们会显示多个调试控制台,每个会话对应一个。现在,当相应的会话不再活动时,可以通过清除该调试控制台的内容来删除这些控制台。我们没有添加用于管理调试控制台生命周期的显式命令,因为我们认为当前的方法更直观且更易于使用。
改进了调试配置的用户输入变量
我们改进并推广了launch.json
变量的概念,该变量会提示用户输入。您可以在任务部分中找到详细信息。
从进程资源管理器进行调试
现在可以使用VS Code进程资源管理器(开发者: 打开进程资源管理器)中的调试上下文菜单操作来启动对Node.js进程的调试。
下面您可以看到附加到从集成终端启动的Node.js进程。
Node/Chrome 调试
smartStep
现在默认启用
在几个版本之前,我们更改了 smartStep
的行为,使其更加有用。使用 smartStep
会带来更好的调试体验,尤其是对于 TypeScript,因此我们已将行为更改为始终启用。
localRoot
的自动默认值
在Node.js远程调试场景中,调试配置属性 localRoot
现在自动默认为 ${workspaceFolder}
,只需要指定 remoteRoot
。
任务
在文件夹打开时运行
如果您有一个在打开文件夹时始终运行的任务,则可以配置其 "runOn"
属性,使其在打开该文件夹时自动运行。我们发现这对于确保没有人破坏我们在VS Code存储库中新的严格空值检查非常有用。通过添加 "runOn": "folderOpen"
,每个允许任务自动运行的人都会在违反严格的空值检查时收到标记。
{
"type": "npm",
"script": "strict-null-check-watch",
"label": "TS - Strict Null Checks",
"isBackground": true,
"problemMatcher": {
"base": "$tsc-watch",
"owner": "typescript-strict-null",
"applyTo": "allDocuments"
},
"runOptions": {
"runOn": "folderOpen"
}
}
清除任务终端
要在执行任务之前清除终端,您可以使用 "clear": true
配置任务的 presentation
选项。
{
"type": "gulp",
"task": "tslint",
"label": "Run tslint",
"presentation": {
"clear": true
}
}
重新运行任务
现在可以使用任务: 重新运行上次任务命令 (workbench.action.tasks.reRunTask
) 重新运行任务。默认情况下,重新运行的任务将重新评估其运行变量,包括其输入。要使用先前运行中已评估的变量,请配置 "reevaluateOnRerun"
选项
{
"type": "gulp",
"task": "tslint",
"label": "Run tslint",
"runOptions": {
"reevaluateOnRerun": false
}
}
改进了任务和调试配置的用户输入变量
长期以来,VS Code一直支持在 tasks.json
和 launch.json
中通过 ${variableName}
语法进行变量替换。
对于 launch.json
,甚至可以使用提示用户输入的变量(例如,${command:pickNodeProcess}
,它会打开一个基于快速选择的进程选择器)。此功能不适用于 tasks.json
,并且基于命令的变量也存在其他限制(请参阅问题 #9297、#9544 和 #30588)。
在此里程碑版本中,用户输入变量已得到通用化和改进,现在可用于 launch.json
**和** tasks.json
。这项工作还将命令语法引入了 tasks.json
。
对于用户输入变量,我们引入了一个新的变量类别 input
,它产生以下语法:${input:variableName}
。这种简单的语法不足以向用户呈现有意义的 UI,因此我们在 launch.json
和 tasks.json
中引入了一个新的 inputs
部分,其中指定了其他配置属性。
使用 Angular CLI 的示例
以下是支持的属性列表
id
- 使用这些属性的相应变量名。type
- 用户输入小部件的类型。在此版本中,支持promptString
(用于字符串输入框)和pickString
(用于字符串快速选择)。description
- 向用户显示的描述性文本。default
- 如果用户只按 Enter 键,则使用的默认值。
第一个示例演示如何在任务配置 (tasks.json
) 中使用用户输入变量
{
"tasks": [
{
"label": "Echo input",
"type": "shell",
"command": "echo ${input:echoPrompt}"
}
],
"inputs": [
{
"id": "echoPrompt",
"description": "Please enter a value",
"default": "default echo text",
"type": "promptString"
}
]
}
另一个示例显示用于在调试配置 (launch.json
) 中在两个选项之间进行选择的用户输入变量
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/${input:pickProgram}"
}
],
"inputs": [
{
"id": "pickProgram",
"description": "Select client or server",
"type": "pickString",
"options": ["client.js", "server.js"],
"default": "client.js"
}
]
}
我们计划将**用户输入变量**与现有的基于命令的变量相结合,以便扩展可以贡献用户输入变量。
扩展
安装以前的版本
如果当前版本存在问题,您现在可以回退到扩展的以前版本。VS Code 在已安装的扩展上提供 安装另一个版本 操作,该操作会显示可用版本的下拉列表。
无响应的扩展主机
VS Code 在单独的 Node.js 进程(扩展主机)中运行扩展。这会将扩展代码与 VS Code 本身隔离,但它不会将不同的扩展彼此隔离。由于 JavaScript 的单线程性质,扩展可能会有意或无意地垄断扩展主机线程,阻止所有其他扩展,并使操作显得无响应。
VS Code 现在监视扩展主机,当它变得无响应时,VS Code 会开始分析扩展主机。当某个扩展被确定为导致无响应的原因时,会显示一个最小化的通知,鼓励用户提交问题
作为用户,请注意状态栏中的铃铛图标,因为通知很小。作为扩展作者,如果您收到无响应问题,请查看此指南,其中解释了发生的情况以及如何打开附加到该问题的 CPU 分析文件。
预览功能
预览功能尚未准备好发布,但功能足以使用。我们欢迎您在这些功能开发过程中提供早期反馈。
HTML 自定义标签/属性支持
新的 html.experimental.custom.tags
和 html.experimental.custom.attributes
设置允许您指定 VS Code 在启动期间加载的标签和属性列表。当您编辑 HTML 文件时,VS Code 将为这些标签和属性提供自动完成和悬停。这对于Web 组件 非常有用,例如
您可以打开 octref/web-components-examples 存储库来测试此功能。此功能是预览版,设置名称和 JSON 格式都可能会更改。
如果您有反馈或功能请求,请在问题 #62976 中跟进。
扩展的网络代理支持
有一个实验性设置 Http: Proxy Support
用于为所有扩展启用网络代理支持。虽然我们仍在处理一些细节,但我们邀请您尝试一下,如果它对您有效,请告诉我们。(请注意,启用网络代理支持目前会破坏 GitHub Pull-Request 扩展的登录。)
将其设置为 override
应该最适合大多数设置,当效果不佳时,请尝试 on
进行比较。
扩展开发
跳转到声明
我们添加了一个 DeclarationProvider
接口,扩展可以实现该接口来支持跳转到声明功能。声明提供程序应返回作为符号声明的位置。当为同一文件注册多个提供程序时,它们的结果会合并。
签名帮助上下文
SignatureHelpProviders 现在采用一个 context
参数,该参数提供有关如何触发签名帮助的信息。上下文包括
- 如何触发签名帮助(触发字符、命令或文档上下文更改)。
- 导致触发签名帮助的字符。
- 触发签名帮助时,是否先前显示签名帮助?
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
vscode.languages.registerSignatureHelpProvider(
'markdown',
new (class implements vscode.SignatureHelpProvider {
provideSignatureHelp(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken,
context: vscode.SignatureHelpContext
): vscode.ProviderResult<vscode.SignatureHelp> {
// Return fake signature help result
const sigHelp = new vscode.SignatureHelp();
sigHelp.activeParameter = 0;
sigHelp.activeSignature = 0;
sigHelp.signatures = [new vscode.SignatureInformation(getLabel(context))];
return sigHelp;
}
})(),
{
triggerCharacters: ['('],
retriggerCharacters: [',']
}
);
}
function getLabel(context: vscode.SignatureHelpContext): string {
const parts = [];
// How was signature help triggered
switch (context.triggerKind) {
case vscode.SignatureHelpTriggerKind.Invoke:
parts.push('invoke');
break;
case vscode.SignatureHelpTriggerKind.ContentChange:
parts.push('change');
break;
case vscode.SignatureHelpTriggerKind.TriggerCharacter:
parts.push('character');
break;
}
// The character (if any) that caused signature help to be triggered
if (context.triggerCharacter) {
parts.push(context.triggerCharacter);
}
// Was signature help already showing when it was triggered again?
if (context.isRetrigger) {
parts.push('retrigger');
}
return parts.join(' ');
}
此外,现在可以使用一组不同的触发字符和重新触发字符注册 SignatureHelpProviders。只有在签名帮助已经显示时,重新触发字符才会触发签名帮助。
以下是上面实际操作中的 SignatureHelpProvider
配置贡献的 TypeScript 服务器插件
现在,扩展可以通过 VS Code 内置 TypeScript 扩展提供的 API 将配置数据发送到贡献的 typescript 服务器插件
// In your VS Code extension
export async function activate(context: vscode.ExtensionContext) {
// Get the TS extension
const tsExtension = vscode.extensions.gettsExtension(
'vscode.typescript-language-features'
);
if (!tsExtension) {
return;
}
await tsExtension.activate();
// Get the API from the TS extension
if (!tsExtension.exports || !tsExtension.exports.getAPI) {
return;
}
const api = tsExtension.exports.getAPI(0);
if (!api) {
return;
}
// Configure the 'my-typescript-plugin-id' plugin
api.configurePlugin('my-typescript-plugin-id', {
someValue: process.env['SOME_VALUE']
});
}
TypeScript 服务器插件通过 onConfigurationChanged
方法接收配置数据
// In your TypeScript plugin
import * as ts_module from 'typescript/lib/tsserverlibrary';
export = function init({ typescript }: { typescript: typeof ts_module }) {
return {
create(info: ts.server.PluginCreateInfo) {
// Create new language service
},
onConfigurationChanged(config: any) {
// Receive configuration changes sent from VS Code
}
};
};
此 API 允许 VS Code 扩展将 VS Code 设置与 TypeScript 服务器插件同步,或动态更改插件的行为。请查看TypeScript TSLint 插件 和 lit-html 扩展,了解此 API 在实践中的使用方式。
自定义视图
现在,用于向视图添加全部折叠操作的建议 API 已经稳定。
树项描述
现在,您可以使用 TreeItem
中的 description
属性向树项添加描述。如果树项由资源支持,您还可以通过将 description
设置为 true
来让 VS Code 从资源中派生描述。
/**
* A human readable string which is rendered less prominently.
* When `true`, it is derived from [resourceUri](#_TreeItem.resourceUri), and when `falsy`, it is not shown.
*/
description?: string | boolean;
调试 API
更丰富的 DebugSession
DebugSession
API 现在会显示工作区文件夹和已解析的调试配置。已解析意味着所有变量都已替换,并且特定于平台的属性部分已针对匹配的平台“展平”,并且对于不匹配的平台已删除。
断点唯一 ID
现在,Breakpoint
类会公开一个在其整个生命周期内不会更改的唯一 ID(id
)。
用于控制调试适配器创建的最终版 API
在此里程碑中,我们最终确定了用于控制调试适配器创建的扩展 API。该 API 使用一个新的 DebugAdapterDescriptorFactory
,它必须使用 vscode.debug.registerDebugAdapterDescriptorFactory
为特定调试类型注册。该工厂具有一个名为 createDebugAdapterDescriptor
的方法,VS Code 在需要调试适配器时会调用该方法。由于调试会话作为参数传递(并且该会话现在会公开工作区文件夹和已解析的配置),因此在要求创建调试适配器时,实现可以访问完整的上下文。createDebugAdapterDescriptor
必须返回一个对象,该对象向 VS Code 描述如何创建和/或连接到调试适配器。
DebugAdapterExecutable
描述符使 VS Code 将调试适配器作为每个会话的外部进程启动,并通过 stdin/stdout 与之通信。选项属性包可以指定工作目录和环境变量。DebugAdapterServer
使 VS Code 连接到处理多个会话并通过套接字进行通信的服务器进程。
请注意:随着此 API 的最终确定,我们将弃用旧的(建议的)API DebugConfigurationProvider.debugAdapterExecutable
和非常旧的基于命令的方法(贡献点 Debuggers
,属性:adapterExecutableCommand
)。请迁移到这些 API 之外,因为我们计划在下一个版本中删除对它们的支持。
此代码片段显示了如何使用此 API 来运行嵌入在其包含的扩展中的调试适配器
let server: Net.Server;
vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor(session: DebugSession, executable: DebugAdapterExecutable) {
// start server on launch of first debug session
if (!server) {
// start listening on a random port
server = Net.createServer(socket => {
const s = new MockDebugSession();
s.setRunAsServer(true);
s.start(<NodeJS.ReadableStream>socket, socket);
}).listen(0);
}
// make VS Code connect to debug server instead of launching debug adapter
return new DebugAdapterServer(server.address().port);
}
});
最终版调试适配器跟踪器 API
在此里程碑中,我们最终确定了用于跟踪 VS Code 和调试器扩展之间使用的 调试适配器协议 的扩展 API。该 API 使用一个新的 DebugAdapterTrackerFactory
,它必须使用 vscode.debug.registerDebugAdapterTrackerFactory
为调试类型注册。该工厂具有一个名为 createDebugAdapterTracker
的方法,VS Code 在开始与调试适配器通信之前会调用该方法。createDebugAdapterDescriptor
必须返回一个 DebugAdapterTracker
的实现(或者返回 undefined
以防止跟踪)。
此代码片段显示了如何使用此 API 来记录 Node.js 调试器的调试适配器协议
vscode.debug.registerDebugAdapterTrackerFactory('node', {
createDebugAdapterTracker(session: DebugSession) {
return {
onWillReceiveMessage: m => console.log(`> ${JSON.stringify(m, undefined, 2)}`),
onDidSendMessage: m => console.log(`< ${JSON.stringify(m, undefined, 2)}`)
};
}
});
为确保在需要时激活扩展,可以在 package.json
中使用激活事件 onDebugAdapterProtocolTracker:<debug type>
。如果省略了调试类型,则会为所有调试类型激活扩展。
{
"activationEvents": ["onDebugAdapterProtocolTracker:node"]
}
调试适配器协议
runInTerminal
响应的新 shellProcessId
属性
如果调试适配器需要在终端中运行目标,则可以使用 DAP runInTerminal
请求。此请求可以选择返回目标进程的 processId
,但实际上没有任何前端实现能够提供此信息。因此,我们引入了一个新的属性 shellProcessId
,用于返回终端 shell 的进程 ID(这更容易确定)。
剪贴板
剪贴板 API 已最终确定,现在可以供所有扩展使用。它允许扩展将字符串复制和粘贴到操作系统剪贴板。
完成项
当插入跨越多行的完成项时,VS Code 会调整缩进。这并非总是需要的,因此我们添加了 vscode.CompletionItem.keepWhitespace
来控制此行为。
符号提供程序的标签
注册文档符号提供程序时,现在可以提供标签 (DocumentSymbolProviderMetadata
)。当文档具有多个符号提供程序时,此标签将显示在面包屑和“大纲”视图中。
建议的扩展 API
每个里程碑都带有新的建议 API,扩展作者可以尝试使用它们。与往常一样,我们非常希望收到您的反馈。以下是您试用建议 API 必须执行的操作
- 您必须使用 Insiders 版本,因为建议的 API 会频繁更改。
- 您的扩展的
package.json
文件中必须有以下行:"enableProposedApi": true
。 - 将 vscode.proposed.d.ts 文件的最新版本复制到您的项目中。
请注意,您不能发布使用建议 API 的扩展。我们可能会在下一个版本中进行重大更改,并且我们永远不想破坏现有扩展。
自定义视图支持消息文本
树视图消息
现在,您可以使用 TreeView
中的 message
属性在树视图中设置消息。
/**
* An optional human-readable message that will be rendered in the view.
*/
message?: string | MarkdownString;
智能选择和扩展
我们添加了一个建议的 API 来支持智能选择功能。今天,当您运行“**扩展选择**”或“**收缩选择**”命令时,选择范围是基于弱启发式算法计算的。在努力改进该启发式算法的同时,我们也希望扩展作者参与进来。因此,我们为 SelectionRangeProvider
添加了一个建议的 API。
工程
删除 WinJS-Promise
当 VS Code 启动时,JavaScript 与今天的情况大不相同。例如,没有 原生 Promise,当时团队决定使用 WinJS.Promise
。快进到今天,情况有所不同:原生 Promise 是真实存在的,而 WinJS.Promise
已经过时。
因此,我们正在迁移到 WinJS.Promise
之外。由于 API 和运行时行为的差异,这并非易事。我们最初有大约 10000 个对 WinJS.Promise
的引用,现在已减少到 1471 个,其中约 500 个是实例化,而不是纯类型注释。我们相信我们很快就会完成这个史诗般的旅程!
继续探索 Electron 3.0
在此里程碑中,我们继续探索将 Electron 3.0.0 打包到 VS Code 中。这是一个主要的 Electron 版本,它带有 Chrome 66 和 Node.js 10.x(与我们当前的 Chrome 61 和 Node.js 8.x 版本相比,是一个巨大的飞跃)。我们计划在 12 月将更新推送给我们的 Insiders 用户,以收集更多反馈。如果您有兴趣提供帮助,请务必安装 VS Code Insiders。
社区问题跟踪
长期以来,社区一直定期帮助我们进行问题跟踪。随着提交的问题越来越多(目前平均每天 70 个),我们已开始邀请最活跃的社区成员为他们正在处理的问题添加特定标签。由于 GitHub 没有细粒度的权限,我们正在使用我们的问题机器人来提取某些评论并为它们添加标签。请参阅下面的感谢部分了解致谢。
严格的 Null 检查
我们对 VS Code 主要代码库进行严格的 Null 检查的工作仍在继续。我们现在正在严格地 Null 检查大约 800 个文件,并且将继续这项工作,直到覆盖整个代码库。
您可以跟踪此工程工作并了解有关该过程的更多信息 问题 #60565。
扩展贡献
我们的团队维护或贡献了许多 VS Code 扩展。本月最值得注意的是
GitHub 拉取请求
在此里程碑中,我们致力于改进 GitHub 拉取请求扩展。
以下是一些新功能
- 直接从本地分支创建拉取请求。
- 在已签出的拉取请求上建议一系列源代码更改。
- 在拉取请求描述页面上查看状态检查信息。
您可以在 vscode-pull-request-github 版本中阅读该扩展的完整发行说明。
值得注意的修复
- 37929:创建调试环境下拉菜单时不激活调试器
- 60187:调试器不会在 jest 测试中命中断点
- 61590:使“设置”和“按键绑定”编辑器在显示编辑器操作时保持一致
- 62370:改进编辑器中的诊断悬停
- 62500:将“运行到光标”添加到命令面板
- 62778:居中布局无法恢复大小
- 63618:调试 64 位 Electron 2.0.13 失败,并显示错误“无法连接到运行时进程,10000 毫秒后超时”。但在 32 位 Electron 上成功
感谢
最后但并非最不重要的是,非常感谢以下为使 VS Code 更加出色而做出贡献的朋友!
对我们问题跟踪的贡献
对 vscode
的贡献
- Adrien Becchis (@AdrieanKhisbe):语法注入 - 考虑更广泛的作用域 PR #50534
- David Bailey (@davidbailey00):从 URL 处理程序桌面文件中删除 StartupWMClass PR #63750
- Anuj (@desaianuj):使用 representation 而不是 presentation PR #63477
- Donald Pipowitch (@donaldpipowitch):添加了 .hintrc 并将 .babelrc 移动到 jsonc 语法 PR #63759
- Eric Amodio (@eamodio)
- Alexandr Fadeev (@fadeevab):根据最新的语法更新 makefile 着色测试 PR #61961
- Guillaume Poussel (@gpoussel): 修复 #62278: IPv6 链接支持 PR #62293
- Aleksandr Filatov (@greybax): 修复问题 #46816 PR #60404
- Napoleon Oikonomou (@iamnapo): 如果存在 README,则显示 README 而不是欢迎页面 PR #60061
- Raul Humberto Lopez Lopez (@iBlackShadow): 当通过选项更改触发搜索时,向搜索历史添加条目 PR #61993
- Andrii Dieiev (@IllusionMH): 控制搜索结果中操作对齐方式的选项 PR #63457
- joan xie (@infinnie): 菜单水平对齐 PR #61454
- Matt Q (@irrationalRock): 修复 #34345 - 添加将多个光标添加到文件末尾/文件顶部的命令 PR #50312
- Jeffrey (@JeffreyCA)
- @jokurz: 自动检测 ksh 脚本为 shellscript PR #62838
- karan verma (@karanisverma): 修复: #55946 添加了注释代码段变量 PR #63572
- Krish De Souza (@Kedstar99): 修复 updateService.linux.ts 中的 checkForSnapUpdate 以正确识别 snap 版本 PR #63716
- Benjamin Lannon (@lannonbr): 添加了将扩展信息输出到剪贴板的功能 PR #56514
- Luo Wenqing (@laphets): 修复启用 autoNavigateNextConflict 时最后一次合并冲突警告 PR #62788
- Matthew Leon (@leonm1): 修复 #62785 调试控制台中 copyAll 的空行 PR #62823
- Bruno Logerfo (@Logerfo): keyboardMapperTestUtils 的严格空值检查 PR #63027
- Mathias Rasmussen (@mathiasvr): 修复 #60002 撤消上次提交:保留暂存文件 PR #60104
- Matt Crupi (@mmcru): 修复 #63295: 在 Linux 保存错误消息中引用 Sudo PR #63394
- Philip Arola (@philiparola): 在设置屏幕中将“overwrite”更改为“override” PR #61926
- Samuel Toriel (@riltsken): [修复] #27649 将智能感知文档小部件固定到顶部 PR #62115
- Ryan Scott (@rscott): 添加 Git: Fetch (prune) PR #59735
- Prabhanjan S Koushik (@skprabhanjan)
- SlaneR (@slaner): 修复注释中的拼写错误 PR #62117
- Thomas Struller-Baumann (@Thomas-S-B): 删除了不必要的强制转换 PR #63947
- Alexander (@usernamehw)
- Konrad Borowski (@xfix): 修复快照加载器中的意外穿透 PR #62294
- Yisrael Veller (@YisraelV)
对 vscode-vsce
的贡献
- Nikolay Kondratyev (@kondratyev-nv): 修复使用特定版本发布的问题 PR #307
对 vscode-eslint
的贡献
对 language-server-protocol
的贡献
- Jan Keromnes (@jankeromnes): 小改进:拼写错误、语法、措辞。 PR #579
- Adolfo Ochagavía (@aochagavia): 修复规范中的拼写错误 PR #597
对 vscode-languageserver-node
的贡献
- Remy Suen (@rcjsuen): 提供带有 DefinitionLink 的符号的元数据 PR #415
- Guillaume Martres (@smarter): 将 asVersionedTextDocumentIdentifier 添加到 Converter 接口 PR #421
对 vscode-html-languageservice
的贡献
对 vscode-generator-code
的贡献
- Graham Bartley (@grabartley): 当不创建 git 存储库时,不再创建与 git 相关的文件 PR #141
对 debug-adapter-protocol
的贡献
- Danny Tuppeny (@DanTup): 修复 Dart 插件的链接 PR #16
对 vscode-chrome-debug-core
的贡献
- @digeff: 不要为存储源发送 src 已更改事件 PR #378
- Shennie Yao (@Shenniey)
对 vscode-chrome-debug
的贡献
- Shennie Yao (@Shenniey): 为 chrome 命令行开关添加运行时参数遥测 PR #749
- Leslie Leigh (@shrinktofit): 修复 targetTypes 选项 PR #760
对 vscode-azure-account
的贡献
- Yujin Hong (@yujhongmicrosoft): 添加对主权的登录支持 PR #79
- Zhe Li (@Sneezry): 修复 Azure 中国登录问题 PR #104
- Mateus Amin (@MateusAmin): 使用设置更新 README PR #107
对 vscode-recipes
的贡献
- Damon Jablons (@blackrobot): 清理 Python 配方的 markdown 格式 PR #172
- Vinícius Salomão (@vizeke): 使用 vscode 运行和调试 PHP PR #169
对 localization
的贡献
Transifex VS Code 项目团队中共有近 1400 名成员,每月约有 100 名活跃贡献者。我们感谢您的贡献,无论是提供新的翻译、为翻译投票还是建议流程改进。
以下是此版本贡献者的快照。有关项目详细信息(包括贡献者姓名列表),请访问项目站点 https://aka.ms/vscodeloc。
- 保加利亚语: Любомир Василев。
- 加泰罗尼亚语: Adolfo Jayme-Barrientos, Enric Soler Rastrollo (MaDDoGo), Oriol Torrillas。
- 捷克语: Vít Staniček, Ondra Kalousek, Kryštof Černý。
- 丹麦语: Johan Fagerberg。
- 芬兰语: Feetu Nyrhinen, Jussi Palo, Ahto Simakuutio。
- 法语: Antoine Griffard, Thierry DEMAN-BARCELO, Adrien Clerbois。
- 德语: Carsten Kneip。
- 希腊语: George Xenakis, Christos Koutsiaris, dimipapaioan。
- 印地语: Anand Chalakkal Jose Mohan, Kiren Paul, Ashwini Gupta, amgusain, Pointless Banter, Shaswat Rungta, Adnan Shaikh, Shashida Nand Jha。
- 匈牙利语: Tar Dániel。
- 简体中文: feiyun0112 feiyun0112, Tingting Yi, XIANG ZUO, Tony Xia, G.Y. Z, Dave Young, Jessica Zhang, 驰 雷, Liam Kennedy, bh wu, WangCG duoduobear, ziqiang sun, 正元 刘, 越 郑, peng wei, xiong Fu, 吉姆 舒, 瑜 周, 仁松 陈, Jiang LI。
- 繁体中文: Winnie Lin , Duran Hsieh, Hans Chiu, Alan Liu。
- 印度尼西亚语: Laurensius Dede Suhardiman, Wildan Mubarok, Joshua Siagian, Rizki A. Wibowo。
- 日语: Satoshi Kajiura, Shunya Tajima, Yuichi Nukiyama, Yoshihisa Ozaki, dkp sk, Hiroyuki Mori。
- 卡纳达语: Sanjay !, Sushmit Patil。
- 马拉雅拉姆语: Kiren Paul, Anand Chalakkal Jose Mohan。
- 挪威语: Espen Klein Nilsen, Ivar L, Simen Dæhlin, Daniel Bjørnbakk。
- 波兰语: Artur。
- 葡萄牙语(巴西): Danilo Dantas, Thiago Custodio, Vinicius Ribeiro, Lucas Santos, Gabriel Henrique Oliveira de Mello。
- 罗马尼亚语: Szauka。
- 俄语: Mikhail Zabaluev, Acupofspirt, Ilya Umnov。
- 僧伽罗语: Anand Chalakkal Jose Mohan。
- 西班牙语: Jorge Serrano Pérez, Alejandro Medina, Alberto Poblacion, Carlos Longarela, Carlos Mendible, Guillermo Callaghan, Alfonso Jesus Flores Alvarado, Andy Gonzalez。
- 泰米尔语: Vijay Nirmal, Avinash, Jeyanthinath Muthuram, Narayanan Singaram。
- 泰卢固语: Raja Tirumala Rao Guna。
- 土耳其语: Eyüp DALAN, Mustafa Turhan, Türker YILDIRIM。
- 越南语: Nguyễn Nhật Tân。