2022 年 2 月(版本 1.65)
更新 1.65.1:此更新解决了以下安全问题。
更新 1.65.2:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel silicon | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2022 年 2 月的版本。
- 新的编辑器历史导航 - 将“后退/前进”历史记录范围限定到编辑器组或单个编辑器。
- 浅色高对比度主题 - 用于增强 VS Code 编辑器可见性的浅色主题。
- 新的音频提示 - 用于警告、内联建议和断点命中的音频提示。
- 拖放问题和搜索结果 - 将结果拖动到新的或现有的编辑器组。
- 源代码管理差异编辑器管理 - 在 Git 操作后自动关闭差异编辑器。
- 调试器延迟变量求值 - JavaScript/TypeScript 属性 getter 的延迟求值。
- 预览:终端 Shell 集成 - 重新运行终端命令,命令状态修饰。
- VS Code for the Web - 重新打开最近的本地文件和文件夹,改进的 Git 集成。
如果您想在线阅读这些发行说明,请访问 Updates on code.visualstudio.com。
工作台
新的编辑器历史导航
VS Code 中的编辑器历史导航功能驱动一些常用的命令,例如后退和前进。随着时间的推移,积累了许多改进此功能并添加更多功能的功能请求。此里程碑编辑器的历史导航已从头开始重写,以解决这些请求中的大多数。
编辑器组感知导航
在编辑器历史记录中导航时,现在会考虑编辑器组。在编辑器历史记录中向后和向前导航将激活并聚焦编辑器组中的编辑器,就像它们之前一样。删除编辑器组时,将丢弃所有相关的历史记录项。
在下面的短视频中,第一个后退将光标放置在新的编辑器组中,然后第二个后退导航返回到原始编辑器组。
主题:GitHub Light
将导航范围限定为编辑器组或编辑器的新设置
新的设置 workbench.editor.navigationScope
可以将编辑器历史导航的范围限定为仅活动的编辑器组甚至编辑器。支持的值有:
default
:编辑器导航在所有打开的编辑器组和编辑器之间工作。editorGroup
:编辑器导航仅限于活动编辑器组的打开编辑器。editor
:编辑器导航仅限于活动编辑器。
如果将范围配置为 editorGroup
或 editor
,则每个编辑器组或编辑器都将有自己的导航堆栈,可以单独导航。
笔记本支持
现在,您可以在任何笔记本中选择的单元格之间导航。导航的工作方式与在文本编辑器中在光标位置之间导航的方式相同。
主题:GitHub Light
用于导航编辑或导航位置的新命令
默认情况下,编辑器导航位置会在您跨编辑器导航时添加,也会在编辑器内导航时添加(例如,当切换笔记本单元格或更改文本编辑器中的选择时)。如果您觉得记录的位置太多,则添加了新命令,将位置减少为以下两种之一:
- 导航位置 - 例如,当使用转到定义时。
- 编辑位置 - 每当编辑器更改时。例如,当在文本编辑器中键入内容时。
您可以将您最喜欢的按键绑定分配给这些命令,以相应地更改您的导航。
用于编辑位置的命令
workbench.action.navigateForwardInEditLocations
- 在编辑位置向前移动。workbench.action.navigateBackInEditLocations
- 在编辑位置向后移动。workbench.action.navigatePreviousInEditLocations
- 在编辑位置上一个移动。workbench.action.navigateToLastEditLocation
- 转到上一个编辑位置(此命令之前已存在)。
用于导航位置的命令
workbench.action.navigateForwardInNavigationLocations
- 在导航位置向前移动。workbench.action.navigateBackInNavigationLocations
- 在导航位置向后移动。workbench.action.navigatePreviousInNavigationLocations
- 在导航位置上一个移动。workbench.action.navigateToLastNavigationLocation'
- 转到上一个导航位置。
已添加关联的上下文键,以使按键绑定更强大。
用于编辑位置的上下文键
canNavigateBackInEditLocations
- 是否可以返回编辑位置。canNavigateForwardInEditLocations
- 是否可以前进到编辑位置。canNavigateToLastEditLocation
- 是否可以转到上一个编辑位置。
用于导航位置的上下文键
canNavigateBackInNavigationLocations
- 是否可以返回导航位置。canNavigateForwardInNavigationLocations
- 是否可以前进到导航位置。canNavigateToLastNavigationLocation
- 是否可以转到上一个导航位置。
新的布局控件选项
上一个里程碑,我们在标题栏中引入了实验性的布局控件(通过将 workbench.experimental.layoutControl.enabled
设置为 true
启用)。我们收到的反馈是,虽然控件中的操作很有用,但需要单击太多次。因此,我们正在添加几个 UI 选项,供大家通过设置 workbench.experimental.layoutControl.type
进行尝试。此设置具有以下选项:
menu
:先前行为,带有打开菜单的单个按钮(默认)。toggles
:一个新选项,显示三个按钮以切换面板、侧边栏和侧面板。both
:一个新选项,显示切换按钮,后跟菜单按钮,它仍然允许您相当快地访问自定义布局快速选择。
下图显示 layoutControl.type
设置为 both
,以显示三个切换按钮以及菜单下拉列表。
浅色高对比度主题
添加了新的浅色高对比度主题,以提高编辑器的可读性和可读性。
音频提示
此版本中添加了新的音频提示,包括用于警告、内联建议和调试器断点命中的音频提示。声音已经过调整,并且常规设置 audioCues.enabled
已弃用,取而代之的是单独的 audioCues.*
设置。
对于屏幕阅读器用户,默认情况下启用除 lineHasWarning
之外的所有音频提示(设置值为 auto
)。
新的音频提示命令帮助:列出音频提示列出所有可用的音频提示,让您在列表中移动时听到每个音频提示,并查看当前启用了哪些提示。
拖放问题和搜索结果
现在,您可以将问题、搜索或引用结果拖放到编辑器中,打开文件并显示结果位置。如果您想启动新的编辑器组或将结果放入现有的编辑器组中,这可能很有用。
设置编辑器拆分视图
设置编辑器现在使用可调整的拆分视图来分隔目录和设置列表。
改进的自动语言检测
当启用新设置 workbench.editor.historyBasedLanguageDetection
时,未命名的编辑器将使用改进的自动语言检测算法,该算法会考虑您的编辑器历史记录和当前工作区的内容。新算法需要比以前少得多的文本输入即可提供检测结果。
以下是在 JavaScript、TypeScript、Markdown、Python、PHP 和 C++ 中使用此功能的示例(支持更多语言)
改进的语言扩展建议
现在,语言功能扩展建议在推荐时会考虑 Marketplace 中其他突出的语言扩展。例如,如果您安装了 Apache NetBeans Java 扩展,VS Code 将不会推荐 Java 扩展包。
扩展树悬停的键盘快捷键
您可以使用键盘快捷键 Ctrl/Cmd+K, Ctrl/Cmd+I
来触发在扩展贡献的自定义树视图中显示悬停提示。
编辑器
使用代码片段包围
现在有一个新命令可以使用代码片段包围当前选中的内容。选择一些文本,从命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))调用使用代码片段包围命令,然后从下拉列表中选择一个代码片段。
在下面的简短视频中,选定的方法被 try/catch 代码片段包围。
任何使用 TM_SELECTED_TEXT
或 SELECTION
变量的适用代码片段都将在使用代码片段包围快速选择下拉列表中可用。自定义用户或项目代码片段也会包含在内。
辅助功能内嵌提示
内嵌提示会在源代码中显示附加信息,例如变量的推断类型。对于屏幕阅读器用户,有一个新命令可以帮助使用此功能。从命令面板中选择读取包含内嵌提示的行,编辑器会读取当前行并穿插显示其提示。
上下文 Unicode 高亮显示
为了减少误报,如果周围的字符在视觉上指示非 ASCII 脚本,则不再高亮显示模糊和不可见的 Unicode 字符。因此,在受信任的工作区中,只会高亮显示那些不可见或可能与 ASCII 字符混淆的字符。但如果一个词中包含非 ASCII 字符,并且其中至少有一个字符不会与 ASCII 字符混淆,则不会高亮显示该词中的字符。
之前您可以在 const 字符串中看到多个误报
之后只高亮显示了混淆字符
终端
多行粘贴警告
现在,当在终端中粘贴多行且 shell 不支持多行时,默认会显示一个对话框。此警告会针对带括号的粘贴模式和 PowerShell 显示,当我们将 Ctrl+V
直接传递给 shell 时也会显示。对话框上有一个不再询问我复选框,可以轻松禁用此功能。
终端链接改进
此版本对终端链接的实现进行了大规模重构。这简化并提高了该功能的可维护性,但也带来了以下改进:
- 链接高亮再次起作用。
- 缓存已解析的链接,减少了某些链接显示时的延迟。
- 工作区搜索链接现在由与经过验证的链接相同的代码处理,以获得更高的一致性并改进行/列识别。
- 修复了多个错误。
打开文件链接命令改进
上个版本引入的 打开上一个文件链接 和 打开检测到的链接... 命令现在排除了文件夹,这应该会使它们更加有用。
源代码管理
差异编辑器管理
在这个里程碑中,我们做了一些更改,应该有助于管理差异编辑器。命令面板中有一个新的命令 Git: 关闭所有差异编辑器,可用于关闭所有打开的差异编辑器。还有一个新的设置 git.closeDiffOnOperation
,可以在暂存、提交、丢弃、添加到暂存区或取消暂存更改时自动关闭差异编辑器。
Git 命令输出日志
执行 git 命令时,stderr
的内容会记录在 Git 输出窗口 中。现在有一个新的设置 git.commandsToLog
,用于指定一个 Git 命令列表,这些命令的 stdout
内容将记录在 Git 输出窗口 中。
调试
延迟变量
访问变量的值可能会有副作用或代价高昂。VS Code 的通用调试器现在可以为用户显示一个按钮,以便按需获取变量值。这适用于支持新的 “延迟”变量功能的调试扩展。目前,这仅由内置的 JavaScript 调试器针对属性 getter 实现,但我们预计其他调试器扩展也会很快跟进。
任务
您可以在任务中使用新的平台无关的 userHome
变量。
{
"label": "Test Home",
"type": "shell",
"command": "ls ${userHome}"
}
笔记本
内置输出渲染器更新
我们将文本、图像、HTML 和代码渲染器从 VS Code 核心移动到了内置的输出渲染器扩展。通过此更改,VS Code 现在可以搜索这些输出类型上的文本。
在下面的简短视频中,最初搜索 item
在代码单元格中有 3 个结果,但可以进行过滤以也包括单元格输出。
粘性滚动笔记本单元格按钮
现在,向下滚动代码单元格时,运行按钮和单元格工具栏将固定在屏幕顶部。这使得在长代码单元格中工作时更容易访问它们。
主题:Dracula
语言
TypeScript 4.6
VS Code 现在附带 TypeScript 4.6。此更新带来了许多新的语言功能,以及工具改进和错误修复。您可以在 TypeScript 博客上阅读有关 TypeScript 4.6 的更多信息。
JavaScript 文件中的语法错误报告
由于 TypeScript 4.6,VS Code 现在报告 JavaScript 文件中的一些常见语法错误。这包括解析错误,以及对块作用域变量的无效重复声明。
以前,这些错误仅在您 在 JavaScript 中启用语义检查时才会报告。
您可以通过设置来禁用此错误报告
"javascript.validate.enable": false
可以为每个语言配置更多 JS/TS 设置
现在可以将更多 JavaScript 和 TypeScript 设置配置为 特定于语言的设置。如果您想要 javascript
和 javascriptreact
的设置不同,则特定于语言的设置很有用。
新的特定于语言的启用设置包括
javascript.preferences.quoteStyle
,typescript.preferences.quoteStyle
javascript.preferences.importModuleSpecifier
,typescript.preferences.importModuleSpecifier
javascript.preferences.importModuleSpecifierEnding
,typescript.preferences.importModuleSpecifierEnding
javascript.preferences.jsxAttributeCompletionStyle
,typescript.preferences.jsxAttributeCompletionStyle
javascript.preferences.renameShorthandProperties
,typescript.preferences.renameShorthandProperties
javascript.preferences.useAliasesForRenames
,typescript.preferences.useAliasesForRenames
javascript.suggest.enabled
,typescript.suggest.enabled
javascript.suggest.completeJSDocs
,typescript.suggest.completeJSDocs
javascript.suggest.jsdoc.generateReturns
,typescript.suggest.jsdoc.generateReturns
javascript.autoClosingTags
,typescript.autoClosingTags
新的 Lua 语法高亮语法
VS Code 有一个新的、维护更好的 Lua 语法,用于 Lua 文件的语法高亮显示。新语法会积极维护,修复旧语法中存在的问题,并支持较新的 Lua 令牌。
VS Code for the Web
重新打开本地文件和文件夹
当您使用支持 web 文件系统访问 API 的浏览器访问 vscode.dev 或 insiders.vscode.dev 时,最近打开的本地文件和文件夹列表现在可用。选择本地文件会在编辑器中打开它,选择本地文件夹会更新文件资源管理器以显示其内容。浏览器可能会要求您确认本地文件访问,然后才会显示内容。
远程存储库
GitHub 存储库
在这个里程碑中,当在 vscode.dev 和 github.dev 上编辑 GitHub 存储库时,合并冲突解决得到了改进。现在,您的编辑器中会显示合并冲突装饰,并提供接受当前更改、接受传入更改或接受两者更改的选项。
源代码管理视图中还有一个 暂存更改 操作,用于包含合并冲突的文件。
此外,您现在可以在 vscode.dev 和 github.dev 上的 GitHub 存储库中轻松暂存和取消暂存特定文件夹下的所有更改。为此,请在源代码管理视图中右键单击,然后选择 以树状视图显示。
主题:One Monokai
默认情况下,工作区搜索和 查找所有引用 现在会下载并索引存储库的完整副本,而不是像以前那样默认提供部分结果。
有几个设置可以配置此索引功能
remoteHub.indexing.verboseDownloadNotification
- 控制下载通知是显示为弹出窗口(默认)还是显示在状态栏中。remoteHub.indexing.maxIndexSize
- 控制要下载的索引的大小限制。如果超过此限制,下载将被取消,并提供部分结果。您可以将此设置留空,以从不下载存储库并始终使用部分结果。
Azure Repos
在这个里程碑中,我们将 Azure Repos 支持从使用特定的 Azure DevOps 身份验证提供程序切换为使用通用的 Microsoft 身份验证提供程序(由设置同步使用)。当您访问 Azure Repo 时,系统会提示您再次登录,但您的所有已保存更改都会被保留。
扩展贡献
十六进制编辑器数据检查器改进
以前,十六进制编辑器扩展始终在其侧边栏中显示数据检查器,并在显示十六进制编辑器时显示它。但是,一些用户觉得这很烦人,并且它与 调试器的内存检查器的集成导致了特别破坏性的体验。现在,数据检查器将显示在检查的字节的右侧。如果编辑器太窄,数据检查器将显示在悬停小部件中。
主题:Codesong
可以通过 hexeditor.inspectorType
设置进行配置,该设置可以采用以下三个值之一
aside
- 在侧面显示数据检查器。hover
- 仅在悬停时显示数据检查器,而与编辑器宽度无关。sidebar
- 像以前一样在侧边栏中显示数据检查器。
GitHub 拉取请求和问题
我们正在继续开发 GitHub Pull Requests and Issues 扩展,该扩展允许您处理、创建和管理拉取请求和问题。请查看该扩展的 0.38.0 版本更新日志,了解其亮点。
预览功能
终端 Shell 集成
终端中的 Shell 集成最初是在上个版本中引入的,本月进行了许多改进。作为回顾,此功能允许 VS Code 获得对终端内正在发生的事情的额外洞察,而这些事情以前基本上是未知的。该功能仍然被认为是实验性的,您可以通过 terminal.integrated.shellIntegration.enabled
设置选择启用。
此版本最大的变化是,由 Shell 集成检测到的命令现在在左侧的“装订线”中具有装饰。命令装饰在视觉上分割缓冲区,并提供对使用 Shell 集成功能的信息和操作的访问。命令装饰有三种类型:错误、成功和默认,具体取决于命令的退出代码。
单击装饰会在菜单中显示特定于该命令的操作,目前包括重新运行命令和复制输出。
将鼠标悬停在装饰上会显示有关命令的信息,例如自运行以来的时间和关联的退出代码。
可以通过将 terminal.integrated.shellIntegration.decorationsEnabled
设置为 false
来禁用装饰。可以通过 terminal.integrated.shellIntegration.decorationIcon*
设置来配置单个图标,并且这些新的主题键设置颜色
terminalCommandDecoration.successBackground
terminalCommandDecoration.errorBackground
terminalCommandDecoration.defaultBackground
以下是其他主要更改
- 启用设置已重命名为
terminal.integrated.shellIntegration.enabled
。 - 在所有受支持的 Shell 中启用 Shell 集成的机制现在更加可靠。
- 现在,当使用远程连接的窗口(SSH、WSL、容器)时,Shell 集成应该可以工作了。
- 行继续符(例如,
$PS2
)现在应该可以在所有受支持的 Shell 上工作了。 - “跳过”的命令现在会特别标记。例如,在使用
Ctrl+C
或运行空命令后。 - 运行最近的命令和转到最近的目录命令现在在会话之间存储历史记录。可以通过
terminal.integrated.shellIntegration.history
设置配置存储历史记录。
ESLint
ESLint 扩展初步支持包含可以使用 ESLint 验证的单元格的笔记本文档。此支持仅在扩展的预发布版本中可用。
扩展编写
语言状态项
我们已经最终确定了语言状态项的 API。此 API 显示活动编辑器的特定于语言的信息。这可以是关于项目或工具集版本的一般信息,也可以显示错误和警告。
该 API 类似于状态栏 API,可以通过 vscode.languages.createLanguageStatusItem(...)
访问。语言状态项应该使用文档选择器创建,以便 VS Code 可以在活动编辑器更改时显示和隐藏它。
内嵌提示
内嵌提示提供程序 API 现在已最终确定。它允许在源代码中嵌入附加信息。下图显示了 TypeScript 如何为推断类型添加内嵌提示。
该 API 围绕 InlayHintsProvider
构建。它提供 InlayHint
对象,这些对象具有一些有趣的功能
- 内嵌提示可以有工具提示和命令。
- 提示的标签可以由多个部分组成,这些部分又可以有工具提示和命令。
- 标签部分还可以具有关联的源位置,从而为该部分启用诸如转到定义之类的语言功能。
状态栏焦点边框
我们通过向状态栏和状态栏项添加焦点边框,使其更容易且更易于访问地导航状态栏。
主题作者可以通过配置两个新的主题颜色来自定义边框颜色
statusBar.focusBorder
:整个状态栏在聚焦时的边框颜色。statusBarItem.focusBorder
:状态栏项在聚焦时的边框颜色。
测试刷新操作和 sortText
我们已经最终确定了 我们的提案,将标准刷新处理程序添加到 TestController
接口。如果扩展将方法分配给此属性,VS Code 将在测试资源管理器视图中显示“刷新”图标。
此外,TestItem
现在可以 具有 sortText
属性,该属性控制没有文件中特定位置的项的排序顺序。
注释时间戳
注释 API 现在允许您向每个 Comment
添加 timestamp
。此时间戳会显示在注释小部件和注释视图中。默认情况下,时间戳显示为相对时间(例如,“2 周前”),但用户设置 comments.useRelativeTime
可用于显示确切的时间。时间戳的悬停始终是确切的时间。
vscode-test 包已重命名为 @vscode/test-electron
vscode-test
包已重命名为 @vscode/test-electron
。扩展作者应更新其扩展的 package.json
文件 devDependencies
中的条目(如果他们包含该包)。@vscode/test-electron 包有助于运行 VS Code 扩展的集成测试。您可以在 vscode-test 存储库中了解更多信息。
更新的 codicon
以下新图标已添加到我们的 codicon 库
arrow-circle-down
arrow-circle-left
arrow-circle-right
arrow-circle-up
error-small
indent
layout-activitybar-left
layout-activitybar-right
layout-centered
layout-menubar
layout-panel-center
layout-panel-justify
layout-panel-left
layout-panel-right
layout-panel
layout-sidebar-left
layout-sidebar-right
layout-statusbar
layout
newline
record-small
target
图标贡献点现在已最终确定
图标贡献点允许扩展通过 ID 定义新图标以及默认图标。然后,扩展(或任何依赖于该扩展的其他扩展)可以在可以使用 ThemeIcon
的任何地方使用该图标 ID new ThemeIcon("iconId")
,在 Markdown 字符串中 ($(iconId)
),以及在某些贡献点中作为图标。
产品图标主题可以重新定义图标(如果他们知道图标 ID)。
"contributes": {
"icons": {
"distro-ubuntu": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E001"
}
},
"distro-fedora": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E002"
}
}
}
}
在上面的示例中,扩展定义了两个新的图标 ID distro-ubuntu
和 distro-fedora
,以及默认图标定义。图标在给定字体字符的图标字体中定义。
文件图标主题:支持文件关联中的文件夹名称
在 文件图标主题中,folderNames
、folderNamesExpanded
、fileNames
和 fileExtensions
中的关联现在也可以包含文件夹名称
"fileNames": {
"system/win.ini": "_win_ini_file"
},
system/win.ini
表示关联匹配直接在文件夹 system
中的名为 win.ini
的文件。
"fileExtensions": {
"system/ini": "_ini_file"
},
system/ini
表示关联匹配直接在文件夹 system
中的名为 *.ini
的文件。
"folderNames": {
".vscode/extensions": "_vscode_folder"
},
在 Web 版 VS Code 中使用 Codespaces 运行远程安装的 Web 扩展
在 Web 版 VS Code 中使用 Codespaces 现在支持在 Web 扩展主机中运行远程安装的 Web 扩展。例如,如果您在 GitHub Codespace 中安装了 Vim 扩展(通过 devcontainer.json
文件中的配置),那么当您在浏览器中打开 Codespace 时,Vim 将加载到 Web 扩展主机中。请阅读我们的 扩展主机文档以获取更多信息。
注意:目前关于此类扩展加载 Web Worker 存在已知限制。有关更多详细信息,请参阅 问题。
调试器扩展编写
支持“重要”输出事件
最近,调试适配器协议为 Output
事件 添加了一个 important
类别。此类别标记应该突出显示且不被用户忽略的事件。VS Code 现在将为具有 important
类别的消息显示通知弹出窗口。它们仍将记录到调试控制台。
支持“惰性”变量
某些变量是动态的,需要执行代码才能获取值。调试适配器可能不想自动检索它们的完整值,因为这样做可能会产生副作用或成本高昂。
一些调试适配器通过将“昂贵的变量”表示为一个占位符对象来解决此问题,用户需要显式“展开”该对象才能获取值。VS Code 的内置 js-debug 对 JS/TS getter 使用这种方法
class Person {
name = 'Danny';
get email(): string {
return '[email protected]';
}
get address(): Address {
return new Address();
}
}
class Address {
street = 'Main Street';
city = 'Zurich';
}
以下截屏视频显示,中间对象使得难以理解有效的数据结构
在此版本中,我们改进了 VS Code,以紧凑的形式呈现中间对象,并使用 (...) 按钮请求完整值。
调试适配器可以通过添加具有 lazy
属性的 VariablePresentationHint
来请求变量的这种新呈现样式(请参阅 DAP 添加内容)。如果客户端不支持 lazy
标志,变量将像以前一样显示。
语言服务器协议
语言服务器协议的另一个下一版本以及相应的 npm 模块已经发布。新版本包含以下更改
- 将 LSP 类型转换为 VS Code 类型以及反之亦然的操作现在是完全异步的。此更改避免了转换可能会阻塞扩展主机的大型数据流。请注意,这是库中的重大 API 更改(更多信息请参见 README.md)。它不会影响协议本身的向后兼容性。
- 针对笔记本(notebook)文档的提议实现得到了增强。它现在拥有完整的中间件和提供程序支持。
调试适配器协议
调试适配器协议中添加了几个新属性。
- 新的布尔属性
lazy
已添加到VariablePresentationHint
中。客户端可以使用这个可选标志来呈现变量,并通过特定的手势来获取其值。 - 新的可选字符串属性
detail
已添加到CompletionItem
中。通过这个人类可读的字符串,客户端可以显示关于该项目的附加信息,例如类型或符号信息。请注意,VS Code 尚不支持此属性。
建议的扩展 API
每个里程碑都附带新的提议 API,扩展作者可以尝试使用它们。和往常一样,我们希望收到您的反馈。以下是尝试提议 API 的步骤
- 找到您想要尝试的提案,并将其名称添加到
package.json#enabledApiProposals
中。 - 使用最新的 vscode-dts 并运行
vscode-dts dev
。它会将相应的d.ts
文件下载到您的工作区。 - 您现在可以针对该提案进行编程。
您不能发布使用提议 API 的扩展。下一个版本可能会有重大更改,我们绝不希望破坏现有扩展。
时间线项目中的 Markdown 悬停
TimelineProvider
提供的项目现在可以在 detail
属性中支持 Markdown,该属性用于为其工具提示提供内容。
支持笔记本的文档选择器
vscode.DocumentSelector
类型允许您将诸如转到定义之类的语言特性与特定文档关联起来。这驱动了 UI,并且还决定是否向相应的提供程序请求结果。我们添加了一个新的 API 提案,允许扩展也选择笔记本类型。例如,{ language: 'python', notebookType: 'jupyter-notebook'}
定位所有嵌入在 Jupyter 笔记本中的 python 文档。这是当前的提案 - 请尝试一下并告诉我们您的想法。
具有自定义语言 ID 的输出通道
某些扩展能够在它们的输出通道中定义 token 或语法着色以及 CodeLens 功能,前提是它们本身是文本文件(只读)。由于所有输出通道共享相同的语言 ID,因此这些自定义设置可能会错误地应用于其他输出通道。之前有一个功能请求是创建具有自定义语言 ID 的输出通道,以便扩展作者可以按语言定义自定义设置。因此,在这个里程碑中,我们引入了提案来创建具有自定义语言 ID 的输出通道。请尝试一下并给我们反馈。
MarkdownString.baseUri
MarkdownString
上提议的 baseUri
属性允许您指定一个基 URI,Markdown 中的相对链接和图像将相对于该基 URI 进行解析。此属性的行为类似于 HTML 中的 <base>
元素。
如果 baseUri
以 /
结尾,则它被视为一个目录,并且 Markdown 中的相对路径将相对于该目录进行解析
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/dir/');
// Here 'link' in the rendered Markdown resolves to '/path/to/dir/file.js'
如果 baseUri
是一个文件,则 Markdown 中的相对路径将相对于该文件的父目录进行解析
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/otherFile.js');
// Here 'link' in the rendered Markdown resolves to '/path/to/file.js'
新文档
Java GUI 应用程序
新的Java GUI 应用程序主题解释了如何使用 Java 扩展包在 VS Code 中开发 JavaFX、AWT 和 Swing 应用程序。
值得注意的修复
- 107748 旁白未读取设置被忽略以进行同步
- 123399 Emmet 不会在 jsx 和 html 文件中为标签 A 添加类。
- 141680 在设置中搜索 @tags 很慢
- 141977 设置编辑器:文件夹操作项无法正确处理 keyup
- 142040 改进支持预发布版本的扩展的“安装另一个版本”操作。
- 142462 当未清除写入锁时,文件写入可能会挂起
- 142641 ts-node 调试器在 v1.64 中无法正常工作
感谢
最后但同样重要的是,非常感谢 VS Code 的贡献者。
Web 扩展
允许扩展程序以 Web 扩展形式运行代码的扩展作者(以下列表为 2022 年 2 月 1 日至 2022 年 2 月 28 日之间)
- Var Style (allen)
- helloworld-web-sample (Andrey Belym)
- asciidoctor.asciidoctor-vscode (asciidoctor)
- Gitignore Adder (beatrix)
- gkauthentication-test (BranchCreation SLU)
- Racket Helpers (Calvin-LL)
- PHP Tools (DEVSENSE)
- Naninovel (Elringus)
- Pitoco Extension (Feodrippe)
- feodrippe.feodrippe-helloworld-minimal-sample-test-web (Feodrippe)
- Simple React Snippets for Typescript (Giovanni Fu Lin)
- GitKraken Authentication (GitKraken)
- groog (groogle)
- ModalKeys (haberdashPI)
- VDM VSCode (Jonas Rask)
- cis-algorithm (kimjihu)
- Markdown (Pandoc Flavored) (Kolen Cheung)
- zyname - this is for testing and will be deleted soon (leodevbro)
- Snippet Copy (Lukas Spieß)
- PHP import checker (Marabesi)
- VSCode Language JSONata (Markus Gutbrod)
- Babel JavaScript (Michael McDermott)
- Create Project (Public Theta)
- Dynamic Theme (Rody Davis)
- Router Generator (Rody Davis)
- Chimera Theme (roydukkey)
- Qiita Markdown Preview (Ryoji Kato)
- Kestrel (SenseTime)
- 测试令牌 (sevillal)
- Sourcegraph (Sourcegraph)
- Rewrap (stkb)
- wav-preview (sukumo28)
- Pandoc (TANIGUCHI Masaya)
- 十六进制查看器 (Tao Cumplido)
- 时间链接捆绑包(Web 版本) (Time Link)
- DCC Websocket (virgilsisoe)
- VSC+ (Vrej)
问题跟踪
对我们的问题跟踪的贡献
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- Simon Chan (@yume-chan)
拉取请求
对 vscode
的贡献
- @aminya (Amin Yahyaabadi):修复:简化 tasks/common 中的正则表达式 PR #142899
- @Balastrong (Leonardo)
- 增加重载计数器工具提示的不透明度 PR #141828
- 修复了元素检测,如果需要,在解码之前和之后检查片段 PR #141848
- @BMBurstein (Baruch):更正括号引导设置的描述 PR #143722
- @Bruce-Hopkins (Bruce Hopkins):添加用户主目录变量 PR #141902
- @caioagiani (Caio Agiani):修复拼写错误 PR #141959
- @CGNonofr (Loïc Mangeonjean)
- 在所有语言功能注册函数中将 languageId 替换为 languageSelector PR #143610
- 允许 getWorker 函数返回一个 Promise PR #143611
- @ChaseKnowlden:更新 Lua 语法 PR #142107
- @divinity76:似乎 root 需要 --no-sandbox PR #137125
- @efcoyote (coyote):更新到最新的 seti-ui 版本 PR #141931
- @enticies (enticies):修复错误消息中的拼写错误 PR #142054
- @g-plane (Pig Fang):将 "pnpm-lock.yaml" 添加到默认文件嵌套模式 PR #142375
- @gjsjohnmurray (John Murray)
- 将可选的 languageId 添加到 window.createOutputChannel API (#_19561) PR #140876
- 修复
testing.openTesting
设置文本 (#_142306) PR #142314
- @haykam821:防止图像预览透明背景受到缩放的影响 PR #141667
- @heartacker:添加数学代码片段 PR #142697
- @icepaq (Anton):在 WebviewPanel 上自动完成激活事件 PR #141752
- @jeanp413 (Jean Pierre)
- 修复 WebviewElement::streamToBuffer PR #142288
- 修复在扩展视图中通过 ID 查询扩展始终在扩展编辑器中呈现稳定版本的问题 PR #143481
- @JJRcop (Jonathan Rubenstein):将 VS 2022 添加到支持的版本 PR #142667
- @LuanVSO (Luan Vitor Simião Oliveira)
- 修复 psreadline 无法与 shell 集成一起使用的问题 PR #142211
- 修复 shellintegration.ps1 PR #142217
- @michaelkuhn (Michael Kuhn):修复一些 Solarized 颜色 PR #142670
- @neeleshb (Neelesh Bodas):修复“转到上一个问题”的标签不正确的问题 PR #143823
- @satokaz (Kazuyuki Sato):解码 Markdown 路径 IntelliSense 中的标题建议 PR #142392
- @SNDST00M (M.U.N.I.N):在文件图标主题中添加可选的目录语法 PR #140079
- @stefanhaller (Stefan Haller):修复 #142028 PR #142930
- @surajteggi:修复拼写错误 PR #142185
- @thebinarysearchtree (Andrew Jones):修复缩进 PR #141997
- @weartist (Han):在 VSCode 终端中实现 multiLinePasteWarning,修复 #122683 PR #141822
- @y-tsutsu (y-tsutsu)
- 命令面板中同时显示翻译后的名称和原始名称。 PR #142524
- 修复操作类别 PR #142911
- @Yash621 (Yash Goel):修复设置同步具有重复登录的问题 PR #142340
- @zardoy (Vitaly):解析 tsconfig.extends 的正确链接路径 PR #141062
对 vscode-css-languageservice
的贡献
对 vscode-languageserver-node
的贡献
- @dsherret (David Sherret):功能:当 childProcess.spawn 失败时,提供更具描述性的错误信息 PR #888
对 debug-adapter-protocol
的贡献
- @apupier (Aurélien Pupier):为 Apache Camel 添加调试适配器 PR #245
- @eshelyaron (Eshel Yaron):将 SWI-Prolog DAP 实现添加到 adapters.md PR #248
- @hyangah (Hyang-Ah Hana Kim):更新 sdks.md * 包括 go-dap PR #241
- @lukaszsamson (Łukasz Samson):添加指向 Elixir DAP 实现的链接 PR #243
- @Ricbet (John):将 OpenSumi 添加到实现工具 PR #247
对 language-server-protocol
的贡献
- @zwpaper (Wei Zhang):使用语言 ID 以保持一致性 PR #1409
对 monaco-editor
的贡献
- @Dan1ve (Daniel Veihelmann):使 Vite 示例代码与 Firefox 兼容 PR #2991
- @philipturner (Philip Turner):为 Swift 添加
@noDerivative
修饰符 PR #2957