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

VS Code API

VS Code API 是一组您可以在 Visual Studio Code 扩展中调用的 JavaScript API。本页列出了所有可供扩展作者使用的 VS Code API。

API 命名空间和类

此列表是从 VS Code 存储库中的 vscode.d.ts 文件编译而来的。

认证

用于身份验证的命名空间。

事件

当身份验证提供程序的身份验证会话被添加、删除或更改时会触发的 Event

函数

获取用户已登录到指定提供程序的所有帐户。将其与 getSession 配对使用,以获取特定帐户的身份验证会话。

目前,编辑器内置的扩展只提供了两个身份验证提供程序,它们实现了 GitHub 和 Microsoft 身份验证:它们的 providerId 分别是 'github' 和 'microsoft'。

注意:获取帐户并不意味着您的扩展可以访问该帐户或其身份验证会话。您可以通过调用 getSession 来验证对该帐户的访问权限。

参数描述
providerId: string

要使用的提供程序的 ID。

返回值描述
Thenable<readonly AuthenticationSessionAccountInformation[]>

一个 thenable,它解析为只读的身份验证帐户数组。

获取与所需范围匹配或满足 WWW-Authenticate 请求的身份验证会话。如果未注册具有 providerId 的提供程序,或者用户不同意与扩展共享身份验证信息,则会拒绝。如果存在多个具有相同范围的会话,则会向用户显示一个快速选择器,以选择他们希望使用的帐户。

内置身份验证提供程序包括:

  • 'github' - 用于 GitHub.com
  • 'microsoft' - 用于个人和组织 Microsoft 帐户
  • (较少见) 'github-enterprise' - 用于替代 GitHub 主机,如 GHE.com、GitHub Enterprise Server
  • (较少见) 'microsoft-sovereign-cloud' - 用于替代 Microsoft 云
参数描述
providerId: string

要使用的提供程序的 ID。

scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest

请求的权限范围列表或 WWW-Authenticate 请求。这些取决于身份验证提供程序。

options: AuthenticationGetSessionOptions & {createIfNone: true | AuthenticationGetSessionPresentationOptions}
返回值描述
Thenable<AuthenticationSession>

一个 thenable,它解析为身份验证会话。

获取与所需范围或请求匹配的身份验证会话。如果未注册具有 providerId 的提供程序,或者用户不同意与扩展共享身份验证信息,则会拒绝。如果存在多个具有相同范围的会话,则会向用户显示一个快速选择器,以选择他们希望使用的帐户。

内置身份验证提供程序包括:

  • 'github' - 用于 GitHub.com
  • 'microsoft' - 用于个人和组织 Microsoft 帐户
  • (较少见) 'github-enterprise' - 用于替代 GitHub 主机,如 GHE.com、GitHub Enterprise Server
  • (较少见) 'microsoft-sovereign-cloud' - 用于替代 Microsoft 云
参数描述
providerId: string

要使用的提供程序的 ID。

scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest

请求的权限范围列表或 WWW-Authenticate 请求。这些取决于身份验证提供程序。

options: AuthenticationGetSessionOptions & {forceNewSession: true | AuthenticationGetSessionPresentationOptions}
返回值描述
Thenable<AuthenticationSession>

一个 thenable,它解析为身份验证会话。

获取与所需范围或请求匹配的身份验证会话。如果未注册具有 providerId 的提供程序,或者用户不同意与扩展共享身份验证信息,则会拒绝。如果存在多个具有相同范围的会话,则会向用户显示一个快速选择器,以选择他们希望使用的帐户。

内置身份验证提供程序包括:

  • 'github' - 用于 GitHub.com
  • 'microsoft' - 用于个人和组织 Microsoft 帐户
  • (较少见) 'github-enterprise' - 用于替代 GitHub 主机,如 GHE.com、GitHub Enterprise Server
  • (较少见) 'microsoft-sovereign-cloud' - 用于替代 Microsoft 云
参数描述
providerId: string

要使用的提供程序的 ID。

scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest

请求的权限范围列表或 WWW-Authenticate 请求。这些取决于身份验证提供程序。

options?: AuthenticationGetSessionOptions
返回值描述
Thenable<AuthenticationSession | undefined>

一个 thenable,它解析为身份验证会话,如果使用了静默流且未找到会话,则解析为 undefined。

注册一个身份验证提供程序。

每个 ID 只能有一个提供程序,如果 ID 已被另一个提供程序使用,则会抛出错误。ID 是区分大小写的。

参数描述
id: string

提供程序的唯一标识符。

label: string

提供程序的易读名称。

provider: AuthenticationProvider

身份验证提供程序。

options?: AuthenticationProviderOptions

提供程序的附加选项。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

chat

用于聊天功能的命名空间。用户通过在聊天视图中向聊天参与者发送消息来与他们互动。聊天参与者可以通过 ChatResponseStream 用 Markdown 或其他类型的内容进行响应。

函数

创建新的 聊天参与者 实例。

参数描述
id: string

参与者的唯一标识符。

handler: ChatRequestHandler

参与者的请求处理程序。

返回值描述
ChatParticipant

新的聊天参与者。

命令

用于处理命令的命名空间。简而言之,命令是一个具有唯一标识符的函数。该函数有时也称为命令处理程序

可以使用 registerCommandregisterTextEditorCommand 函数将命令添加到编辑器中。命令可以手动执行,也可以从 UI 手势执行。这些方式包括:

  • 命令面板 - 使用 package.json 中的 commands 部分,使命令显示在 命令面板 中。
  • 键盘绑定 - 使用 package.json 中的 keybindings 部分,为您的扩展启用 键盘绑定

扩展和其他扩展以及编辑器本身的命令都可以被一个扩展访问。但是,在调用编辑器命令时,并非所有参数类型都受支持。

这是一个注册命令处理程序并将该命令的条目添加到命令面板的示例。首先,使用标识符 extension.sayHello 注册一个命令处理程序。

commands.registerCommand('extension.sayHello', () => {
  window.showInformationMessage('Hello World!');
});

其次,将命令标识符绑定到一个将在命令面板中显示的标题(package.json)。

{
  "contributes": {
    "commands": [
      {
        "command": "extension.sayHello",
        "title": "Hello World"
      }
    ]
  }
}

函数

执行由给定命令标识符表示的命令。

  • 注意 1: 调用编辑器命令时,并非所有类型都允许作为参数传递。允许的类型是原始类型 stringbooleannumberundefinednull,以及 PositionRangeUriLocation
  • 注意 2: 调用由扩展贡献的命令时没有限制。
参数描述
command: string

要执行的命令的标识符。

...rest: any[]

传递给命令函数的参数。

返回值描述
Thenable<T>

一个 thenable,它解析为给定命令的返回值。当命令处理函数不返回任何内容时,返回 undefined

检索所有可用命令的列表。以下划线开头的命令被视为内部命令。

参数描述
filterInternal?: boolean

设置为 true 以不显示内部命令(以下划线开头)。

返回值描述
Thenable<string[]>

一个 thenable,它解析为命令 ID 列表。

注册一个可以通过键盘快捷键、菜单项、操作或直接调用的命令。

重复注册具有现有命令标识符的命令将导致错误。

参数描述
command: string

命令的唯一标识符。

callback: (args: any[]) => any

命令处理函数。

thisArg?: any

调用处理函数时使用的 this 上下文。

返回值描述
Disposable

一个 Disposable,在处置时注销此命令。

注册一个可以由键盘快捷键、菜单项、操作或直接调用的文本编辑器命令。

文本编辑器命令与普通的 命令 不同,它们只在命令被调用时存在活动编辑器时执行。此外,编辑器命令的处理程序可以访问活动编辑器和一个 编辑 构建器。请注意,编辑构建器仅在回调执行期间有效。

参数描述
command: string

命令的唯一标识符。

callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void

一个命令处理函数,可以访问 编辑器编辑

thisArg?: any

调用处理函数时使用的 this 上下文。

返回值描述
Disposable

一个 Disposable,在处置时注销此命令。

comments

函数

创建新的 注释控制器 实例。

参数描述
id: string

注释控制器的 id

label: string

注释控制器的可读字符串。

返回值描述
CommentController

注释控制器 的一个实例。

debug

描述编辑器运行环境的命名空间。

变量

当前活动的 调试控制台。如果没有活动调试会话,发送到调试控制台的输出将不会显示。

当前活动的 调试会话undefined。活动调试会话是通过调试操作浮动窗口表示的会话,或者是当前在调试操作浮动窗口的下拉菜单中显示的会话。如果没有活动调试会话,则值为 undefined

当前聚焦的线程或堆栈帧,如果未聚焦任何线程或堆栈,则为 undefined。当存在活动的调试会话时,任何时候都可以聚焦线程,而当会话暂停并且调用堆栈已检索时,才能聚焦堆栈帧。

断点列表。

事件

活动调试会话 更改时触发的 Event注意,当活动调试会话更改为 undefined 时,该事件也会触发。

debug.activeStackItem 更改时触发的事件。

当断点集被添加、删除或更改时发出的 Event

当从 调试会话 收到自定义 DAP 事件时触发的 Event

当启动新的 调试会话 时触发的 Event

调试会话 终止时触发的 Event

函数

添加断点。

参数描述
breakpoints: readonly Breakpoint[]

要添加的断点。

返回值描述
void

将通过调试适配器协议 (Debug Adapter Protocol) 收到的 "Source" 描述对象转换为可用于加载其内容的 Uri。如果源描述基于路径,则返回文件 Uri。如果源描述使用引用编号,则构造一个特殊的调试 Uri(方案 'debug'),该 Uri 需要相应的 ContentProvider 和正在运行的调试会话。

如果 "Source" 描述对象包含不足以创建 Uri 的信息,则会抛出错误。

参数描述
source: DebugProtocolSource

符合调试适配器协议中定义的 Source 类型的对象。

session?: DebugSession

一个可选的调试会话,当源描述使用引用编号从活动调试会话加载内容时将使用该会话。

返回值描述
Uri

可用于加载源内容的 Uri。

为特定的调试类型注册一个 调试适配器描述符工厂。扩展只能注册由该扩展定义的调试类型(或类型)的 DebugAdapterDescriptorFactory。否则将抛出错误。为同一调试类型注册多个 DebugAdapterDescriptorFactory 将导致错误。

参数描述
debugType: string

注册工厂的调试类型。

factory: DebugAdapterDescriptorFactory
返回值描述
Disposable

一个 Disposable,在被处置时注销此工厂。

为给定的调试类型注册一个调试适配器跟踪器工厂。

参数描述
debugType: string

注册工厂的调试类型,或使用 '*' 来匹配所有调试类型。

factory: DebugAdapterTrackerFactory
返回值描述
Disposable

一个 Disposable,在被处置时注销此工厂。

为特定的调试类型注册一个 调试配置提供程序。可选的 triggerKind 可用于指定何时触发提供程序的 provideDebugConfigurations 方法。目前有两种触发方式:使用 Initial 值(或未提供 triggerKind 参数时)时,provideDebugConfigurations 方法用于提供要复制到新创建的 launch.json 中的初始调试配置。使用 Dynamic 触发方式时,provideDebugConfigurations 方法用于动态确定要呈现给用户的调试配置(除了 launch.json 中的静态配置)。请注意,triggerKind 参数仅适用于 provideDebugConfigurations 方法:因此 resolveDebugConfiguration 方法不受任何影响。为不同触发方式注册单个提供程序,将导致相同的 resolve 方法被调用多次。可以为同一类型注册多个提供程序。

参数描述
debugType: string

注册提供程序的调试类型。

provider: DebugConfigurationProvider

要注册的 调试配置提供程序

triggerKind?: DebugConfigurationProviderTriggerKind

注册提供程序的 'provideDebugConfiguration' 方法的 触发器。如果缺少 triggerKind,则假定值为 DebugConfigurationProviderTriggerKind.Initial

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

删除断点。

参数描述
breakpoints: readonly Breakpoint[]

要删除的断点。

返回值描述
void

通过使用已命名的启动配置或已命名的复合配置,或直接传递 DebugConfiguration 来启动调试。在给定文件夹中找到的 '.vscode/launch.json' 中查找已命名的配置。在调试开始之前,所有未保存的文件都将被保存,并且启动配置将更新到最新状态。配置中使用的文件夹特定变量(例如 '${workspaceFolder}')将根据给定文件夹进行解析。

参数描述
folder: WorkspaceFolder

用于查找已命名配置和解析变量的 工作区文件夹,或者对于非文件夹设置,则为 undefined

nameOrConfiguration: string | DebugConfiguration

调试配置或复合配置的名称,或者是一个 DebugConfiguration 对象。

parentSessionOrOptions?: DebugSession | DebugSessionOptions

调试会话选项。当传入父 调试会话 时,假定选项仅包含此父会话。

返回值描述
Thenable<boolean>

一个 thenable,在调试成功启动时解析。

停止给定的调试会话,或者在省略 session 时停止所有调试会话。

参数描述
session?: DebugSession

要停止的 调试会话;如果省略,则停止所有会话。

返回值描述
Thenable<void>

一个 thenable,在会话成功停止时解析。

env

描述编辑器运行环境的命名空间。

变量

应用程序的托管位置。桌面端是 'desktop'。Web 端是指定的嵌入器,例如 'github.dev'、'codespaces' 或 'web'(如果嵌入器未提供该信息)。

编辑器的应用程序名称,例如 'VS Code'。

编辑器运行的应用程序根文件夹。

注意,在没有应用程序根文件夹表示的环境中运行时,该值为空字符串。

系统剪贴板。

指示这是应用程序的全新安装。如果安装在第一天内,则为 true,否则为 false

指示用户是否启用了遥测。可以观察此项来确定扩展是否应发送遥测数据。

表示首选的用户语言,例如 de-CHfren-US

编辑器的当前日志级别。

计算机的唯一标识符。

远程的名称。由扩展定义,常见的示例包括用于 Windows Subsystem for Linux 的 wsl 或用于使用安全外壳进行远程连接的 ssh-remote

注意,当没有远程扩展主机时,该值为 undefined;但在存在远程扩展主机的情况下,该值在所有扩展主机(本地和远程)中都已定义。使用 Extension.extensionKind 来了解特定扩展是否在远程运行。

当前会话的唯一标识符。每次启动编辑器时都会更改。

检测到的扩展主机默认 shell,它会被扩展主机平台的 terminal.integrated.defaultProfile 设置覆盖。请注意,在不支持 shell 的环境中,该值为空字符串。

UI kind 属性指示从哪个 UI 访问扩展。例如,扩展可以从桌面应用程序或 Web 浏览器访问。

编辑器在操作系统中注册的自定义 URI 方案。

事件

当编辑器的日志级别发生变化时触发的 事件

当默认 shell 发生变化时触发的 事件。该事件会触发新的 shell 路径。

当用户启用或禁用遥测时触发的 事件。如果用户启用了遥测,则为 true;如果用户禁用了遥测,则为 false

函数

将 URI 解析为外部可访问的形式。

http:https: 方案

将扩展正在运行的外部 URI(例如 http:https: 链接)解析为客户端机器上同一资源的 URI。

如果扩展在客户端机器上运行,则此操作无任何效果。

如果扩展在远程运行,此函数会自动建立从本地机器到远程机器 target 的端口转发隧道,并返回该隧道的本地 URI。端口转发隧道的生命周期由编辑器管理,并且用户可以关闭该隧道。

注意,通过 openExternal 传递的 URI 会自动解析,您不应在这些 URI 上调用 asExternalUri

vscode.env.uriScheme

创建一个 URI,该 URI(如果在浏览器中打开(例如通过 openExternal))将导致已注册的 UriHandler 被触发。

扩展不应对生成的 URI 进行任何假设,也不应以任何方式修改它。相反,扩展可以在身份验证流程中使用此 URI,例如通过将 URI 添加为回调查询参数到要进行身份验证的服务器。

注意,如果服务器决定向 URI 添加其他查询参数(例如 token 或 secret),它们将出现在传递给 UriHandler 的 URI 中。

身份验证流程的示例

vscode.window.registerUriHandler({
  handleUri(uri: vscode.Uri): vscode.ProviderResult<void> {
    if (uri.path === '/did-authenticate') {
      console.log(uri.toString());
    }
  }
});

const callableUri = await vscode.env.asExternalUri(
  vscode.Uri.parse(vscode.env.uriScheme + '://my.extension/did-authenticate')
);
await vscode.env.openExternal(callableUri);

注意,扩展不应缓存 asExternalUri 的结果,因为由于系统或用户操作,解析后的 URI 可能会失效——例如,在远程情况下,用户可能会关闭 asExternalUri 打开的端口转发隧道。

任何其他方案

任何其他方案都将被视为工作区 URI。在这种情况下,该方法将返回一个 URI,当处理该 URI 时,它将使编辑器打开工作区。

参数描述
target: Uri
返回值描述
Thenable<Uri>

可在客户端机器上使用的 URI。

创建一个新的 遥测记录器

参数描述
sender: TelemetrySender

遥测记录器使用的遥测发送者。

options?: TelemetryLoggerOptions

遥测记录器的选项。

返回值描述
TelemetryLogger

一个新的遥测记录器

使用默认应用程序在外部打开链接。根据所使用的方案,可以是

  • 浏览器 (http:, https:)
  • 邮件客户端 (mailto:)
  • VSCode 本身 (来自 vscode.env.uriSchemevscode:)

注意,打开文本文件内部文档应使用 showTextDocument,而不是此函数。

参数描述
target: Uri

应打开的 URI。

返回值描述
Thenable<boolean>

一个指示打开是否成功的 Promise。

extensions

用于处理已安装扩展的命名空间。扩展由 Extension 接口表示,该接口允许对其进行反射。

扩展作者可以通过从 activate 调用返回其 API 公共接口来向其他扩展提供 API。

export function activate(context: vscode.ExtensionContext) {
  let api = {
    sum(a, b) {
      return a + b;
    },
    mul(a, b) {
      return a * b;
    }
  };
  // 'export' public api-surface
  return api;
}

当依赖于另一个扩展的 API 时,请在 package.json 中添加 extensionDependencies 条目,并使用 getExtension 函数和 exports 属性,如下所示

let mathExt = extensions.getExtension('genius.math');
let importedApi = mathExt.exports;

console.log(importedApi.mul(42, 1));

变量

系统当前已知的所有扩展。

事件

extensions.all 发生变化时触发的事件。这可能发生在扩展被安装、卸载、启用或禁用时。

函数

通过完整标识符(格式为:publisher.name)获取扩展。

参数描述
extensionId: string

扩展标识符。

返回值描述
Extension<T> | undefined

一个扩展或 undefined

l10n

扩展 API 中与本地化相关的功能的命名空间。要正确使用此功能,您的扩展清单中必须定义 l10n,并且必须具有 bundle.l10n。.json 文件。有关如何生成 bundle.l10n 的更多信息。.json 文件,请查看 vscode-l10n 仓库

注意:内置扩展(例如,Git、TypeScript Language Features、GitHub Authentication)不包含在 l10n 属性要求中。换句话说,它们不需要在扩展清单中指定 l10n,因为它们的翻译字符串来自语言包。

变量

已为扩展加载的本地化字符串束。如果没有加载束,则为 undefined。当未找到束或我们使用默认语言运行时,通常不会加载束。

已为扩展加载的本地化束的 URI。如果没有加载束,则为 undefined。当未找到束或我们使用默认语言运行时,通常不会加载束。

函数

标记一个字符串用于本地化。如果语言(由 env.language 指定)有可用的本地化束,并且该束对此消息有本地化值,则将返回该本地化值(其中注入了 args 值以用于任何模板化值)。

示例

l10n.t('Hello {0}!', 'World');
参数描述
message: string

要本地化的消息。支持索引模板,其中字符串如 {0}{1} 将被 args 数组中相应索引处的项替换。

...args: Array<string | number | boolean>

要用于本地化字符串的参数。参数的索引用于匹配本地化字符串中的模板占位符。

返回值描述
字符串

带有注入参数的本地化字符串。

标记一个字符串用于本地化。如果语言(由 env.language 指定)有可用的本地化束,并且该束对此消息有本地化值,则将返回该本地化值(其中注入了 args 值以用于任何模板化值)。

示例

l10n.t('Hello {name}', { name: 'Erich' });
参数描述
message: string

要本地化的消息。支持命名模板,其中字符串如 {foo}{bar} 将被 Record 中相应键(foo、bar 等)的值替换。

args: Record<string, string | number | boolean>

要用于本地化字符串的参数。Record 中键的名称用于匹配本地化字符串中的模板占位符。

返回值描述
字符串

带有注入参数的本地化字符串。

标记一个字符串用于本地化。如果语言(由 env.language 指定)有可用的本地化束,并且该束对此消息有本地化值,则将返回该本地化值(其中注入了 args 值以用于任何模板化值)。

参数描述
options: {args: Array<string | number | boolean> | Record<string, string | number | boolean>, comment: string | string[], message: string}

本地化消息时使用的选项。

返回值描述
字符串

带有注入参数的本地化字符串。

语言

参与特定语言编辑器 功能(如 IntelliSense、代码操作、诊断等)的命名空间。

存在许多编程语言,并且语法、语义和范例各不相同。尽管如此,自动单词补全、代码导航或代码检查等功能在不同编程语言的各种工具中已变得流行。

编辑器提供了一个 API,可以轻松地提供这些常见功能,所有 UI 和操作都已就绪,并且允许您仅通过提供数据来参与。例如,要贡献一个悬停提示,您只需要提供一个函数,该函数可以接受 TextDocumentPosition 作为参数并返回悬停信息。其余部分,如跟踪鼠标、定位悬停提示、保持悬停提示稳定等,都由编辑器负责。

languages.registerHoverProvider('javascript', {
  provideHover(document, position, token) {
    return new Hover('I am a hover!');
  }
});

注册是使用 document selector 完成的,它是一个语言 ID,例如 javascript,或一个更复杂的 filter,例如 { language: 'typescript', scheme: 'file' }。将文档与此类选择器匹配将产生一个 score,该分数用于确定提供程序是否以及如何使用。当分数相等时,最后出现的提供程序获胜。对于允许完整元数(arity)的功能,例如 hover,分数仅用于检查是否 >0;对于其他功能,例如 IntelliSense,分数用于确定询问提供程序参与的顺序。

事件

当全局诊断集发生变化时触发的 事件。这是新添加和删除的诊断。

函数

创建一个诊断集合。

参数描述
name?: string

集合的 名称

返回值描述
DiagnosticCollection

一个新的诊断集合。

创建一个新的 语言状态项

参数描述
id: string

项的标识符。

selector: DocumentSelector

定义该项显示在哪些编辑器上的文档选择器。

返回值描述
LanguageStatusItem

一个新的语言状态项。

获取给定资源的全部诊断。

参数描述
resource: Uri

一个资源

返回值描述
Diagnostic[]

一个 诊断 对象数组或一个空数组。

获取所有诊断。

参数描述
返回值描述
Array<[Uri, Diagnostic[]]>

一个 URI-诊断元组数组或一个空数组。

返回所有已知语言的标识符。

参数描述
返回值描述
Thenable<string[]>

解析为标识符字符串数组的 Promise。

计算文档 selector 和文档之间的匹配。大于零的值表示选择器匹配文档。

匹配是根据以下规则计算的

  1. DocumentSelector 是数组时,为每个包含的 DocumentFilter 或语言标识符计算匹配,并取最大值。
  2. 字符串将被解构为 DocumentFilterlanguage 部分,因此 "fooLang" 等同于 { language: "fooLang" }
  3. 通过比较 DocumentFilter 的各个部分与文档来匹配 DocumentFilter。适用以下规则
    1. DocumentFilter 为空({})时,结果为 0
    2. schemelanguagepatternnotebook 已定义但其中一个不匹配时,结果为 0
    3. 匹配 * 得分为 5,通过相等或 glob 模式匹配得分为 10
    4. 结果是每个匹配的最大值

示例

// default document from disk (file-scheme)
doc.uri; //'file:///my/file.js'
doc.languageId; // 'javascript'
match('javascript', doc); // 10;
match({ language: 'javascript' }, doc); // 10;
match({ language: 'javascript', scheme: 'file' }, doc); // 10;
match('*', doc); // 5
match('fooLang', doc); // 0
match(['fooLang', '*'], doc); // 5

// virtual document, e.g. from git-index
doc.uri; // 'git:/my/file.js'
doc.languageId; // 'javascript'
match('javascript', doc); // 10;
match({ language: 'javascript', scheme: 'git' }, doc); // 10;
match('*', doc); // 5

// notebook cell document
doc.uri; // `vscode-notebook-cell:///my/notebook.ipynb#gl65s2pmha`;
doc.languageId; // 'python'
match({ notebookType: 'jupyter-notebook' }, doc); // 10
match({ notebookType: 'fooNotebook', language: 'python' }, doc); // 0
match({ language: 'python' }, doc); // 10
match({ notebookType: '*' }, doc); // 5
参数描述
selector: DocumentSelector

文档选择器。

document: TextDocument

一个文本文档。

返回值描述
number

一个 >0 的数字表示选择器匹配,0 表示选择器不匹配。

注册一个调用层次结构提供程序。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: CallHierarchyProvider

调用层次结构提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个代码操作提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: CodeActionProvider<CodeAction>

代码操作提供程序。

metadata?: CodeActionProviderMetadata

有关提供程序所提供代码操作类型元数据。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个代码 Lens 提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: CodeLensProvider<CodeLens>

代码 Lens 提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个颜色提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DocumentColorProvider

颜色提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个补全提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序按其 score 排序,具有相同分数的组会按顺序请求补全项。当一个或多个提供程序返回结果时,过程停止。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

补全项提供程序可以与一组 triggerCharacters 相关联。当键入触发字符时,会请求补全,但仅从注册了键入字符的提供程序请求。因此,触发字符应不同于 word characters,常用的触发字符是 . 以触发成员补全。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: CompletionItemProvider<CompletionItem>

补全提供程序。

...triggerCharacters: string[]

键入以下字符之一时触发补全。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个声明提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DeclarationProvider

声明提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个定义提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DefinitionProvider

定义提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个新的 DocumentDropEditProvider

可以为一种语言注册多个拖放提供程序。当将内容拖放到编辑器中时,将根据它们处理的 mime 类型(由其 DocumentDropEditProviderMetadata 指定)调用编辑器语言的所有注册提供程序。

每个提供程序可以返回一个或多个 DocumentDropEdits。编辑会根据 DocumentDropEdit.yieldTo 属性进行排序。默认情况下,将应用第一个编辑。如果存在其他编辑,这些编辑将作为可选择的拖放选项显示给用户。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DocumentDropEditProvider<DocumentDropEdit>

拖放提供程序。

metadata?: DocumentDropEditProviderMetadata

有关提供程序的其他元数据。

返回值描述
Disposable

一个 Disposable,在处置时取消注册此提供程序。

为文档注册一个格式化提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序按其 score 排序,并使用最佳匹配的提供程序。所选提供程序的失败将导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DocumentFormattingEditProvider

文档格式化编辑提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个文档高亮提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序按其 score 排序,并按顺序请求文档高亮。当提供程序返回一个 非假非失败 的结果时,该过程停止。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DocumentHighlightProvider

文档高亮提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个文档链接提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DocumentLinkProvider<DocumentLink>

文档链接提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个新的 DocumentPasteEditProvider

一个语言可以注册多个提供程序。将根据 DocumentPasteProviderMetadata 中指定的处理的 MIME 类型,为复制和粘贴操作调用所有已注册的语言提供程序。

对于 复制操作,每个提供程序对 DataTransfer 所做的更改将合并到一个 DataTransfer 中,该 DataTransfer 用于填充剪贴板。

对于 [DocumentPasteEditProvider.providerDocumentPasteEdits 粘贴操作](#_DocumentPasteEditProvider.providerDocumentPasteEdits 粘贴操作),将调用每个提供程序,并且它可以返回一个或多个 DocumentPasteEdits。这些编辑将使用 DocumentPasteEdit.yieldTo 属性进行排序。默认情况下,将应用第一个编辑,其余编辑将作为可选择的粘贴选项显示给用户,位于粘贴小部件中。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DocumentPasteEditProvider<DocumentPasteEdit>

粘贴编辑器提供程序。

metadata: DocumentPasteProviderMetadata

有关提供程序的其他元数据。

返回值描述
Disposable

一个 Disposable,在处置时取消注册此提供程序。

为文档范围注册格式化提供程序。

注意:文档范围提供程序也是一个 文档格式化程序,这意味着在注册范围提供程序时,无需 注册 文档格式化程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序按其 score 排序,并使用最佳匹配的提供程序。所选提供程序的失败将导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DocumentRangeFormattingEditProvider

文档范围格式化编辑提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

为文档范围注册语义标记提供程序。

注意:如果文档同时具有 DocumentSemanticTokensProviderDocumentRangeSemanticTokensProvider,则范围提供程序仅在初始调用,直到整个文档提供程序解析第一个请求。一旦整个文档提供程序解析了第一个请求,通过范围提供程序提供的语义标记将被丢弃,此后仅使用文档提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序按其 score 排序,并使用最佳匹配的提供程序。所选提供程序的失败将导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DocumentRangeSemanticTokensProvider

文档范围语义标记提供程序。

legend: SemanticTokensLegend
返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

为整个文档注册语义标记提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序按其 score 排序,并使用最佳匹配的提供程序。所选提供程序的失败将导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DocumentSemanticTokensProvider

文档语义标记提供程序。

legend: SemanticTokensLegend
返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册文档符号提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: DocumentSymbolProvider

文档符号提供程序。

metaData?: DocumentSymbolProviderMetadata

提供程序的元数据。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个定位文本文件中可计算表达式的提供程序。编辑器将在活动的调试会话中计算表达式,并在调试悬停时显示结果。

如果为某个语言注册了多个提供程序,则会使用任意一个提供程序。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: EvaluatableExpressionProvider

可计算表达式提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册折叠范围提供程序。

可以为一个语言注册多个提供程序。在这种情况下,提供程序将并行请求,并且结果将被合并。如果多个折叠范围从同一位置开始,则仅使用第一个注册提供程序的结果。如果一个折叠范围与一个位置较小的另一个范围重叠,它也会被忽略。

失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: FoldingRangeProvider

折叠范围提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册悬停提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: HoverProvider

悬停提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册实现提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: ImplementationProvider

实现提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册插入提示提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: InlayHintsProvider<InlayHint>

插入提示提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册行内补全提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: InlineCompletionItemProvider

行内补全提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个返回调试器“行内值”功能的数据的提供程序。每当通用调试器在源文件中停止时,为该文件语言注册的提供程序将被调用,以返回将显示在编辑器行末的文本数据。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: InlineValuesProvider

行内值提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册链接编辑范围提供程序。

可以为一个语言注册多个提供程序。在这种情况下,提供程序将按其 分数 进行排序,并使用匹配度最高且有结果的提供程序。选定提供程序的失败将导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: LinkedEditingRangeProvider

链接编辑范围提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个用于输入时格式化的提供程序。当用户启用 editor.formatOnType 设置时,该提供程序将激活。

可以为一种语言注册多个提供程序。在这种情况下,提供程序按其 score 排序,并使用最佳匹配的提供程序。所选提供程序的失败将导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: OnTypeFormattingEditProvider

输入时格式化编辑提供程序。

firstTriggerCharacter: string

触发格式化的字符,例如 }

...moreTriggerCharacter: string[]

更多触发字符。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册引用提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: ReferenceProvider

引用提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册重命名提供程序。

可以为一个语言注册多个提供程序。在这种情况下,提供程序将按其 分数 进行排序并按顺序调用。第一个产生结果的提供程序将定义整个操作的结果。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: RenameProvider

重命名提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册选择范围提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: SelectionRangeProvider

选择范围提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册签名帮助提供程序。

可以为一个语言注册多个提供程序。在这种情况下,提供程序将按其 分数 进行排序,并按顺序调用,直到某个提供程序返回有效结果。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: SignatureHelpProvider

签名帮助提供程序。

...triggerCharacters: string[]

当用户输入像 ,( 这样的字符时,触发签名帮助。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: SignatureHelpProvider

签名帮助提供程序。

metadata: SignatureHelpProviderMetadata

有关提供程序的信息。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册类型定义提供程序。

可以为一种语言注册多个提供程序。在这种情况下,提供程序会并行请求,结果会被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: TypeDefinitionProvider

类型定义提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册类型层次结构提供程序。

参数描述
selector: DocumentSelector

定义此提供程序适用的文档的选择器。

provider: TypeHierarchyProvider

类型层次结构提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册工作区符号提供程序。

可以注册多个提供程序。在这种情况下,提供程序将并行请求,并且结果将被合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。

参数描述
provider: WorkspaceSymbolProvider<SymbolInformation>

工作区符号提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

为语言设置 语言配置

参数描述
language: string

语言标识符,例如 typescript

configuration: LanguageConfiguration

语言配置。

返回值描述
Disposable

一个 Disposable,它会在被销毁时取消此配置。

设置(并更改)与给定文档关联的 语言

注意,调用此函数将触发 onDidCloseTextDocument 事件,然后是 onDidOpenTextDocument 事件。

参数描述
document: TextDocument

要更改语言的文档。

languageId: string

新的语言标识符。

返回值描述
Thenable<TextDocument>

一个 thenable,它会随着更新的文档解析。

lm

与语言模型相关的功能的命名空间。

变量

一个包含所有可用工具的列表,这些工具已通过 lm.registerTool 注册。它们可以通过 lm.invokeTool 调用,并使用符合其声明的 inputSchema 的输入。

事件

当可用聊天模型集发生变化时触发的事件。

函数

通过名称调用 lm.tools 中的工具,并提供给定的输入。输入将根据工具声明的模式进行验证。

工具可以由聊天参与者调用,在处理聊天请求的上下文中,或由任何扩展在任何自定义流中全局调用。

在前一种情况下,调用者应传递 toolInvocationToken,它来自 聊天请求。这可以确保聊天 UI 为正确的对话显示工具调用。

工具 结果 是由 文本prompt-tsx 部分组成的数组。如果工具调用者使用 vscode/prompt-tsx,它可以将响应部分通过 ToolResult 包含在其提示中。如果不是,这些部分可以通过具有 LanguageModelToolResultPart 的用户消息传递给 LanguageModelChat

如果聊天参与者希望保留跨多轮的请求的工具结果,它可以将工具结果存储在处理程序返回的 ChatResult.metadata 中,并在下一轮从 ChatResponseTurn.result 中检索它们。

参数描述
name: string

要调用的工具的名称。

options: LanguageModelToolInvocationOptions<object>

调用工具时使用的选项。

token?: CancellationToken

一个取消标记。有关如何创建它,请参阅 CancellationTokenSource

返回值描述
Thenable<LanguageModelToolResult>

工具调用的结果。

注册一个 LanguageModelChatProvider 注意:您还必须在 package.json 的 languageModelChatProviders 贡献点中定义语言模型聊天提供程序。

参数描述
vendor: string

此提供程序的供应商。必须是全局唯一的。例如 copilotopenai

provider: LanguageModelChatProvider<LanguageModelChatInformation>

要注册的提供程序。

返回值描述
Disposable

一个 disposable,在被销毁时会注销该提供程序。

注册一个提供 Model Context Protocol 服务器供编辑器使用的提供程序。这允许编辑器动态地提供 MCP 服务器,除了用户在其配置文件中创建的服务器之外。

在调用此方法之前,扩展必须使用相应的 id 注册 contributes.mcpServerDefinitionProviders 扩展点,例如

    "contributes": {
        "mcpServerDefinitionProviders": [
            {
                "id": "cool-cloud-registry.mcp-servers",
                "label": "Cool Cloud Registry",
            }
        ]
    }

当新的 McpServerDefinitionProvider 可用时,编辑器默认会在提交聊天消息时自动调用它来发现新的服务器和工具。要启用此流程,扩展应在激活期间调用 registerMcpServerDefinitionProvider

参数描述
id: string

提供程序的 ID,对于扩展来说是唯一的。

provider: McpServerDefinitionProvider<McpServerDefinition>

要注册的提供程序。

返回值描述
Disposable

一个 disposable,在被销毁时会注销该提供程序。

注册一个 LanguageModelTool。该工具还必须在 package.json 的 languageModelTools 贡献点中注册。注册的工具在 lm.tools 列表中可供任何扩展查看。但要让它被语言模型看到,它必须在 LanguageModelChatRequestOptions.tools 的可用工具列表中提供。

参数描述
name: string
tool: LanguageModelTool<T>
返回值描述
Disposable

一个 Disposable,在被销毁时会注销该工具。

通过 选择器 选择聊天模型。这可以返回多个或零个聊天模型,并且扩展必须优雅地处理这些情况,特别是当没有聊天模型存在时。

const models = await vscode.lm.selectChatModels({ family: 'gpt-3.5-turbo' });
if (models.length > 0) {
    const [first] = models;
    const response = await first.sendRequest(...)
    // ...
} else {
    // NO chat models available
}

选择器可以写成广泛匹配给定供应商或系列的所有模型,也可以通过 ID 精确选择一个模型。请记住,可用模型集会随时间变化,但提示在不同模型上的表现也可能不同。

请注意,扩展可以保留此函数返回的结果并在以后使用它们。但是,当 onDidChangeChatModels 事件触发时,聊天模型的列表可能会发生变化,扩展应该重新查询。

参数描述
selector?: LanguageModelChatSelector

聊天模型选择器。如果省略,则返回所有聊天模型。

返回值描述
Thenable<LanguageModelChat[]>

一个聊天模型数组,可以为空!

notebooks

笔记本的命名空间。

笔记本功能由三个松散耦合的组件组成。

  1. NotebookSerializer 使编辑器能够打开、显示和保存笔记本。
  2. NotebookController 负责笔记本的执行,例如,它们会从代码单元格生成输出。
  3. NotebookRenderer 在编辑器中呈现笔记本输出。它们在单独的上下文中运行。

函数

创建一个新的笔记本控制器。

参数描述
id: string

控制器的标识符。在扩展中必须是唯一的。

notebookType: string

此控制器适用的笔记本类型。

label: string

控制器的标签。

handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>

控制器的执行处理程序。

返回值描述
NotebookController

一个新的笔记本控制器。

创建一个用于与特定渲染器通信的新消息实例。

  • 注意 1:扩展只能创建在其 package.json 文件中定义的渲染器。
  • 注意 2:只有当其 notebookRenderer 贡献中的 requiresMessaging 设置为 alwaysoptional 时,渲染器才能访问消息传递。
参数描述
rendererId: string

要通信的渲染器 ID

返回值描述
NotebookRendererMessaging

一个新的笔记本渲染器消息对象。

为给定的笔记本类型注册一个 单元格状态栏项提供程序

参数描述
notebookType: string

要注册的笔记本类型。

provider: NotebookCellStatusBarItemProvider

一个单元格状态栏提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

scm

源代码管理命名空间。

变量

扩展创建的最后一个源代码控件的 输入框

  • 已弃用 - 请改用 SourceControl.inputBox

函数

创建一个新的 源代码控件 实例。

参数描述
id: string

源代码控件的 id。一个简短的标识符,例如:git

label: string

源代码控件的易读字符串。例如:Git

rootUri?: Uri

源代码控件根目录的可选 URI。例如:Uri.parse(workspaceRoot)

返回值描述
SourceControl

源代码控件 的一个实例。

tasks

任务功能命名空间。

变量

当前活动的任务执行,或一个空数组。

事件

任务结束时触发。

底层进程结束时触发。对于不执行底层进程的任务,此事件将不会触发。

任务开始时触发。

底层进程启动时触发。对于不执行底层进程的任务,此事件将不会触发。

函数

执行由编辑器管理的任务。返回的任务执行可用于终止任务。

  • 抛出 - 当在无法启动新进程的环境中运行 ShellExecution 或 ProcessExecution 任务时。在这种环境中,只能运行 CustomExecution 任务。
参数描述
task: Task

要执行的任务

返回值描述
Thenable<TaskExecution>

解析为任务执行的 thenable。

获取系统中所有可用的任务。这包括来自 tasks.json 文件的任务以及通过扩展贡献的任务提供程序中的任务。

参数描述
filter?: TaskFilter

可选过滤器,用于选择特定类型或版本的任务。

返回值描述
Thenable<Task[]>

解析为任务数组的 thenable。

注册一个任务提供程序。

参数描述
type: string

此提供程序注册的任务类型。

provider: TaskProvider<Task>

一个任务提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

tests

测试功能命名空间。测试是通过注册 TestController 实例来发布的,然后添加 TestItems。控制器还可以通过创建一或多个 TestRunProfile 实例来描述如何运行测试。

函数

创建一个新的测试控制器。

参数描述
id: string

控制器的标识符,必须是全局唯一的。

label: string

控制器的易读标签。

返回值描述
TestController

TestController 的一个实例。

window

用于处理编辑器当前窗口的命名空间。这包括可见和活动的编辑器,以及用于显示消息、选择和请求用户输入的 UI 元素。

变量

当前在设置中配置的活动颜色主题。可以通过 workbench.colorTheme 设置更改活动主题。

当前活动的 笔记本编辑器undefined。活动编辑器是当前获得焦点的编辑器,或者在没有编辑器获得焦点时,是最近更改输入内容的编辑器。

当前活动的终端或 undefined。活动终端是当前获得焦点的终端,或者最近获得焦点的终端。

当前活动的编辑器或 undefined。活动编辑器是当前获得焦点的编辑器,或者在没有编辑器获得焦点时,是最近更改输入内容的编辑器。

表示当前窗口的状态。

表示主编辑器区域内的网格小部件

当前打开的终端,或一个空数组。

当前可见的 笔记本编辑器,或一个空数组。

当前可见的编辑器,或一个空数组。

事件

当活动颜色主题更改或发生更改时触发的 Event

活动笔记本编辑器 更改时触发的 Event注意,当活动编辑器更改为 undefined 时,事件也会触发。

活动终端 更改时触发的 Event注意,当活动终端更改为 undefined 时,事件也会触发。

活动编辑器 更改时触发的 Event注意,当活动编辑器更改为 undefined 时,事件也会触发。

笔记本编辑器选择 发生变化时触发的 Event

笔记本编辑器可见范围 发生变化时触发的 Event

当终端中的 Shell 集成激活或其某个属性更改时触发。

终端状态 发生变化时触发的 Event

当编辑器的选项发生变化时触发的 Event

当编辑器中的选择发生变化时触发的 Event

当编辑器的视图列发生变化时触发的 Event

当编辑器的可见范围发生变化时触发的 Event

可见笔记本编辑器 发生变化时触发的 Event

可见编辑器 数组发生变化时触发的 Event

当当前窗口的焦点或活动状态发生变化时触发的 Event。事件的值表示窗口是否获得焦点。

当终端被处置时触发的 Event

当终端命令结束时触发。只有在终端 启用了 Shell 集成 时,此事件才会触发。

当终端已创建时触发的 Event,无论是通过 createTerminal API 还是通过命令。

当终端命令开始时触发。只有在终端 启用了 Shell 集成 时,此事件才会触发。

函数

创建一个 InputBox 让用户输入文本。

请注意,在许多情况下,更方便的 window.showInputBox 更容易使用。window.createInputBox 应在 window.showInputBox 未提供所需灵活性时使用。

参数描述
返回值描述
InputBox

一个新的 InputBox

使用给定的名称和语言 ID 创建一个新的 输出通道。如果未提供语言 ID,则使用 Log 作为默认语言 ID。

您可以从 可见编辑器活动编辑器 访问可见或活动的输出通道,作为 文本文档,并使用语言 ID 贡献语言功能,如语法着色、代码 Lens 等。

参数描述
name: string

将在 UI 中用于表示通道的易读字符串。

languageId?: string

与通道关联的语言的标识符。

返回值描述
OutputChannel

一个新的输出通道。

使用给定的名称创建一个新的 日志输出通道

参数描述
name: string

将在 UI 中用于表示通道的易读字符串。

options: {log: true}

日志输出通道的选项。

返回值描述
LogOutputChannel

一个新的日志输出通道。

创建一个 QuickPick 让用户从 T 类型项目列表中选择一个项目。

请注意,在许多情况下,更方便的 window.showQuickPick 更容易使用。window.createQuickPick 应在 window.showQuickPick 未提供所需灵活性时使用。

参数描述
返回值描述
QuickPick<T>

一个新的 QuickPick

创建一个状态栏

参数描述
id: string

项的标识符。在扩展中必须是唯一的。

alignment?: StatusBarAlignment

项的对齐方式。

priority?: number

项的优先级。值越高表示项应显示得越靠左。

返回值描述
StatusBarItem

一个新的状态栏项。

创建一个状态栏

参见 createStatusBarItem 用于创建带有标识符的状态栏项。

参数描述
alignment?: StatusBarAlignment

项的对齐方式。

priority?: number

项的优先级。值越高表示项应显示得越靠左。

返回值描述
StatusBarItem

一个新的状态栏项。

创建一个具有底层 shell 进程的 Terminal。如果工作区目录存在,终端的工作目录将是工作区目录。

  • 抛出 - 在无法启动新进程的环境中运行时。
参数描述
name?: string

将在 UI 中用于表示终端的可选易读字符串。

shellPath?: string

用于终端的自定义 shell 可执行文件的可选路径。

shellArgs?: string | readonly string[]

自定义 shell 可执行文件的可选参数。字符串只能在 Windows 上使用,它允许在 命令行格式 中指定 shell 参数。

返回值描述
终端

一个新的 Terminal。

创建一个具有底层 shell 进程的 Terminal

  • 抛出 - 在无法启动新进程的环境中运行时。
参数描述
options: TerminalOptions

描述新终端特征的 TerminalOptions 对象。

返回值描述
终端

一个新的 Terminal。

创建一个由扩展控制其输入和输出的 Terminal

参数描述
options: ExtensionTerminalOptions

描述新终端特征的 ExtensionTerminalOptions 对象。

返回值描述
终端

一个新的 Terminal。

创建一个 TextEditorDecorationType,可用于向文本编辑器添加装饰。

参数描述
options: DecorationRenderOptions

装饰类型的渲染选项。

返回值描述
TextEditorDecorationType

一个新的装饰类型实例。

为通过 views 扩展点贡献的视图创建一个 TreeView

参数描述
viewId: string

通过 views 扩展点贡献的视图的 ID。

options: TreeViewOptions<T>

创建 TreeView 的选项

返回值描述
TreeView<T>

一个 TreeView

创建并显示一个新的 Webview 面板。

参数描述
viewType: string

标识 Webview 面板的类型。

title: string

面板的标题。

showOptions: ViewColumn | {preserveFocus: boolean, viewColumn: ViewColumn}

在编辑器中显示 Webview 的位置。如果设置了 preserveFocus,新的 Webview 将不会获得焦点。

options?: WebviewPanelOptions & WebviewOptions

新面板的设置。

返回值描述
WebviewPanel

新的 Webview 面板。

customEditors 扩展点贡献的 viewType 注册自定义编辑器提供程序。

打开自定义编辑器时,会触发 onCustomEditor:viewType 激活事件。您的扩展必须在激活时作为 viewType 的一部分注册 CustomTextEditorProviderCustomReadonlyEditorProviderCustomEditorProvider

参数描述
viewType: string

自定义编辑器提供程序的唯一标识符。这应与 customEditors 贡献点中的 viewType 匹配。

provider: CustomTextEditorProvider | CustomReadonlyEditorProvider<CustomDocument> | CustomEditorProvider<CustomDocument>

解析自定义编辑器的提供程序。

options?: {supportsMultipleEditorsPerDocument: boolean, webviewOptions: WebviewPanelOptions}

提供程序的选项。

返回值描述
Disposable

取消注册提供程序的 Disposable。

注册文件装饰提供程序。

参数描述
provider: FileDecorationProvider
返回值描述
Disposable

一个取消注册提供程序的 Disposable

注册一个提供程序,该提供程序能够检测和处理终端中的链接。

参数描述
provider: TerminalLinkProvider<TerminalLink>

提供终端链接的提供程序。

返回值描述
Disposable

取消注册提供程序的 Disposable。

为已贡献的终端配置文件注册一个提供程序。

参数描述
id: string

已贡献的终端配置文件的 ID。

provider: TerminalProfileProvider

终端配置文件提供程序。

返回值描述
Disposable

一个用于注销提供程序的 disposable

为通过 views 扩展点贡献的视图注册一个 TreeDataProvider。这将允许您向 TreeView 贡献数据,并在数据更改时进行更新。

注意: 要访问 TreeView 并对其执行操作,请使用 createTreeView

参数描述
viewId: string

通过 views 扩展点贡献的视图的 ID。

treeDataProvider: TreeDataProvider<T>

提供视图树数据的 TreeDataProvider

返回值描述
Disposable

一个用于注销 TreeDataProviderdisposable

注册一个能够处理系统范围的 URIURI 处理程序。如果有多个窗口打开,最顶层的窗口将处理该 URI。URI 处理程序的作用域为其贡献的扩展;它只能处理指向该扩展本身的 URI。URI 必须遵循以下规则:

  • URI 方案必须是 vscode.env.uriScheme
  • URI 权限必须是扩展 ID(例如 my.extension);
  • URI 路径、查询和片段部分是任意的。

例如,如果 my.extension 扩展注册了一个 URI 处理程序,它将只能处理具有前缀 product-name://my.extension 的 URI。

扩展在其整个激活生命周期中只能注册一个 URI 处理程序。

  • 注意: 存在一个 onUri 激活事件,当一个指向当前扩展的 URI 即将被处理时,该事件就会触发。
参数描述
handler: UriHandler

为此扩展注册的 URI 处理程序。

返回值描述
Disposable

一个用于注销处理程序的 disposable

注册一个 Webview 面板序列化器。

支持恢复的扩展应具有 "onWebviewPanel:viewType" 激活事件,并确保在激活期间调用 registerWebviewPanelSerializer

对于给定的 viewType,一次只能注册一个序列化器。

参数描述
viewType: string

可以序列化的 Webview 面板的类型。

serializer: WebviewPanelSerializer<unknown>

Webview 序列化器。

返回值描述
Disposable

一个用于注销序列化器的 disposable

为 Webview 视图注册一个新的提供程序。

参数描述
viewId: string

视图的唯一 ID。这应该与 package.json 中 views 贡献的 id 匹配。

provider: WebviewViewProvider

Webview 视图的提供程序。

options?: {webviewOptions: {retainContextWhenHidden: boolean}}
返回值描述
Disposable

取消注册提供程序的 Disposable。

在状态栏设置一条消息。这是更强大的状态栏 项目 的快捷方式。

参数描述
text: string

要显示的消息,支持状态栏 项目 中的图标替换。

hideAfterTimeout: number

消息将被隐藏的超时时间(毫秒)。

返回值描述
Disposable

一个用于隐藏状态栏消息的 disposable。

在状态栏设置一条消息。这是更强大的状态栏 项目 的快捷方式。

参数描述
text: string

要显示的消息,支持状态栏 项目 中的图标替换。

hideWhenDone: Thenable<any>

完成(解析或拒绝)后将隐藏消息的 Thenable。

返回值描述
Disposable

一个用于隐藏状态栏消息的 disposable。

在状态栏设置一条消息。这是更强大的状态栏 项目 的快捷方式。

注意 状态栏消息会堆叠,并且在使用完毕后必须被 disposed。

参数描述
text: string

要显示的消息,支持状态栏 项目 中的图标替换。

返回值描述
Disposable

一个用于隐藏状态栏消息的 disposable。

显示错误消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

显示错误消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

显示错误消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

显示错误消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

向用户显示信息消息。可以选择提供一个将作为可点击按钮呈现的项目数组。

参数描述
message: string

要显示的消息。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

向用户显示信息消息。可以选择提供一个将作为可点击按钮呈现的项目数组。

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

显示信息消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

显示信息消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

打开一个输入框,让用户输入。

如果输入框被取消(例如,按 ESC 键),则返回值将是 undefined。否则,返回值将是用户输入的字符串,如果用户未输入任何内容但按 OK 关闭了输入框,则返回空字符串。

参数描述
options?: InputBoxOptions

配置输入框的行为。

token?: CancellationToken

可以用来信号取消的 token。

返回值描述
Thenable<string | undefined>

一个 thenable,它解析为用户提供的字符串,或在被取消时解析为 undefined

笔记本编辑器 中显示给定的 NotebookDocument

参数描述
document: NotebookDocument

要显示的文本文档。

options?: NotebookDocumentShowOptions

用于配置显示 笔记本编辑器 行为的 编辑器选项

返回值描述
Thenable<NotebookEditor>

一个解析为 笔记本编辑器 的 Promise。

向用户显示一个文件打开对话框,允许用户选择用于打开的文件。

参数描述
options?: OpenDialogOptions

控制对话框的选项。

返回值描述
Thenable<Uri[] | undefined>

一个解析为所选资源或 undefined 的 Promise。

显示一个允许多选的列表。

参数描述
items: readonly string[] | Thenable<readonly string[]>

一个字符串数组,或一个解析为字符串数组的 Promise。

options: QuickPickOptions & {canPickMany: true}

配置选择列表的行为。

token?: CancellationToken

可以用来信号取消的 token。

返回值描述
Thenable<string[] | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

显示一个选择列表。

参数描述
items: readonly string[] | Thenable<readonly string[]>

一个字符串数组,或一个解析为字符串数组的 Promise。

options?: QuickPickOptions

配置选择列表的行为。

token?: CancellationToken

可以用来信号取消的 token。

返回值描述
Thenable<string | undefined>

一个 thenable,它解析为所选字符串,或在被取消时解析为 undefined

显示一个允许多选的列表。

参数描述
items: readonly T[] | Thenable<readonly T[]>

一个项目数组,或一个解析为项目数组的 Promise。

options: QuickPickOptions & {canPickMany: true}

配置选择列表的行为。

token?: CancellationToken

可以用来信号取消的 token。

返回值描述
Thenable<T[] | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

显示一个选择列表。

参数描述
items: readonly T[] | Thenable<readonly T[]>

一个项目数组,或一个解析为项目数组的 Promise。

options?: QuickPickOptions

配置选择列表的行为。

token?: CancellationToken

可以用来信号取消的 token。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

向用户显示一个文件保存对话框,允许用户选择用于保存的文件。

参数描述
options?: SaveDialogOptions

控制对话框的选项。

返回值描述
Thenable<Uri | undefined>

一个解析为所选资源或 undefined 的 Promise。

在文本编辑器中显示给定的文档。可以提供一个 来控制编辑器显示的位置。可能会更改 活动编辑器

参数描述
document: TextDocument

要显示的文本文档。

column?: ViewColumn

应显示 编辑器 的视图列。默认为 活动。不存在的列最多会被创建到 ViewColumn.Nine。使用 ViewColumn.Beside 将编辑器打开到当前活动编辑器旁边。

preserveFocus?: boolean

true 时,编辑器将不会获得焦点。

返回值描述
Thenable<TextEditor>

一个解析为 编辑器 的 Promise。

在文本编辑器中显示给定的文档。可以提供 选项 来控制显示编辑器的选项。可能会更改 活动编辑器

参数描述
document: TextDocument

要显示的文本文档。

options?: TextDocumentShowOptions

用于配置显示 编辑器 行为的 编辑器选项

返回值描述
Thenable<TextEditor>

一个解析为 编辑器 的 Promise。

openTextDocument(uri).then(document => showTextDocument(document, options)) 的简写。

另请参阅 workspace.openTextDocument

参数描述
uri: Uri

资源标识符。

options?: TextDocumentShowOptions

用于配置显示 编辑器 行为的 编辑器选项

返回值描述
Thenable<TextEditor>

一个解析为 编辑器 的 Promise。

显示警告消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

显示警告消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

显示警告消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

显示警告消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

将作为消息中的操作按钮显示的一组项目。

返回值描述
Thenable<T | undefined>

一个 thenable,它解析为所选项目,或在被取消时解析为 undefined

显示一个用于选择工作区文件夹的列表。如果没有打开文件夹,则返回 undefined

参数描述
options?: WorkspaceFolderPickOptions

配置工作区文件夹列表的行为。

返回值描述
Thenable<WorkspaceFolder | undefined>

一个解析为工作区文件夹或 undefined 的 Promise。

在编辑器中显示进度。在运行给定的回调期间以及在其返回的 Promise 未解析或拒绝之前,都会显示进度。进度应显示的位置(以及其他详细信息)通过传入的 ProgressOptions 定义。

参数描述
options: ProgressOptions

一个描述要使用的进度选项(例如其位置)的 ProgressOptions 对象。

task: (progress: Progress<{increment: number, message: string}>, token: CancellationToken) => Thenable<R>

一个返回 Promise 的回调。可以使用提供的 Progress 对象报告进度状态。

要报告离散进度,请使用 increment 来指示已完成的工作量。每次使用 increment 值调用时,都会将其累加并反映为总体进度,直到达到 100%(例如 10 的值表示已完成 10% 的工作)。请注意,目前只有 ProgressLocation.Notification 能够显示离散进度。

要监控操作是否被用户取消,请使用提供的 CancellationToken。请注意,目前只有 ProgressLocation.Notification 支持显示一个取消按钮来取消长时间运行的操作。

返回值描述
Thenable<R>

任务回调返回的 thenable。

在运行给定的回调期间以及在其返回的 Promise 未解析或拒绝之前,在源代码管理视图中显示进度。

  • 已弃用 - 请改用 withProgress
参数描述
task: (progress: Progress<number>) => Thenable<R>

一个返回 Promise 的回调。可以使用提供的 Progress 对象报告进度增量。

返回值描述
Thenable<R>

任务返回的 thenable。

workspace

用于处理当前工作区的命名空间。工作区是在编辑器窗口(实例)中打开的一个或多个文件夹的集合。

也可以在没有工作区的情况下打开编辑器。例如,当您通过平台的文件菜单选择一个文件打开一个新的编辑器窗口时,您将不在工作区内。在这种模式下,编辑器的某些功能会受到限制,但您仍然可以打开和编辑文本文件。

有关工作区的概念,请参阅 https://vscode.js.cn/docs/editor/workspaces

工作区支持 监听 文件系统事件以及 查找 文件。这两种操作都性能良好,并且编辑器进程之外运行,因此应始终使用它们而不是 Node.js 等效项。

变量

一个 文件系统 实例,允许与本地和远程文件进行交互,例如 vscode.workspace.fs.readDirectory(someUri) 可以检索目录中的所有条目,或者 vscode.workspace.fs.stat(anotherUri) 返回文件的元数据。

如果为 true,则用户已明确信任了工作区的内容。

工作区的名称。如果没有打开工作区,则为 undefined

有关工作区的概念,请参阅 https://vscode.js.cn/docs/editor/workspaces

编辑器当前已知的所有笔记本文件。

workspaceFolders 的第一个条目的 URI 字符串。如果不存在第一个条目,则为 undefined

有关工作区的更多信息,请参阅 https://vscode.js.cn/docs/editor/workspaces

编辑器当前已知的所有文本文件。

工作区文件的位置,例如

file:///Users/name/Development/myProject.code-workspace

untitled:1555503116870

对于一个未命名且尚未保存的工作区。

根据打开的工作区,该值将是:

  • 没有打开工作区时为 undefined
  • 否则,工作区文件的路径为 Uri。如果工作区未命名,则返回的 URI 将使用 untitled: 方案。

例如,可以使用此位置与 vscode.openFolder 命令一起,在工作区关闭后重新打开它。

示例

vscode.commands.executeCommand('vscode.openFolder', uriOfWorkspace);

有关工作区的概念,请参阅 https://vscode.js.cn/docs/editor/workspaces

注意: 不建议使用 workspace.workspaceFile 将配置数据写入文件。为此,您可以使用 workspace.getConfiguration().update(),这在打开单个文件夹或打开未命名或已保存的工作区时都能正常工作。

编辑器中打开的工作区文件夹列表(0-N)。如果没有打开工作区,则为 undefined

有关工作区的更多信息,请参阅 https://vscode.js.cn/docs/editor/workspaces

事件

配置 发生更改时触发的事件。

笔记本 发生更改时触发的事件。

文本文件 更改时触发的事件。这通常发生在 内容 更改时,但也发生在其他情况,例如 状态更改时。

当添加或移除工作区文件夹时发出的事件。

注意:当添加、移除或更改第一个工作区文件夹时,此事件不会触发,因为在这种情况下,当前正在执行的扩展(包括监听此事件的扩展)将被终止并重新启动,以便(已弃用的)rootPath 属性能够指向第一个工作区文件夹。

笔记本 被释放时发出的事件。

注意 1:不保证在关闭编辑器选项卡时会触发此事件。

注意 2:笔记本可以打开但未显示在编辑器中,这意味着此事件可能会针对尚未在编辑器中显示的笔记本触发。

文本文件 被释放或文本文件的语言 ID 已更改 时发出的事件。

注意 1:不保证在关闭编辑器选项卡时会触发此事件,请使用 onDidChangeVisibleTextEditors 事件了解编辑器何时发生更改。

注意 2:文档可以打开但未显示在编辑器中,这意味着此事件可能会针对尚未在编辑器中显示的文档触发。

文件创建后发出的事件。

注意:此事件由用户操作触发,例如从资源管理器创建文件,或通过 workspace.applyEdit API 创建文件,但当文件在磁盘上发生更改(例如由其他应用程序触发)或使用 workspace.fs API 时,此事件 *不会* 触发。

文件删除后发出的事件。

注意 1:此事件由用户操作触发,例如从资源管理器删除文件,或通过 workspace.applyEdit API 删除文件,但当文件在磁盘上发生更改(例如由其他应用程序触发)或使用 workspace.fs API 时,此事件 *不会* 触发。

注意 2:删除包含子项的文件夹时,只触发一个事件。

当前工作区被信任时触发的事件。

笔记本 打开时发出的事件。

文本文件 打开或文本文件的语言 ID 已更改 时发出的事件。

要在可见文本文件打开时添加事件监听器,请使用 window 命名空间中的 TextEditor 事件。请注意:

文件重命名后发出的事件。

注意 1:此事件由用户操作触发,例如从资源管理器重命名文件,或通过 workspace.applyEdit API 重命名文件,但当文件在磁盘上发生更改(例如由其他应用程序触发)或使用 workspace.fs API 时,此事件 *不会* 触发。

注意 2:重命名包含子项的文件夹时,只触发一个事件。

笔记本 保存时发出的事件。

文本文件 保存到磁盘时发出的事件。

文件创建前发出的事件。

注意 1:此事件由用户操作触发,例如从资源管理器创建文件,或通过 workspace.applyEdit API 创建文件。此事件 *不会* 在文件在磁盘上更改(例如由其他应用程序触发)或使用 workspace.fs API 时触发。

注意 2:当此事件触发时,无法对正在创建的文件进行编辑。

文件删除前发出的事件。

注意 1:此事件由用户操作触发,例如从资源管理器删除文件,或通过 workspace.applyEdit API 删除文件,但当文件在磁盘上发生更改(例如由其他应用程序触发)或使用 workspace.fs API 时,此事件 *不会* 触发。

注意 2:删除包含子项的文件夹时,只触发一个事件。

文件重命名前发出的事件。

注意 1:此事件由用户操作触发,例如从资源管理器重命名文件,或通过 workspace.applyEdit API 重命名文件,但当文件在磁盘上发生更改(例如由其他应用程序触发)或使用 workspace.fs API 时,此事件 *不会* 触发。

注意 2:重命名包含子项的文件夹时,只触发一个事件。

笔记本文件 将要保存到磁盘时发出的事件。

注意 1:订阅者可以通过注册异步工作来延迟保存。为了数据完整性,编辑器可能会在不触发此事件的情况下保存。例如,在关闭带有未保存文件的窗口时。

注意 2:订阅者按顺序调用,并且他们可以通过注册异步工作来 延迟 保存。针对行为不当的监听器已实现保护机制,如下所示:

  • 所有监听器共享一个总时间预算,如果该预算耗尽,则不再调用任何后续监听器。
  • 耗时过长或频繁产生错误的监听器将不再被调用。

当前阈值为 1.5 秒作为总时间预算,监听器最多可以误行为 3 次,之后将被忽略。

文本文件 将要保存到磁盘时发出的事件。

注意 1:订阅者可以通过注册异步工作来延迟保存。为了数据完整性,编辑器可能会在不触发此事件的情况下保存。例如,在关闭带有未保存文件的窗口时。

注意 2:订阅者按顺序调用,并且他们可以通过注册异步工作来 延迟 保存。针对行为不当的监听器已实现保护机制,如下所示:

  • 所有监听器共享一个总时间预算,如果该预算耗尽,则不再调用任何后续监听器。
  • 耗时过长或频繁产生错误的监听器将不再被调用。

当前阈值为 1.5 秒作为总时间预算,监听器最多可以误行为 3 次,之后将被忽略。

函数

根据给定的 工作区编辑,更改一个或多个资源,或创建、删除、重命名资源。

工作区编辑的所有更改都将按照它们添加的顺序进行应用。如果多个文本插入操作发生在同一位置,这些字符串将按照“插入”操作的顺序出现在结果文本中,除非它们与资源编辑交错。无效的序列(例如“删除文件 a” -> “在文件 a 中插入文本”)会导致操作失败。

应用一个仅包含文本编辑的工作区编辑时,将采用“全有或全无”策略。如果工作区编辑包含资源创建或删除,操作将中止,例如,当单个编辑失败时,将不会尝试后续编辑。

参数描述
edit: WorkspaceEdit

工作区编辑。

metadata?: WorkspaceEditMetadata

编辑的可选 元数据

返回值描述
Thenable<boolean>

一个在编辑成功应用时解析的 Thenable。

返回相对于工作区文件夹或文件夹的路径。

当没有 工作区文件夹 或路径不包含在其中时,将返回输入。

参数描述
pathOrUri: string | Uri

路径或 URI。当提供 URI 时,将使用其 fsPath

includeWorkspaceFolder?: boolean

如果为 true 并且给定路径包含在工作区文件夹中,则会添加工作区名称作为前缀。当有多个工作区文件夹时,默认为 true,否则默认为 false

返回值描述
字符串

相对于根目录或输入的路径。

创建文件系统监视器,该监视器会根据提供的参数通知文件事件(创建、更改、删除)。

默认情况下,将监视所有打开的 工作区文件夹 中的文件更改,包括递归。

可以通过提供一个带有 base 路径用于监视的 RelativePattern 来添加其他要监视的路径。如果路径是文件夹且 pattern 复杂(例如包含 ** 或路径段),则会递归监视;否则,将非递归监视(即,仅报告路径第一级目录的更改)。

注意,对于不存在于文件系统中的路径,将在创建后延迟监视,然后根据提供的参数进行监视。如果被监视的路径被删除,监视器将暂停并不会报告任何事件,直到该路径再次创建。

如果可能,请尽量减少使用递归监视器,因为递归文件监视非常消耗资源。

string 作为 globPattern 提供是监视所有打开的工作区文件夹中的文件事件的便捷方法。它不能用于添加更多要监视的文件文件夹,也不会报告来自未打开工作区文件夹的任何文件事件。

注意globPattern 参数的区分大小写将取决于监视器运行的文件系统:在 Windows 和 macOS 上,匹配将不区分大小写,而在 Linux 上,匹配将区分大小写。

可以选择提供标志来忽略某些类型的事件。

要停止监听事件,必须释放监视器。

注意,删除文件夹的文件事件可能不包含其中文件的事件。例如,当一个文件夹被移到回收站时,只报告一个事件,因为从技术上讲,这是对每个文件的重命名/移动操作,而不是删除操作。此外,还会进行性能优化,将属于同一父操作(例如删除文件夹)的多个事件合并为一个针对该父项的事件。因此,如果您需要了解所有被删除的文件,您必须使用 ** 进行监视并自行处理所有文件事件。

注意,基于用户配置可能会排除递归文件监视器的文件事件。files.watcherExclude 设置有助于减少由已知会立即产生大量文件更改的文件夹(如 .git 文件夹)引起的文件事件的开销。因此,强烈建议使用不需要递归监视器的简单模式进行监视,这些模式会忽略排除设置,并让您完全控制事件。

注意,除非要监视的路径本身是符号链接,否则文件监视不会自动遵循符号链接。

注意,对于已更改的文件路径,在不区分大小写的文件系统(通常是 macOS 和 Windows,但不是 Linux)上,其路径的大小写可能与磁盘上的实际大小写不同。我们允许用户以任何所需的大小写打开工作区文件夹,并尝试保留该大小写。这意味着:

  • 如果路径在任何工作区文件夹内,路径将匹配到该部分路径的工作区文件夹的大小写,并匹配磁盘上子项的大小写。
  • 如果路径在任何工作区文件夹之外,大小写将匹配用于监视的路径的大小写。同样,符号链接也会被保留,即文件事件将报告用于监视的符号链接路径,而不是目标。

示例

文件监视器的基本结构如下:

const watcher = vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(<folder>, <pattern>));

watcher.onDidChange(uri => { ... }); // listen to files being changed
watcher.onDidCreate(uri => { ... }); // listen to files/folders being created
watcher.onDidDelete(uri => { ... }); // listen to files/folders getting deleted

watcher.dispose(); // dispose after usage

工作区文件监视

如果您只关心特定工作区文件夹中的文件事件

vscode.workspace.createFileSystemWatcher(
  new vscode.RelativePattern(vscode.workspace.workspaceFolders[0], '**/*.js')
);

如果您想监视所有打开的工作区文件夹中的文件事件

vscode.workspace.createFileSystemWatcher('**/*.js');

注意:如果未打开工作区(空窗口),则工作区文件夹数组可能为空。

工作区外文件监视

要监视工作区外(非递归)的 *.js 文件的更改,请提供指向该文件夹的 Uri

vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '*.js'));

并使用复杂的 glob 模式进行递归监视。

vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '**/*.js'));

以下是监视活动编辑器进行文件更改的示例:

vscode.workspace.createFileSystemWatcher(
  new vscode.RelativePattern(vscode.window.activeTextEditor.document.uri, '*')
);
参数描述
globPattern: GlobPattern

用于控制监视器应报告哪些文件事件的 glob 模式

ignoreCreateEvents?: boolean

忽略文件创建事件。

ignoreChangeEvents?: boolean

忽略文件更改事件。

ignoreDeleteEvents?: boolean

忽略文件删除事件。

返回值描述
FileSystemWatcher

新的文件系统监视器实例。如果不再需要,必须将其释放。

Uint8Array 的内容解码为 string。您必须一次性提供全部内容,以确保编码能够正确应用。请勿使用此方法分块解码内容,这可能导致错误的结果。

将根据设置和缓冲区的(例如字节顺序标记)内容选择编码。

注意,如果您解码的内容不支持该编码,结果可能包含适当的替换字符。

  • 抛出 - 如果内容是二进制的,此方法将抛出错误。
参数描述
content: Uint8Array

要解码为 Uint8Array 的文本内容。

返回值描述
Thenable<string>

一个解析为解码后的 string 的 Thenable。

使用提供的编码将 Uint8Array 的内容解码为 string。您必须一次性提供全部内容,以确保编码能够正确应用。请勿使用此方法分块解码内容,这可能导致错误的结果。

注意,如果您解码的内容不支持该编码,结果可能包含适当的替换字符。

  • 抛出 - 如果内容是二进制的,此方法将抛出错误。
参数描述
content: Uint8Array

要解码为 Uint8Array 的文本内容。

options: {encoding: string}

选择编码的附加上下文。

返回值描述
Thenable<string>

一个解析为解码后的 string 的 Thenable。

Uint8Array 的内容解码为 string。您必须一次性提供全部内容,以确保编码能够正确应用。请勿使用此方法分块解码内容,这可能导致错误的结果。

将根据设置和缓冲区的(例如字节顺序标记)内容选择编码。

注意,如果您解码的内容不支持该编码,结果可能包含适当的替换字符。

  • 抛出 - 如果内容是二进制的,此方法将抛出错误。
参数描述
content: Uint8Array

要解码为 Uint8Array 的内容。

options: {uri: Uri}

选择编码的附加上下文。

返回值描述
Thenable<string>

一个解析为解码后的 string 的 Thenable。

string 的内容编码为 Uint8Array

将根据设置选择编码。

参数描述
content: string

要解码为 string 的内容。

返回值描述
Thenable<Uint8Array>

一个解析为编码后的 Uint8Array 的 Thenable。

使用提供的编码将 string 的内容编码为 Uint8Array

参数描述
content: string

要解码为 string 的内容。

options: {encoding: string}

选择编码的附加上下文。

返回值描述
Thenable<Uint8Array>

一个解析为编码后的 Uint8Array 的 Thenable。

string 的内容编码为 Uint8Array

将根据设置选择编码。

参数描述
content: string

要解码为 string 的内容。

options: {uri: Uri}

选择编码的附加上下文。

返回值描述
Thenable<Uint8Array>

一个解析为编码后的 Uint8Array 的 Thenable。

在工作区中的所有 工作区文件夹 中查找文件。

示例

findFiles('**/*.js', '**/node_modules/**', 10);
参数描述
include: GlobPattern

一个 glob 模式,用于定义要搜索的文件。该 glob 模式将与结果匹配项相对于其工作区的路径进行匹配。使用 相对模式 将搜索结果限制在 工作区文件夹

exclude?: GlobPattern

一个 glob 模式,用于定义要排除的文件和文件夹。该 glob 模式将与结果匹配项相对于其工作区的路径进行匹配。当为 undefined 时,将应用默认文件排除项(例如 files.exclude 设置,但不是 search.exclude)。当为 null 时,将不应用任何排除项。

maxResults?: number

结果的最大数量。

token?: CancellationToken

一个可用于向底层搜索引擎发出取消信号的令牌。

返回值描述
Thenable<Uri[]>

一个解析为资源标识符数组的 Thenable。如果没有打开 工作区文件夹,则返回空数组。

获取工作区配置对象。

当提供节标识符时,将仅返回配置的该部分。节标识符中的点将解释为子访问,例如 { myExt: { setting: { doIt: true }}}getConfiguration('myExt.setting').get('doIt') === true

当提供范围时,将返回该范围内的配置。范围可以是资源或语言标识符,或两者兼有。

参数描述
section?: string

一个由点分隔的标识符。

scope?: ConfigurationScope

请求配置的范围。

返回值描述
WorkspaceConfiguration

完整的配置或子集。

返回包含给定 URI 的 工作区文件夹

  • 当给定 URI 不匹配任何工作区文件夹时,返回 undefined
  • 当给定 URI 本身就是工作区文件夹时,返回 *输入*。
参数描述
uri: Uri

一个 URI。

返回值描述
WorkspaceFolder | undefined

一个工作区文件夹或 undefined

打开一个笔记本。如果此笔记本已 加载,则会提前返回。否则,笔记本将被加载,并触发 onDidOpenNotebookDocument 事件。

注意,返回的笔记本的生命周期由编辑器而不是扩展所有。这意味着在打开之后,随时可能发生 onDidCloseNotebookDocument 事件。

注意,打开笔记本不会显示笔记本编辑器。此函数仅返回一个笔记本文档,该文档可以在笔记本编辑器中显示,但也可用于其他目的。

参数描述
uri: Uri

要打开的资源。

返回值描述
Thenable<NotebookDocument>

一个解析为 笔记本 的 Promise。

打开一个未命名的笔记本。当文档要保存时,编辑器将提示用户输入文件路径。

另请参阅 workspace.openNotebookDocument

参数描述
notebookType: string

应使用的笔记本类型。

content?: NotebookData

笔记本的初始内容。

返回值描述
Thenable<NotebookDocument>

一个解析为 笔记本 的 Promise。

打开一个文档。如果此文档已打开,则会提前返回。否则,文档将被加载,并触发 didOpen 事件。

文档由 Uri 标识。根据 scheme,适用以下规则:

  • file-scheme:打开磁盘上的文件(openTextDocument(Uri.file(path)))。如果文件不存在或无法加载,将拒绝。
  • untitled-scheme:打开一个带有相关路径的空白未命名文件(openTextDocument(Uri.file(path).with({ scheme: 'untitled' })))。语言将从文件名推导。
  • 对于所有其他 scheme,将咨询已贡献的 文本文件内容提供程序文件系统提供程序

注意,返回的文档的生命周期由编辑器而不是扩展所有。这意味着在打开之后,随时可能发生 onDidClose 事件。

参数描述
uri: Uri

标识要打开的资源。

options?: {encoding: string}
返回值描述
Thenable<TextDocument>

一个解析为 文档 的 Promise。

openTextDocument(Uri.file(path)) 的简写。

另请参阅 workspace.openTextDocument

参数描述
path: string

磁盘上文件的路径。

options?: {encoding: string}
返回值描述
Thenable<TextDocument>

一个解析为 文档 的 Promise。

打开一个未命名的文本文件。当要保存文件时,编辑器将提示用户输入文件路径。options 参数允许指定文档的语言和/或内容

参数描述
options?: {content: string, encoding: string, language: string}

控制文档如何创建的选项。

返回值描述
Thenable<TextDocument>

一个解析为 文档 的 Promise。

为给定的 scheme(例如 ftp)注册一个文件系统提供程序。

每个 scheme 只能有一个提供程序,并且当一个 scheme 已被另一个提供程序声明或保留时,会抛出错误。

参数描述
scheme: string

提供程序注册的 URI scheme

provider: FileSystemProvider

文件系统提供程序。

options?: {isCaseSensitive: boolean, isReadonly: boolean | MarkdownString}

有关提供程序的不可变元数据。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个 笔记本序列化器

笔记本序列化器必须通过 notebooks 扩展点进行贡献。打开笔记本文件时,编辑器将发送 onNotebook:<notebookType> 激活事件,扩展必须相应地注册其序列化器。

参数描述
notebookType: string

一个笔记本。

serializer: NotebookSerializer

笔记本序列化器。

options?: NotebookDocumentContentOptions

定义应持久化笔记本哪些部分的可选上下文选项

返回值描述
Disposable

一个 Disposable,在被释放时注销此序列化器。

注册一个任务提供程序。

  • 已弃用 - 请改用 tasks 命名空间上的相应函数
参数描述
type: string

此提供程序注册的任务类型。

provider: TaskProvider<Task>

一个任务提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

注册一个文本文件内容提供程序。

每个 scheme 只能注册一个提供程序。

参数描述
scheme: string

注册的 URI scheme

provider: TextDocumentContentProvider

内容提供程序。

返回值描述
Disposable

一个 Disposable,在被处置时注销此提供程序。

保存由给定资源标识的编辑器,并返回结果资源,如果保存不成功或未找到具有给定资源的编辑器,则返回 undefined

注意 必须先打开具有提供资源的编辑器才能保存。

参数描述
uri: Uri

要保存的打开编辑器的关联 URI。

返回值描述
Thenable<Uri | undefined>

一个在保存操作完成后解析的 Thenable。

保存所有脏文件。

参数描述
includeUntitled?: boolean

也保存在此会话期间创建的文件。

返回值描述
Thenable<boolean>

一个在文件保存完成后解析的 Thenable。对于任何未能保存的文件将返回 false

将由给定资源标识的编辑器另存为用户提供的新文件名,并返回结果资源,如果保存不成功或被取消,或者未找到具有给定资源的编辑器,则返回 undefined

注意 必须先打开具有提供资源的编辑器才能另存为。

参数描述
uri: Uri

要另存为的打开编辑器的关联 URI。

返回值描述
Thenable<Uri | undefined>

一个在另存为操作完成后解析的 Thenable。

此方法将 start 索引处的 deleteCount工作区文件夹替换为 workspaceFoldersToAdd 的可选集合,以更新 vscode.workspace.workspaceFolders 数组。此“splice”行为可用于一次操作添加、删除和更改工作区文件夹。

注意:在某些情况下,调用此方法可能会导致当前正在执行的扩展(包括调用此方法的扩展)被终止并重新启动。例如,当添加、删除或更改第一个工作区文件夹时,(已弃用的)rootPath 属性会更新为指向第一个工作区文件夹。另一种情况是当从空工作区或单文件夹工作区过渡到多文件夹工作区时(另请参阅:https://vscode.js.cn/docs/editor/workspaces)。

使用 onDidChangeWorkspaceFolders() 事件来获取工作区文件夹更新的通知。

示例:在工作区文件夹末尾添加一个新的工作区文件夹

workspace.updateWorkspaceFolders(workspace.workspaceFolders ? workspace.workspaceFolders.length : 0, null, { uri: ...});

示例:删除第一个工作区文件夹

workspace.updateWorkspaceFolders(0, 1);

示例:用新的工作区文件夹替换现有的工作区文件夹

workspace.updateWorkspaceFolders(0, 1, { uri: ...});

将现有工作区文件夹删除并用不同的名称重新添加以重命名该文件夹是有效的。

注意:onDidChangeWorkspaceFolders() 触发之前,不能多次调用 updateWorkspaceFolders()

参数描述
start: number

当前打开的 工作区文件夹列表中要开始删除工作区文件夹的零基位置。

deleteCount: number

要删除的工作区文件夹的可选数量。

...workspaceFoldersToAdd: Array<{name: string, uri: Uri}>

要替换已删除文件夹的可选可变工作区文件夹集。每个工作区都由一个必需的 URI 和一个可选名称标识。

返回值描述
布尔值

如果操作已成功启动,则为 true,否则为 false(如果使用了会导致无效工作区文件夹状态的参数,例如具有相同 URI 的 2 个文件夹)。

AccessibilityInformation

控制屏幕阅读器行为的可访问性信息。

属性

项目获得焦点后,屏幕阅读器将读取的标签。

控件的角色,用于定义屏幕阅读器如何与其交互。当例如树状元素表现得像复选框时,应在特殊情况下设置角色。如果未指定角色,编辑器将自动选择适当的角色。有关 ARIA 角色的更多信息,请访问 https://w3c.github.io/aria/#widget_roles

AuthenticationForceNewSessionOptions

在使用 forceNewSession 标志调用 authentication.getSession 时使用的可选选项。

AuthenticationGetSessionOptions

获取 AuthenticationProviderAuthenticationSession 时使用的选项。

属性

您想获取会话的帐户。这会传递给身份验证提供程序,用于创建正确的会话。

是否应清除现有的会话首选项。

对于支持同时登录多个帐户的身份验证提供程序,当调用 getSession 时,将提示用户选择一个帐户。此首选项将被记住,直到使用此标志调用 getSession

注意:首选项是扩展特定的。因此,如果一个扩展调用 getSession,它不会影响另一个扩展调用 getSession 的会话首选项。此外,首选项为当前工作区和全局设置。这意味着新工作区将首先使用“全局”值,然后当提供此标志时,可以为该工作区设置新值。这也意味着预先存在的工作区不会丢失其首选项,如果新工作区设置了此标志。

默认为 false。

如果没有匹配的会话,是否应执行登录。

如果为 true,将显示一个模态对话框,提示用户登录。如果为 false,将在帐户活动栏图标上显示一个编号徽章。将为扩展添加一个菜单项以登录。这允许悄悄提示用户登录。

如果您提供了选项,您还将看到对话框,但带有提供的额外上下文。

如果存在匹配的会话,但扩展尚未获得访问权限,则将此设置为 true 也将导致立即显示模态对话框,而 false 将在帐户图标上添加一个编号徽章。

默认为 false。

注意:您不能将此选项与 silent 一起使用。

即使已有可用会话,是否应尝试重新进行身份验证。

如果为 true,将显示一个模态对话框,提示用户再次登录。这主要用于需要重新颁发令牌以防其失去某些授权的场景。

如果您提供了选项,您还将看到对话框,但带有提供的额外上下文。

如果没有现有会话且 forceNewSession 为 true,则其行为与 createIfNone 完全相同。

默认为 false。

是否应在“帐户”菜单中显示登录指示。

如果为 false,用户将在“帐户”菜单中看到一个带有登录选项的徽章。如果为 true,则不会显示任何指示。

默认为 false。

注意:您不能将此选项与任何其他提示用户的选项(如 createIfNone)一起使用。

AuthenticationGetSessionPresentationOptions

在使用交互式选项 forceNewSessioncreateIfNone 调用 authentication.getSession 时使用的可选选项。

属性

当我们要求用户重新进行身份验证时,将显示给用户的可选消息。提供有关为什么要求用户重新进行身份验证的额外上下文有助于提高他们接受的可能性。

AuthenticationProvider

用于执行服务身份验证的提供程序。

事件

当会话数组发生更改或会话内数据发生更改时触发的 Event

方法

提示用户登录。

如果登录成功,应触发 onDidChangeSessions 事件。

如果登录失败,应返回一个拒绝的 Promise。

如果提供程序已指定不支持多个帐户,则在存在匹配这些范围的现有会话时,不应调用此函数。

参数描述
scopes: readonly string[]

新会话应创建的范围(权限)列表。

options: AuthenticationProviderSessionOptions

创建会话的其他选项。

返回值描述
Thenable<AuthenticationSession>

一个解析为身份验证会话的 Promise。

获取会话列表。

参数描述
scopes: readonly string[]

可选的范围列表。如果提供,则返回的会话应匹配这些权限,否则应返回所有会话。

options: AuthenticationProviderSessionOptions

获取会话的其他选项。

返回值描述
Thenable<AuthenticationSession[]>

一个解析为身份验证会话数组的 Promise。

删除与会话 ID 对应的会话。

如果删除成功,应触发 onDidChangeSessions 事件。

如果会话无法删除,提供程序应使用错误消息拒绝。

参数描述
sessionId: string

要删除的会话的 ID。

返回值描述
Thenable<void>

AuthenticationProviderAuthenticationSessionsChangeEvent

AuthenticationSession 被添加、删除或更改时触发的 Event

属性

已更改的 AuthenticationProviderAuthenticationSessions。当会话的数据(不包括 ID)更新时,会话就会更改。例如,会话刷新会导致为该会话设置新的访问令牌。

AuthenticationProviderInformation

有关 AuthenticationProvider 的基本信息

属性

身份验证提供程序的唯一标识符。

身份验证提供程序的易读名称。

AuthenticationProviderOptions

创建 AuthenticationProvider 的选项。

属性

使用此提供程序是否可以同时登录多个帐户。如果未指定,则默认为 false。

AuthenticationProviderSessionOptions

属性

正在查询的帐户。如果传递了此参数,提供程序应尝试返回仅与此帐户相关的会话。

AuthenticationSession

表示当前登录用户的会话。

属性

访问令牌。此令牌应用于对服务进行身份验证的请求。由 OAuth 普及。

与会话关联的帐户。

身份验证会话的标识符。

ID 令牌。此令牌包含用户的身份信息。由 OpenID Connect 普及。

会话访问令牌授予的权限。可用范围由 AuthenticationProvider 定义。

AuthenticationSessionAccountInformation

AuthenticationSession 关联的帐户的信息。

属性

帐户的唯一标识符。

帐户的易读名称。

AuthenticationSessionsChangeEvent

AuthenticationSession 被添加、删除或更改时触发的 Event

属性

会话发生更改的 AuthenticationProvider

AuthenticationWwwAuthenticateRequest

表示基于 WWW-Authenticate 标头值创建会话的参数。当 API 返回 401 并带有指示需要额外身份验证的 WWW-Authenticate 标头时使用。其详细信息将传递给身份验证提供程序以创建会话。

  • 注意 - 授权提供程序必须支持处理挑战,特别是此 WWW-Authenticate 值中的挑战。

属性

如果在 WWW-Authenticate 标头中找不到范围,则使用的备用范围。

触发此挑战的原始 WWW-Authenticate 标头值。该值将由身份验证提供程序解析,以提取必要的挑战信息。

AutoClosingPair

描述字符串对,当键入打开字符串时,将自动插入关闭字符串。

属性

键入打开字符串时将自动插入的关闭字符串。

一组不应自动关闭的配对的 token。

将触发自动插入关闭字符串的字符串。

BranchCoverage

包含 StatementCoverage 的分支的覆盖率信息。

构造函数

参数描述
executed: number | boolean

此分支执行的次数,或者指示其是否被执行的布尔值(如果确切计数未知)。如果为零或 false,则该分支将被标记为未覆盖。

location?: Range | Position

分支位置。

label?: string
返回值描述
BranchCoverage

属性

此分支执行的次数,或者指示其是否被执行的布尔值(如果确切计数未知)。如果为零或 false,则该分支将被标记为未覆盖。

分支的标签,用于“未采用 ${label} 分支”之类的语境。

分支位置。

Breakpoint

所有断点类型的基类。

构造函数

创建一个新的断点。

参数描述
enabled?: boolean

断点是否启用。

condition?: string

条件断点的表达式。

hitCondition?: string

控制断点命中次数的表达式。

logMessage?: string

断点命中时显示的日志消息。

返回值描述
Breakpoint

属性

用于条件断点的可选表达式。

断点是否启用。

一个可选的表达式,用于控制忽略断点的命中次数。

断点的唯一 ID。

命中此断点时要记录的可选消息。{} 中的嵌入表达式由调试适配器进行插值。

BreakpointsChangeEvent

描述断点集更改的事件。

属性

添加的断点。

更改的断点。

移除的断点。

CallHierarchyIncomingCall

表示一个传入的调用,例如方法的调用者或构造函数的调用者。

构造函数

创建一个新的调用对象。

参数描述
item: CallHierarchyItem

进行调用的项。

fromRanges: Range[]

调用出现的范围。

返回值描述
CallHierarchyIncomingCall

属性

进行调用的项。

调用出现的范围。此范围相对于 this.from 中表示的调用者。

CallHierarchyItem

在调用层级结构的上下文中表示函数或构造函数等编程构造。

构造函数

创建一个新的调用层级结构项。

参数描述
kind: SymbolKind
name: string
detail: string
uri: Uri
range: Range
selectionRange: Range
返回值描述
CallHierarchyItem

属性

此项的更多详细信息,例如函数的签名。

此项的种类。

此项的名称。

包含此符号的范围,不包括前导/尾随空格,但包括其他所有内容,例如注释和代码。

选择和显示此符号时应选择和显示的范围,例如函数名称。必须包含在 range 内。

此项的标签。

此项的资源标识符。

CallHierarchyOutgoingCall

表示一个传出的调用,例如从方法调用 getter,或从构造函数调用方法等。

构造函数

创建一个新的调用对象。

参数描述
item: CallHierarchyItem

被调用的项。

fromRanges: Range[]

调用出现的范围。

返回值描述
CallHierarchyOutgoingCall

属性

项被调用的范围。这是相对于调用者(传递给 provideCallHierarchyOutgoingCalls 的项)的范围,而不是 this.to

被调用的项。

CallHierarchyProvider

调用层级结构提供程序接口描述了扩展和调用层级结构功能之间的契约,它允许浏览函数、方法、构造函数等的调用和调用者。

方法

通过返回由给定文档和位置表示的项来引导调用层级结构。此项将用作调用图的入口点。当给定位置没有项时,提供程序应返回 undefinednull

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<CallHierarchyItem | CallHierarchyItem[]>

一个或多个调用层级结构项,或解析为此类项的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

为某一项提供所有传入调用,例如方法的所有调用者。在图论中,这描述了调用图中的有向带注释边,例如给定项是起点,结果是可以到达的节点。

参数描述
item: CallHierarchyItem

用于计算传入调用的层级结构项。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<CallHierarchyIncomingCall[]>

一组传入调用,或解析为此类调用的 thenable。可以通过返回 undefinednull 来表示缺少结果。

为某一项提供所有传出调用,例如从给定项到函数、方法或构造函数的调用。在图论中,这描述了调用图中的有向带注释边,例如给定项是起点,结果是可以到达的节点。

参数描述
item: CallHierarchyItem

用于计算传出调用的层级结构项。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<CallHierarchyOutgoingCall[]>

一组传出调用,或解析为此类调用的 thenable。可以通过返回 undefinednull 来表示缺少结果。

CancellationError

应使用此错误类型来表示操作已取消。

此类型可在响应 取消令牌 被取消时,或在操作被操作的执行者取消时使用。

构造函数

创建一个新的取消错误。

参数描述
返回值描述
CancellationError

CancellationToken

取消令牌用于向异步或长时间运行的操作请求取消,例如取消对完成项的请求,因为用户继续键入。

要获取 CancellationToken 的实例,请使用 CancellationTokenSource

属性

当令牌被取消时为 true,否则为 false

在取消时触发的 Event

CancellationTokenSource

取消源用于创建和控制 取消令牌

构造函数

参数描述
返回值描述
CancellationTokenSource

属性

此源的取消令牌。

方法

在令牌上发出取消信号。

参数描述
返回值描述
void

释放对象并回收资源。

参数描述
返回值描述
void

CharacterPair

一对字符,例如一对开括号和闭括号。

ChatContext

传递给参与者的额外上下文。

属性

当前聊天会话中到目前为止的所有聊天消息。目前,仅包含当前参与者的聊天消息。

ChatErrorDetails

表示聊天请求的错误结果。

属性

向用户显示的错误消息。

如果设置为 true,则响应将被部分模糊化。

ChatFollowup

参与者建议的后续问题。

属性

默认情况下,后续问题会转到同一个参与者/命令。但是,此属性可以设置为调用不同的命令。

要向用户显示的标题。未指定此项时,将默认显示提示。

默认情况下,后续问题会转到同一个参与者/命令。但是,此属性可以设置为通过 ID 调用不同的参与者。后续问题只能调用由同一扩展贡献的参与者。

要发送到聊天中的消息。

ChatFollowupProvider

在每次请求后调用一次,以获取建议的后续问题显示给用户。用户可以单击后续问题将其发送到聊天。

方法

为给定结果提供后续问题。

参数描述
result: ChatResult

此对象具有与从参与者回调返回的结果相同的属性,包括 metadata,但它不是同一个实例。

context: ChatContext

传递给参与者的额外上下文。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<ChatFollowup[]>

ChatLanguageModelToolReference

用户手动附加到其请求的工具的引用,无论是使用内联的 # 语法,还是通过回形针按钮作为附件。

属性

工具名称。引用 lm.tools 中列出的工具。

prompt 中引用的开始和结束索引。如果未定义,则引用不在 prompt 文本中。

注意,索引考虑了前导 # 字符,这意味着它们可以用于按原样修改 prompt。

ChatParticipant

聊天参与者可以通过 前缀在聊天会话中调用。调用时,它会处理聊天请求,并全权负责向用户提供响应。ChatParticipant 是使用 chat.createChatParticipant 创建的。

事件

每当收到结果反馈时触发的事件,例如当用户对结果进行赞成或反对投票时。

提供的 result 保证具有与此聊天参与者处理程序先前返回的结果相同的属性。

属性

此提供程序将在每次请求后调用一次,以检索建议的后续问题。

参与者的图标,在 UI 中显示。

此参与者的唯一 ID。

此参与者的请求处理程序。

方法

释放此参与者并回收资源。

参数描述
返回值描述
void

ChatParticipantToolToken

在处理聊天请求的上下文中调用 lm.invokeTool 时可以传递给它的令牌。

ChatPromptReference

对用户添加到其聊天请求的值的引用。

属性

这种引用的唯一标识符。

可以用于 LLM prompt 的值描述。

prompt 中引用的开始和结束索引。如果未定义,则引用不在 prompt 文本中。

注意,索引考虑了前导 # 字符,这意味着它们可以用于按原样修改 prompt。

此引用的值。目前使用 string | Uri | Location 类型,但未来可能会扩展。

ChatRequest

发送给聊天参与者的请求。

属性

为此请求选择的 [ChatCommand command](#_ChatCommand command) 的名称。

这是当前在 UI 中选择的模型。扩展可以使用此模型,或使用 lm.selectChatModels 选择其他模型。请勿在请求生命周期之外保留此对象。

用户输入的 prompt。

有关此请求中使用的引用的信息存储在 ChatRequest.references 中。

注意,参与者的 [ChatParticipant.name name](#_ChatParticipant.name name) 和 [ChatCommand.name command](#_ChatCommand.name command) 不包含在 prompt 中。

在 prompt 中引用的引用及其值的列表。

注意,prompt 包含作者编写的引用,参与者应进一步修改 prompt,例如通过内联引用值或创建指向包含解析值的标题的链接。引用的顺序与其在 prompt 中的范围相反。这意味着 prompt 中的最后一个引用是此列表中的第一个。这简化了对 prompt 的字符串操作。

在处理聊天请求的上下文中调用 lm.invokeTool 时可以传递给它的令牌。这会将工具调用与聊天会话关联起来。

用户附加到其请求的工具列表。

当存在工具引用时,聊天参与者应使用 LanguageModelChatToolMode.Required 进行聊天请求,以强制语言模型为工具生成输入。然后,参与者可以使用 lm.invokeTool 来使用该工具,并将结果附加到其对用户 prompt 的请求中。该工具可以为用户的请求提供有用的额外上下文。

ChatRequestHandler

ChatRequestTurn

表示聊天历史中的用户请求。

属性

为此请求选择的 [ChatCommand command](#_ChatCommand command) 的名称。

此请求指向的聊天参与者的 ID。

用户输入的 prompt。

有关此请求中使用的引用的信息存储在 ChatRequestTurn.references 中。

注意,参与者的 [ChatParticipant.name name](#_ChatParticipant.name name) 和 [ChatCommand.name command](#_ChatCommand.name command) 不包含在 prompt 中。

此消息中使用的引用。

附加到此请求的工具列表。

ChatResponseAnchorPart

表示聊天响应中一个作为锚点(呈现为指向目标的链接)的部分。

构造函数

创建一个新的 ChatResponseAnchorPart。

参数描述
value: Uri | Location

一个 URI 或位置。

title?: string

一个可选的标题,将与 value 一起渲染。

返回值描述
ChatResponseAnchorPart

属性

一个可选的标题,将与 value 一起渲染。

此锚点的目标。

ChatResponseCommandButtonPart

表示聊天响应中一个作为按钮(执行命令)的部分。

构造函数

创建一个新的 ChatResponseCommandButtonPart。

参数描述
value: Command

单击按钮时将执行的 Command。

返回值描述
ChatResponseCommandButtonPart

属性

单击按钮时将执行的命令。

ChatResponseFileTree

表示聊天响应中的文件树结构。

属性

如果当前文件树是目录,则为一个子文件树数组。

文件或目录的名称。

ChatResponseFileTreePart

表示聊天响应中一个文件树的部分。

构造函数

创建一个新的 ChatResponseFileTreePart。

参数描述
value: ChatResponseFileTree[]

文件树数据。

baseUri: Uri

此文件树相对的基础 URI。

返回值描述
ChatResponseFileTreePart

属性

此文件树相对的基础 URI

文件树数据。

ChatResponseMarkdownPart

表示聊天响应中一个以 Markdown 格式显示的部分。

构造函数

创建一个新的 ChatResponseMarkdownPart。

参数描述
value: string | MarkdownString

一个 Markdown 字符串或应被解释为 Markdown 的字符串。不支持 MarkdownString.isTrusted 的布尔形式。

返回值描述
ChatResponseMarkdownPart

属性

一个 Markdown 字符串或应被解释为 Markdown 的字符串。

ChatResponsePart

表示不同的聊天响应类型。

ChatResponseProgressPart

表示聊天响应中一个进度消息的部分。

构造函数

创建一个新的 ChatResponseProgressPart。

参数描述
value: string

一个进度消息

返回值描述
ChatResponseProgressPart

属性

进度消息

ChatResponseReferencePart

表示聊天响应中一个引用部分(与内容分开渲染)。

构造函数

创建一个新的 ChatResponseReferencePart。

参数描述
value: Uri | Location

一个 URI 或位置

iconPath?: IconPath

在 UI 中显示的引用的图标

返回值描述
ChatResponseReferencePart

属性

引用的图标。

引用的目标。

ChatResponseStream

ChatResponseStream 是参与者向聊天视图返回内容的方式。它提供了多种流式传输不同类型内容的方法,这些内容将在聊天视图中以适当的方式呈现。参与者可以使用其想要返回的内容类型的辅助方法,或者实例化一个 ChatResponsePart 并使用通用的 ChatResponseStream.push 方法来返回它。

方法

将锚点部分推送到此流。是 push(new ChatResponseAnchorPart(value, title)) 的简写。锚点是对某种类型资源的内联引用。

参数描述
value: Uri | Location

一个 URI 或位置。

title?: string

一个可选的标题,将与 value 一起渲染。

返回值描述
void

将命令按钮部分推送到此流。是 push(new ChatResponseCommandButtonPart(value, title)) 的简写。

参数描述
command: Command

单击按钮时将执行的 Command。

返回值描述
void

将文件树部分推送到此流。是 push(new ChatResponseFileTreePart(value)) 的简写。

参数描述
value: ChatResponseFileTree[]

文件树数据。

baseUri: Uri

此文件树相对的基础 URI。

返回值描述
void

将 Markdown 部分推送到此流。是 push(new ChatResponseMarkdownPart(value)) 的简写。

另请参阅 ChatResponseStream.push

参数描述
value: string | MarkdownString

一个 Markdown 字符串或应被解释为 Markdown 的字符串。不支持 MarkdownString.isTrusted 的布尔形式。

返回值描述
void

将进度部分推送到此流。是 push(new ChatResponseProgressPart(value)) 的简写。

参数描述
value: string

一个进度消息

返回值描述
void

将一个部分推送到此流。

参数描述
part: ChatResponsePart

一个响应部分,已渲染或元数据

返回值描述
void

将引用推送到此流。是 push(new ChatResponseReferencePart(value)) 的简写。

注意,引用不会与响应一起内联呈现。

参数描述
value: Uri | Location

一个 URI 或位置

iconPath?: IconPath

在 UI 中显示的引用的图标

返回值描述
void

ChatResponseTurn

表示聊天参与者在聊天历史记录中的响应。

属性

此响应所属命令的名称。

此响应所属聊天参与者的 ID。

从聊天参与者那里收到的内容。仅表示表示实际内容的流部分(而非元数据)。

从聊天参与者那里收到的结果。

ChatResult

聊天请求的结果。

属性

如果请求导致错误,此属性将定义错误详细信息。

此结果的任意元数据。可以是任何内容,但必须是 JSON 可序列化的。

ChatResultFeedback

表示用户对结果的反馈。

属性

收到的反馈的类型。

用户提供反馈的 ChatResult。此对象与参与者回调返回的结果具有相同的属性,包括 metadata,但不是同一个实例。

ChatResultFeedbackKind

表示收到的用户反馈的类型。

枚举成员

用户将结果标记为无用。

用户将结果标记为有用。

Clipboard

剪贴板提供对系统剪贴板的读写访问。

方法

将当前剪贴板内容读取为文本。

参数描述
返回值描述
Thenable<string>

一个解析为字符串的 thenable。

将文本写入剪贴板。

参数描述
value: string
返回值描述
Thenable<void>

写入完成后解析的 thenable。

CodeAction

CodeAction 表示代码中可以执行的更改,例如修复问题或重构代码。

CodeAction 必须设置 edit 和/或 command。如果同时提供两者,则首先应用 edit,然后执行命令。

构造函数

创建一个新的 CodeAction。

CodeAction 必须至少具有 titleedits 和/或 command

参数描述
title: string

代码操作的标题。

kind?: CodeActionKind

代码操作的类型。

返回值描述
CodeAction

属性

此代码操作执行的 Command

如果此命令引发异常,编辑器将在当前光标位置向用户显示异常消息。

此代码操作解决的 Diagnostics

标记该代码操作当前无法应用。

  • 禁用的代码操作不会显示在自动 灯泡 代码操作菜单中。

  • 当用户请求更具体的代码操作类型(例如重构)时,禁用的操作会显示为灰色。

  • 如果用户有一个自动应用代码操作的 键绑定,并且只返回禁用的代码操作,编辑器将在编辑器中向用户显示一个带有 reason 的错误消息。

参数描述
reason: string

解释代码操作当前被禁用的原因的人类可读描述。

这会显示在代码操作 UI 中。

此代码操作执行的 workspace edit

将其标记为首选操作。首选操作用于 auto fix 命令,并且可以通过键绑定进行定位。

快速修复应被标记为首选,如果它能正确解决底层错误。重构应被标记为首选,如果它是最合理的选择。

代码操作的 Kind

用于过滤代码操作。

此代码操作的简短、人类可读的标题。

CodeActionContext

包含有关运行 代码操作 时上下文的其他诊断信息。

属性

诊断数组。

请求返回的操作的类型。

在被 灯泡 显示之前,会过滤掉不是此类型的操作。

请求代码操作的原因。

CodeActionKind

代码操作的类型。

Kind 是由 . 分隔的标识符的层次结构列表,例如 "refactor.extract.function"

代码操作 Kind 用于编辑器 UI 元素,例如重构上下文菜单。用户还可以使用 editor.action.codeAction 命令触发具有特定 Kind 的代码操作。

静态

空类型。

所有适用于整个笔记本范围的代码操作的基础类型。使用此类型的 CodeActionKind 必须始终以 notebook. 开头

这要求为此创建新的 CodeActions 并通过扩展进行贡献。不能仅为预先存在的 Kind 添加新的 notebook. 前缀,因为其功能对于整个笔记本范围是唯一的。

Notebook CodeActionKind 可以初始化为以下任一形式(两者都会生成 notebook.source.xyz

  • const newKind = CodeActionKind.Notebook.append(CodeActionKind.Source.append('xyz').value)
  • const newKind = CodeActionKind.Notebook.append('source.xyz')

示例 Kind/操作

  • notebook.source.organizeImports (可能将所有导入移动到一个新的单元格)
  • notebook.source.normalizeVariableNames (可能将所有变量重命名为标准化的大小写格式)

快速修复操作的基础类型:quickfix

快速修复操作会解决代码中的问题,并在常规的代码操作上下文菜单中显示。

重构操作的基础类型:refactor

重构操作显示在重构上下文菜单中。

重构提取操作的基础类型:refactor.extract

示例提取操作

  • 提取方法
  • 提取函数
  • 提取变量
  • 从类中提取接口
  • ...

重构内联操作的基础类型:refactor.inline

示例内联操作

  • 内联函数
  • 内联变量
  • 内联常量
  • ...

重构移动操作的基础类型:refactor.move

示例移动操作

  • 将函数移动到新文件
  • 在类之间移动属性
  • 将方法移动到基类
  • ...

重构重写操作的基础类型:refactor.rewrite

示例重写操作

  • 将 JavaScript 函数转换为类
  • 添加或删除参数
  • 封装字段
  • 使方法静态化
  • ...

源操作的基础类型:source

源代码操作应用于整个文件。它们必须被显式请求,并且不会出现在常规的 灯泡 菜单中。源操作可以在保存时使用 editor.codeActionsOnSave 运行,并且也显示在 source 上下文菜单中。

自动修复源操作的基础类型:source.fixAll

修复所有操作会自动修复有明确修复方法且不需要用户输入的错误。它们不应抑制错误或执行不安全的操作,如生成新类型或类。

组织导入源操作的基础类型:source.organizeImports

构造函数

私有构造函数,请使用静态 CodeActionKind.XYZ 从现有代码操作类型派生。

参数描述
value: string

类型的值,例如 "refactor.extract.function"

返回值描述
CodeActionKind

属性

类型的字符串值,例如 "refactor.extract.function"

方法

通过在当前类型后附加更具体的选择器来创建新类型。

不修改当前类型。

参数描述
parts: string
返回值描述
CodeActionKind

检查 other 是否是此 CodeActionKind 的子类型。

例如,类型 "refactor.extract" 包含 "refactor.extract""refactor.extract.function",但不包含 "unicorn.refactor.extract""refactor.extractAll"refactor

参数描述
other: CodeActionKind

要检查的类型。

返回值描述
布尔值

检查此代码操作类型是否与 other 相交。

例如,类型 "refactor.extract"refactor"refactor.extract""refactor.extract.function" 相交,但不与 "unicorn.refactor.extract""refactor.extractAll" 相交。

参数描述
other: CodeActionKind

要检查的类型。

返回值描述
布尔值

CodeActionProvider<T>

提供代码的上下文操作。代码操作通常用于修复问题或美化/重构代码。

代码操作通过以下几种方式呈现给用户:

  • 灯泡 功能,它显示当前光标位置的代码操作列表。灯泡的操作列表包括快速修复和重构。
  • 作为用户可以运行的命令,例如 Refactor。用户可以从命令面板或使用键绑定运行它们。
  • 作为源操作,例如 Organize Imports
  • 快速修复 显示在问题视图中。
  • editor.codeActionsOnSave 设置在保存时应用的更改。

方法

获取文档中给定范围的代码操作。

仅返回用户为请求范围相关的代码操作。还要考虑返回的代码操作如何在 UI 中显示。例如,灯泡小部件和 Refactor 命令将返回的代码操作显示为列表,因此不要返回过多的代码操作,以免让用户不知所措。

参数描述
document: TextDocument

调用命令的文档。

range: Range | Selection

调用命令的范围或选择器。如果操作是为当前活动编辑器请求的,这将始终是一个 selection

context: CodeActionContext

提供有关正在请求哪些代码操作的附加信息。您可以使用此信息来查看编辑器正在请求哪些特定类型的代码操作,以便返回更相关的操作并避免返回编辑器将丢弃的无关操作。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<Array<Command | T>>

代码操作数组,例如快速修复或重构。可以通过返回 undefinednull 或空数组来表示缺少结果。

出于历史原因,我们也支持返回 Command,但是所有新扩展都应该返回 CodeAction 对象。

给定一个代码操作,填充其 edit 属性。对其他所有属性(如标题)的更改将被忽略。具有 edit 的代码操作将不会被解析。

注意,返回命令而非代码操作的代码操作提供程序无法成功实现此函数。返回命令是已弃用的,应改用返回代码操作。

参数描述
codeAction: T

一个代码操作。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T>

已解析的代码操作或解析为该操作的 thenable。返回给定的 item 是可以的。当没有返回结果时,将使用给定的 item

CodeActionProviderMetadata

关于 CodeActionProvider 所提供代码操作类型的元数据。

属性

一类代码操作的静态文档。

如果满足以下任一条件,则在代码操作菜单中显示提供者提供的文档:

  • 编辑器请求 kind 类型的代码操作。在这种情况下,编辑器将显示与所请求的代码操作类型最匹配的文档。例如,如果一个提供者同时具有 RefactorRefactorExtract 的文档,当用户请求 RefactorExtract 的代码操作时,编辑器将使用 RefactorExtract 的文档,而不是 Refactor 的文档。

  • 提供者返回 kind 类型的任何代码操作。

每个提供者最多显示一个文档条目。

CodeActionKind 列表,CodeActionProvider 可能会返回这些类型。

此列表用于确定是否应调用给定的 CodeActionProvider。为了避免不必要的计算,每个 CodeActionProvider 都应列出 providedCodeActionKinds。类型列表可以是通用的,例如 [CodeActionKind.Refactor],也可以列出所有提供的类型,例如 [CodeActionKind.Refactor.Extract.append('function'), CodeActionKind.Refactor.Extract.append('constant'), ...]

CodeActionTriggerKind

请求代码操作的原因。

枚举成员

代码操作是用户或扩展明确请求的。

代码操作是自动请求的。

这通常发生在文件中的当前选择更改时,但也可以在文件内容更改时触发。

CodeLens

代码 Lens 代表一个 Command,它应该与源代码一起显示,例如引用次数、运行测试的方法等。

当没有命令与之关联时,代码 Lens 是未解析的。出于性能原因,代码 Lens 的创建和解析应分为两个阶段。

另请参阅

构造函数

创建一个新的代码 Lens 对象。

参数描述
range: Range

此代码 Lens 所适用的范围。

command?: Command

与此代码 Lens 关联的命令。

返回值描述
CodeLens

属性

此代码 Lens 所代表的命令。

当有关联的命令时为 true

此代码 Lens 有效的范围。应仅跨越多行。

CodeLensProvider<T>

代码 Lens 提供者向源代码添加 命令。命令将显示为源代码之间的专用水平线。

事件

一个可选的事件,用于指示此提供者的代码 Lens 已更改。

方法

计算 Lens 列表。此调用应尽快返回,如果计算命令的成本很高,实现者应仅返回带有范围设置的代码 Lens 对象并实现 resolve

参数描述
document: TextDocument

调用命令的文档。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T[]>

代码 Lens 数组或解析为该数组的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

此函数将为每个可见的代码 Lens 调用,通常在滚动时以及在调用 compute-lenses 之后。

参数描述
codeLens: T

必须解析的代码 Lens。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T>

给定的已解析代码 Lens 或解析为该代码 Lens 的 thenable。

Color

表示 RGBA 空间中的颜色。

构造函数

创建一个新的颜色实例。

参数描述
red: number

红色分量。

green: number

绿色分量。

blue: number

蓝色分量。

alpha: number

Alpha 分量。

返回值描述
颜色

属性

此颜色的 alpha 分量,范围为 [0-1]

此颜色的蓝色分量,范围为 [0-1]

此颜色的绿色分量,范围为 [0-1]

此颜色的红色分量,范围为 [0-1]

ColorInformation

表示文档中的颜色范围。

构造函数

创建一个新的颜色范围。

参数描述
range: Range

颜色出现的范围。不得为空。

color: Color

颜色的值。

返回值描述
颜色信息

属性

此颜色范围的实际颜色值。

颜色出现在文档中的范围。

ColorPresentation

颜色呈现对象描述了如何将 Color 表示为文本,以及从源代码引用它所需的编辑。

对于某些语言,一种颜色可以有多种呈现方式,例如 CSS 可以用常量 Red、十六进制值 #ff0000,或者以 RGBA 和 HSLA 的形式表示红色。在 C# 中,其他表示形式适用,例如 System.Drawing.Color.Red

构造函数

创建一个新的颜色呈现。

参数描述
label: string

此颜色呈现的标签。

返回值描述
颜色呈现

属性

选择此颜色呈现时应用的附加 文本编辑的可选数组。编辑不得与主 编辑重叠,也不得相互重叠。

此颜色呈现的标签。它将显示在颜色选择器的标题上。默认情况下,这也是选择此颜色呈现时插入的文本。

在选择此颜色呈现时应用于文档的 编辑。当为 falsy 时,使用 label

ColorTheme

表示一个颜色主题。

属性

此颜色主题的类型:浅色、深色、高对比度深色和高对比度浅色。

ColorThemeKind

表示一个颜色主题类型。

枚举成员

浅色主题。

深色主题。

高对比度深色主题。

高对比度浅色主题。

Command

表示对命令的引用。提供一个标题,该标题将用于在 UI 中表示命令,并可选地提供一个参数数组,当调用命令处理函数时,该数组将被传递给它。

属性

命令处理函数应使用的参数。

实际命令处理函数的标识符。

另请参阅 commands.registerCommand

命令的标题,例如 save

命令在 UI 中表示时的工具提示。

Comment

注释在编辑器或注释面板中显示,具体取决于其提供方式。

属性

注释的 作者信息

人类可读的注释正文

注释的上下文值。这可用于贡献特定于注释的操作。例如,注释被赋予上下文值 editable。当使用 menus 扩展点为 comments/comment/title 贡献操作时,您可以在 when 表达式中为 comment 键指定上下文值,例如 comment == editable

    "contributes": {
        "menus": {
            "comments/comment/title": [
                {
                    "command": "extension.deleteComment",
                    "when": "comment == editable"
                }
            ]
        }
    }

这将仅显示上下文值为 editable 的注释的 extension.deleteComment 操作。

可选的标签,用于描述 Comment。如果存在,标签将显示在作者名称旁边。

Comment mode of the comment

Comment 的可选反应

可选的时间戳,将显示在注释中。日期将根据用户的区域设置和偏好设置进行格式化。

CommentAuthorInformation

Comment 的作者信息

属性

作者的可选图标路径

注释作者的显示名称

CommentController

注释控制器能够为编辑器提供 注释 支持,并为用户提供与注释交互的各种方式。

属性

可选的注释范围提供者。为任何给定的资源 URI 提供支持注释的 范围 列表。

如果未提供,用户将无法添加任何注释。

此注释控制器的 ID。

此注释控制器的可读标签。

注释控制器选项

用于在 Comment 上创建和删除反应的可选反应处理程序。

参数描述
comment: Comment
reaction: CommentReaction
返回值描述
Thenable<void>

方法

创建 注释线程。注释线程将在可见的文本编辑器(如果资源匹配)和注释面板中显示,一旦创建。

参数描述
uri: Uri

线程已创建的文档的 URI。

range: Range

注释线程位于文档内的范围。

comments: readonly Comment[]

线程的有序注释。

返回值描述
注释线程

释放此注释控制器。

释放后,此注释控制器创建的所有 注释线程 也将被从编辑器和注释面板中移除。

参数描述
返回值描述
void

CommentingRangeProvider

CommentController 的注释范围提供者。

方法

提供允许创建新注释线程的范围列表,或为给定文档提供 null。

参数描述
document: TextDocument
token: CancellationToken
返回值描述
ProviderResult<Range[] | CommentingRanges>

CommentingRanges

CommentingRangeProvider 启用注释的范围。

属性

允许在没有特定范围的情况下向文件添加注释。

允许创建新注释线程的范围。

CommentMode

Comment 的注释模式

枚举成员

显示注释编辑器

显示注释的预览

CommentOptions

表示 CommentControlleroptions

属性

当注释输入框聚焦时,作为占位符显示的字符串(可选)。

当注释输入框折叠时,显示的字符串(可选)。

CommentReaction

Comment 的反应

属性

注释的 作者 是否已对此反应作出反应

对该反应作出反应的用户数量

在 UI 中显示的反应图标。

反应的人类可读标签

CommentReply

comments/commentThread/context 中注册的操作的命令参数。

属性

注释编辑器中的值

活动的 注释线程

CommentRule

描述了语言的注释工作方式。

属性

块注释字符对,例如 /* block comment *&#47;

行注释标记,例如 // this is a comment

CommentThread

代表文档中特定范围内的对话的 注释 集合。

属性

线程是否支持回复。默认为 true。

打开文档时线程应折叠还是展开。默认为 Collapsed。

线程的有序注释。

注释线程的上下文值。这可用于贡献特定于线程的操作。例如,注释线程被赋予上下文值 editable。当使用 menus 扩展点为 comments/commentThread/title 贡献操作时,您可以在 when 表达式中为 commentThread 键指定上下文值,例如 commentThread == editable

"contributes": {
  "menus": {
    "comments/commentThread/title": [
      {
        "command": "extension.deleteCommentThread",
        "when": "commentThread == editable"
      }
    ]
  }
}

这将仅显示上下文值为 editable 的注释线程的 extension.deleteCommentThread 操作。

可选的可读标签,用于描述 Comment Thread

注释线程位于文档内的范围。线程图标将显示在范围的最后一行。当设置为 undefined 时,注释将与文件关联,而不是与特定范围关联。

注释线程的可选状态,这可能会影响注释的显示方式。

线程已创建的文档的 URI。

方法

释放此注释线程。

一旦被释放,此注释线程将在适当的时候从可见编辑器和注释面板中移除。

参数描述
返回值描述
void

CommentThreadCollapsibleState

CommentThread 的可折叠状态

枚举成员

确定一个项是折叠的

确定一个项是展开的

CommentThreadState

注释线程的状态。

枚举成员

未解决的线程状态

已解决的线程状态

CompletionContext

包含触发 completion provider 的上下文的附加信息。

属性

触发完成项提供程序的字符。

如果提供程序不是由字符触发的,则为 undefined

触发完成项提供程序时,触发字符已在文档中。

触发完成的方式。

CompletionItem

CompletionItem 表示一个文本片段,它被提议用于完成正在键入的文本。

仅凭一个 label 创建 completion item 就足够了。在这种情况下,completion item 将用给定的 label 或 insertText 替换光标之前的 word。否则,将使用给定的 edit

在编辑器中选择一个 completion item 时,其定义的或合成的文本编辑将应用于所有光标/选择,而 additionalTextEdits 将按提供的方式应用。

另请参阅

构造函数

创建一个新的 completion item。

Completion items 至少必须有一个 label,它将用作插入文本以及用于排序和过滤。

参数描述
label: string | CompletionItemLabel

完成项的标签。

kind?: CompletionItemKind

完成项的 kind

返回值描述
CompletionItem

属性

一个可选的附加 text edits 数组,在选择此 completion item 时应用。edits 不能与主 edit 重叠,也不能与它们自身重叠。

在插入此 completion item之后执行的可选 Command注意,对当前文档的附加修改应使用 additionalTextEdits 属性来描述。

当按下此 completion item 处于活动状态时,按下的一组可选字符将首先接受它,然后输入该字符。注意,所有 commit characters 的 length 都应为 1,多余的字符将被忽略。

一个人类可读的字符串,包含此项的附加信息,例如类型或符号信息。

一个人类可读的字符串,表示一个文档注释。

在过滤一组 completion items 时应使用的字符串。当 falsy 时,使用 label

请注意,filter text 是与前导词(前缀)匹配的,该前缀由 range 属性定义。

在选择此 completion item 时应插入到文档中的字符串或代码片段。当 falsy 时,使用 label

保持 insertText 中的空格不变。默认情况下,编辑器会调整新行的前导空格,使其与接受该项的行的缩进匹配 - 将此设置为 true 将阻止这种情况。

此 completion item 的 kind。编辑器根据 kind 选择图标。

此 completion item 的标签。默认情况下,这也是选择此 completion item 时插入的文本。

显示时选中此项。注意,只能选中一个 completion item,由编辑器决定是哪个。规则是,匹配最好的第一个项被选中。

一个 range 或一个插入和替换 range,用于选择应被此 completion item 替换的文本。

如果省略,则使用当前 word 的 range 作为替换 range,并使用当前 word 的开始到当前位置作为插入 range。

注意 1: range 必须是 单行 并且必须 包含 请求完成的位置。注意 2: 插入 range 必须是替换 range 的前缀,这意味着它必须被包含且起始位置相同。

在将此项与其他项进行比较时应使用的字符串。当 falsy 时,使用 label

请注意,sortText 仅用于 completion items 的初始排序。当有前导词(前缀)时,排序基于 completion item 与该前缀的匹配程度,仅当 completion items 匹配程度相同且都很好时才使用初始排序。前缀由 range 属性定义,因此每个 completion item 的前缀可能不同。

此 completion item 的标签。

  • 已弃用 - 请改用 CompletionItem.insertTextCompletionItem.range

在选择此 completion item 时应用于文档的 edit。如果提供了 edit,则忽略 insertText 的值。

edit 的 Range 必须是单行,并且必须与请求完成的位置在同一行。

CompletionItemKind

Completion item kinds。

枚举成员

Text completion item kind。

Method completion item kind。

Function completion item kind。

Constructor completion item kind。

Field completion item kind。

Variable completion item kind。

Class completion item kind。

Interface completion item kind。

Module completion item kind。

Property completion item kind。

Unit completion item kind。

Value completion item kind。

Enum completion item kind。

Keyword completion item kind。

Snippet completion item kind。

Color completion item kind。

File completion item kind。

Reference completion item kind。

Folder completion item kind。

EnumMember completion item kind。

Constant completion item kind。

Struct completion item kind。

Event completion item kind。

Operator completion item kind。

TypeParameter completion item kind。

User completion item kind。

Issue completion item kind。

CompletionItemLabel

一个结构化的 completion item 标签。

属性

一个可选的字符串,它在 CompletionItemLabel.detail 之后以不太显眼的方式呈现。应将其用于完全限定的名称或文件路径。

一个可选的字符串,它在 label 之后以不太显眼的方式直接呈现,中间没有任何空格。应将其用于函数签名或类型注解。

此 completion item 的标签。

默认情况下,这也是选择此 completion item 时插入的文本。

CompletionItemProvider<T>

CompletionItemProvider 接口定义了扩展与 IntelliSense 之间的契约。

Provider 可以通过实现 resolveCompletionItem 函数来延迟计算 detaildocumentation 属性。但是,对于初始排序和过滤所必需的属性,如 sortTextfilterTextinsertTextrange,在 resolve 期间不得更改。

Provider 在用户显式操作或(根据配置)在键入单词或触发字符时隐式地被请求提供 completions。

方法

为指定的位置和文档提供 completion items。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

context: CompletionContext

触发完成的方式。

返回值描述
ProviderResult<CompletionList<T> | T[]>

一个 completion 数组、一个 completion list,或者一个解析为其中之一的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

给定一个 completion item,填充更多数据,例如 doc-commentdetails

编辑器只会解析一个 completion item 一次。

注意,此函数在 completion items 已在 UI 中显示或已选择一项进行插入时被调用。因此,任何改变表示(label、排序、过滤等)或(主要)插入行为(insertText)的属性都不能被更改。

此函数可以填充 additionalTextEdits。但是,这意味着一个 item 可能会在解析完成之前被插入,在这种情况下,编辑器将尽最大努力仍然应用这些附加文本编辑。

参数描述
item: T

当前在 UI 中处于活动状态的 completion item。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T>

已解析的 completion item 或解析为其中之一的 thenable。返回给定的 item 是可以的。如果没有返回结果,则使用给定的 item

CompletionItemTag

Completion item tags 是用于微调 completion item 渲染的额外注释。

枚举成员

将 completion item 渲染为过时,通常使用删除线。

CompletionList<T>

表示要呈现给编辑器的 completion items 的集合。

构造函数

创建一个新的 completion list。

参数描述
items?: T[]

completion items。

isIncomplete?: boolean

列表不完整。

返回值描述
CompletionList<T>

属性

此列表不完整。进一步键入应导致重新计算此列表。

completion items。

CompletionTriggerKind

如何触发 completion provider

枚举成员

正常触发了 completion。

由触发字符触发了 completion。

由于当前 completion list 不完整而重新触发了 completion。

ConfigurationChangeEvent

描述配置更改的事件

方法

检查给定的 section 是否已更改。如果提供了 scope,则检查该 section 是否已为给定 scope 下的资源更改。

参数描述
section: string

配置名称,支持点分名称。

scope?: ConfigurationScope

检查的范围。

返回值描述
布尔值

如果给定的 section 已更改,则为 true

ConfigurationScope

配置范围,可以是

  • 表示资源的 Uri
  • 表示已打开文本文档的 TextDocument
  • 表示工作区文件夹的 WorkspaceFolder
  • 包含
    • uri:可选的文本文档 Uri
    • languageId:文本文档的语言标识符

ConfigurationTarget

配置目标

枚举成员

全局配置

工作区配置

工作区文件夹配置

CustomDocument

CustomEditorProvider 使用的自定义文档表示。

Custom documents 仅在给定的 CustomEditorProvider 中使用。CustomDocument 的生命周期由编辑器管理。当不再引用 CustomDocument 时,它将被释放。

属性

此文档的关联 uri。

方法

释放自定义文档。

编辑器会在不再有对 CustomDocument 的引用时(例如,当与该文档关联的所有编辑器都关闭时)调用此方法。

参数描述
返回值描述
void

CustomDocumentBackup

CustomDocument 的备份。

属性

备份的唯一标识符。

此 id 将在打开来自备份的自定义编辑器时作为 openCustomDocument 参数传递回您的扩展。

方法

删除当前备份。

当编辑器认为当前备份不再需要时(例如,当创建新备份或保存文件时),会调用此方法。

参数描述
返回值描述
void

CustomDocumentBackupContext

用于实现 CustomDocumentBackup 的附加信息。

属性

建议用于写入新备份的文件位置。

请注意,您的扩展可以自由忽略此建议并使用自己的备份策略。

如果编辑器是为当前工作区中的资源创建的,destination 将指向 ExtensionContext.storagePath 中的文件。destination 的父文件夹可能不存在,因此请确保在将备份写入此位置之前创建它。

CustomDocumentContentChangeEvent<T>

由扩展触发的事件,用于通知编辑器 CustomDocument 的内容已更改。

另请参见 CustomEditorProvider.onDidChangeCustomDocument

属性

更改所属的文档。

CustomDocumentEditEvent<T>

由扩展触发的事件,用于通知编辑器在 CustomDocument 上发生了编辑。

另请参见 CustomEditorProvider.onDidChangeCustomDocument

属性

编辑所属的文档。

描述编辑的显示名称。

这将显示给用户,用于撤销/重做操作。

方法

重做编辑操作。

当用户重做此编辑时,编辑器会调用此方法。要实现 redo,您的扩展应将文档和编辑器恢复到在 onDidChangeCustomDocument 将此编辑添加到编辑器内部编辑堆栈之前的状态。

参数描述
返回值描述
void | Thenable<void>

撤销编辑操作。

当用户撤销此编辑时,编辑器会调用此方法。要实现 undo,您的扩展应将文档和编辑器恢复到在 onDidChangeCustomDocument 将此编辑添加到编辑器内部编辑堆栈之前的状态。

参数描述
返回值描述
void | Thenable<void>

CustomDocumentOpenContext

关于打开自定义文档的附加信息。

属性

要从中恢复文档的备份的 id,如果不存在备份则为 undefined

如果提供了此项,您的扩展应从备份恢复编辑器,而不是从用户的工作区读取文件。

如果 uri 是一个未命名文件,则此项将被填充该文件的字节数据。

如果提供了此项,您的扩展应使用此字节数据,而不是对传入的 uri 执行 fs API。

CustomEditorProvider<T>

使用自定义文档模型的可编辑自定义编辑器的提供程序。

自定义编辑器使用 CustomDocument 作为其文档模型,而不是 TextDocument。这使扩展对编辑、保存和备份等操作拥有完全控制权。

当处理二进制文件或更复杂的场景时,您应该使用这种自定义编辑器。对于简单的文本文件,请改用 CustomTextEditorProvider

事件

发出信号表明自定义编辑器中发生了编辑。

当自定义编辑器中发生编辑时,您的扩展必须触发此事件。编辑可以是任何内容,从更改文本、裁剪图像到重新排序列表。您的扩展可以自由定义什么是编辑以及每个编辑存储什么数据。

触发 onDidChange 会导致编辑器被标记为脏。当用户保存或恢复文件时,此状态会被清除。

支持撤销/重做的编辑器必须在每次发生编辑时触发 CustomDocumentEditEvent。这允许用户使用编辑器标准的键盘快捷键撤销和重做编辑。如果用户撤销了所有编辑以恢复到最后一个保存状态,编辑器还将标记编辑器不再是脏的。

不支持编辑器标准撤销/重做机制但支持编辑的编辑器必须触发 CustomDocumentContentChangeEvent。用户清除不支持撤销/重做的编辑器脏状态的唯一方法是保存恢复文件。

编辑器应该只触发 CustomDocumentEditEvent 事件,或只触发 CustomDocumentContentChangeEvent 事件。

方法

备份脏的自定义文档。

备份用于热退出和防止数据丢失。您的 backup 方法应将资源持久化为其当前状态,即应用了编辑的状态。最常见的情况是,这意味着将资源保存到 ExtensionContext.storagePath 中的磁盘。当编辑器重新加载并为某个资源打开您的自定义编辑器时,您的扩展程序应首先检查该资源是否存在任何备份。如果存在备份,您的扩展程序应从备份中加载文件内容,而不是从工作区中的资源加载。

backup 方法在大约用户停止编辑文档一秒后触发。如果用户快速编辑文档,backup 方法将直到停止编辑后才被调用。

当启用“自动保存”时,不会调用 backup 方法(因为自动保存已将资源持久化)。

参数描述
document: T

要备份的文档。

context: CustomDocumentBackupContext

可用于备份文档的信息。

cancellation: CancellationToken

用于信号当前备份的令牌,因为新的备份即将到来。您的扩展程序可以自行决定如何响应取消。例如,如果您的扩展程序正在处理一个需要较长时间才能完成的操作来备份大文件,您的扩展程序可能会决定完成正在进行的备份,而不是取消它,以确保编辑器具有一些有效的备份。

返回值描述
Thenable<CustomDocumentBackup>

为给定的资源创建新文档。

openCustomDocument 方法在给定资源的编辑器首次打开时被调用。然后,打开的文档被传递给 resolveCustomEditor,以便可以向用户显示编辑器。

如果用户打开了其他编辑器,将重用已打开的 CustomDocument。当给定资源的所有编辑器都关闭时,CustomDocument 将被释放。此时打开编辑器将触发对 openCustomDocument 的又一次调用。

参数描述
uri: Uri

要打开的文档的 URI。

openContext: CustomDocumentOpenContext

关于打开自定义文档的附加信息。

token: CancellationToken

一个取消令牌,指示不再需要结果。

返回值描述
T | Thenable<T>

自定义文档。

为给定的资源解析自定义编辑器。

每当用户为此 CustomEditorProvider 打开新编辑器时,都会调用此方法。

参数描述
document: T

正在解析的资源的文档。

webviewPanel: WebviewPanel

用于显示此资源的编辑器 UI 的 webview 面板。

在解析期间,提供程序必须填充内容 webview 面板的初始 HTML,并为其连接所有感兴趣的事件侦听器。提供程序还可以保留 WebviewPanel 以供以后使用,例如在命令中。有关更多详细信息,请参阅 WebviewPanel

token: CancellationToken

一个取消令牌,指示不再需要结果。

返回值描述
void | Thenable<void>

一个可选的 thenable,指示自定义编辑器已解析。

将自定义文档恢复到其最后保存的状态。

当用户在自定义编辑器中触发“文件: 恢复文件”时,编辑器会调用此方法。(请注意,这仅用于编辑器的 File: Revert File 命令,而不是对文件的 git revert)。

要实现 revert,实现者必须确保 document 的所有编辑器实例(webview)都显示与保存状态相同的文档。这通常意味着从工作区重新加载文件。

参数描述
document: T

要恢复的文档。

cancellation: CancellationToken

指示不再需要恢复的令牌。

返回值描述
Thenable<void>

一个 thenable,指示更改已完成。

保存自定义文档。

当用户保存自定义编辑器时,编辑器会调用此方法。这可能发生在用户在自定义编辑器处于活动状态时触发保存,通过“全部保存”等命令,或者如果启用了自动保存。

要实现 save,实现者必须持久化自定义编辑器。这通常意味着将自定义文档的文件数据写入磁盘。save 方法完成后,任何关联的编辑器实例将不再被标记为脏。

参数描述
document: T

要保存的文档。

cancellation: CancellationToken

指示不再需要保存的令牌(例如,如果触发了另一个保存)。

返回值描述
Thenable<void>

一个 thenable,指示保存已完成。

将自定义文档保存到其他位置。

当用户在自定义编辑器上触发“另存为”时,编辑器会调用此方法。实现者必须将自定义编辑器持久化到 destination

当用户接受“另存为”时,当前编辑器将被新保存文件的非脏编辑器替换。

参数描述
document: T

要保存的文档。

destination: Uri

要保存的位置。

cancellation: CancellationToken

指示不再需要保存的令牌。

返回值描述
Thenable<void>

一个 thenable,指示保存已完成。

CustomExecution

用于将扩展回调执行为任务的类。

构造函数

构造一个 CustomExecution 任务对象。当任务运行时,将执行回调,此时扩展程序应返回其将“运行”的 Pseudoterminal。任务应等待,直到调用 Pseudoterminal.open 后再执行。任务取消应使用 Pseudoterminal.close 进行处理。任务完成后,触发 Pseudoterminal.onDidClose

参数描述
callback: (resolvedDefinition: TaskDefinition) => Thenable<Pseudoterminal>

当任务被用户启动时将调用的回调。任务定义中任何 ${} 风格的变量都将被解析并作为 resolvedDefinition 传递给回调。

返回值描述
CustomExecution

CustomReadonlyEditorProvider<T>

提供只读自定义编辑器(使用自定义文档模型)的提供程序。

自定义编辑器使用 CustomDocument 作为其文档模型,而不是 TextDocument

当处理二进制文件或更复杂的场景时,您应该使用这种自定义编辑器。对于简单的文本文件,请改用 CustomTextEditorProvider

方法

为给定的资源创建新文档。

openCustomDocument 方法在给定资源的编辑器首次打开时被调用。然后,打开的文档被传递给 resolveCustomEditor,以便可以向用户显示编辑器。

如果用户打开了其他编辑器,将重用已打开的 CustomDocument。当给定资源的所有编辑器都关闭时,CustomDocument 将被释放。此时打开编辑器将触发对 openCustomDocument 的又一次调用。

参数描述
uri: Uri

要打开的文档的 URI。

openContext: CustomDocumentOpenContext

关于打开自定义文档的附加信息。

token: CancellationToken

一个取消令牌,指示不再需要结果。

返回值描述
T | Thenable<T>

自定义文档。

为给定的资源解析自定义编辑器。

每当用户为此 CustomEditorProvider 打开新编辑器时,都会调用此方法。

参数描述
document: T

正在解析的资源的文档。

webviewPanel: WebviewPanel

用于显示此资源的编辑器 UI 的 webview 面板。

在解析期间,提供程序必须填充内容 webview 面板的初始 HTML,并为其连接所有感兴趣的事件侦听器。提供程序还可以保留 WebviewPanel 以供以后使用,例如在命令中。有关更多详细信息,请参阅 WebviewPanel

token: CancellationToken

一个取消令牌,指示不再需要结果。

返回值描述
void | Thenable<void>

一个可选的 thenable,指示自定义编辑器已解析。

CustomTextEditorProvider

基于文本的自定义编辑器的提供程序。

基于文本的自定义编辑器以 TextDocument 作为其数据模型。这大大简化了实现自定义编辑器,因为它允许编辑器处理许多常见操作,如撤销和备份。提供程序负责在 webview 和 TextDocument 之间同步文本更改。

方法

为给定的文本资源解析自定义编辑器。

当用户首次打开 CustomTextEditorProvider 的资源时,或者当用户使用此 CustomTextEditorProvider 重新打开现有编辑器时,会调用此方法。

参数描述
document: TextDocument

要解析的资源的文档。

webviewPanel: WebviewPanel

用于显示此资源的编辑器 UI 的 webview 面板。

在解析期间,提供程序必须填充内容 webview 面板的初始 HTML,并为其连接所有感兴趣的事件侦听器。提供程序还可以保留 WebviewPanel 以供以后使用,例如在命令中。有关更多详细信息,请参阅 WebviewPanel

token: CancellationToken

一个取消令牌,指示不再需要结果。

返回值描述
void | Thenable<void>

一个 thenable,指示自定义编辑器已解析。

DataTransfer

一个映射,包含传输数据对应的 MIME 类型映射。

实现 handleDrag 的拖放控制器可以在数据传输中添加其他 MIME 类型。这些额外的 MIME 类型仅在拖动源于同一拖放控制器中的元素时才包含在 handleDrop 中。

构造函数

参数描述
返回值描述
DataTransfer

方法

获取一个新迭代器,其中包含此数据传输中每个元素的 [mime, item] 对。

参数描述
返回值描述
IterableIterator<[mimeType: string, item: DataTransferItem]>

允许迭代数据传输项。

参数描述
callbackfn: (item: DataTransferItem, mimeType: string, dataTransfer: DataTransfer) => void

用于迭代数据传输项的回调函数。

thisArg?: any

调用处理函数时使用的 this 上下文。

返回值描述
void

检索给定 MIME 类型的数据传输项。

参数描述
mimeType: string

用于获取数据传输项的 MIME 类型,例如 text/plainimage/png。MIME 类型查找不区分大小写。

特殊 MIME 类型

  • text/uri-list — 一个字符串,其中包含用 \r\n 分隔的 toString()ed 的 URI。要指定文件中的光标位置,请将 URI 的片段设置为 L3,5,其中 3 是行号,5 是列号。
返回值描述
DataTransferItem

设置 MIME 类型到数据传输项的映射。

参数描述
mimeType: string

用于设置数据的 MIME 类型。MIME 类型存储为小写,查找时不区分大小写。

value: DataTransferItem

给定 MIME 类型的数据传输项。

返回值描述
void

DataTransferFile

DataTransferItem 关联的文件。

此类型实例只能由编辑器创建,不能由扩展程序创建。

属性

文件的名称。

文件的完整文件路径。

在 Web 上可能为 undefined

方法

文件的完整文件内容。

参数描述
返回值描述
Thenable<Uint8Array>

DataTransferItem

封装拖放操作期间传输的数据。

构造函数

参数描述
value: any

存储在此项上的自定义数据。可以使用 DataTransferItem.value 检索。

返回值描述
DataTransferItem

属性

存储在此项上的自定义数据。

您可以使用 value 来跨操作共享数据。只要创建 DataTransferItem 的扩展运行在同一个扩展主机中,就可以检索原始对象。

方法

尝试获取与此数据传输项关联的 文件

请注意,文件对象仅在拖放操作的范围内有效。

参数描述
返回值描述
DataTransferFile

数据传输的文件,如果该项不是文件或无法访问文件数据,则为 undefined

获取此项的字符串表示形式。

如果 DataTransferItem.value 是一个对象,则返回对 DataTransferItem.value 值进行 JSON stringify 后的结果。

参数描述
返回值描述
Thenable<string>

DebugAdapter

实现调试适配器协议的调试适配器可以通过实现 DebugAdapter 接口来注册到编辑器。

事件

在调试适配器将调试适配器协议消息发送到编辑器之后触发的事件。消息可以是请求、响应或事件。

方法

销毁此对象。

参数描述
返回值描述
any

处理调试适配器协议消息。消息可以是请求、响应或事件。结果或错误通过 onSendMessage 事件返回。

参数描述
message: DebugProtocolMessage

调试适配器协议消息

返回值描述
void

DebugAdapterDescriptor

表示不同类型的调试适配器

DebugAdapterDescriptorFactory

创建 调试适配器描述符 的调试适配器工厂。

方法

在调试会话开始时调用 'createDebugAdapterDescriptor',以提供有关要使用的调试适配器的详细信息。这些详细信息必须以 DebugAdapterDescriptor 类型对象的 C++11>返回。目前支持两种类型的调试适配器:

  • 调试适配器可执行文件指定为命令路径和参数(请参阅 DebugAdapterExecutable),
  • 可以通过通信端口访问的调试适配器服务器(请参阅 DebugAdapterServer)。如果未实现该方法,则默认行为如下:createDebugAdapter(session: DebugSession, executable: DebugAdapterExecutable) { if (typeof session.configuration.debugServer === 'number') { return new DebugAdapterServer(session.configuration.debugServer); } return executable; }
参数描述
session: DebugSession

将使用调试适配器的 调试会话

executable: DebugAdapterExecutable

在 package.json 中指定的调试适配器的可执行信息(如果不存在此类信息,则为 undefined)。

返回值描述
ProviderResult<DebugAdapterDescriptor>

一个 调试适配器描述符 或 undefined。

DebugAdapterExecutable

表示调试适配器的可执行文件以及传递给它的可选参数和运行时选项。

构造函数

根据可执行程序创建调试适配器的描述。

参数描述
command: string

实现调试适配器的命令或可执行文件路径。命令必须是可执行文件的绝对路径,或者是一个可以通过 PATH 环境变量查找的命令的名称。特殊值 'node' 将映射到编辑器内置的 Node.js 运行时。

args?: string[]

要传递给命令或可执行文件的可选参数。

options?: DebugAdapterExecutableOptions

启动命令或可执行文件时使用的可选选项。

返回值描述
DebugAdapterExecutable

属性

传递给调试适配器可执行文件的参数。默认为空数组。

调试适配器可执行文件的命令或路径。命令必须是可执行文件的绝对路径,或者是一个可以通过 PATH 环境变量查找的命令的名称。特殊值 'node' 将映射到编辑器内置的 Node.js 运行时。

启动调试适配器时使用的可选选项。默认为 undefined。

DebugAdapterExecutableOptions

调试适配器可执行文件的选项。

属性

执行调试适配器的当前工作目录。

执行程序或 Shell 的附加环境。如果省略,则使用父进程的环境。如果提供,则与父进程的环境合并。

DebugAdapterInlineImplementation

用于内联实现调试适配器的描述符。

构造函数

创建内联实现调试适配器的描述符。

参数描述
implementation: DebugAdapter
返回值描述
DebugAdapterInlineImplementation

DebugAdapterNamedPipeServer

表示作为一个基于命名管道(Windows)/UNIX 域套接字(非 Windows)的服务器运行的调试适配器。

构造函数

创建作为基于命名管道(Windows)/UNIX 域套接字(非 Windows)的服务器运行的调试适配器的描述。

参数描述
path: string
返回值描述
DebugAdapterNamedPipeServer

属性

命名管道/UNIX 域套接字的路径。

DebugAdapterServer

表示作为一个基于套接字的服务器运行的调试适配器。

构造函数

创建作为基于套接字的服务器运行的调试适配器的描述。

参数描述
port: number
host?: string
返回值描述
DebugAdapterServer

属性

主机。

端口。

DebugAdapterTracker

Debug Adapter Tracker 是用于跟踪编辑器与 Debug Adapter 之间通信的手段。

事件

Debug Adapter 已将 Debug Adapter Protocol 消息发送到编辑器。

参数描述
message: any
返回值描述
void

Debug Adapter 即将从编辑器接收 Debug Adapter Protocol 消息。

参数描述
message: any
返回值描述
void

与 Debug Adapter 的会话即将启动。

参数描述
返回值描述
void

Debug Adapter 会话即将停止。

参数描述
返回值描述
void

方法

Debug Adapter 发生错误。

参数描述
error: Error
返回值描述
void

Debug Adapter 已退出,返回指定的退出代码或信号。

参数描述
code: number
signal: string
返回值描述
void

DebugAdapterTrackerFactory

一个用于创建 Debug Adapter Tracker 的 Debug Adapter 工厂。

方法

在调试会话开始时调用 `createDebugAdapterTracker` 方法,以返回一个“跟踪器”对象,该对象可对编辑器与调试适配器之间的通信进行只读访问。

参数描述
session: DebugSession

将使用调试适配器跟踪器的调试会话。

返回值描述
ProviderResult<DebugAdapterTracker>

一个 Debug Adapter Tracker 或 undefined。

DebugConfiguration

调试会话的配置。

属性

调试会话的名称。

调试会话的请求类型。

调试会话的类型。

DebugConfigurationProvider

Debug configuration provider 允许向调试服务添加调试配置,并在启动调试会话之前解析启动配置。调试配置提供程序通过 debug.registerDebugConfigurationProvider 进行注册。

方法

为调试服务提供 调试配置。如果为同一类型注册了多个调试配置提供程序,调试配置将按任意顺序连接。

参数描述
folder: WorkspaceFolder

将使用配置的工作区文件夹,或对于无文件夹设置,则为 undefined

token?: CancellationToken

取消令牌。

返回值描述
ProviderResult<DebugConfiguration[]>

一个 调试配置 数组。

通过填充缺失值或添加/更改/删除属性来解析 调试配置。如果为同一类型注册了多个调试配置提供程序,则 `resolveDebugConfiguration` 调用将按任意顺序链接,并将初始调试配置通过链传递。返回 `undefined` 值将阻止调试会话启动。返回 `null` 值将阻止调试会话启动,并打开底层的调试配置。

参数描述
folder: WorkspaceFolder

配置来源的工作区文件夹,或对于无文件夹设置,则为 undefined

debugConfiguration: DebugConfiguration

要解析的 调试配置

token?: CancellationToken

取消令牌。

返回值描述
ProviderResult<DebugConfiguration>

已解析的调试配置,或 undefined 或 null。

此挂钩在 `resolveDebugConfiguration` 之后直接调用,但所有变量都已替换。可用于通过填充缺失值或添加/更改/删除属性来解析或验证 调试配置。如果为同一类型注册了多个调试配置提供程序,则 `resolveDebugConfigurationWithSubstitutedVariables` 调用将按任意顺序链接,并将初始调试配置通过链传递。返回 `undefined` 值将阻止调试会话启动。返回 `null` 值将阻止调试会话启动,并打开底层的调试配置。

参数描述
folder: WorkspaceFolder

配置来源的工作区文件夹,或对于无文件夹设置,则为 undefined

debugConfiguration: DebugConfiguration

要解析的 调试配置

token?: CancellationToken

取消令牌。

返回值描述
ProviderResult<DebugConfiguration>

已解析的调试配置,或 undefined 或 null。

DebugConfigurationProviderTriggerKind

DebugConfigurationProviderTriggerKind 指定何时触发 `DebugConfigurationProvider` 的 `provideDebugConfigurations` 方法。目前有两种情况:为新创建的 launch.json 提供初始调试配置,或通过 UI(例如通过“选择并开始调试”命令)动态提供用户请求的调试配置。在注册 `DebugConfigurationProvider` 与 debug.registerDebugConfigurationProvider 时,会使用触发器种类。

枚举成员

调用 `DebugConfigurationProvider.provideDebugConfigurations` 来为新创建的 launch.json 提供初始调试配置。

调用 `DebugConfigurationProvider.provideDebugConfigurations` 以在用户通过 UI(例如通过“选择并开始调试”命令)请求动态生成的调试配置时提供它们。

DebugConsole

表示调试控制台。

方法

将给定值追加到调试控制台。

参数描述
value: string

一个字符串,假值将不会被打印。

返回值描述
void

将给定值和一个换行符追加到调试控制台。

参数描述
value: string

一个字符串,假值将被打印。

返回值描述
void

DebugConsoleMode

调试会话使用的调试控制台模式,请参阅 options

枚举成员

调试会话应有一个单独的调试控制台。

调试会话应与其父会话共享调试控制台。此值对于没有父会话的会话无效。

DebugProtocolBreakpoint

DebugProtocolBreakpoint 是 Debug Adapter Protocol 中定义的 `Breakpoint` 类型的不透明占位符。

DebugProtocolMessage

DebugProtocolMessage 是 Debug Adapter Protocol 中定义的 `ProtocolMessage` 类型的不透明占位符。

DebugProtocolSource

DebugProtocolSource 是 Debug Adapter Protocol 中定义的 `Source` 类型的不透明占位符。

DebugSession

调试会话。

属性

此会话的“已解析” 调试配置。“已解析”意味着

  • 所有变量都已替换,并且
  • 特定于平台的属性部分已被“展平”以匹配平台,并为不匹配的平台移除。

此调试会话的唯一 ID。

调试会话的名称最初取自 调试配置。任何更改都将在 UI 中正确反映。

此调试会话的父会话,如果它是作为子会话创建的。

另请参阅 DebugSessionOptions.parentSession

来自 调试配置 的调试会话类型。

此会话的工作区文件夹,或对于无文件夹设置,则为 undefined

方法

向调试适配器发送自定义请求。

参数描述
command: string
args?: any
返回值描述
Thenable<any>

将编辑器中的断点映射到调试会话的调试适配器所管理的相应 Debug Adapter Protocol (DAP) 断点。如果不存在 DAP 断点(因为编辑器断点尚未注册,或调试适配器不关心该断点),则返回 `undefined`。

参数描述
breakpoint: Breakpoint

编辑器中的一个 断点

返回值描述
Thenable<DebugProtocolBreakpoint>

一个解析为 Debug Adapter Protocol 断点或 `undefined` 的 Promise。

DebugSessionCustomEvent

调试会话收到的自定义 Debug Adapter Protocol 事件。

属性

事件特定信息。

事件类型。

收到自定义事件的 调试会话

DebugSessionOptions

用于 启动调试会话 的选项。

属性

控制是否在 CALL STACK 视图中显示调试会话的父会话,即使它只有一个子会话。默认情况下,调试会话永远不会隐藏其父会话。如果 compact 为 true,则具有单个子会话的调试会话将在 CALL STACK 视图中隐藏,以使树更紧凑。

控制此会话是否应具有单独的调试控制台,还是与父会话共享。对于没有父会话的会话无效。默认为 Separate。

控制生命周期请求(如“restart”)是发送到新创建的会话还是其父会话。默认情况下(如果属性为 false 或缺失),生命周期请求会发送到新会话。如果会话没有父会话,则忽略此属性。

控制此会话是否应在不调试的情况下运行,从而忽略断点。当未指定此属性时,将使用父会话(如果存在)的值。

如果指定,新创建的调试会话将被注册为该“父”调试会话的“子”会话。

如果为 true,则不会为此会话更改窗口状态栏颜色。

如果为 true,则不会为此会话显示调试工具栏。

如果为 true,则不会为此会话自动显示调试视图。

如果为 true,则无论 `debug.saveBeforeStart` 设置的值如何,在启动调试会话时都不会为打开的文件触发保存。

指示编辑器该调试会话是从测试运行请求启动的。这用于在 UI 操作中链接调试会话和测试运行的生命周期。

DebugStackFrame

表示调试会话中的堆栈帧。

属性

调试协议中的堆栈帧 ID。

线程的调试会话。

调试协议中相关线程的 ID。

DebugThread

表示调试会话中的线程。

属性

线程的调试会话。

调试协议中相关线程的 ID。

Declaration

符号的声明,表示为一个或多个 位置位置链接

DeclarationCoverage

包含声明的覆盖率信息。根据报告器和语言,这可能是函数、方法或命名空间等类型。

构造函数

参数描述
name: string
executed: number | boolean

此声明执行的次数,或指示是否执行的布尔值(如果确切计数未知)。如果为零或 false,则该声明将被标记为未覆盖。

location: Range | Position

声明的位置。

返回值描述
DeclarationCoverage

属性

此声明执行的次数,或指示是否执行的布尔值(如果确切计数未知)。如果为零或 false,则该声明将被标记为未覆盖。

声明位置。

声明的名称。

DeclarationProvider

声明提供程序接口定义了扩展与转到声明功能之间的约定。

方法

提供给定位置和文档处的符号的声明。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<Declaration>

一个声明或一个解析为该声明的 thenable。可以通过返回 `undefined` 或 `null` 来指示缺少结果。

DecorationInstanceRenderOptions

表示装饰实例的渲染选项。请参阅 DecorationOptions.renderOptions

属性

定义插入在装饰文本之后的附件的渲染选项。

定义插入在装饰文本之前的附件的渲染选项。

深色主题的覆盖选项。

浅色主题的覆盖选项。

DecorationOptions

表示 装饰集 中特定装饰的选项。

属性

悬停在装饰上时应渲染的消息。

应用此装饰的范围。范围不能为空。

应用于当前装饰的渲染选项。为了性能起见,请保持装饰特定选项的数量较少,并尽可能使用装饰类型。

DecorationRangeBehavior

描述了在装饰边缘进行键入/编辑时的行为。

枚举成员

当在开始或结束处进行编辑时,装饰的范围会扩大。

当在开始或结束处进行编辑时,装饰的范围不会扩大。

当在开始处进行编辑时,装饰的范围会扩大,但在结束处不会。

当在结束处进行编辑时,装饰的范围会扩大,但在开始处不会。

DecorationRenderOptions

表示 文本编辑器装饰 的渲染样式。

属性

定义插入在装饰文本之后的附件的渲染选项。

装饰的背景颜色。使用 rgba() 并定义透明背景颜色以与其他装饰良好配合。或者,可以 引用 颜色注册表中的颜色。

定义插入在装饰文本之前的附件的渲染选项。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰所包围文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。

将应用于装饰所包围文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。

将应用于装饰所包围文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。

将应用于装饰所包围文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。

将应用于装饰所包围文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰所包围文本的 CSS 样式属性。

深色主题的覆盖选项。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰所包围文本的 CSS 样式属性。

要渲染在装订区中的图像的**绝对路径**或 URI。

指定装订图标的大小。可用值为 'auto'、'contain'、'cover' 以及任何百分比值。更多信息请参阅:https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx

是否应在行文本之后的空白处渲染装饰。默认为 false

将应用于装饰所包围文本的 CSS 样式属性。

浅色主题的覆盖选项。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰包围的文本的 CSS 样式属性。建议使用 'outline' 来设置一个或多个单独的轮廓属性。

将应用于装饰包围的文本的 CSS 样式属性。建议使用 'outline' 来设置一个或多个单独的轮廓属性。

将应用于装饰包围的文本的 CSS 样式属性。建议使用 'outline' 来设置一个或多个单独的轮廓属性。

概览标尺中装饰的颜色。使用 rgba() 并定义透明颜色,以便与其他装饰良好配合。

装饰应渲染在概览标尺中的位置。

当在装饰范围的边缘发生编辑时,自定义装饰的增长行为。默认为 DecorationRangeBehavior.OpenOpen

将应用于装饰所包围文本的 CSS 样式属性。

Definition

符号的定义,表示为一个或多个 location。对于大多数编程语言,符号只有一个定义位置。

有关符号定义位置的信息。

提供比普通 Location 定义额外的元数据,包括定义符号的范围。

DefinitionProvider

定义提供程序接口定义了扩展和 转到定义 和预览定义功能之间的合同。

方法

为给定位置和文档中的符号提供定义。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<Definition | LocationLink[]>

定义或解析为定义的 thenable。可以通过返回 undefinednull 来表示没有结果。

Diagnostic

表示一个诊断,例如编译器错误或警告。诊断对象仅在文件范围内有效。

构造函数

创建新的诊断对象。

参数描述
range: Range

此诊断适用的范围。

message: string

人类可读的消息。

severity?: DiagnosticSeverity

严重性,默认为 error

返回值描述
Diagnostic

属性

此诊断的代码或标识符。应在后续处理中使用,例如在提供 代码操作 时。

人类可读的消息。

此诊断适用的范围。

相关的诊断信息数组,例如,当作用域内的符号名称发生冲突时,可以通过此属性标记所有定义。

严重性,默认为 error

描述此诊断来源的可读字符串,例如“typescript”或“super lint”。

关于诊断的附加元数据。

DiagnosticChangeEvent

诊断更改时触发的事件。

属性

已更改诊断的资源数组。

DiagnosticCollection

诊断集合是管理一组 diagnostics 的容器。诊断始终作用于诊断集合和资源。

要获取 DiagnosticCollection 的实例,请使用 createDiagnosticCollection

属性

此诊断集合的名称,例如 typescript。来自此集合的每个诊断都将与此名称相关联。此外,任务框架在定义 问题匹配器 时会使用此名称。

方法

从此集合中删除所有诊断。等同于调用 #set(undefined)

参数描述
返回值描述
void

从此集合中删除属于所提供 uri 的所有诊断。等同于 #set(uri, undefined)

参数描述
uri: Uri

资源标识符。

返回值描述
void

释放并清理关联的资源。调用 clear

参数描述
返回值描述
void

迭代此集合中的每个条目。

参数描述
callback: (uri: Uri, diagnostics: readonly Diagnostic[], collection: DiagnosticCollection) => any

为每个条目执行的函数。

thisArg?: any

调用处理函数时使用的 this 上下文。

返回值描述
void

获取给定资源的诊断。注意,您无法修改由此调用返回的诊断数组。

参数描述
uri: Uri

资源标识符。

返回值描述
readonly Diagnostic[]

一个不可变的 diagnostics 数组或 undefined

检查此集合是否包含给定资源的诊断。

参数描述
uri: Uri

资源标识符。

返回值描述
布尔值

如果此集合具有给定资源的诊断,则为 true

为给定资源分配诊断。将替换该资源的现有诊断。

参数描述
uri: Uri

资源标识符。

diagnostics: readonly Diagnostic[]

诊断数组或 undefined

返回值描述
void

在此集合中替换多个资源的诊断。

注意,相同 uri 的多个元组将被合并,例如 [[file1, [d1]], [file1, [d2]]] 等同于 [[file1, [d1, d2]]]。如果诊断项为 undefined,如 [file1, undefined],则会删除所有先前的诊断,但不会删除后续诊断。

参数描述
entries: ReadonlyArray<[Uri, readonly Diagnostic[]]>

元组数组,如 [[file1, [d1, d2]], [file2, [d3, d4, d5]]],或 undefined

返回值描述
void

DiagnosticRelatedInformation

表示与诊断相关的消息和源代码位置。这应该用于指向导致或与诊断相关的代码位置,例如在作用域中复制符号时。

构造函数

创建新的相关诊断信息对象。

参数描述
location: Location

位置。

message: string

消息。

返回值描述
DiagnosticRelatedInformation

属性

此相关诊断信息的位置。

此相关诊断信息的消息。

DiagnosticSeverity

表示诊断的严重性。

枚举成员

语言规则或其他方式不允许的内容。

可疑但允许的内容。

用于告知信息,但不是问题的内容。

用于提示更好的实现方式,例如提议重构。

DiagnosticTag

关于诊断类型的附加元数据。

枚举成员

未使用或不必要的代码。

带有此标签的诊断将以变淡的方式显示。淡化程度由 "editorUnnecessaryCode.opacity" 主题颜色控制。例如,"editorUnnecessaryCode.opacity": "#000000c0" 将以 75% 的不透明度显示代码。对于高对比度主题,请使用 "editorUnnecessaryCode.border" 主题颜色为不必要的代码加下划线,而不是使其变淡。

已弃用或过时的代码。

带有此标签的诊断将以删除线样式显示。

Disposable

表示可以释放资源(如事件侦听器或计时器)的类型。

静态

将多个类似 disposable 的对象合并为一个。当拥有具有 dispose 函数但不是 Disposable 实例的对象时,可以使用此方法。

参数描述
...disposableLikes: Array<{dispose: () => any}>

至少具有 dispose 函数成员的对象。注意,异步 dispose 函数不会被等待。

返回值描述
Disposable

返回一个新的 disposable,在 dispose 时将释放所有提供的 disposable。

构造函数

创建一个 disposable,它将在 dispose 时调用提供的函数。

注意,异步函数不会被等待。

参数描述
callOnDispose: () => any

释放某个对象的函数。

返回值描述
Disposable

方法

销毁此对象。

参数描述
返回值描述
any

DocumentColorProvider

文档颜色提供程序定义了扩展与编辑器中颜色选取和修改功能之间的合同。

方法

为颜色提供 表示

参数描述
color: Color

要显示和插入的颜色。

context: {document: TextDocument, range: Range}

包含附加信息的上下文对象。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<ColorPresentation[]>

颜色表示数组或解析为该数组的 thenable。可以通过返回 undefinednull 或空数组来表示没有结果。

为给定文档提供颜色。

参数描述
document: TextDocument

调用命令的文档。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<ColorInformation[]>

颜色信息数组或解析为该数组的 thenable。可以通过返回 undefinednull 或空数组来表示没有结果。

DocumentDropEdit

drop 时应用的编辑操作。

构造函数

参数描述
insertText: string | SnippetString

在 drop 位置插入的文本或片段。

title?: string

描述编辑的人类可读标签。

kind?: DocumentDropOrPasteEditKind

编辑的 Kind

返回值描述
DocumentDropEdit

属性

在 drop 时应用的可选附加编辑。

在 drop 位置插入的文本或片段。

编辑的 Kind

描述编辑的人类可读标签。

控制多个编辑的顺序。如果此提供程序让位给编辑,它将显示在列表的较低位置。

DocumentDropEditProvider<T>

处理资源拖放到文本编辑器中的提供程序。

这允许用户将资源(包括来自外部应用程序的资源)拖放到编辑器中。在拖放文件时,用户可以按住 shift 键将文件拖放到编辑器中,而不是打开它。需要 editor.dropIntoEditor.enabled 设置为 true。

方法

提供用于将正在拖放的内容插入文档的编辑。

参数描述
document: TextDocument

拖放发生的文档。

position: Position

拖放发生在文档中的位置。

dataTransfer: DataTransfer

一个 DataTransfer 对象,其中包含有关正在拖放内容的数据。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T | T[]>

DocumentDropEdit 或解析为该值的 thenable。可以通过返回 undefinednull 来表示没有结果。

可选方法,用于在应用编辑之前填充 DocumentDropEdit.additionalEdit

此方法对每个编辑调用一次,如果生成完整编辑可能需要很长时间,则应使用此方法。Resolve 只能用于更改 DocumentDropEdit.additionalEdit

参数描述
edit: T

要解析的 DocumentDropEdit

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T>

已解析的编辑或解析为该值的 thenable。返回给定的 edit 是可以的。如果未返回结果,则使用给定的 edit

DocumentDropEditProviderMetadata

提供有关 DocumentDropEditProvider 如何工作的附加元数据。

属性

提供程序可以处理的 DataTransfer MIME 类型列表。

这可以是精确的 MIME 类型,如 image/png,也可以是通配符模式,如 image/*

对于从工作台的 explorer 或其他树视图拖放的资源,请使用 text/uri-list

使用 files 表示如果 DataTransfer 中存在任何 files,则应调用提供程序。请注意,只有在从编辑器外部(例如操作系统)拖放内容时,才会创建 DataTransferFile 条目。

提供程序可能在 provideDocumentDropEdits 中返回的 kinds 列表。

这用于在请求特定 kind 编辑时过滤提供程序。

DocumentDropOrPasteEditKind

静态

基本文本编辑的根 kind。

此 kind 应用于将基本文本插入文档的编辑。一个很好的例子是粘贴剪贴板文本同时根据粘贴的文本更新文件中的导入的编辑。为此,我们可以使用类似 text.updateImports.someLanguageId 的 kind。

尽管大多数 drop/paste 编辑最终都会插入文本,但你不应该为每个编辑都使用 Text 作为基础 kind,因为这是多余的。相反,应该使用描述所插入内容类型的更具体的 kind。例如,如果编辑添加了 Markdown 链接,则使用 markdown.link,因为尽管插入的内容是文本,但知道该编辑插入了 Markdown 语法更为重要。

除了插入文本之外,还会更新文档中导入的编辑的根 kind。

构造函数

参数描述
value: string
返回值描述
DocumentDropOrPasteEditKind

属性

类型的原始字符串值。

方法

通过向当前类型附加其他范围来创建一个新类型。

不修改当前类型。

参数描述
...parts: string[]
返回值描述
DocumentDropOrPasteEditKind

检查 other 是否是此 DocumentDropOrPasteEditKind 的子类型。

例如,类型 "text.plain" 包含 "text.plain""text.plain.list",但不包含 "text""unicorn.text.plain"

参数描述
other: DocumentDropOrPasteEditKind

要检查的类型。

返回值描述
布尔值

检查此类型是否与 other 相交。

例如,类型 "text.plain"text"text.plain""text.plain.list" 相交,但与 "unicorn""textUnicorn.plain" 不相交。

参数描述
other: DocumentDropOrPasteEditKind

要检查的类型。

返回值描述
布尔值

DocumentFilter

文档过滤器通过不同的属性来表示文档,例如 语言、资源 方案,或应用于 路径 的 glob 模式。

示例 适用于磁盘上 TypeScript 文件的语言过滤器

{ language: 'typescript', scheme: 'file' }

示例 适用于所有 package.json 路径的语言过滤器

{ language: 'json', pattern: '**/package.json' }

属性

语言 ID,例如 typescript

笔记本类型,例如 jupyter-notebook。这可以缩小 单元格文档所属的笔记本类型。

注意,设置 notebookType 属性会改变 schemepattern 的解释方式。设置后,它们将针对 笔记本 URI 进行评估,而不是文档 URI。

示例 匹配 jupyter 笔记本中尚未保存(untitled)的 python 文档

{ language: 'python', notebookType: 'jupyter-notebook', scheme: 'untitled' }

在文档的绝对路径上匹配的 glob 模式。使用 相对模式 将文档过滤到 工作区文件夹

URI 方案,例如 fileuntitled

DocumentFormattingEditProvider

文档格式化提供者接口定义了扩展和格式化功能之间的约定。

方法

为整个文档提供格式化编辑。

参数描述
document: TextDocument

调用命令的文档。

options: FormattingOptions

控制格式化的选项。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<TextEdit[]>

一组文本编辑或一个解析为这类文本编辑的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

DocumentHighlight

文档高亮是在文本文档中一个需要特别关注的范围。通常,文档高亮是通过更改其范围的背景颜色来可视化的。

构造函数

创建一个新的文档高亮对象。

参数描述
range: Range

高亮适用的范围。

kind?: DocumentHighlightKind

高亮类型,默认为 Text

返回值描述
DocumentHighlight

属性

高亮类型,默认为 Text

此高亮适用的范围。

DocumentHighlightKind

文档高亮类型。

枚举成员

文本出现。

符号的读取访问,例如读取变量。

符号的写入访问,例如写入变量。

DocumentHighlightProvider

文档高亮提供者接口定义了扩展和单词高亮功能之间的约定。

方法

提供一组文档高亮,例如变量的所有出现或函数的所有退出点。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<DocumentHighlight[]>

文档高亮的数组或解析为该数组的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

文档链接是文本文档中链接到内部或外部资源的范围,例如另一个文本文档或网站。

构造函数

创建新的文档链接。

参数描述
range: Range

文档链接适用的范围。不能为空。

target?: Uri

文档链接指向的 URI。

返回值描述
DocumentLink

属性

此链接适用的范围。

此链接指向的 URI。

悬停在此链接上时显示的工具提示文本。

如果提供了工具提示,它将显示一个包含如何触发链接的说明的字符串,例如 {0} (ctrl + click)。具体说明因操作系统、用户设置和本地化而异。

DocumentLinkProvider<T>

文档链接提供者定义了扩展和编辑器中显示链接的功能之间的约定。

方法

为给定文档提供链接。请注意,编辑器附带一个默认提供程序,该提供程序可以检测 http(s)file 链接。

参数描述
document: TextDocument

调用命令的文档。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T[]>

文档链接的数组或解析为该数组的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

给定一个链接,填充其 目标。当 UI 中选择了一个不完整的链接时,会调用此方法。提供程序可以实现此方法,并从 provideDocumentLinks 方法返回不完整的链接(无目标),这通常有助于提高性能。

参数描述
link: T

要解析的链接。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T>

DocumentPasteEdit

应用粘贴操作的编辑。

构造函数

创建新的粘贴编辑。

参数描述
insertText: string | SnippetString

在粘贴位置插入的文本或代码片段。

title: string

描述编辑的人类可读标签。

kind: DocumentDropOrPasteEditKind

编辑的 Kind

返回值描述
DocumentPasteEdit

属性

粘贴时应用的附加可选编辑。

在粘贴位置插入的文本或代码片段。

如果您的编辑需要更高级的插入逻辑,请将其设置为空字符串,并改用 additionalEdit

编辑的 Kind

描述编辑的人类可读标签。

控制多个潜在可应用的粘贴编辑之间的顺序。

如果此编辑服从另一个编辑,则它将在用户看到的粘贴编辑列表中显示得靠后。

DocumentPasteEditContext

有关粘贴操作的附加信息。

属性

请求返回的粘贴编辑的种类。

当使用 PasteAs 请求特定种类时,鼓励提供程序在生成请求的种类编辑时更加灵活。

请求粘贴编辑的原因。

DocumentPasteEditProvider<T>

当用户在 TextDocument 中复制或粘贴时调用的提供程序。

方法

用户从 文本编辑器复制后调用的可选方法。

这允许提供程序将有关复制文本的元数据附加到 DataTransfer。然后,此数据传输将在 provideDocumentPasteEdits 中传递给提供程序。

请注意,目前对 DataTransfer 的任何更改都仅限于当前编辑器窗口。这意味着其他编辑器窗口或应用程序无法看到任何添加的元数据。

参数描述
document: TextDocument

发生复制的文本文档。

ranges: readonly Range[]

document 中复制的范围。

dataTransfer: DataTransfer

与复制关联的数据传输。您可以为其存储额外的值,以便稍后在 provideDocumentPasteEdits 中使用。此对象仅在此方法有效期内有效。

token: CancellationToken

取消令牌。

返回值描述
void | Thenable<void>

在对 dataTransfer 的所有更改完成后解析的可选 thenable。

在用户将内容粘贴到 文本编辑器之前调用。

返回的编辑可以替换标准的粘贴行为。

参数描述
document: TextDocument

粘贴到的文档

ranges: readonly Range[]

document 中粘贴到的范围。

dataTransfer: DataTransfer

与粘贴关联的 数据传输。此对象仅在粘贴操作期间有效。

context: DocumentPasteEditContext

粘贴的附加上下文。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T[]>

可能应用于粘贴的 编辑集。一次只应用一个返回的 DocumentPasteEdit。如果所有提供程序都返回多个编辑,则会自动应用第一个编辑,并显示一个允许用户切换到其他编辑的小部件。

可选方法,在应用编辑之前填充 DocumentPasteEdit.additionalEdit

此方法为每个编辑调用一次,如果生成完整编辑可能需要很长时间,则应使用此方法。Resolve 只能用于更改 DocumentPasteEdit.insertTextDocumentPasteEdit.additionalEdit

参数描述
pasteEdit: T

要解析的 DocumentPasteEdit

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T>

解析后的粘贴编辑或解析为该编辑的 thenable。返回给定的 pasteEdit 即可。如果未返回结果,则使用给定的 pasteEdit

DocumentPasteProviderMetadata

提供有关 DocumentPasteEditProvider 如何工作的附加元数据。

属性

prepareDocumentPaste 在复制时可能添加的 MIME 类型。

应为 provideDocumentPasteEdits 调用的 MIME 类型。

这可以是精确的 MIME 类型,如 image/png,也可以是通配符模式,如 image/*

对于从工作台的 explorer 或其他树视图拖放的资源,请使用 text/uri-list

使用 files 指示如果 DataTransfer 中存在任何 文件,则应调用该提供程序。注意,只有在从编辑器外部(例如操作系统)粘贴内容时才会创建 DataTransferFile 条目。

提供程序可能在 provideDocumentPasteEdits 中返回的 种类列表。

这用于在请求特定 kind 编辑时过滤提供程序。

DocumentPasteTriggerKind

请求粘贴编辑的原因。

枚举成员

粘贴是作为正常粘贴操作的一部分请求的。

用户通过 paste as 命令请求粘贴。

DocumentRangeFormattingEditProvider

文档格式化提供者接口定义了扩展和格式化功能之间的约定。

方法

为文档中的一个范围提供格式化编辑。

给定的范围是一个提示,提供程序可以决定格式化更小或更大的范围。这通常通过调整范围的开始和结束到完整的语法节点来完成。

参数描述
document: TextDocument

调用命令的文档。

range: Range

应被格式化的范围。

options: FormattingOptions

控制格式化的选项。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<TextEdit[]>

一组文本编辑或一个解析为这类文本编辑的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

为文档中的多个范围提供格式化编辑。

此函数是可选的,但它允许格式化程序在仅格式化修改后的范围或格式化大量选区时执行得更快。

给定的范围是提示,提供程序可以决定格式化更小或更大的范围。这通常通过调整范围的开始和结束到完整的语法节点来完成。

参数描述
document: TextDocument

调用命令的文档。

ranges: Range[]

应被格式化的范围。

options: FormattingOptions

控制格式化的选项。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<TextEdit[]>

一组文本编辑或一个解析为这类文本编辑的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

DocumentRangeSemanticTokensProvider

文档范围语义标记提供程序接口定义了扩展和语义标记之间的约定。

事件

一个可选事件,用于发出此提供程序的语义标记已更改的信号。

方法

参数描述
document: TextDocument
range: Range
token: CancellationToken
返回值描述
ProviderResult<SemanticTokens>

DocumentSelector

语言选择器是多个语言标识符和 语言过滤器的组合。

注意,仅包含语言标识符的文档选择器会选择所有文档,包括未保存在磁盘上的文档。仅当功能无需进一步上下文即可运行时,例如无需解析相关“文件”时,才应使用此类选择器。

示例

let sel: DocumentSelector = { scheme: 'file', language: 'typescript' };

DocumentSemanticTokensProvider

文档语义标记提供程序接口定义了扩展和语义标记之间的约定。

事件

一个可选事件,用于发出此提供程序的语义标记已更改的信号。

方法

文件中的标记表示为整数数组。每个标记的位置相对于前一个标记表示。因为当文件被编辑时,大多数标记相对位置保持不变。


简而言之,每个标记需要 5 个整数来表示,因此文件中特定的标记 i 由以下数组索引组成:

  • 在索引 5*i - deltaLine - 标记行号,相对于前一个标记
  • 在索引 5*i+1 - deltaStart - 标记开始字符,相对于前一个标记(如果它们在同一行,则相对于 0 或前一个标记的开始)
  • 在索引 5*i+2 - length - 标记的长度。一个标记不能跨越多行。
  • 在索引 5*i+3 - tokenType - 将在 SemanticTokensLegend.tokenTypes 中查找。我们目前要求 tokenType < 65536。
  • 在索引 5*i+4 - tokenModifiers - 每个设置的位将在 SemanticTokensLegend.tokenModifiers 中查找

如何编码标记

以下是一个使用 uint32 数组编码包含 3 个标记的文件的示例

   { line: 2, startChar:  5, length: 3, tokenType: "property",  tokenModifiers: ["private", "static"] },
   { line: 2, startChar: 10, length: 4, tokenType: "type",      tokenModifiers: [] },
   { line: 5, startChar:  2, length: 7, tokenType: "class",     tokenModifiers: [] }
  1. 首先,必须制定一个图例。此图例必须预先提供,并且应捕获所有可能的标记类型。在此示例中,我们将选择以下图例,在注册提供程序时必须传递此图例:
   tokenTypes: ['property', 'type', 'class'],
   tokenModifiers: ['private', 'static']
  1. 第一步是使用图例将 tokenTypetokenModifiers 编码为整数。标记类型按索引查找,因此 tokenType 值为 1 表示 tokenTypes[1]。可以通过位标志设置多个标记修饰符,因此 tokenModifier 值为 3 最初被视为二进制 0b00000011,表示 [tokenModifiers[0], tokenModifiers[1]],因为位 0 和 1 已设置。使用此图例,标记现在是:
   { line: 2, startChar:  5, length: 3, tokenType: 0, tokenModifiers: 3 },
   { line: 2, startChar: 10, length: 4, tokenType: 1, tokenModifiers: 0 },
   { line: 5, startChar:  2, length: 7, tokenType: 2, tokenModifiers: 0 }
  1. 下一步是表示文件中每个标记相对于前一个标记。在这种情况下,第二个标记与第一个标记在同一行,因此第二个标记的 startChar 相对于第一个标记的 startChar,因此是 10 - 5。第三个标记与第二个标记不在同一行,因此第三个标记的 startChar 将不会被更改
   { deltaLine: 2, deltaStartChar: 5, length: 3, tokenType: 0, tokenModifiers: 3 },
   { deltaLine: 0, deltaStartChar: 5, length: 4, tokenType: 1, tokenModifiers: 0 },
   { deltaLine: 3, deltaStartChar: 2, length: 7, tokenType: 2, tokenModifiers: 0 }
  1. 最后一步是将标记的 5 个字段内联到一个数组中,这是一种内存友好的表示形式
   // 1st token,  2nd token,  3rd token
   [  2,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ]

另请参阅 SemanticTokensBuilder 获取用于将标记编码为整数的帮助程序。注意:在进行编辑时,可能会发生多次编辑,直到编辑器决定调用语义标记提供程序。注意:如果提供程序暂时无法计算语义标记,它可以通过抛出消息为“Busy”的错误来指示。

参数描述
document: TextDocument
token: CancellationToken
返回值描述
ProviderResult<SemanticTokens>

而不是总是返回文件中的所有标记,DocumentSemanticTokensProvider 可以实现此方法(provideDocumentSemanticTokensEdits),然后返回先前提供的语义标记的增量更新。


当文档更改时,标记如何变化

假设 provideDocumentSemanticTokens 以前返回了以下语义标记

   // 1st token,  2nd token,  3rd token
   [  2,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ]

还假设在某些编辑后,文件中的新语义标记是

   // 1st token,  2nd token,  3rd token
   [  3,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ]

可以通过对先前标记应用编辑来表示这些新标记

   [  2,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ] // old tokens
   [  3,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ] // new tokens

   edit: { start:  0, deleteCount: 1, data: [3] } // replace integer at offset 0 with 3

注意:如果提供程序无法计算 SemanticTokensEdits,它可以“放弃”并再次返回文档中的所有标记。注意SemanticTokensEdits 中的所有编辑都包含旧整数数组中的索引,因此它们都引用先前的结果状态。

参数描述
document: TextDocument
previousResultId: string
token: CancellationToken
返回值描述
ProviderResult<SemanticTokens | SemanticTokensEdits>

DocumentSymbol

表示文档中出现的编程构造,如变量、类、接口等。文档符号可以是分层的,并且它们有两个范围:一个包含其定义,一个指向其最有趣的点,例如标识符的范围。

构造函数

创建新的文档符号。

参数描述
name: string

符号的名称。

detail: string

符号的详细信息。

kind: SymbolKind

符号的种类。

range: Range

符号的完整范围。

selectionRange: Range

应显示(reveal)的范围。

返回值描述
DocumentSymbol

属性

此符号的子项,例如类的属性。

此符号的更多详细信息,例如函数的签名。

此符号的种类。

此符号的名称。

包含此符号的范围,不包括前导/尾随空格,但包括其他所有内容,例如注释和代码。

选择并显示此符号时应选择和显示的范围,例如函数名称。必须包含在 range 内。

此符号的标签。

DocumentSymbolProvider

DocumentSymbolProvider 接口定义了扩展与 转到符号 功能之间的契约。

方法

为给定文档提供符号信息。

参数描述
document: TextDocument

调用命令的文档。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<DocumentSymbol[] | SymbolInformation[]>

文档高亮的数组或解析为该数组的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

DocumentSymbolProviderMetadata

文档符号提供者的元数据。

属性

当多个大纲树显示一个文档时显示的、人类可读的字符串。

EndOfLine

表示 文档 中的换行符序列。

枚举成员

换行符 \n

回车换行符 \r\n 序列。

EnterAction

描述按下 Enter 键时要执行的操作。

属性

描述在新行和缩进之后要附加的文本。

描述缩进的操作。

描述要从新行的缩进中删除的字符数。

EnvironmentVariableCollection

扩展可以应用于进程环境的突变集合。

属性

环境变数集合的描述,这将用于在 UI 中描述更改。

该集合是否应为工作区缓存并在窗口重新加载时应用于终端环境。如果为 true,则集合将立即生效,例如在窗口重新加载时。此外,如果存在缓存版本,此 API 将返回缓存版本。当扩展被卸载或集合被清除时,该集合将失效。默认为 true。

方法

将值追加到环境变数。

请注意,扩展只能对任何一个变数进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。

参数描述
variable: string

要追加到的变数。

value: string

要追加到变数的值。

options?: EnvironmentVariableMutatorOptions

应用于修改器的选项,如果未提供选项,则默认为 { applyAtProcessCreation: true }

返回值描述
void

清除此集合中的所有修改器。

参数描述
返回值描述
void

删除此集合对变数的修改器。

参数描述
variable: string

要为其删除修改器的变数。

返回值描述
void

遍历此集合中的每个修改器。

参数描述
callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any

为每个条目执行的函数。

thisArg?: any

调用处理函数时使用的 this 上下文。

返回值描述
void

获取此集合应用于变数的修改器(如果存在)。

参数描述
variable: string

要获取修改器的变数。

返回值描述
EnvironmentVariableMutator

将值预先添加到环境变数。

请注意,扩展只能对任何一个变数进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。

参数描述
variable: string

要预先添加到的变数。

value: string

要预先添加到变数的值。

options?: EnvironmentVariableMutatorOptions

应用于修改器的选项,如果未提供选项,则默认为 { applyAtProcessCreation: true }

返回值描述
void

用值替换环境变数。

请注意,扩展只能对任何一个变数进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。

参数描述
variable: string

要替换的变数。

value: string

用于替换变数的值。

options?: EnvironmentVariableMutatorOptions

应用于修改器的选项,如果未提供选项,则默认为 { applyAtProcessCreation: true }

返回值描述
void

EnvironmentVariableMutator

将应用于环境变数的突变类型及其值。

属性

应用于修改器的选项。

将应用于变数的突变类型。

用于变数的值。

EnvironmentVariableMutatorOptions

应用于修改器的选项。

属性

在创建进程之前应用于环境。默认为 false。

应用于 shell 集成脚本中的环境。请注意,如果 shell 集成被禁用或因某种原因不起作用,此设置*不会*应用修改器。默认为 false。

EnvironmentVariableMutatorType

可以应用于环境变数的突变类型。

枚举成员

替换变数的值。

追加到变数现有值的末尾。

预先添加到变数现有值的开头。

EnvironmentVariableScope

环境变数集合适用的作用域对象。

属性

用于获取集合的任何特定工作区文件夹。

EvaluatableExpression

EvaluatableExpression 表示文档中可由活动调试器或运行时进行评估的表达式。此评估的结果显示在类似工具提示的小部件中。如果仅指定了范围,则表达式将从底层文档中提取。可选表达式可用于覆盖提取的表达式。在这种情况下,范围仍用于突出显示文档中的范围。

构造函数

创建新的可评估表达式对象。

参数描述
range: Range

从底层文档中提取可评估表达式的范围。

expression?: string

如果指定,则覆盖提取的表达式。

返回值描述
EvaluatableExpression

属性

如果指定,则表达式会覆盖提取的表达式。

该范围用于从底层文档中提取可评估表达式并高亮显示它。

EvaluatableExpressionProvider

EvaluatableExpressionProvider 接口定义了扩展与调试悬停之间的契约。在该契约中,提供者为文档中的给定位置返回一个可评估表达式,编辑器会在活动调试会话中评估此表达式,并在调试悬停中显示结果。

方法

为给定的文档和位置提供可评估表达式。编辑器将在活动调试会话中评估此表达式,并在调试悬停中显示结果。表达式可以由底层文档中的范围隐式指定,或通过显式返回表达式来指定。

参数描述
document: TextDocument

即将显示调试悬停信息的文档。

position: Position

即将显示调试悬停信息的文档中的行和字符位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<EvaluatableExpression>

EvaluatableExpression 或解析为 EvaluatableExpression 的 thenable。可以通过返回 undefinednull 来指示结果缺失。

Event<T>

表示一个类型化的事件。

一个函数,表示一个事件,您可以将其作为侦听器函数作为参数调用来订阅它。

示例

item.onDidChange(function(event) {
  console.log('Event happened: ' + event);
});

一个函数,表示一个事件,您可以将其作为侦听器函数作为参数调用来订阅它。

参数描述
listener: (e: T) => any

事件发生时将调用侦听器函数。

thisArgs?: any

调用事件侦听器时使用的 this 参数。

disposables?: Disposable[]

将添加 Disposable 的数组。

返回值描述
Disposable

用于取消事件侦听器订阅的可处置对象。

EventEmitter<T>

事件发射器可用于为他人创建和管理一个 Event 以供订阅。一个发射器始终拥有一个事件。

如果您想从扩展中提供事件,例如在 TextDocumentContentProvider 中,或者在向其他扩展提供 API 时,请使用此类。

构造函数

参数描述
返回值描述
EventEmitter<T>

属性

事件侦听器可以订阅的。

方法

释放此对象并回收资源。

参数描述
返回值描述
void

通知 event 的所有订阅者。一个或多个侦听器的失败不会导致此函数调用失败。

参数描述
data: T

事件对象。

返回值描述
void

Extension<T>

表示一个扩展。

要获取 Extension 的实例,请使用 getExtension

属性

此扩展导出的公共 API(activate 的返回值)。在扩展激活之前访问此字段是无效操作。

扩展种类描述了扩展是在 UI 运行的地方运行,还是在远程扩展主机运行的地方运行。扩展种类在扩展的 package.json 文件中定义,但也可以通过 remote.extensionKind 设置进行细化。当不存在远程扩展主机时,值为 ExtensionKind.UI

包含此扩展的目录的绝对文件路径。是 Extension.extensionUri.fsPath 的简写(与 uri 方案无关)。

包含扩展的目录的 uri。

规范的扩展标识符,格式为:publisher.name

如果扩展已激活,则为 true

扩展的 package.json 的已解析内容。

方法

激活此扩展并返回其公共 API。

参数描述
返回值描述
Thenable<T>

此扩展激活后将解析的 Promise。

ExtensionContext

扩展上下文是扩展私有的一组实用程序。

ExtensionContext 的实例作为第一个参数传递给扩展的 activate 调用。

属性

获取此工作区的扩展全局环境变数集合,允许对终端环境变数进行更改。

当前的 Extension 实例。

扩展运行的模式。有关可能的值和场景,请参阅 ExtensionMode

包含扩展的目录的绝对文件路径。是 ExtensionContext.extensionUri.fsPath 的简写(与 uri 方案无关)。

包含扩展的目录的 uri。

存储与当前打开的 工作区 无关的状态的 memento 对象。

扩展可以在其中存储全局状态的目录的绝对文件路径。该目录可能不存在于磁盘上,由扩展创建。但是,父目录保证存在。

使用 globalState 存储键值数据。

扩展可以在其中存储全局状态的目录的 uri。该目录可能不存在于磁盘上,由扩展创建。但是,父目录保证存在。

使用 globalState 存储键值数据。

另请参阅 workspace.fs,了解如何从 uri 读取和写入文件和文件夹。

一个保存有关此扩展如何使用语言模型的信息的对象。

另请参阅 LanguageModelChat.sendRequest

扩展可以创建日志文件的目录的绝对文件路径。该目录可能不存在于磁盘上,由扩展创建。但是,父目录保证存在。

  • 已弃用 - 请改用 logUri

扩展可以创建日志文件的目录的 uri。该目录可能不存在于磁盘上,由扩展创建。但是,父目录保证存在。

另请参阅 workspace.fs,了解如何从 uri 读取和写入文件和文件夹。

一个秘密存储对象,用于存储与当前打开的 工作区 无关的状态。

扩展可以存储私有状态的工作区特定目录的绝对文件路径。该目录可能不存在于磁盘上,创建由扩展决定。但是,父目录保证存在。

使用 workspaceStateglobalState 来存储键值数据。

扩展可以存储私有状态的工作区特定目录的 URI。该目录可能不存在,创建由扩展决定。但是,父目录保证存在。当没有打开工作区或文件夹时,该值为 undefined

使用 workspaceStateglobalState 来存储键值数据。

另请参阅 workspace.fs 以了解如何从 URI 读取和写入文件和文件夹。

一个可以添加 disposables 的数组。当此扩展被停用时,disposables 将被处理。

注意 异步 dispose 函数不会被等待。

一个 Memento 对象,用于存储在当前打开的 工作区 上下文中状态。

方法

获取扩展中资源的绝对路径。

注意 可以通过 Uri.joinPathextensionUri 构建绝对 URI,例如 vscode.Uri.joinPath(context.extensionUri, relativePath);

参数描述
relativePath: string

扩展中资源的相对路径。

返回值描述
字符串

资源的绝对路径。

ExtensionKind

在远程窗口中,扩展类型描述了扩展是运行在 UI (窗口) 运行的地方,还是在远程运行。

枚举成员

扩展运行在 UI 运行的地方。

扩展运行在远程扩展主机运行的地方。

ExtensionMode

ExtensionMode 在 ExtensionContext 上提供,并指示特定扩展运行的模式。

枚举成员

扩展已正常安装在编辑器中(例如,从 marketplace 或 VSIX)。

扩展是从启动编辑器时提供的 --extensionDevelopmentPath 运行的。

扩展是从 --extensionTestsPath 运行的,并且扩展主机正在运行单元测试。

ExtensionTerminalOptions

描述虚拟进程终端应使用哪些选项的值对象。

属性

终端的图标 ThemeColor。推荐使用标准的 terminal.ansi* 主题键,以获得跨主题的最佳对比度和一致性。

终端的图标路径或 ThemeIcon

选择退出在重启和重新加载时默认的终端持久性。仅当启用了 terminal.integrated.enablePersistentSessions 时,此设置才生效。

一个人类可读的字符串,将用于在 UI 中表示终端。

一个 Pseudoterminal 的实现,允许扩展控制终端。

用于验证 Shell 集成序列来自受信任源的 Nonce。其 UX 影响例如是,如果命令行报告了一个 Nonce,它将不需要与用户确认命令行是否正确,即可通过 Shell 集成命令装饰 重新运行它。

如果终端包含 自定义 Shell 集成支持,则应使用此选项。应将其设置为一个随机 GUID。在 Pseudoterminal 实现中,此值可以在相关序列中传递,以使它们受信任。

FileChangeEvent

文件系统提供者必须使用的事件,用于信号文件更改。

属性

更改的类型。

已更改文件的 URI。

FileChangeType

文件更改类型的枚举。

枚举成员

文件的内容或元数据已更改。

文件已被创建。

文件已被删除。

FileCoverage

包含文件的覆盖元数据。

静态

使用覆盖详细信息填充计数来创建 FileCoverage 实例。

参数描述
uri: Uri

覆盖文件 URI

details: readonly FileCoverageDetail[]

详细覆盖信息

返回值描述
FileCoverage

构造函数

参数描述
uri: Uri

覆盖文件 URI

statementCoverage: TestCoverageCount

语句覆盖信息。如果报告器不提供语句覆盖信息,则可以使用此信息来表示行覆盖。

branchCoverage?: TestCoverageCount

分支覆盖信息

declarationCoverage?: TestCoverageCount

声明覆盖信息

includesTests?: TestItem[]

此覆盖报告中包含的测试用例,请参阅 FileCoverage.includesTests

返回值描述
FileCoverage

属性

分支覆盖信息。

声明覆盖信息。根据报告器和语言,这可能是函数、方法或命名空间等类型。

生成此文件覆盖信息的 测试用例 列表。如果设置了此项,则还应定义 TestRunProfile.loadDetailedCoverageForTest 以检索详细的覆盖信息。

语句覆盖信息。如果报告器不提供语句覆盖信息,则可以使用此信息来表示行覆盖。

文件 URI。

FileCoverageDetail

TestRunProfile.loadDetailedCoverage 返回的覆盖详细信息。

FileCreateEvent

在文件创建后触发的事件。

属性

已创建的文件。

FileDecoration

文件装饰表示可以随文件一起渲染的元数据。

构造函数

创建一个新的装饰。

参数描述
badge?: string

代表装饰的字母。

tooltip?: string

装饰的工具提示。

color?: ThemeColor

装饰的颜色。

返回值描述
FileDecoration

属性

一个非常短的字符串,代表这个装饰。

这个装饰的颜色。

一个标志,表示该装饰应传播到其父级。

该装饰的人类可读工具提示。

FileDecorationProvider

装饰提供者接口定义了扩展和文件装饰之间的契约。

事件

一个可选事件,用于信号一个或多个文件的装饰已更改。

注意 此事件应用于传播有关子级的信息。

另请参阅 EventEmitter

方法

为给定的 URI 提供装饰。

注意 此函数仅在文件在 UI 中渲染时调用。这意味着从子级传播到父级的装饰必须通过 onDidChangeFileDecorations 事件信号给编辑器。

参数描述
uri: Uri

提供装饰的文件的 URI。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<FileDecoration>

一个装饰或一个解析为该装饰的 thenable。

FileDeleteEvent

在文件删除后触发的事件。

属性

已删除的文件。

FilePermission

文件的权限。

枚举成员

文件是只读的。

注意: 注册了 isReadonly: true 选项的 FileSystemProvider 的所有 FileStat 都将被隐式处理,就好像设置了 FilePermission.Readonly 一样。因此,无法注册一个只读文件系统提供程序,其中某些 FileStat 不是只读的。

FileRenameEvent

在文件重命名后触发的事件。

属性

已重命名的文件。

FileStat

FileStat 类型表示文件的元数据

属性

创建时间戳,以自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数。

修改时间戳,以自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数。

注意: 如果文件已更改,提供更新的 mtime 并使其前进于先前的值非常重要。否则,可能会有一些优化,例如不会在编辑器中显示更新的文件内容。

文件的权限,例如文件是否为只读。

注意: 此值可能是一个位掩码,例如 FilePermission.Readonly | FilePermission.Other

大小(以字节为单位)。

注意: 如果文件已更改,提供更新的 size 非常重要。否则,可能会有一些优化,例如不会在编辑器中显示更新的文件内容。

文件的类型,例如是普通文件、目录还是指向文件的符号链接。

注意: 此值可能是一个位掩码,例如 FileType.File | FileType.SymbolicLink

FileSystem

文件系统接口公开了编辑器内置和贡献的 文件系统提供者。它允许扩展处理本地磁盘上的文件以及来自远程位置(如远程扩展主机或 ftp 服务器)的文件。

注意 该接口的实例可通过 workspace.fs 访问。

方法

复制文件或文件夹。

参数描述
source: Uri

现有文件。

target: Uri

目标位置。

options?: {overwrite: boolean}

定义是否应覆盖现有文件。

返回值描述
Thenable<void>

创建一个新目录(注意,新文件是通过 write 调用创建的)。

注意 缺失的目录会自动创建,例如此调用具有 mkdirp 的语义。

参数描述
uri: Uri

新文件夹的 URI。

返回值描述
Thenable<void>

删除一个文件。

参数描述
uri: Uri

要删除的资源。

options?: {recursive: boolean, useTrash: boolean}

定义是否应使用回收站以及删除文件夹是否为递归操作。

返回值描述
Thenable<void>

检查给定的文件系统是否支持写入文件。

请注意,文件系统支持写入并不意味着写入总是会成功。可能存在权限问题或其他错误阻止写入文件。

参数描述
scheme: string

文件系统的方案,例如 filegit

返回值描述
布尔值

如果文件系统支持写入,则为 true,如果它不支持写入(即它是只读的),则为 false,如果编辑器不了解该文件系统,则为 undefined

检索 目录 的所有条目。

参数描述
uri: Uri

文件夹的 URI。

返回值描述
Thenable<Array<[string, FileType]>>

一个名称/类型元组数组或一个解析为该数组的 thenable。

读取文件的全部内容。

参数描述
uri: Uri

文件的 URI。

返回值描述
Thenable<Uint8Array>

一个字节数组或一个解析为该数组的 thenable。

重命名一个文件或文件夹。

参数描述
source: Uri

现有文件。

target: Uri

新的位置。

options?: {overwrite: boolean}

定义是否应覆盖现有文件。

返回值描述
Thenable<void>

检索文件的元数据。

参数描述
uri: Uri

要检索其元数据的文件的 URI。

返回值描述
Thenable<FileStat>

关于该文件的文件元数据。

将数据写入文件,替换其所有内容。

参数描述
uri: Uri

文件的 URI。

content: Uint8Array

文件的内容。

返回值描述
Thenable<void>

FileSystemError

文件系统提供者应使用的一种类型来信号错误。

此类具有常见错误情况的工厂方法,例如 FileNotFound(当文件或文件夹不存在时),使用方法如下:throw vscode.FileSystemError.FileNotFound(someUri);

静态

创建一个错误来信号文件或文件夹已存在,例如在创建但不覆盖文件时。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回值描述
FileSystemError

创建一个错误来信号文件是一个目录。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回值描述
FileSystemError

创建一个错误来信号文件不是一个目录。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回值描述
FileSystemError

创建一个错误来信号文件或文件夹未找到。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回值描述
FileSystemError

创建一个错误来信号操作缺少所需的权限。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回值描述
FileSystemError

创建一个错误来信号文件系统不可用或太忙而无法完成请求。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回值描述
FileSystemError

构造函数

创建一个新的文件系统错误。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回值描述
FileSystemError

属性

一个标识此错误的字符串代码。

可能的值是错误的名称,例如 FileNotFound,或者对于未指定错误,则为 Unknown

FileSystemProvider

文件系统提供程序定义了编辑器需要读取、写入、发现和管理文件和文件夹的内容。它允许扩展从远程位置(如 ftp 服务器)提供文件,并将它们无缝集成到编辑器中。

  • 注 1:文件系统提供程序 API 使用 URI 进行工作,并假定为分层路径,例如 foo:/my/pathfoo:/my/ 的子项,也是 foo:/my/path/deeper 的父项。
  • 注 2:有一个激活事件 onFileSystem:<scheme>,当正在访问文件或文件夹时会触发该事件。
  • 注 3:“文件”一词常用于表示所有 类型的文件,例如文件夹、符号链接和常规文件。

事件

用于信号资源已创建、已更改或已删除的事件。此事件应为被此提供程序客户端 监视 的资源触发。

注:重要的是,已更改文件的元数据应提供一个从 stat 中先前值前进的更新的 mtime,以及一个正确的 size 值。否则,可能会有优化,导致更改不会显示在编辑器中。

方法

复制文件或文件夹。实现此函数是可选的,但它将加快复制操作的速度。

  • 抛出 - 当 destination 的父目录不存在时抛出 FileNotFound,例如,不需要 mkdirp 逻辑。
  • 抛出 - 当 destination 存在且 overwrite 选项不是 true 时抛出 FileExists
参数描述
source: Uri

现有文件。

destination: Uri

目标位置。

options: {overwrite: boolean}

定义是否应覆盖现有文件。

返回值描述
void | Thenable<void>

创建一个新目录(注意,新文件是通过 write 调用创建的)。

  • 抛出 - 当 uri 的父目录不存在时抛出 FileNotFound,例如,不需要 mkdirp 逻辑。
  • 抛出 - 当 uri 已存在时抛出 FileExists
参数描述
uri: Uri

新文件夹的 URI。

返回值描述
void | Thenable<void>

删除一个文件。

参数描述
uri: Uri

要删除的资源。

options: {recursive: boolean}

定义是否递归删除文件夹。

返回值描述
void | Thenable<void>

检索 目录 的所有条目。

参数描述
uri: Uri

文件夹的 URI。

返回值描述
Array<[string, FileType]> | Thenable<Array<[string, FileType]>>

一个名称/类型元组数组或一个解析为该数组的 thenable。

读取文件的全部内容。

参数描述
uri: Uri

文件的 URI。

返回值描述
Uint8Array | Thenable<Uint8Array>

一个字节数组或一个解析为该数组的 thenable。

重命名一个文件或文件夹。

  • 抛出 - 当 newUri 的父目录不存在时抛出 FileNotFound,例如,不需要 mkdirp 逻辑。
  • 抛出 - 当 newUri 存在且 overwrite 选项不是 true 时抛出 FileExists
参数描述
oldUri: Uri

现有文件。

newUri: Uri

新的位置。

options: {overwrite: boolean}

定义是否应覆盖现有文件。

返回值描述
void | Thenable<void>

检索文件的元数据。

请注意,符号链接的元数据应该是它们指向的文件的元数据。但是,必须使用 SymbolicLink 类型,并加上实际类型,例如 FileType.SymbolicLink | FileType.Directory

参数描述
uri: Uri

要检索其元数据的文件的 URI。

返回值描述
FileStat | Thenable<FileStat>

关于该文件的文件元数据。

订阅文件或文件夹(由 uri 指定)的文件更改事件。对于文件夹,recursive 选项指示是否也应监视子文件夹、子子文件夹等的文件更改。如果 recursive: false,则仅应触发文件夹的直接子文件的更改事件。

excludes 数组用于指示应从文件监视中排除的路径。它通常来自用户可配置的 files.watcherExclude 设置。每个条目可以是

  • 要排除的绝对路径
  • 要排除的相对路径(例如 build/output
  • 简单的 glob 模式(例如 **/build, output/**

请注意,内置文件系统提供程序的 excludes 模式的区分大小写将取决于底层文件系统:在 Windows 和 macOS 上,匹配将不区分大小写,而在 Linux 上,匹配将区分大小写。

文件系统提供程序的职责是根据这些规则为每次更改调用 onDidChangeFile。不应为匹配任何提供的 excludes 的文件发出事件。

参数描述
uri: Uri

要监视的文件或文件夹的 URI。

options: {excludes: readonly string[], recursive: boolean}

配置监视。

返回值描述
Disposable

一个 disposable,指示提供程序停止监视 uri

将数据写入文件,替换其所有内容。

  • 抛出 - 当 uri 不存在且未设置 create 时抛出 FileNotFound
  • 抛出 - 当 uri 的父目录不存在且设置了 create 时抛出 FileNotFound,例如,不需要 mkdirp 逻辑。
  • 抛出 - 当 uri 已存在,设置了 create 但未设置 overwrite 时抛出 FileExists
参数描述
uri: Uri

文件的 URI。

content: Uint8Array

文件的内容。

options: {create: boolean, overwrite: boolean}

定义是否应或必须创建不存在的文件。

返回值描述
void | Thenable<void>

FileSystemWatcher

文件系统监视器会通知磁盘上的文件和文件夹或来自其他 FileSystemProvider 的更改。

要获取 FileSystemWatcher 的实例,请使用 createFileSystemWatcher

事件

文件/文件夹更改时触发的事件。

文件/文件夹创建时触发的事件。

文件/文件夹删除时触发的事件。

属性

如果此文件系统监视器已被创建为忽略更改文件系统事件,则为 true。

如果此文件系统监视器已被创建为忽略创建文件系统事件,则为 true。

如果此文件系统监视器已被创建为忽略删除文件系统事件,则为 true。

方法

销毁此对象。

参数描述
返回值描述
any

FileType

文件类型枚举。FileDirectory 类型也可以是符号链接,在这种情况下,使用 FileType.File | FileType.SymbolicLinkFileType.Directory | FileType.SymbolicLink

枚举成员

文件类型未知。

常规文件。

目录。

指向文件的符号链接。

FileWillCreateEvent

将在创建文件之前触发的事件。

要在文件创建之前修改工作区,请调用 waitUntil 函数,并传入一个解析为 workspace edit 的 thenable。

属性

将要创建的文件。

取消令牌。

方法

允许暂停事件并应用 workspace edit

注意:此函数只能在事件分派期间调用,不能异步调用。

workspace.onWillCreateFiles(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
参数描述
thenable: Thenable<WorkspaceEdit>

一个延迟保存的 thenable。

返回值描述
void

允许暂停事件,直到提供的 thenable 解析。

注意:此函数只能在事件分派期间调用。

参数描述
thenable: Thenable<any>

一个延迟保存的 thenable。

返回值描述
void

FileWillDeleteEvent

将在删除文件之前触发的事件。

要在删除文件之前修改工作区,请调用 waitUntil 函数,并传入一个解析为 workspace edit 的 thenable。

属性

将要删除的文件。

取消令牌。

方法

允许暂停事件并应用 workspace edit

注意:此函数只能在事件分派期间调用,不能异步调用。

workspace.onWillCreateFiles(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
参数描述
thenable: Thenable<WorkspaceEdit>

一个延迟保存的 thenable。

返回值描述
void

允许暂停事件,直到提供的 thenable 解析。

注意:此函数只能在事件分派期间调用。

参数描述
thenable: Thenable<any>

一个延迟保存的 thenable。

返回值描述
void

FileWillRenameEvent

将在重命名文件之前触发的事件。

要在重命名文件之前修改工作区,请调用 waitUntil 函数,并传入一个解析为 workspace edit 的 thenable。

属性

将要重命名的文件。

取消令牌。

方法

允许暂停事件并应用 workspace edit

注意:此函数只能在事件分派期间调用,不能异步调用。

workspace.onWillCreateFiles(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
参数描述
thenable: Thenable<WorkspaceEdit>

一个延迟保存的 thenable。

返回值描述
void

允许暂停事件,直到提供的 thenable 解析。

注意:此函数只能在事件分派期间调用。

参数描述
thenable: Thenable<any>

一个延迟保存的 thenable。

返回值描述
void

FoldingContext

折叠上下文(供将来使用)

FoldingRange

基于行的折叠范围。有效范围要求开始和结束行都大于零且小于文档的总行数。无效范围将被忽略。

构造函数

创建一个新的折叠范围。

参数描述
start: number

折叠范围的开始行。

end: number

折叠范围的结束行。

kind?: FoldingRangeKind

折叠范围的类型。

返回值描述
FoldingRange

属性

要折叠的范围的零基结束行。折叠区域以行的最后一个字符结束。有效范围要求结束行大于或等于零且小于文档的总行数。

描述折叠范围的 Kind,例如 CommentRegion。Kind 用于对折叠范围进行分类,并被“折叠所有注释”等命令使用。有关所有 Kind 的枚举,请参见 FoldingRangeKind。如果未设置,则范围源自语法元素。

要折叠的范围的零基开始行。折叠区域在行的最后一个字符之后开始。有效范围要求开始行大于或等于零且小于文档的总行数。

FoldingRangeKind

特定折叠范围类型的枚举。Kind 是 FoldingRange 的一个可选字段,用于区分特定的折叠范围,例如源自注释的范围。Kind 用于“折叠所有注释”或“折叠所有区域”等命令。如果未在范围上设置 Kind,则该范围源自注释、导入或区域标记以外的语法元素。

枚举成员

表示注释的折叠范围的 Kind。

表示导入的折叠范围的 Kind。

表示源自折叠标记(如 #region#endregion)的区域的折叠范围的 Kind。

FoldingRangeProvider

折叠范围提供程序接口定义了扩展与编辑器中的 折叠 之间的契约。

事件

一个可选事件,用于指示此提供程序的折叠范围已更改。

方法

返回折叠范围列表,如果提供程序不想参与或被取消,则返回 null 和 undefined。

参数描述
document: TextDocument

调用命令的文档。

context: FoldingContext

附加上下文信息(供将来使用)

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<FoldingRange[]>

FormattingOptions

描述格式化应使用哪些选项的值对象。

属性

优先使用空格而非制表符。

一个制表符代表的空格数。

FunctionBreakpoint

由函数名指定断点。

构造函数

创建一个新的函数断点。

参数描述
functionName: string
enabled?: boolean
condition?: string
hitCondition?: string
logMessage?: string
返回值描述
FunctionBreakpoint

属性

用于条件断点的可选表达式。

断点是否启用。

此断点附加到的函数的名称。

一个可选的表达式,用于控制忽略断点的命中次数。

断点的唯一 ID。

命中此断点时要记录的可选消息。{} 中的嵌入表达式由调试适配器进行插值。

GlobalEnvironmentVariableCollection

扩展可以应用于进程环境的突变集合。适用于所有范围。

属性

环境变数集合的描述,这将用于在 UI 中描述更改。

该集合是否应为工作区缓存并在窗口重新加载时应用于终端环境。如果为 true,则集合将立即生效,例如在窗口重新加载时。此外,如果存在缓存版本,此 API 将返回缓存版本。当扩展被卸载或集合被清除时,该集合将失效。默认为 true。

方法

将值追加到环境变数。

请注意,扩展只能对任何一个变数进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。

参数描述
variable: string

要追加到的变数。

value: string

要追加到变数的值。

options?: EnvironmentVariableMutatorOptions

应用于修改器的选项,如果未提供选项,则默认为 { applyAtProcessCreation: true }

返回值描述
void

清除此集合中的所有修改器。

参数描述
返回值描述
void

删除此集合对变数的修改器。

参数描述
variable: string

要为其删除修改器的变数。

返回值描述
void

遍历此集合中的每个修改器。

参数描述
callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any

为每个条目执行的函数。

thisArg?: any

调用处理函数时使用的 this 上下文。

返回值描述
void

获取此集合应用于变数的修改器(如果存在)。

参数描述
variable: string

要获取修改器的变数。

返回值描述
EnvironmentVariableMutator

获取扩展的作用域特定的环境变量集合。这允许仅在指定的作用域内修改终端环境变量,并且会应用于全局集合之上(并在其之后)。

通过此方法获得的每个对象都是隔离的,不会影响其他作用域的对象,包括全局集合。

参数描述
scope: EnvironmentVariableScope

环境变量集合适用的作用域。

如果省略了作用域参数,则返回适用于该参数所有相关作用域的集合。例如,如果未指定 'workspaceFolder' 参数,则将返回适用于所有工作区的集合。

返回值描述
EnvironmentVariableCollection

传递的作用域的环境变量集合。

将值预先添加到环境变数。

请注意,扩展只能对任何一个变数进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。

参数描述
variable: string

要预先添加到的变数。

value: string

要预先添加到变数的值。

options?: EnvironmentVariableMutatorOptions

应用于修改器的选项,如果未提供选项,则默认为 { applyAtProcessCreation: true }

返回值描述
void

用值替换环境变数。

请注意,扩展只能对任何一个变数进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。

参数描述
variable: string

要替换的变数。

value: string

用于替换变数的值。

options?: EnvironmentVariableMutatorOptions

应用于修改器的选项,如果未提供选项,则默认为 { applyAtProcessCreation: true }

返回值描述
void

GlobPattern

用于匹配文件路径的 glob 模式。它可以是 glob 模式字符串(例如 **/*.{ts,js}*.{ts,js})或 相对模式

Glob 模式可以具有以下语法

  • * 匹配路径段中的零个或多个字符
  • ? 匹配路径段中的一个字符
  • ** 匹配任意数量的路径段,包括零个
  • {} 用于分组条件(例如 **/*.{ts,js} 匹配所有 TypeScript 和 JavaScript 文件)
  • [] 用于声明路径段中要匹配的字符范围(例如,example.[0-9] 匹配 example.0, example.1, …)
  • [!...] 用于否定路径段中要匹配的字符范围(例如,example.[!0-9] 匹配 example.a, example.b,但不匹配 example.0

注意:反斜杠 (``) 在 glob 模式中无效。如果你有一个现有的文件路径要匹配,请考虑使用 相对模式 支持,该支持会处理将任何反斜杠转换为斜杠。否则,请确保在创建 glob 模式时将任何反斜杠转换为斜杠。

Hover

悬停(Hover)表示符号或单词的附加信息。悬停信息将显示在类似工具提示的窗口中小部件中。

构造函数

创建一个新的悬停对象。

参数描述
contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>

悬停的内容。

range?: Range

悬停适用的范围。

返回值描述
Hover

属性

此悬停的内容。

此悬停适用的范围。如果省略,编辑器将使用当前位置的单词范围或当前位置本身。

HoverProvider

悬停提供程序接口定义了扩展和 悬停 功能之间的契约。

方法

为给定的位置和文档提供悬停信息。同一位置的多个悬停信息将由编辑器合并。悬停可以有一个范围,如果省略,则默认为当前位置的单词范围。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<Hover>

悬停信息或解析为悬停信息的 Promise。可以通过返回 undefinednull 来表示没有结果。

IconPath

表示 UI 中的一个图标。这可以是 URI、浅色和深色主题的单独 URI,或者是一个 主题图标

ImplementationProvider

实现提供程序接口定义了扩展和转到实现功能之间的契约。

方法

为给定位置和文档提供符号的实现。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<Definition | LocationLink[]>

定义或解析为定义的 thenable。可以通过返回 undefinednull 来表示没有结果。

IndentAction

描述按下 Enter 键时对缩进的操作。

枚举成员

插入新行并复制上一行的缩进。

插入新行并增加一次缩进(相对于上一行的缩进)。

插入两个新行

  • 第一个缩进,将用于放置光标
  • 第二个与第一个缩进级别相同

插入新行并减少一次缩进(相对于上一行的缩进)。

IndentationRule

描述语言的缩进规则。

属性

如果一行匹配此模式,则它之后的所有行应减少一次缩进(直到匹配其他规则)。

如果一行匹配此模式,则它之后的所有行应增加一次缩进(直到匹配其他规则)。

如果一行匹配此模式,则 **仅下一行** 应增加一次缩进。

如果一行匹配此模式,则其缩进不应更改,并且不应将其与其他规则进行评估。

InlayHint

代码内提示信息。

构造函数

创建一个新的代码内提示。

参数描述
position: Position

提示的位置。

label: string | InlayHintLabelPart[]

提示的标签。

kind?: InlayHintKind

提示的 类型

返回值描述
InlayHint

属性

此提示的类型。代码内提示类型定义了此代码内提示的外观。

此提示的标签。人类可读的字符串或 标签部分 数组。

请注意,字符串或标签部分均不能为空。

在提示前渲染填充。填充将使用编辑器的背景颜色,而不是提示本身的背景颜色。这意味着填充可用于视觉对齐/分隔代码内提示。

在提示后渲染填充。填充将使用编辑器的背景颜色,而不是提示本身的背景颜色。这意味着填充可用于视觉对齐/分隔代码内提示。

此提示的位置。

接受此代码内提示时执行的可选 文本编辑。接受代码内提示的默认手势是双击。

请注意,编辑应更改文档,以便代码内提示(或其最近的变体)现在是文档的一部分,并且代码内提示本身已过时。

请注意,此属性可以在 解析 代码内提示时晚期设置。

悬停在此项目上时的工具提示文本。

请注意,此属性可以在 解析 代码内提示时晚期设置。

InlayHintKind

代码内提示类型。

代码内提示的类型定义了其外观,例如使用的相应的前景色和背景色。

枚举成员

类型注解的代码内提示。

参数的代码内提示。

InlayHintLabelPart

代码内提示标签部分允许对代码内提示进行交互式和复合标签。

构造函数

创建一个新的代码内提示标签部分。

参数描述
value: string

部分的值。

返回值描述
InlayHintLabelPart

属性

此标签部分的可选命令。

编辑器将具有命令的标签部分显示为可点击链接。当标签部分定义了 位置命令 时,会将命令添加到上下文菜单中。

请注意,此属性可以在 解析 代码内提示时晚期设置。

表示此标签部分的 源代码位置 的可选位置。

编辑器将使用此位置进行悬停和代码导航功能:此部分将成为一个可点击链接,该链接将解析到给定位置的符号定义(不一定是该位置本身),它会显示在给定位置显示的悬停,并且会显示一个包含更多代码导航命令的上下文菜单。

请注意,此属性可以在 解析 代码内提示时晚期设置。

悬停在此标签部分时的工具提示文本。

请注意,此属性可以在 解析 代码内提示时晚期设置。

此标签部分的值。

InlayHintsProvider<T>

代码内提示提供程序接口定义了扩展和代码内提示功能之间的契约。

事件

一个可选事件,用于通知此提供程序的代码内提示已更改。

方法

为给定的范围和文档提供代码内提示。

请注意,不被给定范围 包含 的代码内提示将被忽略。

参数描述
document: TextDocument

调用命令的文档。

range: Range

应计算代码内提示的范围。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T[]>

代码内提示数组或解析为该数组的 Promise。

给定一个代码内提示,填写 工具提示文本编辑 或完成标签 部分

请注意,编辑器最多只会解析一个代码内提示。

参数描述
hint: T

一个代码内提示。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T>

解析后的代码内提示或解析为该提示的 Promise。返回给定的 item 是可以的。当没有返回结果时,将使用给定的 item

InlineCompletionContext

提供有关请求内联完成的上下文的信息。

属性

提供有关自动完成小部件当前选中项的信息(如果可见)。

如果设置,则提供的内联完成必须扩展所选项的文本并使用相同的范围,否则它们将不会作为预览显示。例如,如果文档文本是 console. 并且所选项是 .log 替换文档中的 .,则内联完成也必须替换 . 并以 .log 开头,例如 .log()

每当所选项发生变化时,都会重新请求内联完成提供程序。

描述内联完成的触发方式。

InlineCompletionItem

内联完成项代表一个文本片段,该片段被提议内联以完成正在键入的文本。

另请参阅 InlineCompletionItemProvider.provideInlineCompletionItems

构造函数

创建一个新的内联完成项。

参数描述
insertText: string | SnippetString

要替换范围的文本。

range?: Range

要替换的范围。如果未设置,将使用请求位置的单词。

command?: Command

插入此完成项后执行的可选 命令

返回值描述
InlineCompletionItem

属性

插入此完成项后执行的可选 命令

用于决定是否显示此内联完成的文本。当为 falsy 时,将使用 InlineCompletionItem.insertText

如果待替换文本是过滤文本的前缀,则显示内联完成。

替换范围的文本。必须设置。预览和接受操作都将使用此文本。

要替换的范围。必须在同一行开始和结束。

优先进行替换而不是插入,以便在用户删除键入文本时提供更好的体验。

InlineCompletionItemProvider

内联完成项提供程序接口定义了扩展和内联完成功能之间的契约。

系统会通过用户显式操作或在键入时隐式地向提供程序请求完成。

方法

为给定的位置和文档提供内联完成项。如果启用了内联完成,则每当用户停止键入时都会调用此方法。当用户显式触发内联完成或显式请求下一个或上一个内联完成时,也会调用此方法。在这种情况下,应返回所有可用的内联完成项。context.triggerKind 可用于区分这些场景。

参数描述
document: TextDocument

请求内联完成的文档。

position: Position

请求内联完成的位置。

context: InlineCompletionContext

包含额外信息的上下文对象。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<InlineCompletionList | InlineCompletionItem[]>

完成项数组或解析为完成项数组的 Promise。

InlineCompletionList

表示要呈现给编辑器的 内联完成项 的集合。

构造函数

创建一个新的内联完成项列表。

参数描述
items: InlineCompletionItem[]
返回值描述
InlineCompletionList

属性

内联完成项。

InlineCompletionTriggerKind

描述了如何触发 内联完成提供程序

枚举成员

完成项是通过用户操作显式触发的。返回多个完成项以启用它们之间的循环。

完成项是在编辑时自动触发的。在这种情况下,返回单个完成项就足够了。

InlineValue

可以根据不同方式提供内联值信息

  • 直接作为文本值(类 InlineValueText)。
  • 作为用于变量查找的名称(类 InlineValueVariableLookup)
  • 作为可求值的表达式(类 InlineValueEvaluatableExpression) InlineValue 类型将所有内联值类型合并为一个类型。

InlineValueContext

在从 InlineValuesProvider 请求内联值时包含上下文信息的数值对象。

属性

执行停止的堆栈帧(DAP ID)。

执行停止的文档范围。通常,范围的结束位置表示显示内联值的行。

InlineValueEvaluatableExpression

通过表达式求值提供内联值。如果仅指定了范围,则表达式将从底层文档中提取。可以选择性地使用表达式来覆盖提取的表达式。

构造函数

创建一个新的 InlineValueEvaluatableExpression 对象。

参数描述
range: Range

从底层文档中提取可评估表达式的范围。

expression?: string

如果指定,则覆盖提取的表达式。

返回值描述
InlineValueEvaluatableExpression

属性

如果指定,则表达式会覆盖提取的表达式。

内联值适用的文档范围。该范围用于从底层文档中提取可求值的表达式。

InlineValuesProvider

内联值提供程序接口定义了扩展和编辑器内联值调试功能之间的契约。在此契约中,提供程序返回给定文档范围的内联值信息,编辑器在行尾显示此信息。

事件

一个可选事件,用于通知内联值已更改。

另请参阅 EventEmitter

方法

为给定的文档和范围提供“内联值”信息。编辑器在调试停止在给定文档中时调用此方法。返回的内联值信息在编辑器中渲染在行尾。

参数描述
document: TextDocument

需要内联值信息的文档。

viewPort: Range

应计算内联值(inline values)的可见文档范围。

context: InlineValueContext

包含上下文信息的集合,例如当前位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<InlineValue[]>

InlineValueDescriptors 数组或可解析为此类数组的 thenable。可以通过返回 undefinednull 来指示缺少结果。

InlineValueText

将内联值提供为文本。

构造函数

创建一个新的 InlineValueText 对象。

参数描述
range: Range

显示内联值的文档行。

text: string

要为该行显示的值。

返回值描述
InlineValueText

属性

内联值适用的文档范围。

内联值的文本。

InlineValueVariableLookup

通过变量查找提供内联值。如果仅指定了范围,则变量名将从底层文档中提取。可以选择性地使用变量名来覆盖提取的名称。

构造函数

创建一个新的 InlineValueVariableLookup 对象。

参数描述
range: Range

显示内联值的文档行。

variableName?: string

要查找的变量名。

caseSensitiveLookup?: boolean

如何执行查找。如果省略,则查找是区分大小写的。

返回值描述
InlineValueVariableLookup

属性

如何执行查找。

内联值适用的文档范围。此范围用于从底层文档中提取变量名。

如果指定,则为要查找的变量名。

InputBox

一个具体的 QuickInput,用于让用户输入文本值。

请注意,在许多情况下,更方便的 window.showInputBox 更容易使用。window.createInputBox 应在 window.showInputBox 未提供所需灵活性时使用。

事件

当用户表示接受输入值时触发的事件。

当值发生变化时触发的事件。

当此输入 UI 隐藏时触发的事件。

此 UI 可能需要隐藏的原因有多种,扩展会通过 onDidHide 收到通知。例如:显式调用 hide、用户按下 Esc、打开其他输入 UI 等。

当按钮被触发时触发的事件。

属性

确定 UI 是否应显示进度指示器。默认为 false

例如,在加载更多数据或验证用户输入时,将此值更改为 true

UI 中操作的按钮。

确定 UI 是否应允许用户输入。默认为 true

例如,在验证用户输入或为用户输入的下一步加载数据时,将此值更改为 false

确定 UI 在失去焦点时是否应保持打开状态。默认为 false。此设置在 iPad 上被忽略,始终为 false

确定是否应隐藏输入值。默认为 false

在没有输入值时显示的占位符文本。

在输入框下方显示的可选提示文本,用于向用户提供说明或提问。

多步输入流程的可选当前步数。

输入 UI 的可选标题。

多步输入流程的可选总步数。

指示当前输入值存在问题的可选验证消息。

通过设置字符串,InputBox 将使用默认的 InputBoxValidationSeverity 错误级别。返回 undefined 会清除验证消息。

当前的输入值。

输入值中的选择范围。

定义为两个数字的元组,第一个是包含的起始索引,第二个是排除的结束索引。当为 undefined 时,将选择整个预填入的值;当为空(起始等于结束)时,仅设置光标;否则,将选择定义的范围。

用户键入或进行选择时,此属性不会更新,但扩展可以更新它。

方法

销毁此输入 UI 和任何关联的资源。

如果它仍然可见,它将被首先隐藏。在此调用之后,输入 UI 将不再起作用,并且不应再访问其任何方法或属性。应该创建一个新的输入 UI。

参数描述
返回值描述
void

隐藏此输入 UI。

这将触发一个 onDidHide 事件。

参数描述
返回值描述
void

以其当前配置使输入 UI 可见。

任何其他输入 UI 将首先触发一个 onDidHide 事件。

参数描述
返回值描述
void

InputBoxOptions

用于配置输入框 UI 行为的选项。

属性

设置为 true 可在焦点移至编辑器其他部分或另一个窗口时保持输入框打开。此设置在 iPad 上被忽略,始终为 false。

控制是否显示密码输入。密码输入会隐藏键入的文本。

在输入框中显示的占位符字符串,用于引导用户输入。

显示在输入框下方的文本。

输入框标题的可选字符串。

预填入输入框的值。

对预填入的 value 的选择。定义为两个数字的元组,第一个是包含的起始索引,第二个是排除的结束索引。当为 undefined 时,将选择整个预填入的值;当为空(起始等于结束)时,仅设置光标;否则,将选择定义的范围。

方法

一个可选函数,用于验证输入并向用户提供提示。

参数描述
value: string

输入框的当前值。

返回值描述
string | InputBoxValidationMessage | Thenable<string | InputBoxValidationMessage>

可以是人类可读的字符串(显示为错误消息),也可以是 InputBoxValidationMessage(可以提供特定的消息严重性)。当 'value' 有效时,返回 undefinednull 或空字符串。

InputBoxValidationMessage

表示 InputBox 的验证消息。

属性

要显示给用户的验证消息。

验证消息的严重性级别。

注意:使用 InputBoxValidationSeverity.Error 时,用户将无法接受输入(例如,按 Enter 键)。InfoWarning 严重性仍允许接受输入。

InputBoxValidationSeverity

输入框验证消息的严重性级别。

枚举成员

表示一个不阻止输入接受的信息性消息。

表示一个不阻止输入接受的警告消息。

表示一个阻止用户接受输入的错误消息。

LanguageConfiguration

语言配置接口定义了扩展与各种编辑器功能(如自动括号插入、自动缩进等)之间的契约。

属性

已弃用 请勿使用。

  • 已弃用 - * 请改用语言配置文件中的 autoClosingPairs 属性。
参数描述
autoClosingPairs: Array<{close: string, notIn: string[], open: string}>
  • 已弃用

已弃用 请勿使用。

  • 已弃用 - 很快将由更好的 API 取代。
参数描述
brackets: any

此属性已弃用,并且编辑器将忽略它。

  • 已弃用
docComment: {close: string, lineStart: string, open: string, scope: string}

此属性已弃用,并且编辑器不再完全支持(scope 和 lineStart 被忽略)。请改用语言配置文件中的 autoClosingPairs 属性。

  • 已弃用

该语言的自动闭合对。

该语言的括号。此配置会隐式影响在这些括号周围按下 Enter 键的行为。

该语言的注释设置。

该语言的缩进设置。

按下 Enter 键时要评估的该语言的规则。

该语言的单词定义。如果该语言支持 Unicode 标识符(例如 JavaScript),则最好提供一个单词定义,该定义排除已知的分隔符。例如:一个匹配除已知分隔符之外的所有内容的正则表达式(点允许出现在浮点数中)。

/(-?\d*\.\d\w*)|([^\`\~\!\\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>/\?\s]+)/g

LanguageModelAccessInformation

表示有关语言模型访问的扩展特定信息。

事件

访问信息更改时触发的事件。

方法

检查是否可以向语言模型发送请求。

请注意,调用此函数不会触发同意 UI,而只是检查持久化的状态。

参数描述
chat: LanguageModelChat

一个语言模型聊天对象。

返回值描述
布尔值

如果可以发送请求,则为 true;如果不能,则为 false;如果语言模型不存在或尚未询问同意,则为 undefined

LanguageModelChat

表示用于发送聊天请求的语言模型。

另请参阅 lm.selectChatModels

属性

语言模型的内部系列名称。值可能是 gpt-3.5-turbogpt4phi2llama,但它们由贡献语言的扩展定义,并可能发生更改。

语言模型的内部标识符。

一次请求可以发送到模型的最大 token 数。

语言模型的人类可读名称。

语言模型供应商的知名标识符。例如 copilot,但值由贡献聊天模型的扩展定义,需要与它们一起查找。

模型的内部版本字符串。这由贡献语言模型的扩展定义,并可能发生更改。

方法

使用模型特定的分词器逻辑计算消息中的 token 数。

参数描述
text: string | LanguageModelChatMessage

一个字符串或消息实例。

token?: CancellationToken

可选的取消标记。有关如何创建它,请参阅 CancellationTokenSource

返回值描述
Thenable<number>

一个解析为 token 数的 thenable。

使用语言模型发送聊天请求。

请注意,语言模型的使用可能受到访问限制和用户同意的约束。首次(针对扩展)调用此函数将向用户显示同意对话框,因此只能响应用户操作来调用此函数!扩展可以使用 LanguageModelAccessInformation.canSendRequest 来检查它们是否拥有发送请求的必要权限。

如果无法向语言模型发送请求,此函数将返回一个被拒绝的 Promise。原因可能包括:

  • 用户未同意,请参阅 NoPermissions
  • 模型不再存在,请参阅 NotFound
  • 配额限制已超出,请参阅 Blocked
  • 其他问题,扩展必须检查 [LanguageModelError.cause LanguageModelError.cause](#_LanguageModelError.cause LanguageModelError.cause)

扩展可以通过将一组工具传递给 LanguageModelChatRequestOptions.tools 来利用语言模型的工具调用。语言模型将返回一个 LanguageModelToolCallPart,扩展可以调用该工具并使用结果再次发送请求。

参数描述
messages: LanguageModelChatMessage[]

消息实例的数组。

options?: LanguageModelChatRequestOptions

控制请求的选项。

token?: CancellationToken

控制请求的取消标记。有关如何创建它,请参阅 CancellationTokenSource

返回值描述
Thenable<LanguageModelChatResponse>

一个解析为 LanguageModelChatResponse 的 thenable。当请求无法发送时,Promise 将被拒绝。

LanguageModelChatCapabilities

LanguageModelChatInformation 支持的各种功能,例如工具调用或图像输入。

属性

模型是否支持图像输入。常见的支持图像格式为 jpg 和 png,但每种模型支持的 MIME 类型会有所不同。

模型是否支持工具调用。如果提供数字,则表示可以在一次请求中向模型提供的最大工具数。

LanguageModelChatInformation

表示由 LanguageModelChatProvider 提供的语言模型。

属性

模型支持的各种功能,例如工具调用或图像输入。

一个可选的人类可读字符串,将与模型一起显示。有助于在 UI 中区分同名模型。

语言模型的抽象族名。可能的值包括 gpt-3.5-turbogpt4phi2llama

语言模型的唯一标识符。对于每个提供者来说,它必须是唯一的,但不必是全局唯一的。

模型可以接受的最大输入 token 数。

模型能够生成的最大 token 数。

语言模型的人类可读名称。

鼠标悬停在模型上时显示的工具提示。用于提供有关模型的更多信息。

模型的抽象版本字符串。此值用作 LanguageModelChatSelector.version 中的查找值。例如,GPT 4o 有多个版本,如 2024-11-20 和 2024-08-06。

LanguageModelChatMessage

表示聊天中的一条消息。可以承担不同的角色,如用户或助手。

静态

创建新助手消息的实用程序。

参数描述
content: string | Array<LanguageModelTextPart | LanguageModelDataPart | LanguageModelToolCallPart>

消息的内容。

name?: string

消息的可选用户名称。

返回值描述
LanguageModelChatMessage

创建新用户消息的实用程序。

参数描述
content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelDataPart>

消息的内容。

name?: string

消息的可选用户名称。

返回值描述
LanguageModelChatMessage

构造函数

创建一个新的用户消息。

参数描述
role: LanguageModelChatMessageRole

消息的角色。

content: string | LanguageModelInputPart[]

消息的内容。

name?: string

消息的可选用户名称。

返回值描述
LanguageModelChatMessage

属性

消息可以包含的内容字符串或异构数组。对于某些模型,某些部分可能是特定于消息类型的。

此消息的可选用户名称。

此消息的角色。

LanguageModelChatMessageRole

表示聊天消息的角色。这是用户或助手。

枚举成员

用户角色,例如与语言模型交互的人。

助手角色,例如生成响应的语言模型。

LanguageModelChatProvider<T>

LanguageModelChatProvider 实现对语言模型的访问,用户随后可以通过聊天视图或通过扩展 API 获取 LanguageModelChat 来使用这些模型。例如,OpenAI 提供商提供 gpt-5、o3 等模型。

事件

当可用语言模型集发生变化时触发的可选事件。

方法

获取此提供者提供的可用语言模型列表。

参数描述
options: PrepareLanguageModelChatModelOptions

指定此函数调用上下文的选项。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T[]>

可用语言模型列表。

返回聊天请求的响应,将结果传递给进度回调。 LanguageModelChatProvider 必须在收到语言模型的响应部分时将其发出给进度回调。

参数描述
model: T

要使用的语言模型。

messages: readonly LanguageModelChatRequestMessage[]

要包含在请求中的消息。

options: ProvideLanguageModelChatResponseOptions

请求的选项。

progress: Progress<LanguageModelResponsePart>

将流式响应块发出到的进度。

token: CancellationToken

取消令牌。

返回值描述
Thenable<void>

一个在响应完成后解析的 Promise。结果实际上会传递给进度回调。

使用特定于模型的分词器逻辑返回给定文本的 token 数。

参数描述
model: T

要使用的语言模型。

text: string | LanguageModelChatRequestMessage

要计算 token 的文本。

token: CancellationToken

取消令牌。

返回值描述
Thenable<number>

token 的数量。

LanguageModelChatRequestMessage

LanguageModelChatMessage 的提供者版本。

属性

消息可以包含的内容的异构数组。某些部分可能特定于模型。

此消息的可选用户名称。

此消息的角色。

LanguageModelChatRequestOptions

使用语言模型发出聊天请求的选项。

另请参阅 LanguageModelChat.sendRequest

属性

一个人类可读的消息,解释了为什么需要访问语言模型以及它启用了什么功能。

一组控制语言模型行为的选项。这些选项特定于语言模型,需要查阅各自的文档。

要使用的工具选择模式。默认情况下为 LanguageModelChatToolMode.Auto

可选的工具列表,可供语言模型使用。这些可以是 lm.tools 中提供的已注册工具,也可以是仅在调用扩展中实现的私有工具。

如果 LLM 请求调用其中一个工具,它将在 LanguageModelChatResponse.stream 中返回一个 LanguageModelToolCallPart。调用者有责任调用该工具。如果是 lm.tools 中注册的工具,则意味着调用 lm.invokeTool

然后,可以通过创建具有 LanguageModelToolCallPart 的助手类型的 LanguageModelChatMessage,然后是一个具有 LanguageModelToolResultPart 的用户类型消息,将工具结果提供给 LLM。

LanguageModelChatResponse

表示语言模型的响应。

另请参阅 ChatRequest

属性

一个异步可迭代对象,它是文本和工具调用部分的流,构成了整个响应。 LanguageModelTextPart 是要显示给用户的助手响应的一部分。 LanguageModelToolCallPart 是语言模型调用工具的请求。后者仅在通过 LanguageModelChatRequestOptions.tools 在请求中传递了工具时才会返回。 unknown 类型用作未来部分(如图像数据部分)的占位符。

注意,当在数据接收过程中发生错误时,此流将出错。流的消费者应相应地处理错误。

要取消流,消费者可以 取消 用于发出请求的令牌,或从 for 循环中中断。

示例

try {
  // consume stream
  for await (const chunk of response.stream) {
    if (chunk instanceof LanguageModelTextPart) {
      console.log('TEXT', chunk);
    } else if (chunk instanceof LanguageModelToolCallPart) {
      console.log('TOOL CALL', chunk);
    }
  }
} catch (e) {
  // stream ended with an error
  console.error(e);
}

这相当于从 LanguageModelChatResponse.stream 中过滤掉除文本部分之外的所有内容。

另请参阅 LanguageModelChatResponse.stream

LanguageModelChatSelector

描述如何为聊天请求选择语言模型。

另请参阅 lm.selectChatModels

属性

语言模型的族。

另请参阅 LanguageModelChat.family

语言模型的标识符。

另请参阅 LanguageModelChat.id

语言模型的供应商。

另请参阅 LanguageModelChat.vendor

语言模型的版本。

另请参阅 LanguageModelChat.version

LanguageModelChatTool

通过 LanguageModelChatRequestOptions 可供语言模型使用的工具。语言模型使用此接口的所有属性来决定调用哪个工具以及如何调用它。

属性

工具的描述。

此工具接受的输入的 JSON 模式。

工具的名称。

LanguageModelChatToolMode

语言模型使用的工具调用模式。

枚举成员

语言模型可以选择调用工具或生成消息。这是默认值。

语言模型必须调用提供的工具之一。注意:某些模型在此模式下仅支持单个工具。

LanguageModelDataPart

包含任意数据的语言模型响应部分。可用于 响应聊天消息工具结果 和其他语言模型交互。

静态

为图像创建新的 LanguageModelDataPart

参数描述
data: Uint8Array

二进制图像数据。

mime: string

图像的 MIME 类型。常见值是 image/pngimage/jpeg

返回值描述
LanguageModelDataPart

为 JSON 创建新的 LanguageModelDataPart

注意,此函数不期望“JSON 字符串”而是可以字符串化的对象。当传入的值无法 JSON 字符串化时,此函数将抛出错误。

参数描述
value: any

可 JSON 字符串化的值。

mime?: string

可选的 MIME 类型,默认为 application/json

返回值描述
LanguageModelDataPart

为文本创建新的 LanguageModelDataPart

注意,将使用 UTF-8 编码器为字符串创建字节。

参数描述
value: string

文本数据。

mime?: string

MIME 类型(如果存在)。常见值是 text/plaintext/markdown

返回值描述
LanguageModelDataPart

构造函数

使用给定的内容构建通用的数据部分。

参数描述
data: Uint8Array

此部分的数据字节。

mimeType: string

数据的 MIME 类型。

返回值描述
LanguageModelDataPart

属性

此部分的数据字节。

MIME 类型,它决定了 data 属性如何被解释。

LanguageModelError

语言模型特定错误的错误类型。

语言模型的消费者应检查 code 属性以确定特定的失败原因,例如,对于引用未知语言模型的情况,if(someError.code === vscode.LanguageModelError.NotFound.name) {...}。对于未指定的错误,cause 属性将包含实际错误。

静态

请求者被阻止使用此语言模型。

参数描述
message?: string
返回值描述
LanguageModelError

请求者无权使用此语言模型。

参数描述
message?: string
返回值描述
LanguageModelError

语言模型不存在。

参数描述
message?: string
返回值描述
LanguageModelError

构造函数

参数描述
message?: string
返回值描述
LanguageModelError

属性

一个标识此错误的字符串代码。

可能的值是错误名称,例如 NotFound,或者对于语言模型本身未指定的错误是 Unknown。在后一种情况下,cause 属性将包含实际错误。

LanguageModelInputPart

可以通过 LanguageModelChat.sendRequest 发送并由 LanguageModelChatProvider 处理的各种消息类型。

LanguageModelPromptTsxPart

包含来自 vscode/prompt-tsx 的 PromptElementJSON 的语言模型响应部分。

另请参阅 LanguageModelToolResult

构造函数

使用给定的内容构建 prompt-tsx 部分。

参数描述
value: unknown

部分的值,即 renderElementJSON 来自 vscode/prompt-tsx 的结果。

返回值描述
LanguageModelPromptTsxPart

属性

部分的值。

LanguageModelResponsePart

LanguageModelChatProvider 可以在聊天响应流中发出的各种消息类型。

LanguageModelTextPart

包含文本片段的语言模型响应部分,从 LanguageModelChatResponse 返回。

构造函数

使用给定的内容构建文本部分。

参数描述
value: string

部分的文本内容。

返回值描述
LanguageModelTextPart

属性

部分的文本内容。

LanguageModelTool<T>

可以通过调用 LanguageModelChat 来调用的工具。

方法

使用给定的输入调用工具并返回结果。

提供的 LanguageModelToolInvocationOptions.input 已根据声明的模式进行了验证。

在调用工具之前调用一次。建议实现此方法以自定义工具运行时显示的进度消息,并提供更实用的消息,其中包含来自调用输入的内容。如果合适,还可以指示工具在运行前需要用户确认。

  • 注意 1: 必须没有副作用。
  • 注意 2: 调用 prepareInvocation 并不一定会紧接着调用 invoke

LanguageModelToolCallPart

指示工具调用的语言模型响应部分,从 LanguageModelChatResponse 返回,并且还可以作为 LanguageModelChatMessage 的内容部分包含,以表示聊天请求中的先前工具调用。

构造函数

创建一个新的 LanguageModelToolCallPart。

参数描述
callId: string

工具调用的 ID。

name: string

要调用的工具的名称。

input: object

调用工具的输入。

返回值描述
LanguageModelToolCallPart

属性

工具调用的 ID。这是聊天请求中工具调用的唯一标识符。

调用工具的输入。

要调用的工具的名称。

LanguageModelToolConfirmationMessages

当在 PreparedToolInvocation 中返回此项时,将要求用户在运行工具前进行确认。这些消息将显示带有“继续”和“取消”按钮。

属性

确认消息的正文。

确认消息的标题。

LanguageModelToolInformation

有关 lm.tools 中已注册工具的信息。

属性

此工具的描述,可能会传递给语言模型。

此工具接受的输入的 JSON 模式。

工具的唯一名称。

工具声明的一组标签,大致描述了工具的功能。工具用户可以使用这些标签来筛选与当前任务相关的工具集。

LanguageModelToolInvocationOptions<T>

为调用工具提供的选项。

属性

用于调用工具的输入。输入必须与 LanguageModelToolInformation.inputSchema 中定义的模式匹配。

用于提示工具应在其响应中返回多少个 token,并使工具能够准确地计算 token 的选项。

一个不透明对象,用于将工具调用与来自 聊天参与者 的聊天请求关联起来。

获取有效的工具调用 token 的*唯一*方法是使用聊天请求中提供的 toolInvocationToken。在这种情况下,将在聊天响应视图中自动显示工具调用的进度条,如果工具需要用户确认,则会在聊天视图中内联显示。

如果工具在聊天请求之外被调用,则应传递 undefined,除了确认外,不会显示任何特殊 UI。

请*注意*,在调用过程中调用另一个工具的工具可以传递它收到的 toolInvocationToken

LanguageModelToolInvocationPrepareOptions<T>

属性

工具正在调用的输入。

LanguageModelToolResult

从工具调用返回的结果。如果使用 vscode/prompt-tsx,此结果可以使用 ToolResult 进行渲染。

构造函数

创建一个 LanguageModelToolResult。

参数描述
content: unknown[]

工具结果内容部分列表。

返回值描述
LanguageModelToolResult

属性

工具结果内容部分列表。包含 unknown,因为此列表将来可能会扩展新的内容类型。

另请参阅 lm.invokeTool

LanguageModelToolResultPart

工具调用的结果。这是 工具调用 的对应项,它只能包含在 User 消息的内容中。

构造函数

参数描述
callId: string

工具调用的 ID。

content: unknown[]

工具结果的内容。

返回值描述
LanguageModelToolResultPart

属性

工具调用的 ID。

注意,这应该与 callId 工具调用部分匹配。

工具结果的值。

LanguageModelToolTokenizationOptions

与工具调用的 token 化相关的选项。

属性

如果已知,工具在其结果中应发出的最大 token 数。

方法

使用模型特定的分词器逻辑计算消息中的 token 数。

参数描述
text: string

一个字符串。

token?: CancellationToken

可选的取消标记。有关如何创建它,请参阅 CancellationTokenSource

返回值描述
Thenable<number>

一个解析为 token 数的 thenable。

LanguageStatusItem

语言状态项是呈现活动文本编辑器语言状态报告的首选方式,例如选择的 linter 或通知配置问题。

属性

当屏幕阅读器与此项交互时使用的可访问性信息。

控制项是否显示为“忙碌”。默认为 false

此项的 命令

此项的可选、人类可读的详细信息。

此项的标识符。

此项的简短名称,例如“Java Language Status”等。

一个 选择器,用于定义此项在哪些编辑器中显示。

此项的严重级别。

默认为 information。您可以使用此属性向用户发出信号,表明存在需要注意的问题,例如缺少可执行文件或配置无效。

要为条目显示的文本。您可以通过利用语法嵌入图标。

我的文本 $(icon-name) 包含像 $(icon-name) 这样的图标。

其中 icon-name 是从 ThemeIcon 图标集 中获取的,例如 light-bulbthumbsupzap 等。

方法

释放并清理关联的资源。

参数描述
返回值描述
void

LanguageStatusSeverity

表示语言状态的严重级别。

枚举成员

信息性严重级别。

警告性严重级别。

错误性严重级别。

LinkedEditingRangeProvider

LinkedEditingRangeProvider 接口定义了扩展和链接编辑功能之间的契约。

方法

给定文档中的位置,返回该位置处的符号的范围以及具有相同内容的*所有*范围。如果新内容有效,则对一个范围的更改可以应用于所有其他范围。可以选择返回一个单词模式来描述有效内容。如果未提供特定于结果的单词模式,则使用语言配置中的单词模式。

参数描述
document: TextDocument

调用提供程序的文档。

position: Position

调用提供程序的*位置*。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<LinkedEditingRanges>

可一起编辑的范围列表。

LinkedEditingRanges

表示可一起编辑的范围列表,以及描述有效范围内容的单词模式。

构造函数

创建一个新的链接编辑范围对象。

参数描述
ranges: Range[]

可一起编辑的范围列表。

wordPattern?: RegExp

一个可选的单词模式,用于描述给定范围的有效内容。

返回值描述
LinkedEditingRanges

属性

可一起编辑的范围列表。范围必须具有相同的长度和文本内容。范围不能重叠。

一个可选的单词模式,用于描述给定范围的有效内容。如果未提供模式,则使用语言配置的单词模式。

Location

表示资源中的一个位置,例如文本文件中的一行。

构造函数

创建一个新的位置对象。

参数描述
uri: Uri

资源标识符。

rangeOrPosition: Range | Position

范围或位置。位置将转换为空范围。

返回值描述
位置

属性

此位置的文档范围。

此位置的资源标识符。

表示两个位置的连接。提供比普通 位置 更多的元数据,包括源范围。

属性

此链接源的跨度。

用作定义悬停的下划线跨度。默认为定义位置的单词范围。

此链接的完整目标范围。

此链接的跨度。

此链接的目标资源标识符。

LogLevel

日志级别。

枚举成员

此级别不记录任何消息。

此级别记录所有消息。

此级别记录调试及更高日志级别的消息。

此级别记录信息及更高日志级别的消息。

此级别记录警告及更高日志级别的消息。

此级别仅记录错误消息。

LogOutputChannel

包含日志输出的通道。

要获取 LogOutputChannel 的实例,请使用 createOutputChannel

事件

一个 事件,当通道的日志级别更改时会触发。

属性

通道的当前日志级别。默认为 编辑器日志级别

此输出通道的*人类可读*名称。

方法

将给定值追加到通道。

参数描述
value: string

一个字符串,假值将不会被打印。

返回值描述
void

将给定值和换行符追加到通道。

参数描述
value: string

一个字符串,假值将被打印。

返回值描述
void

删除通道中的所有输出。

参数描述
返回值描述
void

将给定的调试消息输出到通道。

仅当通道配置为显示 调试 日志级别或更低级别时,才会记录消息。

参数描述
message: string

要记录的调试消息。

...args: any[]
返回值描述
void

释放并清理关联的资源。

参数描述
返回值描述
void

将给定的错误或错误消息输出到通道。

仅当通道配置为显示 错误 日志级别或更低级别时,才会记录消息。

参数描述
error: string | Error

要记录的错误或错误消息。

...args: any[]
返回值描述
void

从 UI 中隐藏此通道。

参数描述
返回值描述
void

将给定的信息消息输出到通道。

仅当通道配置为显示 信息 日志级别或更低级别时,才会记录消息。

参数描述
message: string

要记录的信息消息。

...args: any[]
返回值描述
void

用给定值替换通道中的所有输出。

参数描述
value: string

一个字符串,假值将不会被打印。

返回值描述
void

在 UI 中显示此通道。

参数描述
preserveFocus?: boolean

true 时,通道将不获得焦点。

返回值描述
void

在 UI 中显示此通道。

  • 已弃用 - 请使用仅包含一个参数的重载(show(preserveFocus?: boolean): void)。
参数描述
column?: ViewColumn

此参数已*弃用*,将被忽略。

preserveFocus?: boolean

true 时,通道将不获得焦点。

返回值描述
void

将给定的跟踪消息输出到通道。使用此方法记录详细信息。

仅当通道配置为显示 跟踪 日志级别时,才会记录消息。

参数描述
message: string

要记录的跟踪消息。

...args: any[]
返回值描述
void

将给定的警告消息输出到通道。

仅当通道配置为显示 警告 日志级别或更低级别时,才会记录消息。

参数描述
message: string

要记录的警告消息。

...args: any[]
返回值描述
void

MarkdownString

人类可读的文本,支持通过 markdown 语法 进行格式化。

通过 $(<name>) 语法渲染 主题图标supportThemeIcons 设置为 true 时支持。

嵌入 HTML 的渲染在 supportHtml 设置为 true 时支持。

构造函数

使用给定值创建新的 markdown 字符串。

参数描述
value?: string

可选的初始值。

supportThemeIcons?: boolean

可选,指定是否在 MarkdownString 中支持 主题图标

返回值描述
MarkdownString

属性

相对路径解析的基础 URI。

如果 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'

指示此 markdown 字符串来自受信任的来源。只有*受信任*的 markdown 才支持执行命令的链接,例如 [Run it](command:myCommandId)

默认为 false(命令已禁用)。

指示此 markdown 字符串可以包含原始 HTML 标签。默认为 false

supportHtml 为 false 时,markdown 渲染器将删除 markdown 文本中出现的任何原始 HTML 标签。这意味着您只能使用 markdown 语法进行渲染。

supportHtml 为 true 时,markdown 渲染器还将允许渲染安全子集的 HTML 标签和属性。请参阅 https://github.com/microsoft/vscode/blob/6d2920473c6f13759c978dd89104c4270a83422d/src/vs/base/browser/markdownRenderer.ts#L296 以获取所有支持的标签和属性的列表。

指示此 markdown 字符串可以包含 主题图标,例如 $(zap)

markdown 字符串。

方法

将给定字符串作为代码块追加,使用指定的语言。

参数描述
value: string

代码片段。

language?: string

可选的 语言标识符

返回值描述
MarkdownString

将给定字符串“按原样”追加到此 markdown 字符串。当 supportThemeIconstrue 时,value 中的 主题图标 将被转换为图标。

参数描述
value: string

Markdown 字符串。

返回值描述
MarkdownString

将给定字符串转义后追加到此 markdown 字符串。

参数描述
value: string

纯文本。

返回值描述
MarkdownString

MarkedString

MarkedString 可用于渲染人类可读的文本。它要么是 markdown 字符串,要么是提供语言和代码片段的代码块。请注意,markdown 字符串将被清理 - 这意味着 HTML 将被转义。

McpHttpServerDefinition

McpHttpServerDefinition 表示使用 Streamable HTTP 传输可用的 MCP 服务器。

构造函数

参数描述
label: string

服务器的*人类可读*名称。

uri: Uri

服务器的 URI。

headers?: Record<string, string>

发送到服务器的每个请求中包含的可选*附加*头部。

version?: string
返回值描述
McpHttpServerDefinition

属性

发送到服务器的每个请求中包含的可选*附加*头部。

服务器的*人类可读*名称。

服务器的 URI。编辑器将向此 URI 发送 POST 请求以开始每个会话。

服务器的可选版本标识。如果此版本更改,编辑器将指示工具已更改并提示刷新它们。

McpServerDefinition

描述不同类型的模型上下文协议服务器的定义,可以从 McpServerDefinitionProvider 返回。

McpServerDefinitionProvider<T>

可以提供模型上下文协议服务器定义的类型。这应该在扩展激活期间使用 lm.registerMcpServerDefinitionProvider 进行注册。

事件

可选的事件,用于指示可用服务器集已更改。

方法

提供可用的 MCP 服务器。编辑器将*立即*调用此方法以确保语言模型可用服务器,因此扩展不应执行需要用户交互的操作,例如身份验证。

参数描述
token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T[]>

一个 MCP 可用 MCP 服务器的数组。

当编辑器需要启动 MCP 服务器时,将调用此函数。此时,扩展程序可以执行需要用户交互的任何操作,例如身份验证。服务器的任何非readonly属性都可以被修改,并且扩展程序应返回已解析的服务器。

扩展程序可以返回 undefined 来指示不应启动服务器,或抛出错误。如果存在待处理的工具调用,编辑器将取消它并向语言模型返回错误消息。

参数描述
server: T

要解析的 MCP 服务器

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T>

已解析的服务器或解析为该服务器的 thenable。这可能是给定的 server 定义,其中填入了非只读属性。

McpStdioServerDefinition

McpStdioServerDefinition 代表一个 MCP 服务器,可以通过运行本地进程并在其 stdin 和 stdout 流上操作来访问。该进程将作为扩展宿主的子进程生成,并且默认情况下不会在 shell 环境中运行。

构造函数

参数描述
label: string

服务器的*人类可读*名称。

command: string

用于启动服务器的命令。

args?: string[]

传递给服务器的其他命令行参数。

env?: Record<string, string | number>

服务器的可选附加环境信息。

version?: string

服务器的可选版本标识。

返回值描述
McpStdioServerDefinition

属性

传递给服务器的其他命令行参数。

用于启动服务器的命令。基于 Node.js 的服务器可以使用 process.execPath 来使用编辑器的 Node.js 版本来运行脚本。

启动服务器的工作目录。

服务器的可选附加环境信息。此环境中的变量将覆盖或移除(如果为 null)编辑器扩展宿主的默认环境变量。

服务器的*人类可读*名称。

服务器的可选版本标识。如果此版本更改,编辑器将指示工具已更改并提示刷新它们。

Memento

Memento 代表一个存储工具。它可以存储和检索值。

方法

返回一个值。

参数描述
key: string

一个字符串。

返回值描述
T

存储的值或 undefined

返回一个值。

参数描述
key: string

一个字符串。

defaultValue: T

当给定键没有值(undefined)时应返回的值。

返回值描述
T

存储的值或默认值。

返回已存储的键。

参数描述
返回值描述
readonly string[]

已存储的键。

存储一个值。该值必须是 JSON 可序列化的。

注意,使用 undefined 作为值会从底层存储中删除该键。

参数描述
key: string

一个字符串。

value: any

一个值。绝对不能包含循环引用。

返回值描述
Thenable<void>

MessageItem

代表一个显示在信息、警告或错误消息中的操作。

另请参阅

属性

对于模态对话框,这是一个提示,表示当用户取消对话框时(例如,按 ESC 键)应触发此项。

注意:此选项对于非模态消息将被忽略。

一个简短的标题,例如“重试”、“打开日志”等。

MessageOptions

用于配置消息行为的选项。

另请参阅

属性

可读的详细消息,显示效果较不突出。注意,详细信息仅显示在 模态 消息中。

指示此消息应该是模态的。

NotebookCell

代表一个 笔记本 的单元格,可以是 代码 单元格或 标记 单元格。

NotebookCell 实例是不可变的,只要它们是其笔记本的一部分,就会保持同步。

属性

此单元格的 文本,表示为文本文档。

此单元格的最近一次 执行摘要

此单元格在其 包含的笔记本 中的索引。当单元格在笔记本中移动时,索引会更新。当单元格已从其笔记本中删除时,索引为 -1

此单元格的类型。

此单元格的元数据。可以是任何内容,但必须是 JSON 可序列化的。

包含此单元格的 笔记本

此单元格的输出。

NotebookCellData

NotebookCellData 是笔记本单元格的原始表示。它是 NotebookData 的一部分。

构造函数

创建新的单元格数据。最小的单元格数据指定其类型、源值和源的语言标识符。

参数描述
kind: NotebookCellKind

类型。

value: string

源值。

languageId: string

源值的语言标识符。

返回值描述
NotebookCellData

属性

此单元格数据的执行摘要。

此单元格数据的 类型

此单元格数据源值的语言标识符。可以是 getLanguages 中的任何值。

此单元格数据的任意元数据。可以是任何内容,但必须是 JSON 可序列化的。

此单元格数据的输出。

此单元格数据的源值——无论是源代码还是格式化的文本。

NotebookCellExecution

NotebookCellExecution 是 笔记本控制器 在笔记本单元格执行过程中修改它的方式。

当创建单元格执行对象时,单元格进入 [NotebookCellExecutionState.Pending 待定](#_NotebookCellExecutionState.Pending Pending) 状态。当对执行任务调用 start(...) 时,它进入 [NotebookCellExecutionState.Executing 执行中](#_NotebookCellExecutionState.Executing Executing) 状态。当调用 end(...) 时,它进入 [NotebookCellExecutionState.Idle 空闲](#_NotebookCellExecutionState.Idle Idle) 状态。

属性

为此执行创建的 单元格

设置和取消设置此单元格执行的顺序。

当单元格执行从 UI 中取消时将被触发的取消令牌。

注意,当创建此执行的 控制器 使用 中断处理程序 时,取消令牌不会被触发。

方法

将输出追加到正在执行的单元格的输出,或追加到受此执行影响的另一个单元格的输出。

参数描述
out: NotebookCellOutput | readonly NotebookCellOutput[]

追加到当前输出的输出。

cell?: NotebookCell

为其清除输出的单元格。默认为此执行的 单元格

返回值描述
Thenable<void>

操作完成后解析的 thenable。

将输出项追加到现有的单元格输出。

参数描述
items: NotebookCellOutputItem | readonly NotebookCellOutputItem[]

追加到现有输出的输出项。

output: NotebookCellOutput

已存在的输出对象。

返回值描述
Thenable<void>

操作完成后解析的 thenable。

清除正在执行的单元格的输出,或清除受此执行影响的另一个单元格的输出。

参数描述
cell?: NotebookCell

为其清除输出的单元格。默认为此执行的 单元格

返回值描述
Thenable<void>

操作完成后解析的 thenable。

发出执行已结束的信号。

参数描述
success: boolean

如果为 true,则在单元格状态栏上显示绿色勾号。如果为 false,则显示红色 X。如果为 undefined,则不显示勾号或 X 图标。

endTime?: number

执行完成的时间,以 Unix 纪元毫秒为单位。

返回值描述
void

替换正在执行的单元格的输出,或替换受此执行影响的另一个单元格的输出。

参数描述
out: NotebookCellOutput | readonly NotebookCellOutput[]

替换当前输出的输出。

cell?: NotebookCell

为其清除输出的单元格。默认为此执行的 单元格

返回值描述
Thenable<void>

操作完成后解析的 thenable。

替换现有单元格输出的所有输出项。

参数描述
items: NotebookCellOutputItem | readonly NotebookCellOutputItem[]

替换现有输出项的输出项。

output: NotebookCellOutput

已存在的输出对象。

返回值描述
Thenable<void>

操作完成后解析的 thenable。

发出执行已开始的信号。

参数描述
startTime?: number

执行开始的时间,以 Unix 纪元毫秒为单位。用于驱动显示单元格已运行多长时间的时钟。如果未给出,则不会显示时钟。

返回值描述
void

NotebookCellExecutionSummary

笔记本单元格执行的摘要。

属性

执行发生的顺序。

执行是否成功完成。

执行开始和结束的时间,作为 Unix 时间戳

参数描述
endTime: number

执行结束时间。

startTime: number

执行开始时间。

NotebookCellKind

笔记本单元格类型。

枚举成员

标记单元格是用于显示的格式化源。

代码单元格是可以 执行 并产生 输出 的源。

NotebookCellOutput

NotebookCellOutput 代表单元格执行的结果。它是一个包含多个 输出项 的容器,其中包含的项代表相同的结果,但使用不同的 MIME 类型。

构造函数

创建新的笔记本输出。

参数描述
items: NotebookCellOutputItem[]

笔记本输出项。

metadata?:

可选元数据。

返回值描述
NotebookCellOutput

属性

此输出的输出项。每个项必须代表相同的结果。注意,每个输出中重复的 MIME 类型是无效的,编辑器将只选择其中一个。

new vscode.NotebookCellOutput([
  vscode.NotebookCellOutputItem.text('Hello', 'text/plain'),
  vscode.NotebookCellOutputItem.text('<i>Hello</i>', 'text/html'),
  vscode.NotebookCellOutputItem.text('_Hello_', 'text/markdown'),
  vscode.NotebookCellOutputItem.text('Hey', 'text/plain') // INVALID: repeated type, editor will pick just one
]);

此单元格输出的任意元数据。可以是任何内容,但必须是 JSON 可序列化的。

NotebookCellOutputItem

由 MIME 类型和数据定义的 笔记本输出 的一种表示。

静态

用于创建使用 application/vnd.code.notebook.error MIME 类型的 NotebookCellOutputItem 的工厂函数。

参数描述
value: Error

一个错误对象。

返回值描述
NotebookCellOutputItem

一个新的输出项对象。

用于从 JSON 对象创建 NotebookCellOutputItem 的工厂函数。

注意,此函数不期望“JSON 字符串”而是可以字符串化的对象。当传入的值无法 JSON 字符串化时,此函数将抛出错误。

参数描述
value: any

可 JSON 字符串化的值。

mime?: string

可选的 MIME 类型,默认为 application/json

返回值描述
NotebookCellOutputItem

一个新的输出项对象。

用于创建使用 application/vnd.code.notebook.stderr MIME 类型的 NotebookCellOutputItem 的工厂函数。

参数描述
value: string

一个字符串。

返回值描述
NotebookCellOutputItem

一个新的输出项对象。

用于创建使用 application/vnd.code.notebook.stdout MIME 类型的 NotebookCellOutputItem 的工厂函数。

参数描述
value: string

一个字符串。

返回值描述
NotebookCellOutputItem

一个新的输出项对象。

用于从字符串创建 NotebookCellOutputItem 的工厂函数。

注意,将使用 UTF-8 编码器为字符串创建字节。

参数描述
value: string

一个字符串。

mime?: string

可选 MIME 类型,默认为 text/plain

返回值描述
NotebookCellOutputItem

一个新的输出项对象。

构造函数

创建新的笔记本单元格输出项。

参数描述
data: Uint8Array

输出项的值。

mime: string

输出项的 MIME 类型。

返回值描述
NotebookCellOutputItem

属性

此输出项的数据。必须始终是无符号 8 位整数的数组。

MIME 类型,它决定了 data 属性的解释方式。

笔记本内置支持某些 MIME 类型,扩展程序可以添加对新类型的支持并覆盖现有类型。

NotebookCellStatusBarAlignment

代表状态栏项的对齐方式。

枚举成员

靠左对齐。

靠右对齐。

NotebookCellStatusBarItem

对单元格状态栏的贡献

构造函数

创建新的 NotebookCellStatusBarItem。

参数描述
text: string

要显示的项目文本。

alignment: NotebookCellStatusBarAlignment

项目是靠左还是靠右对齐。

返回值描述
NotebookCellStatusBarItem

属性

屏幕阅读器与此项目交互时使用的辅助功能信息。

项目是靠左还是靠右对齐。

单击时要运行的可选 命令 或命令标识符。

命令必须是 已知的

注意,如果这是一个 Command 对象,编辑器只使用 commandarguments

项的优先级。值越高的项显示得越靠左。

要显示的项目文本。

将鼠标悬停在项目上时显示的工具提示。

NotebookCellStatusBarItemProvider

一个可以向出现在单元格编辑器下方的状态栏贡献项的提供程序。

事件

一个可选事件,用于发出状态栏项已更改的信号。将再次调用 provide 方法。

方法

当单元格滚动到视图中,其内容、输出、语言或元数据发生变化,以及其执行状态发生变化时,将调用此提供程序。

参数描述
cell: NotebookCell

要为其返回项目的单元格。

token: CancellationToken

如果此请求应被取消,则触发的令牌。

返回值描述
ProviderResult<NotebookCellStatusBarItem | NotebookCellStatusBarItem[]>

一个或多个 单元格状态栏项目

NotebookController

笔记本控制器代表一个可以执行笔记本单元格的实体。这通常被称为内核。

可以有多个控制器,并且编辑器会允许用户选择为特定笔记本使用哪个控制器。 notebookType 属性定义了控制器适用于哪种笔记本,而 updateNotebookAffinity 函数允许控制器为特定笔记本文档设置偏好。当控制器被选中时,其 onDidChangeSelectedNotebooks 事件会触发。

当单元格正在运行时,编辑器将调用 executeHandler,控制器应创建并完成一个 笔记本单元格执行。但是,控制器也可以自行创建执行。

事件

每当笔记本文档的控制器被选中或取消选中时触发的事件。

一个笔记本可能有多个控制器,在这种情况下,需要选择一个控制器。这是用户操作,当用户与一个控制器被建议的笔记本交互时,会显式或隐式发生。在可能的情况下,编辑器会建议最有可能被选中的控制器。

请注意,控制器选择会(通过控制器的 id)持久化,并在控制器重新创建或笔记本 打开 时恢复。

属性

可供人类阅读的描述,显示不那么突出。

可供人类阅读的详细信息,显示不那么突出。

当 UI 中的运行手势被选中时(例如,运行单元格、运行所有、运行选定内容等),会调用 executeHandler。 executeHandler 负责创建和管理 执行 对象。

参数描述
cells: NotebookCell[]
notebook: NotebookDocument
controller: NotebookController
返回值描述
void | Thenable<void>

此笔记本控制器的标识符。

请注意,控制器根据其标识符被记住,并且扩展程序应在会话之间使用稳定的标识符。

可选的中断处理程序。

默认情况下,单元格执行通过 令牌 来取消。取消令牌要求控制器能够跟踪其执行,以便以后可以取消特定执行。并非所有场景都允许这样做,例如,REPL 式控制器通常通过中断当前正在运行的任何内容来工作。在这种情况下,存在中断处理程序——它可以被认为是终端中 SIGINTControl+C 的等效项。

请注意,优先支持 取消令牌,只有在不支持令牌的情况下才应使用中断处理程序。

参数描述
notebook: NotebookDocument
返回值描述
void | Thenable<void>

此笔记本控制器的可供人类阅读的标签。

此控制器适用的笔记本类型。

此控制器支持的语言标识符数组。可以是 getLanguages 中的任何语言标识符。如果为假,则支持所有语言。

示例

// support JavaScript and TypeScript
myController.supportedLanguages = ['javascript', 'typescript'];

// support all languages
myController.supportedLanguages = undefined; // falsy
myController.supportedLanguages = []; // falsy

此控制器是否支持执行顺序,以便编辑器可以为此渲染占位符。

方法

创建单元格执行任务。

请注意,每个单元格一次只能有一个执行,如果在另一个执行仍在活动时创建单元格执行,则会抛出错误。

这应在响应调用 execution handler 时使用,或在单元格执行已启动时使用,例如,当单元格已在执行或单元格执行已从其他源触发时。

参数描述
cell: NotebookCell

要为其创建执行的笔记本单元格。

返回值描述
NotebookCellExecution

笔记本单元格执行。

释放并清理关联的资源。

参数描述
返回值描述
void

控制器可以为特定的笔记本文档设置偏好。这允许控制器在某些笔记本中更突出地显示。

参数描述
notebook: NotebookDocument

设置优先级的笔记本。

affinity: NotebookControllerAffinity

控制器对笔记本的偏好。

返回值描述
void

NotebookControllerAffinity

笔记本文档的笔记本控制器偏好。

另请参阅 NotebookController.updateNotebookAffinity

枚举成员

默认偏好。

控制器对笔记本是首选的。

NotebookData

笔记本的原始表示。

扩展程序负责创建 NotebookData,以便编辑器可以创建 NotebookDocument

另请参阅 NotebookSerializer

构造函数

创建新的笔记本数据。

参数描述
cells: NotebookCellData[]

单元格数据数组。

返回值描述
NotebookData

属性

此笔记本数据的单元格数据。

笔记本数据的任意元数据。

NotebookDocument

表示一个笔记本,它本身是一系列 代码或标记单元格。笔记本文档由 NotebookData 创建。

属性

笔记本中的单元格数量。

如果笔记本已关闭,则为 true。已关闭的笔记本不再同步,并且在再次打开同一资源时不会被重新使用。

如果存在未保存的更改,则为 true

此笔记本是否代表一个尚未保存的未命名文件。

此笔记本的任意元数据。可以是任何内容,但必须是 JSON 可序列化的。

笔记本的类型。

与此笔记本关联的 URI。

请注意,大多数笔记本使用 file 方案,这意味着它们是磁盘上的文件。但是,并非所有笔记本都保存在磁盘上,因此在尝试访问磁盘上的底层文件或同级文件之前,必须检查 scheme

另请参阅 FileSystemProvider

此笔记本的版本号(每次更改后会严格增加,包括撤销/重做)。

方法

返回指定索引处的单元格。索引将根据笔记本进行调整。

参数描述
index: number

要检索的单元格的索引。

返回值描述
NotebookCell

一个 单元格

获取此笔记本的单元格。可以通过提供范围来检索子集。范围将根据笔记本进行调整。

参数描述
range?: NotebookRange

笔记本范围。

返回值描述
NotebookCell[]

范围内的单元格或所有单元格。

保存文档。保存将由相应的 序列化器 处理。

参数描述
返回值描述
Thenable<boolean>

一个 promise,当文档已保存时,它将解析为 true。如果文件未脏或保存失败,则返回 false。

NotebookDocumentCellChange

描述了笔记本单元格的更改。

另请参阅 NotebookDocumentChangeEvent

属性

受影响的单元格。

单元格的文档,或在未更改时为 undefined

请注意,您应该使用 onDidChangeTextDocument 事件来获取详细的更改信息,例如执行了哪些编辑。

单元格的新执行摘要,或在未更改时为 undefined

单元格的新元数据,或在未更改时为 undefined

单元格的新输出,或在未更改时为 undefined

NotebookDocumentChangeEvent

描述事务性 笔记本 更改的事件。

属性

一个 单元格更改 数组。

描述添加或删除的 单元格 的内容更改数组。

笔记本的新元数据,或在未更改时为 undefined

受影响的笔记本。

NotebookDocumentContentChange

描述笔记本文档的结构性更改,例如新添加和删除的单元格。

另请参阅 NotebookDocumentChangeEvent

属性

添加到文档中的单元格。

添加或删除单元格的范围。

注意,当此范围 为空 时,没有单元格被 移除

从文档中移除的单元格。

NotebookDocumentContentOptions

笔记本内容选项定义了笔记本的哪些部分会被持久化。注意

例如,笔记本序列化器可以选择不保存输出,在这种情况下,当其输出发生变化时,编辑器不会将笔记本标记为

属性

控制单元格元数据属性更改事件是否会触发笔记本文档内容更改事件,以及是否会在 diff 编辑器中使用,默认为 false。如果内容提供程序不将元数据属性持久化到文件文档中,则应设置为 true。

控制文档元数据属性更改事件是否会触发笔记本文档内容更改事件,以及是否会在 diff 编辑器中使用,默认为 false。如果内容提供程序不将元数据属性持久化到文件文档中,则应设置为 true。

控制输出更改事件是否会触发笔记本文档内容更改事件,以及是否会在 diff 编辑器中使用,默认为 false。如果内容提供程序不将输出持久化到文件文档中,则应设置为 true。

NotebookDocumentShowOptions

表示用于配置在 笔记本编辑器 中显示 笔记本文档 行为的选项。

属性

一个可选标志,当设置为 true 时,将阻止 笔记本编辑器 获取焦点。

一个可选标志,用于控制 笔记本编辑器 标签页是否显示为预览。预览标签页将在被设置为保留之前被替换和重用——无论是显式设置还是通过编辑。默认行为取决于 workbench.editor.enablePreview 设置。

要在 笔记本编辑器 中应用的文档的可选选择。

应显示 笔记本编辑器 的可选视图列。默认为 Active。不存在的列最多会创建到 ViewColumn.Nine。使用 ViewColumn.Beside 将编辑器打开到当前活动编辑器旁边。

NotebookDocumentWillSaveEvent

笔记本文档 将被保存时触发的事件。

要在保存文档之前对其进行修改,请将 waitUntil 函数与解析为 工作区编辑 的 thenable 一起调用。

属性

将要保存的 笔记本文档

触发保存的原因。

取消令牌。

方法

允许暂停事件循环并应用 工作区编辑。此函数后续调用的编辑将按顺序应用。如果笔记本文档发生了并发修改,则编辑将被忽略

注意:此函数只能在事件分派期间调用,不能异步调用。

workspace.onWillSaveNotebookDocument(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
参数描述
thenable: Thenable<WorkspaceEdit>

一个解析为 工作区编辑 的 thenable。

返回值描述
void

允许暂停事件循环直到提供的 thenable 解析。

注意:此函数只能在事件分派期间调用。

参数描述
thenable: Thenable<any>

一个延迟保存的 thenable。

返回值描述
void

NotebookEdit

笔记本编辑代表应应用于笔记本内容的编辑。

静态

用于创建删除笔记本中单元格的编辑的实用程序。

参数描述
range: NotebookRange

要删除的单元格范围。

返回值描述
NotebookEdit

用于创建替换笔记本中单元格的编辑的实用程序。

参数描述
index: number

要插入单元格的索引。

newCells: NotebookCellData[]

新的笔记本单元格。

返回值描述
NotebookEdit

用于创建替换笔记本中单元格的编辑的实用程序。

参数描述
range: NotebookRange

要替换的单元格范围

newCells: NotebookCellData[]

新的笔记本单元格。

返回值描述
NotebookEdit

用于创建更新单元格元数据的编辑的实用程序。

参数描述
index: number

要更新的单元格的索引。

newCellMetadata:

单元格的新元数据。

返回值描述
NotebookEdit

用于创建更新笔记本元数据的编辑的实用程序。

参数描述
newNotebookMetadata:

笔记本的新元数据。

返回值描述
NotebookEdit

构造函数

创建新的笔记本编辑。

参数描述
range: NotebookRange

笔记本范围。

newCells: NotebookCellData[]

新单元格数据数组。

返回值描述
NotebookEdit

属性

单元格的可选新元数据。

正在插入的新单元格。可能为空。

笔记本的可选新元数据。

正在编辑的单元格范围。可能为空。

NotebookEditor

表示附加到 笔记本 的笔记本编辑器。 NotebookEditor 的其他属性可以在提议的 API 中找到,该 API 将稍后最终确定。

属性

与此笔记本编辑器关联的 笔记本文档

此笔记本编辑器中的主选择。

此笔记本编辑器中的所有选择。

主选择(或焦点范围)是 selections[0]。当文档没有单元格时,主选择是空的 { start: 0, end: 0 }

此编辑器显示的列。

编辑器中当前的可见范围(垂直方向)。

方法

根据 revealType 进行滚动,以显示给定的范围。

参数描述
range: NotebookRange

一个范围。

revealType?: NotebookEditorRevealType

用于显示 range 的滚动策略。

返回值描述
void

NotebookEditorRevealType

表示附加到 笔记本 的笔记本编辑器。

枚举成员

将以最少的滚动来显示范围。

该范围将始终在视口的中心显示。

如果该范围位于视口之外,它将显示在视口中心。否则,它将以尽可能少的滚动来显示。

该范围将始终在视口顶部显示。

NotebookEditorSelectionChangeEvent

表示一个描述 笔记本编辑器选择 变化的事件。

属性

选择已更改的 笔记本编辑器

笔记本编辑器 选择 的新值。

NotebookEditorVisibleRangesChangeEvent

表示一个描述 笔记本编辑器可见范围 变化的事件。

属性

可见范围已更改的 笔记本编辑器

笔记本编辑器 可见范围 的新值。

NotebookRange

笔记本范围表示两个单元格索引的有序对。保证 start 小于或等于 end。

构造函数

创建一个新的笔记本范围。如果 start 不小于或等于 end,则会交换这两个值。

参数描述
start: number

起始索引

end: number

结束索引。

返回值描述
NotebookRange

属性

该范围的独占结束索引(从零开始)。

如果 startend 相等,则为 true

该范围的从零开始的起始索引。

方法

派生该范围的新范围。

参数描述
change: {end: number, start: number}

一个描述此范围更改的对象。

返回值描述
NotebookRange

反映给定更改的范围。如果更改未发生任何变化,将返回 this 范围。

NotebookRendererMessaging

渲染器消息用于与单个渲染器通信。它从 notebooks.createRendererMessaging 返回。

事件

接收到来自渲染器的消息时触发的事件。

方法

向一个或所有渲染器发送消息。

参数描述
message: any

要发送的消息

editor?: NotebookEditor

消息的目标编辑器。如果未提供,则消息将发送到所有渲染器。

返回值描述
Thenable<boolean>

一个布尔值,指示消息是否成功传递给任何渲染器。

NotebookSerializer

笔记本序列化器使编辑器能够打开笔记本文件。

本质上,编辑器只知道一个 笔记本数据结构,但不知道如何将该数据结构写入文件,也不知道如何从文件中读取。笔记本序列化器通过将字节反序列化为笔记本数据并反之亦然来弥合这一差距。

方法

将笔记本文件的内容反序列化为笔记本数据结构。

参数描述
content: Uint8Array

笔记本文件的内容。

token: CancellationToken

取消令牌。

返回值描述
NotebookData | Thenable<NotebookData>

笔记本数据或一个解析为此类数据的 thenable。

将笔记本数据序列化为文件内容。

参数描述
data: NotebookData

一个笔记本数据结构。

token: CancellationToken

取消令牌。

返回值描述
Uint8Array | Thenable<Uint8Array>

一个字节数组或一个解析为该数组的 thenable。

OnEnterRule

描述按下 Enter 键时要评估的规则。

属性

要执行的操作。

仅当光标后的文本匹配此正则表达式时,此规则才会执行。

仅当光标前的文本匹配此正则表达式时,此规则才会执行。

仅当当前行上方的文本匹配此正则表达式时,此规则才会执行。

OnTypeFormattingEditProvider

文档格式化提供者接口定义了扩展和格式化功能之间的约定。

方法

在输入字符后提供格式化编辑。

给定的位置和字符应该提示提供者该位置需要扩展的范围,例如输入 } 时查找匹配的 {

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

ch: string

输入的字符。

options: FormattingOptions

控制格式化的选项。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<TextEdit[]>

一组文本编辑或一个解析为这类文本编辑的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

OpenDialogOptions

用于配置文件打开对话框行为的选项。

  • 注意 1:在 Windows 和 Linux 上,文件对话框不能同时是文件选择器和文件夹选择器。因此,如果您在这两个平台上都将 canSelectFilescanSelectFolders 设置为 true,则会显示文件夹选择器。
  • 注意 2:显式将 canSelectFilescanSelectFolders 设置为 false 是徒劳的,编辑器随后会静默调整选项以选择文件。

属性

允许选择文件,默认为 true

允许选择文件夹,默认为 false

允许选择多个文件或文件夹。

对话框打开时显示的资源。

一组由对话框使用的文件过滤器。每个条目都是一个可读的标签,例如“TypeScript”,以及一个扩展名数组,例如

{
    'Images': ['png', 'jpg'],
    'TypeScript': ['ts', 'tsx']
}

打开按钮的可读字符串。

对话框标题。

此参数可能会被忽略,因为并非所有操作系统都会在打开对话框时显示标题(例如 macOS)。

OutputChannel

输出通道是只读文本信息的容器。

要获取 OutputChannel 的实例,请使用 createOutputChannel

属性

此输出通道的*人类可读*名称。

方法

将给定值追加到通道。

参数描述
value: string

一个字符串,假值将不会被打印。

返回值描述
void

将给定值和换行符追加到通道。

参数描述
value: string

一个字符串,假值将被打印。

返回值描述
void

删除通道中的所有输出。

参数描述
返回值描述
void

释放并清理关联的资源。

参数描述
返回值描述
void

从 UI 中隐藏此通道。

参数描述
返回值描述
void

用给定值替换通道中的所有输出。

参数描述
value: string

一个字符串,假值将不会被打印。

返回值描述
void

在 UI 中显示此通道。

参数描述
preserveFocus?: boolean

true 时,通道将不获得焦点。

返回值描述
void

在 UI 中显示此通道。

  • 已弃用 - 请使用仅包含一个参数的重载(show(preserveFocus?: boolean): void)。
参数描述
column?: ViewColumn

此参数已*弃用*,将被忽略。

preserveFocus?: boolean

true 时,通道将不获得焦点。

返回值描述
void

OverviewRulerLane

表示在 概览标尺 中渲染装饰的不同位置。概览标尺支持三个车道。

枚举成员

概览标尺的左侧车道。

概览标尺的中心车道。

概览标尺的右侧车道。

概览标尺的所有车道。

ParameterInformation

表示可调用签名的参数。参数可以有标签和文档注释。

构造函数

创建一个新的参数信息对象。

参数描述
label: string | [number, number]

标签字符串或其包含的签名标签中的包含起始和独占结束偏移量。

documentation?: string | MarkdownString

文档字符串。

返回值描述
ParameterInformation

属性

此签名的可读文档注释。将在 UI 中显示,但可以省略。

此签名的标签。

字符串或包含起始和独占结束偏移量(在其包含的 签名标签 中)。*注意*:字符串类型的标签必须是其包含的签名信息 标签 的子字符串。

Position

表示行和字符位置,例如光标位置。

Position 对象是**不可变的**。使用 withtranslate 方法从现有位置派生新位置。

构造函数

参数描述
line: number

基于零的行值。

character: number

基于零的字符值。

返回值描述
Position

属性

基于零的字符值。

字符偏移量使用 UTF-16 代码单元 表示。

基于零的行值。

方法

other 进行比较。

参数描述
other: Position

一个位置。

返回值描述
number

如果此位置在给定位置之前,则返回一个小于零的数字;如果此位置在给定位置之后,则返回一个大于零的数字;如果此位置与给定位置相等,则返回零。

检查此位置是否在 other 之后。

参数描述
other: Position

一个位置。

返回值描述
布尔值

如果位置在更大的行上,或者在同一行上具有更大的字符,则为 true

检查此位置是否在 other 之后或等于 other

参数描述
other: Position

一个位置。

返回值描述
布尔值

如果位置在更大的行上,或者在同一行上具有更大的或等于的字符,则为 true

检查此位置是否在 other 之前。

参数描述
other: Position

一个位置。

返回值描述
布尔值

如果位置在更小的行上,或者在同一行上具有更小的字符,则为 true

检查此位置是否在 other 之前或等于 other

参数描述
other: Position

一个位置。

返回值描述
布尔值

如果位置在更小的行上,或者在同一行上具有更小或等于的字符,则为 true

检查此位置是否等于 other

参数描述
other: Position

一个位置。

返回值描述
布尔值

如果给定位置的行和字符与此位置的行和字符相等,则为 true

创建与此位置相关的 <$> other

参数描述
lineDelta?: number

行值的增量,默认为 0

characterDelta?: number

字符值的增量,默认为 0

返回值描述
Position

行和字符是当前行和字符以及相应增量之和的位置。

从此位置派生新位置。

参数描述
change: {characterDelta: number, lineDelta: number}

一个描述此位置增量的对象。

返回值描述
Position

反映给定增量的位置。如果更改未发生任何更改,将返回 this 位置。

从当前位置创建新的派生位置。

参数描述
line?: number

用作行值的[_]值,默认是现有值

character?: number

用作字符值的[_]值,默认是现有值

返回值描述
Position

行和字符被替换为给定值的位置。

从当前位置派生新位置。

参数描述
change: {character: number, line: number}

一个描述此位置更改的对象。

返回值描述
Position

反映给定更改的位置。如果更改未发生任何更改,将返回 this 位置。

PreparedToolInvocation

属性

此属性的存在表明在运行工具之前应征求用户确认。应征求用户确认任何有副作用或可能存在危险的工具。

运行工具时显示的自定义进度消息。

PrepareLanguageModelChatModelOptions

属性

用户是否应该通过某种 UI 流程被提示,还是模型应该尝试静默解析。如果 silent 为 true,由于缺乏 API 密钥等信息,可能不会解析所有模型。

ProcessExecution

任务的执行不通过 shell 进行,而是作为一个外部进程。

构造函数

创建进程执行。

参数描述
process: string

要启动的进程。

options?: ProcessExecutionOptions

启动进程的可选选项。

返回值描述
ProcessExecution

创建进程执行。

参数描述
process: string

要启动的进程。

args: string[]

要传递给进程的参数。

options?: ProcessExecutionOptions

启动进程的可选选项。

返回值描述
ProcessExecution

属性

传递给进程的参数。默认为空数组。

进程执行时使用的进程选项。默认为 undefined。

要执行的进程。

ProcessExecutionOptions

进程执行选项。

属性

要执行的程序或 shell 的当前工作目录。如果省略,则使用工具的当前工作区根目录。

执行程序或 Shell 的附加环境。如果省略,则使用父进程的环境。如果提供,则与父进程的环境合并。

Progress<T>

定义了一种通用的报告进度更新的方式。

方法

报告进度更新。

参数描述
value: T

一个进度项,例如消息和/或已完成工作的报告。

返回值描述
void

ProgressLocation

显示进度信息的编辑器位置。进度如何显示取决于位置。

枚举成员

在源代码控件视图中显示进度,作为图标的覆盖层,并在视图(可见时)中显示进度条。都不支持取消、离散进度或描述操作的标签。

在编辑器的状态栏中显示进度。都不支持取消或离散进度。支持通过进度标签中的 $(<name>) 语法渲染 主题图标

将进度显示为通知,并带有可选的取消按钮。支持显示无限和离散进度,但不支持渲染图标。

ProgressOptions

描述进度如何显示以及在哪里显示的数值对象。

属性

控制是否显示取消按钮,以便用户可以取消长时间运行的操作。请注意,目前只有 ProgressLocation.Notification 支持显示取消按钮。

显示进度的位置。

将用于描述操作的可读字符串。

ProvideLanguageModelChatResponseOptions

LanguageModelChatRequestOptions 的提供程序版本。

属性

一组控制语言模型行为的选项。这些选项特定于语言模型。

要使用的工具选择模式。提供程序必须实现并遵守此模式。

可选的工具列表,可供语言模型使用。这些可以是 lm.tools 中提供的已注册工具,也可以是仅在调用扩展中实现的私有工具。

如果 LLM 请求调用其中一个工具,它将在 LanguageModelChatResponse.stream 中返回一个 LanguageModelToolCallPart。调用者有责任调用该工具。如果是 lm.tools 中注册的工具,则意味着调用 lm.invokeTool

然后,可以通过创建具有 LanguageModelToolCallPart 的助手类型的 LanguageModelChatMessage,然后是一个具有 LanguageModelToolResultPart 的用户类型消息,将工具结果提供给 LLM。

ProviderResult<T>

提供程序结果代表提供程序(如 HoverProvider)可能返回的值。对于一次性结果,它是实际结果类型 T,例如 Hover,或者是一个解析为该类型 T 的 thenable。此外,可以返回 nullundefined - 直接返回或从 thenable 返回。

下面的代码片段都是 HoverProvider 的有效实现。

let a: HoverProvider = {
  provideHover(doc, pos, token): ProviderResult<Hover> {
    return new Hover('Hello World');
  }
};

let b: HoverProvider = {
  provideHover(doc, pos, token): ProviderResult<Hover> {
    return new Promise(resolve => {
      resolve(new Hover('Hello World'));
    });
  }
};

let c: HoverProvider = {
  provideHover(doc, pos, token): ProviderResult<Hover> {
    return; // undefined
  }
};

Pseudoterminal

定义终端 pty 的接口,使扩展能够控制终端。

事件

一个事件,触发时允许更改终端的名称。

在调用 Pseudoterminal.open 之前触发的事件将被忽略。

示例:将终端名称更改为“我的新终端”。

const writeEmitter = new vscode.EventEmitter<string>();
const changeNameEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
  onDidWrite: writeEmitter.event,
  onDidChangeName: changeNameEmitter.event,
  open: () => changeNameEmitter.fire('My new terminal'),
  close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });

一个事件,触发时将发出 pty 已关闭的信号并处理终端。

在调用 Pseudoterminal.open 之前触发的事件将被忽略。

可以使用数字来提供终端的退出代码。退出代码必须是正数,非零退出代码表示失败,这会为常规终端显示通知,并在与 CustomExecution API 结合使用时允许依赖任务继续执行。

示例:按下“y”时退出终端,否则显示通知。

const writeEmitter = new vscode.EventEmitter<string>();
const closeEmitter = new vscode.EventEmitter<void>();
const pty: vscode.Pseudoterminal = {
  onDidWrite: writeEmitter.event,
  onDidClose: closeEmitter.event,
  open: () => writeEmitter.fire('Press y to exit successfully'),
  close: () => {},
  handleInput: data => {
    if (data !== 'y') {
      vscode.window.showInformationMessage('Something went wrong');
    }
    closeEmitter.fire();
  }
};
const terminal = vscode.window.createTerminal({ name: 'Exit example', pty });
terminal.show(true);

一个事件,触发时允许覆盖终端的 dimensions。请注意,设置后,覆盖的尺寸只有在小于终端的实际尺寸时才会生效(即永远不会出现滚动条)。设置为 undefined 以使终端恢复到常规尺寸(适应面板大小)。

在调用 Pseudoterminal.open 之前触发的事件将被忽略。

示例:将终端的尺寸覆盖为 20 列和 10 行。

const dimensionsEmitter = new vscode.EventEmitter<vscode.TerminalDimensions>();
const pty: vscode.Pseudoterminal = {
  onDidWrite: writeEmitter.event,
  onDidOverrideDimensions: dimensionsEmitter.event,
  open: () => {
    dimensionsEmitter.fire({
      columns: 20,
      rows: 10
    });
  },
  close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });

一个事件,触发时会将数据写入终端。与将文本发送到底层伪设备(子设备)的 Terminal.sendText 不同,此事件会将文本写入父伪设备(终端本身)。

请注意,写入 \n 只会将光标向下移动一行,您还需要写入 \r 才能将光标移动到最左边的单元格。

在调用 Pseudoterminal.open 之前触发的事件将被忽略。

示例:将红色文本写入终端。

const writeEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
  onDidWrite: writeEmitter.event,
  open: () => writeEmitter.fire('\x1b[31mHello world\x1b[0m'),
  close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });

示例:将光标移动到第 10 行第 20 列并写入一个星号。

writeEmitter.fire('\x1b[10;20H*');

方法

实现此方法以处理用户关闭终端时的事件。

参数描述
返回值描述
void

实现此方法以处理终端中的按键输入,或当扩展调用 Terminal.sendText 时。data 包含已序列化为相应 VT 序列表示的按键/文本。

参数描述
data: string

输入数据。

示例:在终端中回显输入。回车符(\r)的序列被转换为 CRLF 以转到新行并将光标移到行首。

const writeEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
  onDidWrite: writeEmitter.event,
  open: () => {},
  close: () => {},
  handleInput: data => writeEmitter.fire(data === '\r' ? '\r\n' : data)
};
vscode.window.createTerminal({ name: 'Local echo', pty });
返回值描述
void

实现此方法以处理 pty 打开并准备好触发事件的情况。

参数描述
initialDimensions: TerminalDimensions

终端的尺寸,如果终端面板在此调用之前尚未打开,则此值为 undefined。

返回值描述
void

实现此方法以处理终端面板中的行数和列数发生变化的情况,例如字体大小更改或面板大小调整。终端的初始尺寸应视为 undefined,直到此方法被触发,因为终端的大小在显示在用户界面之前是未知的。

当尺寸被 onDidOverrideDimensions 覆盖时,setDimensions 将继续使用常规面板尺寸被调用,允许扩展继续响应尺寸变化。

参数描述
dimensions: TerminalDimensions

新的尺寸。

返回值描述
void

QuickDiffProvider

Quick diff provider 提供一个 uri 到已修改资源的原始状态。编辑器将使用此信息在文本中渲染临时 diff。

方法

为任何给定的资源 uri 提供一个 Uri 到原始资源。

参数描述
uri: Uri

在文本编辑器中打开的资源的 uri。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<Uri>

一个 thenable,它解析为匹配的原始资源的 uri。

QuickInput

所有快速输入类型的基本接口。

快速输入为扩展提供了一种通过简单的 UI 元素与用户进行交互的统一方式。快速输入 UI 最初是不可见的。在通过其属性配置它之后,扩展可以通过调用 show 来使其可见。

此 UI 可能需要隐藏的原因有多种,扩展会通过 onDidHide 收到通知。例如:显式调用 hide、用户按下 Esc、打开其他输入 UI 等。

用户按下 Enter 或其他暗示接受当前状态的手势不会自动隐藏此 UI 组件。是否接受用户输入以及是否应通过调用 hide 来隐藏 UI,这取决于扩展。

当扩展不再需要此输入 UI 时,它应 dispose 它,以便释放与之相关的任何资源。

有关具体的 UI,请参阅 QuickPickInputBox

事件

当此输入 UI 隐藏时触发的事件。

此 UI 可能需要隐藏的原因有多种,扩展会通过 onDidHide 收到通知。例如:显式调用 hide、用户按下 Esc、打开其他输入 UI 等。

属性

确定 UI 是否应显示进度指示器。默认为 false

例如,在加载更多数据或验证用户输入时,将此值更改为 true

确定 UI 是否应允许用户输入。默认为 true

例如,在验证用户输入或为用户输入的下一步加载数据时,将此值更改为 false

确定 UI 在失去焦点时是否应保持打开状态。默认为 false。此设置在 iPad 上被忽略,始终为 false

多步输入流程的可选当前步数。

输入 UI 的可选标题。

多步输入流程的可选总步数。

方法

销毁此输入 UI 和任何关联的资源。

如果它仍然可见,它将被首先隐藏。在此调用之后,输入 UI 将不再起作用,并且不应再访问其任何方法或属性。应该创建一个新的输入 UI。

参数描述
返回值描述
void

隐藏此输入 UI。

这将触发一个 onDidHide 事件。

参数描述
返回值描述
void

以其当前配置使输入 UI 可见。

任何其他输入 UI 将首先触发一个 onDidHide 事件。

参数描述
返回值描述
void

QuickInputButton

QuickPickInputBox 的操作按钮。

属性

按钮的图标。

鼠标悬停在按钮上时显示的可选工具提示。

QuickInputButtons

QuickPickInputBox 的预定义按钮。

静态

QuickPickInputBox 的预定义后退按钮。

此按钮应在需要导航后退按钮时使用,以保持一致性。它带有预定义的图标、工具提示和位置。

QuickPick<T>

一个具体的 QuickInput,让用户从 T 类型项目的列表中进行选择。

项目可以通过过滤文本字段进行过滤,并且有一个 canSelectMany 选项允许选择多个项目。

请注意,在许多情况下,更方便的 window.showQuickPick 更容易使用。window.createQuickPick 应在 window.showQuickPick 未提供所需灵活性时使用。

事件

一个事件,表示用户已接受所选项目。

一个事件,表示当前活动的项目已更改。

一个事件,表示已选择的项目已更改。

一个事件,表示过滤文本的值已更改。

当此输入 UI 隐藏时触发的事件。

此 UI 可能需要隐藏的原因有多种,扩展会通过 onDidHide 收到通知。例如:显式调用 hide、用户按下 Esc、打开其他输入 UI 等。

当按钮被触发时触发的事件。

buttons 数组中存储的按钮被触发时,此事件会触发。此事件不会为 QuickPickItem 上的按钮触发。

一个事件,表示 QuickPickItem 中的某个按钮被触发。

此事件不会为标题栏中的按钮触发,这些按钮是 buttons 的一部分。

属性

当前活动的项目。扩展可以读取和更新此项。

确定 UI 是否应显示进度指示器。默认为 false

例如,在加载更多数据或验证用户输入时,将此值更改为 true

UI 中操作的按钮。

确定是否可以同时选择多个项目。默认为 false

确定 UI 是否应允许用户输入。默认为 true

例如,在验证用户输入或为用户输入的下一步加载数据时,将此值更改为 false

确定 UI 在失去焦点时是否应保持打开状态。默认为 false。此设置在 iPad 上被忽略,始终为 false

可供选择的项目。扩展可以读取和更新此项。

确定在快速选择项目更新时是否保持滚动位置。默认为 false

确定过滤文本是否也应与项目的 description 进行匹配。默认为 false

确定过滤文本是否也应与项目的 detail 进行匹配。默认为 false

当没有输入值时,在过滤文本框中显示的占位符文本。

提供给用户说明或上下文的可选文本。

提示显示在输入框下方和项目列表上方。

已选中的项目。扩展可以读取和更新此项。

多步输入流程的可选当前步数。

输入 UI 的可选标题。

多步输入流程的可选总步数。

过滤文本的当前值。

方法

销毁此输入 UI 和任何关联的资源。

如果它仍然可见,它将被首先隐藏。在此调用之后,输入 UI 将不再起作用,并且不应再访问其任何方法或属性。应该创建一个新的输入 UI。

参数描述
返回值描述
void

隐藏此输入 UI。

这将触发一个 onDidHide 事件。

参数描述
返回值描述
void

以其当前配置使输入 UI 可见。

任何其他输入 UI 将首先触发一个 onDidHide 事件。

参数描述
返回值描述
void

QuickPickItem

代表可以从项目列表中选择的一个项目。

属性

确定此项目是否始终显示,即使被用户输入过滤掉。

注意:kind 设置为 QuickPickItemKind.Separator 时,此属性将被忽略。

将在此特定项目上渲染的可选按钮。

按下这些按钮将触发一个 QuickPickItemButtonEvent。只有在使用 createQuickPick API 创建的快速选择器时才会渲染按钮。使用 showQuickPick API 时不会渲染按钮。

注意:kind 设置为 QuickPickItemKind.Separator 时,此属性将被忽略。

一行中不那么显眼地显示的直观字符串。

支持通过 $(<name>) 语法渲染 主题图标

注意:kind 设置为 QuickPickItemKind.Separator 时,此属性将被忽略。

单独一行中不那么显眼地显示的直观字符串。

支持通过 $(<name>) 语法渲染 主题图标

注意:kind 设置为 QuickPickItemKind.Separator 时,此属性将被忽略。

项目的图标。

此项目的种类,决定了它在快速选择器中的渲染方式。

未指定时,默认为 QuickPickItemKind.Default

醒目显示的直观字符串。

支持通过 $(<name>) 语法渲染 主题图标

注意:kind 设置为 QuickPickItemKind.Default(即普通项目而不是分隔符)时,它支持通过 $(<name>) 语法渲染 主题图标

可选标志,指示此项目是否被初始选中。

这仅在使用 showQuickPick API 时生效。要使用 createQuickPick API 实现相同的功能,只需将 selectedItems 设置为要初始选择的项目即可。

注意:这仅在选择器允许多选时生效。

另请参阅 QuickPickOptions.canPickMany

注意:kind 设置为 QuickPickItemKind.Separator 时,此属性将被忽略。

与此项目关联的资源的 Uri

设置后,此属性用于自动派生多个项目属性,如果它们没有被明确提供的话。

QuickPickItemButtonEvent<T>

描述按下 QuickPickItem 按钮的事件。

属性

按下的按钮。

按钮所属的项目。

QuickPickItemKind

定义 quick pick item 的种类。

枚举成员

一个分隔符项目,提供视觉分组。

QuickPickItem 的种类为 Separator 时,该项目仅作为视觉分隔符,不代表可选择的项目。唯一适用的属性是 labelQuickPickItem 上的所有其他属性将被忽略且无效。

可选择的快速选择器项目的默认种类。

QuickPickOptions

用于配置快速选择 UI 行为的选项。

事件

选择项目时可选调用的函数。

参数描述
item: string | QuickPickItem
返回值描述
any

属性

确定选择器是否允许多选。如果为 true,则结果是一个项目数组。

设置为 true 以便在焦点移至编辑器其他部分或另一个窗口时保持选择器打开。此设置在 iPad 上被忽略,并且始终为 false

确定过滤项目时是否应包含 description。默认为 false

确定过滤项目时是否应包含 detail。默认为 false

一个可选字符串,用于在输入框中显示为占位符,以指导用户。

提供给用户说明或上下文的可选文本。

提示显示在输入框下方和项目列表上方。

快速选择的可选标题。

Range

Range 表示两个位置的有序对。保证 start.isBeforeOrEqual(end)

Range 对象是不可变的。使用 withintersectionunion 方法从现有 Range 中派生新的 Range。

构造函数

从两个位置创建新的 Range。如果 start 不小于或等于 end,则值将被交换。

参数描述
start: Position

一个位置。

end: Position

一个位置。

返回值描述
Range

从数字坐标创建新的 Range。它是使用 new Range(new Position(startLine, startCharacter), new Position(endLine, endCharacter)) 的简写。

参数描述
startLine: number

基于零的行值。

startCharacter: number

基于零的字符值。

endLine: number

基于零的行值。

endCharacter: number

基于零的字符值。

返回值描述
Range

属性

结束位置。它不小于或等于 start

如果 startend 相等,则为 true

如果 start.lineend.line 相等,则为 true

开始位置。它不大于或等于 end

方法

检查一个位置或一个范围是否包含在此范围内。

参数描述
positionOrRange: Range | Position

一个位置或一个范围。

返回值描述
布尔值

如果该位置或范围在此范围内或等于此范围,则为 true

range 与此范围相交,并返回一个新的范围,如果范围没有重叠,则返回 undefined

参数描述
range: Range

一个范围。

返回值描述
Range

具有较大开始位置和较小结束位置的范围。当没有重叠时,返回 undefined。

检查 other 是否等于此范围。

参数描述
other: Range

一个范围。

返回值描述
布尔值

当开始和结束位置与此范围的开始和结束位置相等时,为 true

计算 other 与此范围的并集。

参数描述
other: Range

一个范围。

返回值描述
Range

具有较小开始位置和较大结束位置的范围。

从此范围派生新的范围。

参数描述
start?: Position

应作为开始位置使用的位置。默认值为当前开始位置。

end?: Position

应作为结束位置使用的位置。默认值为当前结束位置。

返回值描述
Range

从此范围派生的新范围,具有给定的开始和结束位置。如果开始和结束位置没有不同,则将返回this范围。

从此范围派生新的范围。

参数描述
change: {end: Position, start: Position}

一个描述此范围更改的对象。

返回值描述
Range

反映给定更改的范围。如果更改未发生任何变化,将返回 this 范围。

ReferenceContext

在请求引用时包含附加信息的 Value-object。

属性

包含当前符号的声明。

ReferenceProvider

引用提供程序接口定义了扩展和查找引用功能之间的契约。

方法

为给定位置和文档提供一组项目范围的引用。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

context: ReferenceContext

有关引用的请求的附加信息。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<Location[]>

位置数组或解析为该数组的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

RelativePattern

RelativePattern 是一个辅助工具,用于构造相对于基本文件路径匹配的 glob 模式。基本路径可以是字符串或 uri 格式的绝对文件路径,也可以是 工作区文件夹,这是创建相对模式的首选方式。

构造函数

使用基本文件路径和要匹配的模式创建新的相对模式对象。此模式将根据基本路径进行匹配。

示例

const folder = vscode.workspace.workspaceFolders?.[0];
if (folder) {
  // Match any TypeScript file in the root of this workspace folder
  const pattern1 = new vscode.RelativePattern(folder, '*.ts');

  // Match any TypeScript file in `someFolder` inside this workspace folder
  const pattern2 = new vscode.RelativePattern(folder, 'someFolder/*.ts');
}
参数描述
base: string | Uri | WorkspaceFolder

将与此模式相对匹配的基础。建议传入 工作区文件夹,如果模式应在工作区内匹配。否则,只有当模式用于工作区外的文件路径时,才应使用 uri 或字符串。

pattern: string

一个文件 glob 模式,例如 *.{ts,js},它将在相对于基础的路径上进行匹配。

返回值描述
RelativePattern

属性

将与此模式相对匹配的基础文件路径。

这与 RelativePattern.baseUrifsPath 值匹配。

注意:更新此值将把 RelativePattern.baseUri 更新为一个具有 file 方案的 uri。

将与此模式相对匹配的基础文件路径。文件路径必须是绝对路径,不应有任何尾随路径分隔符,也不应包含任何相对段(...)。

一个文件 glob 模式,例如 *.{ts,js},它将在相对于基础路径的文件路径上进行匹配。

示例:给定基础路径为 /home/work/folder,文件路径为 /home/work/folder/index.js,文件 glob 模式将匹配 index.js

RenameProvider

重命名提供程序接口定义了扩展和重命名功能之间的契约。

方法

可选函数,用于在运行重命名之前解析和验证位置。结果可以是范围,也可以是范围和占位符文本。占位符文本应该是正在重命名的符号的标识符 - 如果省略,则使用返回范围中的文本。

注意:如果提供的位置不允许重命名,则此函数应抛出错误或返回被拒绝的 thenable。

参数描述
document: TextDocument

将调用重命名操作的文档。

position: Position

将调用重命名操作的位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<Range | {placeholder: string, range: Range}>

要重命名的标识符的范围或范围和占位符文本。可以通过返回 undefinednull 来表示缺少结果。

提供一个描述要对一个或多个资源进行的更改的编辑,以将符号重命名为另一个名称。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

newName: string

符号的新名称。如果提供的名称无效,则提供程序必须返回一个已拒绝的 Promise。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<WorkspaceEdit>

工作区编辑或解析为该编辑的 thenable。可以通过返回 undefinednull 来表示缺少结果。

RunOptions

任务的运行选项。

属性

控制在重新运行时是否重新评估任务变量。

SaveDialogOptions

配置文件保存对话框行为的选项。

属性

对话框打开时显示的资源。

一组由对话框使用的文件过滤器。每个条目都是一个可读的标签,例如“TypeScript”,以及一个扩展名数组,例如

{
    'Images': ['png', 'jpg'],
    'TypeScript': ['ts', 'tsx']
}

保存按钮的可读字符串。

对话框标题。

此参数可能会被忽略,因为并非所有操作系统都会在保存对话框中显示标题(例如,macOS)。

SecretStorage

表示用于存储秘密(或任何敏感信息)的存储实用程序,这些秘密将以加密方式存储。秘密存储的实现将在每个平台上有所不同,并且秘密不会在机器之间同步。

事件

当秘密被存储或删除时触发。

方法

从存储中删除一个秘密。

参数描述
key: string

存储秘密的键。

返回值描述
Thenable<void>

检索使用键存储的秘密。如果不存在与该键匹配的密码,则返回 undefined。

参数描述
key: string

存储秘密的键。

返回值描述
Thenable<string>

存储的值或 undefined

检索此扩展存储的所有秘密的键。

参数描述
返回值描述
Thenable<string[]>

在给定键下存储一个秘密。

参数描述
key: string

存储秘密的键。

value: string

秘密。

返回值描述
Thenable<void>

SecretStorageChangeEvent

添加或删除秘密时触发的事件数据。

属性

已更改的秘密的键。

SelectedCompletionInfo

描述当前选中的完成项。

属性

如果接受此完成项,将被替换的范围。

如果接受此完成项,将被替换的范围的文本。

Selection

表示编辑器中的文本选择。

构造函数

从两个位置创建选择。

参数描述
anchor: Position

一个位置。

active: Position

一个位置。

返回值描述
Selection

从四个坐标创建选择。

参数描述
anchorLine: number

基于零的行值。

anchorCharacter: number

基于零的字符值。

activeLine: number

基于零的行值。

activeCharacter: number

基于零的字符值。

返回值描述
Selection

属性

光标位置。此位置可能在 anchor 之前或之后。

选择开始的位置。此位置可能在 active 之前或之后。

结束位置。它不小于或等于 start

如果 startend 相等,则为 true

如果其 anchorend 位置,则选择被视为反转。

如果 start.lineend.line 相等,则为 true

开始位置。它不大于或等于 end

方法

检查一个位置或一个范围是否包含在此范围内。

参数描述
positionOrRange: Range | Position

一个位置或一个范围。

返回值描述
布尔值

如果该位置或范围在此范围内或等于此范围,则为 true

range 与此范围相交,并返回一个新的范围,如果范围没有重叠,则返回 undefined

参数描述
range: Range

一个范围。

返回值描述
Range

具有较大开始位置和较小结束位置的范围。当没有重叠时,返回 undefined。

检查 other 是否等于此范围。

参数描述
other: Range

一个范围。

返回值描述
布尔值

当开始和结束位置与此范围的开始和结束位置相等时,为 true

计算 other 与此范围的并集。

参数描述
other: Range

一个范围。

返回值描述
Range

具有较小开始位置和较大结束位置的范围。

从此范围派生新的范围。

参数描述
start?: Position

应作为开始位置使用的位置。默认值为当前开始位置。

end?: Position

应作为结束位置使用的位置。默认值为当前结束位置。

返回值描述
Range

从此范围派生的新范围,具有给定的开始和结束位置。如果开始和结束位置没有不同,则将返回this范围。

从此范围派生新的范围。

参数描述
change: {end: Position, start: Position}

一个描述此范围更改的对象。

返回值描述
Range

反映给定更改的范围。如果更改未发生任何变化,将返回 this 范围。

SelectionRange

SelectionRange 表示选择层次结构的一部分。SelectionRange 可能有一个包含它的父 SelectionRange。

构造函数

创建新的 SelectionRange。

参数描述
range: Range

SelectionRange 的范围。

parent?: SelectionRange

SelectionRange 的父级。

返回值描述
SelectionRange

属性

包含此范围的父 SelectionRange。

此 SelectionRange 的 Range

SelectionRangeProvider

SelectionRangeProvider 接口定义了扩展和“扩展和收缩选择”功能之间的契约。

方法

为给定位置提供选择范围。

应为每个位置单独计算选择范围,并且互不影响。编辑器将合并和去重范围,但提供程序必须返回选择范围的层次结构,以便一个范围被其父级包含

参数描述
document: TextDocument

调用命令的文档。

positions: readonly Position[]

调用命令的位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<SelectionRange[]>

选择范围或解析为该范围的 thenable。可以通过返回 undefinednull 来表示缺少结果。

SemanticTokens

表示语义令牌,可以在范围或整个文档中。

另请参阅

构造函数

创建新的语义令牌。

参数描述
data: Uint32Array

令牌数据。

resultId?: string

结果标识符。

返回值描述
SemanticTokens

属性

实际的令牌数据。

有关格式的说明,请参阅 provideDocumentSemanticTokens

令牌的结果 ID。

这将是传递给 DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits(如果已实现)的 ID。

SemanticTokensBuilder

SemanticTokensBuilder 可以帮助创建包含增量编码的语义令牌的 SemanticTokens 实例。

构造函数

创建语义令牌构建器。

参数描述
legend?: SemanticTokensLegend

语义令牌图例。

返回值描述
SemanticTokensBuilder

方法

完成并创建一个 SemanticTokens 实例。

参数描述
resultId?: string
返回值描述
SemanticTokens

添加另一个令牌。

参数描述
line: number

令牌开始行号(绝对值)。

char: number

令牌开始字符(绝对值)。

length: number

令牌长度(字符数)。

tokenType: number

编码的令牌类型。

tokenModifiers?: number

编码的令牌修饰符。

返回值描述
void

添加另一个令牌。仅在提供图例时使用。

参数描述
range: Range

令牌的范围。必须是单行。

tokenType: string

令牌类型。

tokenModifiers?: readonly string[]

令牌修饰符。

返回值描述
void

SemanticTokensEdit

表示对语义令牌的编辑。

另请参见 provideDocumentSemanticTokensEdits 以获取格式说明。

构造函数

创建语义令牌编辑。

参数描述
start: number

起始偏移量

deleteCount: number

要删除的元素数量。

data?: Uint32Array

要插入的元素

返回值描述
SemanticTokensEdit

属性

要插入的元素。

要删除的元素数量。

编辑的起始偏移量。

SemanticTokensEdits

表示对语义令牌的编辑。

另请参见 provideDocumentSemanticTokensEdits 以获取格式说明。

构造函数

创建新的语义令牌编辑。

参数描述
edits: SemanticTokensEdit[]

语义令牌编辑数组

resultId?: string

结果标识符。

返回值描述
SemanticTokensEdits

属性

对令牌数据的编辑。所有编辑都引用初始数据状态。

令牌的结果 ID。

这将是传递给 DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits(如果已实现)的 ID。

SemanticTokensLegend

语义令牌图例包含了解码语义令牌整数编码表示所需的信息。

构造函数

创建语义令牌图例。

参数描述
tokenTypes: string[]

令牌类型数组。

tokenModifiers?: string[]

令牌修饰符数组。

返回值描述
SemanticTokensLegend

属性

可能的令牌修饰符。

可能的令牌类型。

ShellExecution

表示在 shell 中执行的任务。

构造函数

使用完整的命令行创建 shell 执行。

参数描述
commandLine: string

要执行的命令。

options?: ShellExecutionOptions

启动 shell 的可选选项。

返回值描述
ShellExecution

使用命令和参数创建 shell 执行。对于实际执行,编辑器将从命令和参数构建命令行。这会受到解释的影响,尤其是在引用方面。如果需要完全控制命令行,请使用创建带完整命令行的 ShellExecution 的构造函数。

参数描述
command: string | ShellQuotedString

要执行的命令。

args: Array<string | ShellQuotedString>

命令参数。

options?: ShellExecutionOptions

启动 shell 的可选选项。

返回值描述
ShellExecution

属性

shell 参数。如果使用完整命令行创建,则为 undefined

shell 命令。如果使用命令和参数创建,则为 undefined

shell 命令行。如果使用命令和参数创建,则为 undefined

在 shell 中执行命令时使用的 shell 选项。默认为 undefined。

ShellExecutionOptions

shell 执行选项

属性

执行 shell 的当前工作目录。如果省略,则使用工具的当前工作区根目录。

执行 shell 的附加环境。如果省略,则使用父进程的环境。如果提供,则与父进程的环境合并。

shell 可执行文件。

要传递给用于运行任务的 shell 可执行文件的参数。大多数 shell 需要特殊参数来执行命令。例如,bash 需要 -c 参数来执行命令,PowerShell 需要 -Command,而 cmd 需要 /d/c

此 shell 支持的 shell 引用。

ShellQuotedString

一个字符串,它将根据使用的 shell 进行引用。

属性

要使用的引用样式。

实际字符串值。

ShellQuoting

定义一个参数如何被引用,如果它包含空格或不支持的字符。

枚举成员

应使用字符转义。例如,在 bash 中使用 \,在 PowerShell 中使用 `。

应使用强字符串引用。例如,在 Windows cmd 中使用 ",在 bash 和 PowerShell 中使用 '。强引用将参数视为文字字符串。在 PowerShell 中,echo 'The value is $(2 * 3)' 将打印 The value is $(2 * 3)

应使用弱字符串引用。例如,在 Windows cmd、bash 和 PowerShell 中使用 "。弱引用仍在引用的字符串内部执行某种评估。在 PowerShell 中,echo "The value is $(2 * 3)" 将打印 The value is 6

ShellQuotingOptions

shell 引用选项。

属性

用于字符转义的字符。如果提供字符串,则仅转义空格。如果提供 { escapeChar, charsToEscape } 字面量,则使用 escapeChar 转义 charsToEscape 中的所有字符。

用于强引用的字符。字符串长度必须为 1。

用于弱引用的字符。字符串长度必须为 1。

SignatureHelp

Signature help 表示可调用项的签名。可以有多个签名,但只有一个活动签名和一个活动参数。

构造函数

参数描述
返回值描述
SignatureHelp

属性

活动签名的活动参数。

活动签名。

一个或多个签名。

SignatureHelpContext

关于触发 SignatureHelpProvider 的上下文的附加信息。

属性

当前活动的 SignatureHelp

activeSignatureHelpactiveSignature 字段会根据用户在可用签名中导航而更新。

如果签名帮助已在显示时被触发,则为 true

重新触发发生在签名帮助已激活时,并且可能由键入触发字符、光标移动或文档内容更改等操作引起。

导致签名帮助被触发的字符。

当签名帮助不是通过键入触发时(例如,手动调用签名帮助或移动光标时),此值为 undefined

导致签名帮助被触发的操作。

SignatureHelpProvider

Signature help provider 接口定义了扩展与 [参数提示](https://vscode.js.cn/docs/editor/intellisense) 功能之间的契约。

方法

为给定位置和文档的签名提供帮助。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

context: SignatureHelpContext

有关签名帮助如何被触发的信息。

返回值描述
ProviderResult<SignatureHelp>

签名帮助或可解析为签名帮助的 thenable。可以通过返回 undefinednull 来表示缺少结果。

SignatureHelpProviderMetadata

有关已注册的 SignatureHelpProvider 的元数据。

属性

重新触发签名帮助的字符列表。

这些触发字符仅在签名帮助已显示时才激活。所有触发字符也被计为重新触发字符。

触发签名帮助的字符列表。

SignatureHelpTriggerKind

SignatureHelpProvider 如何被触发。

枚举成员

签名帮助由用户或命令手动调用。

签名帮助由触发字符触发。

签名帮助由光标移动或文档内容更改触发。

SignatureInformation

表示可调用项的签名。签名可以有一个标签(如函数名)、一个文档注释和一个参数集。

构造函数

创建一个新的签名信息对象。

参数描述
label: string

一个标签字符串。

documentation?: string | MarkdownString

文档字符串。

返回值描述
SignatureInformation

属性

活动参数的索引。

如果提供,则此参数将替代 SignatureHelp.activeParameter

此签名的可读文档注释。将在 UI 中显示,但可以省略。

此签名的标签。将在 UI 中显示。

此签名的参数。

SnippetString

Snippet string 是一个模板,允许插入文本并控制插入时的编辑器光标。

Snippet 可以使用 $1$2${3:foo} 定义制表位和占位符。$0 定义最终制表位,它默认为 snippet 的末尾。变量使用 $name${name:default value} 定义。另请参阅 [完整的 snippet 语法](https://vscode.js.cn/docs/editor/userdefinedsnippets#_create-your-own-snippets)。

构造函数

创建新的 snippet 字符串。

参数描述
value?: string

一个 snippet 字符串。

返回值描述
SnippetString

属性

snippet 字符串。

方法

用于将选项(${1|a,b,c|})附加到此 snippet 字符串的 value 的构建器函数。

参数描述
values: readonly string[]

选项的值 - 字符串数组

number?: number

此制表位编号,默认为从 1 开始的自动递增值。

返回值描述
SnippetString

此 snippet 字符串。

用于将占位符(${1:value})附加到此 snippet 字符串的 value 的构建器函数。

参数描述
value: string | (snippet: SnippetString) => any

此占位符的值 - 可以是字符串,也可以是用于创建嵌套 snippet 的函数。

number?: number

此制表位编号,默认为从 1 开始的自动递增值。

返回值描述
SnippetString

此 snippet 字符串。

用于将制表位($1$2 等)附加到此 snippet 字符串的 value 的构建器函数。

参数描述
number?: number

此制表位编号,默认为从 1 开始的自动递增值。

返回值描述
SnippetString

此 snippet 字符串。

用于将给定字符串按原样附加到此 snippet 字符串的 value 的构建器函数。

参数描述
string: string

要“按原样”附加的值。该字符串将被转义。

返回值描述
SnippetString

此 snippet 字符串。

用于将变量(${VAR})附加到此 snippet 字符串的 value 的构建器函数。

参数描述
name: string

变量的名称 - 不包括 $

defaultValue: string | (snippet: SnippetString) => any

变量名称无法解析时使用的默认值 - 可以是字符串,也可以是用于创建嵌套 snippet 的函数。

返回值描述
SnippetString

此 snippet 字符串。

SnippetTextEdit

Snippet edit 表示由编辑器执行的交互式编辑。

请注意,Snippet edit 始终可以作为普通 text edit 执行。当没有匹配的编辑器打开时,或者当 workspace edit 包含多个文件的 snippet edits 时,会发生这种情况。在这种情况下,只有与活动编辑器匹配的才会作为 snippet edits 执行,其他则作为普通文本 edits 执行。

静态

创建插入 snippet edit 的实用程序。

参数描述
position: Position

一个位置,它将成为一个空范围。

snippet: SnippetString

一个 snippet 字符串。

返回值描述
SnippetTextEdit

一个新的 snippet edit 对象。

创建替换 snippet edit 的实用程序。

参数描述
range: Range

一个范围。

snippet: SnippetString

一个 snippet 字符串。

返回值描述
SnippetTextEdit

一个新的 snippet edit 对象。

构造函数

创建新的 snippet edit。

参数描述
range: Range

一个范围。

snippet: SnippetString

一个 snippet 字符串。

返回值描述
SnippetTextEdit

属性

是否应在保留现有空格的情况下应用 snippet edit。

此编辑适用的范围。

此编辑将执行的 snippet

SourceBreakpoint

由源位置指定的断点。

构造函数

为源位置创建新断点。

参数描述
location: Location
enabled?: boolean
condition?: string
hitCondition?: string
logMessage?: string
返回值描述
SourceBreakpoint

属性

用于条件断点的可选表达式。

断点是否启用。

一个可选的表达式,用于控制忽略断点的命中次数。

断点的唯一 ID。

此断点的源和行位置。

命中此断点时要记录的可选消息。{} 中的嵌入表达式由调试适配器进行插值。

SourceControl

SourceControl 能够向编辑器提供资源状态,并以几种与源代码管理相关的方式与编辑器进行交互。

属性

可选的 accept 输入命令。

当用户接受源控件输入中的值时,将调用此命令。

可选的提交模板字符串。

将在适当时,Source Control 视图将此值填充到 Source Control 输入框中。

此源控件的资源状态的 UI 可见计数。

如果未定义,此源控件将

  • 显示其 UI 可见计数为零,并将
  • 资源状态的计数贡献给所有源控件的 UI 可见聚合计数。

此源控件的 ID。

此源控件的输入框

此源控件的易读标签。

此源控件根的(可选)URI。

可选的状态栏命令。

这些命令将在编辑器的状态栏中显示。

方法

创建一个新的资源组

参数描述
id: string
label: string
返回值描述
SourceControlResourceGroup

释放此源控件。

参数描述
返回值描述
void

SourceControlInputBox

表示 Source Control 视图中的输入框。

属性

控制输入框是否启用(默认为 true)。

在输入框中显示的占位符字符串,用于指导用户。

用于设置和获取输入框内容的 setter 和 getter。

控制输入框是否可见(默认为 true)。

SourceControlResourceDecorations

一个源控件资源状态的装饰。可以为亮色和暗色主题独立指定。

属性

暗色主题装饰。

是否应在 UI 中淡化源控件资源状态

特定源控件资源状态的图标路径。

亮色主题装饰。

是否应在 UI 中删除源控件资源状态的文字。

特定源控件资源状态的标题。

SourceControlResourceGroup

源控件资源组是源控件资源状态的集合。

属性

资源组的上下文值。这可以用于贡献特定于资源组的操作。例如,如果一个资源组的上下文值是 exportable,当使用 menus 扩展点向 scm/resourceGroup/context 贡献操作时,您可以在 when 表达式中为 scmResourceGroupState 键指定上下文值,例如 scmResourceGroupState == exportable

"contributes": {
  "menus": {
    "scm/resourceGroup/context": [
      {
        "command": "extension.export",
        "when": "scmResourceGroupState == exportable"
      }
    ]
  }
}

这将仅为上下文值等于 exportable 的资源组显示操作 extension.export

当此源控件资源组不包含任何源控件资源状态时,是否隐藏它。

此源控件资源组的 ID。

此源控件资源组的标签。

此组的源控件资源状态集合。

方法

释放此源控件资源组。

参数描述
返回值描述
void

SourceControlResourceState

源控件资源状态表示在某个源控件组中工作区资源的底层状态。

属性

当资源状态在 Source Control 视图中打开时,应运行的命令

资源状态的上下文值。这可以用于贡献特定于资源的操作。例如,如果一个资源被赋予了 diffable 的上下文值。当使用 menus 扩展点向 scm/resourceState/context 贡献操作时,您可以在 when 表达式中为 scmResourceState 键指定上下文值,例如 scmResourceState == diffable

"contributes": {
  "menus": {
    "scm/resourceState/context": [
      {
        "command": "extension.diff",
        "when": "scmResourceState == diffable"
      }
    ]
  }
}

这将仅为上下文值是 diffable 的资源显示操作 extension.diff

此源控件资源状态的装饰

工作区中底层资源的URI

SourceControlResourceThemableDecorations

一个源控件资源状态的主题感知装饰。

属性

特定源控件资源状态的图标路径。

StatementCoverage

包含单个语句或行的覆盖率信息。

构造函数

参数描述
executed: number | boolean

此语句被执行的次数,或者一个布尔值,表示是否被执行(如果确切计数未知)。如果为零或 false,则该语句将被标记为未覆盖。

location: Range | Position

语句位置。

branches?: BranchCoverage[]

此行的分支覆盖率。如果这不是一个条件,则应省略此项。

返回值描述
StatementCoverage

属性

此行或语句的分支覆盖率。如果这不是一个条件,则此数组将为空。

此语句被执行的次数,或者一个布尔值,表示是否被执行(如果确切计数未知)。如果为零或 false,则该语句将被标记为未覆盖。

语句位置。

StatusBarAlignment

代表状态栏项的对齐方式。

枚举成员

靠左对齐。

靠右对齐。

StatusBarItem

状态栏项是状态栏的贡献,可以显示文本和图标,并在单击时运行命令。

属性

无障碍信息,用于屏幕阅读器与此状态栏项交互时

此项的对齐方式。

此条目的背景颜色。

注意:仅支持以下颜色

  • new ThemeColor('statusBarItem.errorBackground')
  • new ThemeColor('statusBarItem.warningBackground')

将来可能会支持更多背景颜色。

注意:当设置了背景颜色时,状态栏可能会覆盖 color 选择,以确保该条目在所有主题中都可读。

此条目的前景色。

单击时运行的命令或命令标识符。

命令必须是 已知的

注意,如果这是一个 Command 对象,编辑器只使用 commandarguments

此项的标识符。

注意:如果 window.createStatusBarItem 方法未提供标识符,则该标识符将与扩展标识符匹配。

条目的名称,如“Python Language Indicator”、“Git Status”等。尽量保持名称简短,但要足够描述性,以便用户能够理解状态栏项的用途。

此项的优先级。值越高,表示该项应显示得越靠左。

要为条目显示的文本。您可以通过利用语法嵌入图标。

我的文本 $(icon-name) 包含像 $(icon-name) 这样的图标。

其中 icon-name 是从 ThemeIcon 图标集 中获取的,例如 light-bulbthumbsupzap 等。

将鼠标悬停在此条目上时显示的工具提示文本。

方法

释放并清理相关资源。调用 hide

参数描述
返回值描述
void

隐藏状态栏中的条目。

参数描述
返回值描述
void

显示状态栏中的条目。

参数描述
返回值描述
void

SymbolInformation

表示关于编程构造(如变量、类、接口等)的信息。

构造函数

创建一个新的符号信息对象。

参数描述
name: string

符号的名称。

kind: SymbolKind

符号的种类。

containerName: string

包含该符号的符号的名称。

location: Location

符号的位置。

返回值描述
SymbolInformation

创建一个新的符号信息对象。

  • 已弃用 - 请使用采用 Location 对象的构造函数。
参数描述
name: string

符号的名称。

kind: SymbolKind

符号的种类。

range: Range

符号位置的范围。

uri?: Uri

符号位置的资源,默认为当前文档。

containerName?: string

包含该符号的符号的名称。

返回值描述
SymbolInformation

属性

包含此符号的符号的名称。

此符号的种类。

此符号的位置。

此符号的名称。

此符号的标签。

SymbolKind

符号种类。

枚举成员

File 符号种类。

Module 符号种类。

Namespace 符号种类。

Package 符号种类。

Class 符号种类。

Method 符号种类。

Property 符号种类。

Field 符号种类。

Constructor 符号种类。

Enum 符号种类。

Interface 符号种类。

Function 符号种类。

Variable 符号种类。

Constant 符号种类。

String 符号种类。

Number 符号种类。

Boolean 符号种类。

Array 符号种类。

Object 符号种类。

Key 符号种类。

Null 符号种类。

EnumMember 符号种类。

Struct 符号种类。

Event 符号种类。

Operator 符号种类。

TypeParameter 符号种类。

SymbolTag

符号标签是用于微调符号渲染的额外注解。

枚举成员

将符号渲染为已弃用,通常使用删除线。

SyntaxTokenType

常见语法标记类型的枚举。

枚举成员

除注释、字符串文字和正则表达式中的标记之外的所有内容。

注释。

字符串文字。

正则表达式。

Tab

表示标签组中的一个标签。标签只是编辑器区域内的图形表示。不支持后台编辑器。

属性

标签所属的组。

定义标签的结构,例如文本、笔记本、自定义等。资源和其他有用属性在标签类型上定义。

该标签是否当前处于活动状态。这由它是否是组中的选定标签来决定。

标签上是否存在脏指示符。

该标签是否已固定(显示图钉图标)。

该标签是否处于预览模式。

在标签上显示的文本。

TabChangeEvent

描述标签更改的事件。

属性

已更改的标签,例如已更改其活动状态。

已关闭的标签。

已打开的标签。

TabGroup

表示一个标签组。标签组本身包含多个标签。

属性

组中的活动标签。这是当前正在渲染其内容的标签。

注意:每个组可以有一个活动标签,但只能有一个活动组

该组当前是否处于活动状态。

注意:一次只有一个标签组处于活动状态,但多个标签组可以有一个活动标签

另请参见 Tab.isActive

组中的标签列表。如果组没有打开的标签,则此列表可能为空。

组的视图列。

TabGroupChangeEvent

描述标签组更改的事件。

属性

已更改的选项卡组,例如已更改其 活动 状态的选项卡组。

已关闭的选项卡组。

已打开的选项卡组。

TabGroups

表示由包含选项卡的多个组组成的编辑器主区域。

事件

选项卡组 发生更改时触发的 事件

选项卡 发生更改时触发的 事件

属性

当前活动组。

组容器中的所有组。

方法

关闭选项卡。这将使选项卡对象失效,并且不应再使用该选项卡执行任何操作。注意:如果选项卡已脏,将显示确认对话框,该对话框可能会被取消。如果被取消,选项卡仍然有效

参数描述
tab: Tab | readonly Tab[]

要关闭的选项卡。

preserveFocus?: boolean

true 时,焦点将保留在当前位置。如果为 false,焦点将跳到下一个选项卡。

返回值描述
Thenable<boolean>

一个在所有选项卡关闭时解析为 true 的 Promise。

关闭选项卡组。这将使选项卡组对象失效,并且不应再使用该选项卡组执行任何操作。

参数描述
tabGroup: TabGroup | readonly TabGroup[]

要关闭的选项卡组。

preserveFocus?: boolean

true 时,焦点将保留在当前位置。

返回值描述
Thenable<boolean>

一个在所有选项卡组关闭时解析为 true 的 Promise。

TabInputCustom

该选项卡代表一个自定义编辑器。

构造函数

构造一个自定义编辑器选项卡输入。

参数描述
uri: Uri

选项卡的 URI。

viewType: string

自定义编辑器的视图类型。

返回值描述
TabInputCustom

属性

选项卡所代表的 URI。

自定义编辑器的类型。

TabInputNotebook

该选项卡代表一个笔记本。

构造函数

构造一个笔记本的新选项卡输入。

参数描述
uri: Uri

笔记本的 URI。

notebookType: string

笔记本的类型。映射到 NotebookDocument 的 notebookType

返回值描述
TabInputNotebook

属性

笔记本的类型。映射到 NotebookDocument 的 notebookType

选项卡所代表的 URI。

TabInputNotebookDiff

这两个选项卡代表两个以 diff 配置显示的笔记本。

构造函数

构造一个笔记本 diff 选项卡输入。

参数描述
original: Uri

原始未修改笔记本的 URI。

modified: Uri

已修改笔记本的 URI。

notebookType: string

笔记本的类型。映射到 NotebookDocument 的 notebookType

返回值描述
TabInputNotebookDiff

属性

已修改笔记本的 URI。

笔记本的类型。映射到 NotebookDocument 的 notebookType

原始笔记本的 URI。

TabInputTerminal

该选项卡代表编辑器区域中的一个终端。

构造函数

构造一个终端选项卡输入。

参数描述
返回值描述
TabInputTerminal

TabInputText

该选项卡代表一个单一的文本资源。

构造函数

使用给定的 URI 构造一个文本选项卡输入。

参数描述
uri: Uri

选项卡的 URI。

返回值描述
TabInputText

属性

由选项卡表示的 URI。

TabInputTextDiff

该选项卡代表以 diff 方式渲染的两个文本资源。

构造函数

使用给定的 URI 构造一个新的文本 diff 选项卡输入。

参数描述
original: Uri

原始文本资源的 URI。

modified: Uri

已修改文本资源的 URI。

返回值描述
TabInputTextDiff

属性

已修改文本资源的 URI。

原始文本资源的 URI。

TabInputWebview

该选项卡代表一个 webview。

构造函数

使用给定的视图类型构造一个 webview 选项卡输入。

参数描述
viewType: string

webview 的类型。映射到 WebviewPanel 的 viewType

返回值描述
TabInputWebview

属性

webview 的类型。映射到 WebviewPanel 的 viewType

Task

要执行的任务

构造函数

创建新任务。

参数描述
taskDefinition: TaskDefinition

在 taskDefinitions 扩展点中定义的任务定义。

scope: WorkspaceFolder | Global | Workspace

指定任务的范围。它可以是全局任务、工作区任务或特定工作区文件夹的任务。目前不支持全局任务。

name: string

任务的名称。在用户界面中显示。

source: string

任务的来源 (例如 'gulp', 'npm', ...)。在用户界面中显示。

execution?: ProcessExecution | ShellExecution | CustomExecution

进程或 shell 执行。

problemMatchers?: string | string[]

要使用的问题匹配器的名称,如 '$tsc' 或 '$eslint'。问题匹配器可以通过 problemMatchers 扩展点由扩展贡献。

返回值描述
Task

创建新任务。

  • 已弃用 - 使用允许为任务指定范围的新构造函数。
参数描述
taskDefinition: TaskDefinition

在 taskDefinitions 扩展点中定义的任务定义。

name: string

任务的名称。在用户界面中显示。

source: string

任务的来源 (例如 'gulp', 'npm', ...)。在用户界面中显示。

execution?: ProcessExecution | ShellExecution

进程或 shell 执行。

problemMatchers?: string | string[]

要使用的问题匹配器的名称,如 '$tsc' 或 '$eslint'。问题匹配器可以通过 problemMatchers 扩展点由扩展贡献。

返回值描述
Task

属性

任务的定义。

一个人类可读的字符串,在显示任务名称的地方以较不醒目的方式显示在单独的行上。支持通过 $(<name>) 语法渲染 主题图标

任务的执行引擎

此任务所属的任务组。请参阅 TaskGroup 以获取预定义的一组可用组。默认为 undefined,表示任务不属于任何特殊组。

任务是否为后台任务。

任务的名称

显示选项。默认为空字面量。

附加到任务的问题匹配器。默认为空数组。

任务的运行选项

任务的范围。

描述此 shell 任务来源的可读字符串,例如 'gulp' 或 'npm'。支持通过 $(<name>) 语法渲染 主题图标

TaskDefinition

一个定义系统中任务类型的结构。值必须是 JSON 可序列化的。

属性

由扩展提供的任务定义的任务类型。通常,任务提供程序会定义更多属性来标识任务。它们需要在扩展的 package.json 文件中的 'taskDefinitions' 扩展点下进行定义。例如,npm 任务定义如下所示:

interface NpmTaskDefinition extends TaskDefinition {
  script: string;
}

请注意,以 '$' 开头的类型标识符保留供内部使用,扩展不应使用它们。

TaskEndEvent

一个指示已执行任务结束的事件。

此接口不应被实现。

属性

表示已完成任务的任务项。

TaskExecution

表示已执行任务的对象。它可以用于终止任务。

此接口不应被实现。

属性

已启动的任务。

方法

终止任务执行。

参数描述
返回值描述
void

TaskFilter

任务过滤器通过版本和类型来表示任务

属性

要返回的任务类型;

在 tasks.json 文件中使用的任务版本。此字符串支持 package.json 的 semver 表示法。

TaskGroup

任务分组。编辑器默认支持 'Clean'、'Build'、'RebuildAll' 和 'Test' 组。

静态

构建任务组;

清理任务组;

全部重新构建任务组;

全部测试任务组;

构造函数

私有构造函数

参数描述
id: string

任务组的标识符。

label: string

任务组的显示名称。

返回值描述
TaskGroup

属性

任务组的 ID。它是 TaskGroup.Clean.id、TaskGroup.Build.id、TaskGroup.Rebuild.id 或 TaskGroup.Test.id 之一。

属于此组的任务是否是该组的默认任务。此属性不能通过 API 设置,由用户的任务配置控制。

TaskPanelKind

控制任务之间如何使用任务通道

枚举成员

与其他任务共享一个面板。这是默认值。

为此任务使用专用面板。该面板不与其他任务共享。

每次执行此任务时创建一个新面板。

TaskPresentationOptions

控制任务在 UI 中的显示方式。

属性

控制在执行任务之前是否清空终端。

控制在执行任务之后是否关闭终端。

控制是否在用户界面中显示与任务关联的命令。

控制显示任务输出的面板是否获得焦点。

控制此任务是否使用专用面板(dedicated)、在任务之间共享面板(shared)或在每次执行任务时创建新面板(new)。默认为 TaskInstanceKind.Shared

控制是否在用户界面中显示任务输出。默认为 RevealKind.Always

控制是否显示“终端将被任务复用,按任意键关闭它”的消息。

TaskProcessEndEvent

一个指示通过任务触发的进程执行结束的事件

属性

启动进程的任务执行。

进程的退出代码。当任务被终止时,它将是 undefined

TaskProcessStartEvent

一个指示通过任务触发的进程执行开始的事件

属性

启动进程的任务执行。

底层进程 ID。

TaskProvider<T>

任务提供程序允许向任务服务添加任务。任务提供程序通过 tasks.registerTaskProvider 进行注册。

方法

提供任务。

参数描述
token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T[]>

一组任务

解析一个没有设置 execution 的任务。任务通常是从 tasks.json 文件中的信息创建的。这些任务缺少如何执行它们的信息,任务提供程序必须在 resolveTask 方法中填充缺失的信息。此方法不会被调用以处理从上面的 provideTasks 方法返回的任务,因为那些任务始终是完全解析的。resolveTask 方法的一个有效默认实现是返回 undefined

请注意,在填充 task 的属性时,您*必须*确保使用完全相同的 TaskDefinition,而不是创建新的。其他属性可能会被更改。

参数描述
task: T

要解析的任务。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T>

已解析的任务

TaskRevealKind

控制终端可见性的行为。

枚举成员

在执行任务时始终将终端带到最前面。

仅在执行任务时检测到问题(例如,由于某种原因任务无法启动)时才将终端带到最前面。

在执行任务时,终端永远不会带到最前面。

TaskScope

任务的范围。

枚举成员

任务是全局任务。目前不支持全局任务。

该任务是工作区任务

TaskStartEvent

一个事件,指示任务执行的开始。

此接口不应被实现。

属性

代表已启动任务的任务项。

TelemetryLogger

一个遥测日志记录器,可供扩展用于记录使用情况和错误遥测数据。

一个日志记录器包装了 sender,但它保证

  • 用户禁用或调整遥测设置的偏好会被遵守,并且
  • 潜在的敏感数据会被移除

它还启用了“回显 UI”,该 UI 会打印发送的任何数据,并允许编辑器将未处理的错误转发给相应的扩展。

要获取 TelemetryLogger 实例,请使用 createTelemetryLogger

事件

当使用或错误遥测的启用状态发生变化时触发的 Event

属性

此日志记录器是否启用了错误遥测。

此日志记录器是否启用了使用遥测。

方法

释放此对象并回收资源。

参数描述
返回值描述
void

记录一个错误事件。

在完成清理、遥测设置检查和数据混合后,调用 TelemetrySender.sendEventData 来记录事件。与 logUsage 不同,它会在遥测设置为 Error+ 时记录事件。自动支持回显到扩展遥测输出通道。

参数描述
eventName: string

要记录的事件名称

data?: Record<string, any>

要记录的数据

返回值描述
void

记录一个错误事件。

调用 TelemetrySender.sendErrorData。执行清理、遥测检查和数据混合。自动支持回显到扩展遥测输出通道。还将自动记录扩展主机进程中抛出的任何异常。

参数描述
error: Error

包含已清理 PII 的堆栈跟踪的错误对象

data?: Record<string, any>

与堆栈跟踪一起记录的附加数据

返回值描述
void

记录一个使用事件。

在完成清理、遥测设置检查和数据混合后,调用 TelemetrySender.sendEventData 来记录事件。自动支持回显到扩展遥测输出通道。

参数描述
eventName: string

要记录的事件名称

data?: Record<string, any>

要记录的数据

返回值描述
void

TelemetryLoggerOptions

创建 TelemetryLogger 的选项

属性

应注入到数据对象中的任何其他公共属性。

是否要避免将内置公共属性(如 os、扩展名等)注入到数据对象中。如果未定义,默认为 false

是否应将您的扩展在扩展主机中引起的未处理错误记录到您的发送器。如果未定义,默认为 false

TelemetrySender

遥测发送器是遥测日志记录器和某些遥测服务之间的契约。注意,扩展不应直接调用其发送器的方法,因为日志记录器提供了额外的保护和清理。

const sender: vscode.TelemetrySender = {...};
const logger = vscode.env.createTelemetryLogger(sender);

// GOOD - uses the logger
logger.logUsage('myEvent', { myData: 'myValue' });

// BAD - uses the sender directly: no data cleansing, ignores user settings, no echoing to the telemetry output channel etc
sender.logEvent('myEvent', { myData: 'myValue' });

方法

可选的刷新函数,当其 TelemetryLogger 被释放时,该函数将为该发送器提供一个机会来发送任何剩余事件。

参数描述
返回值描述
void | Thenable<void>

用于发送错误的函数。在 TelemetryLogger 中使用

参数描述
error: Error

要记录的错误

data?: Record<string, any>

与异常一起收集的任何附加数据

返回值描述
void

用于发送事件数据而不带堆栈跟踪的函数。在 TelemetryLogger 中使用

参数描述
eventName: string

您正在记录的事件名称

data?: Record<string, any>

正在记录的可序列化键值对

返回值描述
void

TelemetryTrustedValue<T>

一个特殊的数值包装器,表示一个可以安全地不进行清理的值。当您能保证值中不包含任何可识别信息,并且清理不当地将其编辑掉时,可以使用此值。

构造函数

创建一个新的遥测可信值。

参数描述
value: T

一个值得信赖的值

返回值描述
TelemetryTrustedValue<T>

属性

被信任不包含 PII 的值。

Terminal

集成终端中的单个终端实例。

属性

用于初始化终端的对象,这很有用,例如检测终端的 shell 类型,当终端不是由此扩展启动时,或者检测 shell 在哪个文件夹中启动。

终端的退出状态,在终端活动时此项将为 undefined。

示例:当终端以非零退出代码退出时,显示一个带有退出代码的通知。

window.onDidCloseTerminal(t => {
  if (t.exitStatus && t.exitStatus.code) {
    vscode.window.showInformationMessage(`Exit code: ${t.exitStatus.code}`);
  }
});

终端的名称。

shell 进程的进程 ID。

包含终端的 shell 集成功能的对象的属性。终端创建后,此项将始终为 undefined。收听 window.onDidChangeTerminalShellIntegration 以在终端的 shell 集成激活时收到通知。

请注意,如果 shell 集成从未激活,此对象可能保持 undefined。例如,命令提示符不支持 shell 集成,并且用户的 shell 设置可能与自动 shell 集成激活冲突。

Terminal 的当前状态。

方法

释放并清理关联的资源。

参数描述
返回值描述
void

如果终端面板当前可见,则隐藏它。

参数描述
返回值描述
void

向终端发送文本。文本被写入终端底层 pty 进程(shell)的标准输入。

参数描述
text: string

要发送的文本。

shouldExecute?: boolean

指示要发送的文本应该被执行,而不仅仅是插入到终端中。添加的字符是 \n\r\n,具体取决于平台。此项默认为 true

返回值描述
void

显示终端面板并将此终端显示在 UI 中。

参数描述
preserveFocus?: boolean

true 时,终端将不会获得焦点。

返回值描述
void

TerminalDimensions

表示终端的尺寸。

属性

终端的列数。

终端的行数。

TerminalEditorLocationOptions

假定 TerminalLocation 为 editor,并允许指定 ViewColumnpreserveFocus 属性。

属性

一个可选标志,当设置为 true 时,将阻止 Terminal 获得焦点。

终端应在编辑器区域显示的视图列。默认为 active。不存在的列将根据需要创建,最多可达 ViewColumn.Nine。使用 ViewColumn.Beside 将编辑器打开到当前活动编辑器旁边。

TerminalExitReason

终端退出原因类型。

枚举成员

未知原因。

窗口已关闭/重新加载。

shell 进程已退出。

用户已关闭终端。

扩展已释放终端。

TerminalExitStatus

表示终端如何退出。

属性

终端退出的退出代码,它可以具有以下值:

  • 零:终端进程或自定义执行成功。
  • 非零:终端进程或自定义执行失败。
  • undefined:用户强制关闭了终端,或者自定义执行在未提供退出代码的情况下退出。

触发终端退出的原因。

终端行上的一个链接。

构造函数

创建一个新的终端链接。

参数描述
startIndex: number

链接在 TerminalLinkContext.line 上的起始索引。

length: number

链接在 TerminalLinkContext.line 上的长度。

tooltip?: string

悬停在此链接上时显示的工具提示文本。

如果提供了工具提示,它将显示一个包含如何触发链接的说明的字符串,例如 {0} (ctrl + click)。具体说明因操作系统、用户设置和本地化而异。

返回值描述
TerminalLink

属性

链接在 TerminalLinkContext.line 上的长度。

链接在 TerminalLinkContext.line 上的起始索引。

悬停在此链接上时显示的工具提示文本。

如果提供了工具提示,它将显示一个包含如何触发链接的说明的字符串,例如 {0} (ctrl + click)。具体说明因操作系统、用户设置和本地化而异。

TerminalLinkContext

提供终端中某行的信息,以便为其提供链接。

属性

这是终端中未包装行的文本。

链接所属的终端。

TerminalLinkProvider<T>

提供程序,可用于在终端中检测和处理链接。

方法

处理一个激活的终端链接。

参数描述
link: T

要处理的链接。

返回值描述
ProviderResult<void>

为给定上下文提供终端链接。请注意,即使在先前的调用解析之前,也可以多次调用此函数,请确保不要共享可能在异步使用重叠时出现问题的全局对象(例如 RegExp)。

参数描述
context: TerminalLinkContext

有关要提供链接的上下文信息。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T[]>

给定行的终端链接列表。

TerminalLocation

终端的位置。

枚举成员

在终端视图中

在编辑器区域

TerminalOptions

描述终端应使用哪些选项的值对象。

属性

终端的图标 ThemeColor。推荐使用 terminal.ansi* 主题键以获得最佳对比度和跨主题的一致性。

用于终端的当前工作目录的路径或 Uri。

将添加到编辑器进程的环境变量对象。

启用时,终端将按正常运行进程,但直到调用 Terminal.show 之前才向用户显示。这通常用于需要交互但只想在需要交互时通知用户的情况。请注意,终端仍将正常地向所有扩展公开。隐藏的终端在下次打开工作区时不会被恢复。

终端的图标路径或 ThemeIcon

选择退出在重启和重新加载时默认的终端持久性。仅当启用了 terminal.integrated.enablePersistentSessions 时,此设置才生效。

首次启动时要写入终端的消息,请注意,此消息不会发送到进程,而是直接写入终端。它支持转义序列,例如设置文本样式。

一个人类可读的字符串,将用于在 UI 中表示终端。

自定义 shell 可执行文件的参数。字符串仅可在 Windows 上使用,这允许在 命令行格式中指定 shell 参数。

用于验证 Shell 集成序列来自受信任源的 Nonce。其 UX 影响例如是,如果命令行报告了一个 Nonce,它将不需要与用户确认命令行是否正确,即可通过 Shell 集成命令装饰 重新运行它。

如果终端包含 自定义 shell 集成支持,则应使用此项。它应设置为一个随机 GUID,然后该 GUID 将设置 VSCODE_NONCE 环境变量。在 shell 中,应将其从环境中移除,以保护其免遭常规访问。完成后,可以将其传递到相关序列中以使其受信任。

要用于终端的自定义 shell 可执行文件的路径。

终端进程环境是否应严格按照 TerminalOptions.env 提供。当此设置为 false(默认)时,环境将基于窗口的环境,并应用配置的平台设置,如 terminal.integrated.env.windows。当此设置为 true 时,必须提供完整环境,因为不会从进程或任何配置中继承任何内容。

TerminalProfile

终端配置文件定义了终端的启动方式。

构造函数

创建新的终端配置文件。

参数描述
options: TerminalOptions | ExtensionTerminalOptions

终端启动时使用的选项。

返回值描述
TerminalProfile

属性

终端启动时使用的选项。

TerminalProfileProvider

通过 UI 或命令启动时,为贡献的终端配置文件提供终端配置文件。

方法

提供终端配置文件。

参数描述
token: CancellationToken

一个取消令牌,指示不再需要结果。

返回值描述
ProviderResult<TerminalProfile>

终端配置文件。

TerminalShellExecution

在终端中执行的命令。

属性

执行的命令行。此值的 confidence 取决于特定 shell 的 shell 集成实现的程度。在触发 window.onDidEndTerminalShellExecution 后,此值可能会更准确。

示例

// Log the details of the command line on start and end
window.onDidStartTerminalShellExecution(event => {
  const commandLine = event.execution.commandLine;
  console.log(`Command started\n${summarizeCommandLine(commandLine)}`);
});
window.onDidEndTerminalShellExecution(event => {
  const commandLine = event.execution.commandLine;
  console.log(`Command ended\n${summarizeCommandLine(commandLine)}`);
});
function summarizeCommandLine(commandLine: TerminalShellExecutionCommandLine) {
  return [
    `  Command line: ${command.commandLine.value}`,
    `  Confidence: ${command.commandLine.confidence}`,
    `  Trusted: ${command.commandLine.isTrusted}
  ].join('\n');
}

shell 在此命令执行时报告的工作目录。此 Uri 可能代表另一台机器上的文件(例如,ssh 到另一台机器)。这需要 shell 集成支持工作目录报告。

方法

创建写入终端的原始数据流(包括转义序列)。这仅包括在首次调用 read 后写入的数据,即您必须在通过 TerminalShellIntegration.executeCommandwindow.onDidStartTerminalShellExecution 执行命令后立即调用 read,以避免丢失任何数据。

示例

// Log all data written to the terminal for a command
const command = term.shellIntegration.executeCommand({ commandLine: 'echo "Hello world"' });
const stream = command.read();
for await (const data of stream) {
  console.log(data);
}
参数描述
返回值描述
AsyncIterable<string>

TerminalShellExecutionCommandLine

在终端中执行的命令行。

属性

命令行值的置信度,该置信度取决于值的获取方式。这取决于 shell 集成脚本的实现。

命令行值是否来自可信源,因此可以安全地执行而无需用户额外确认,例如“是否要执行(命令)?”的通知。如果您要再次执行该命令,则很可能只需要此验证。

仅当命令行由 shell 集成脚本明确报告(即 高置信度)并且使用了 nonce 进行验证时,此项才为 true

执行的完整命令行,包括命令及其参数。

TerminalShellExecutionCommandLineConfidence

枚举成员

命令行值的置信度较低。这意味着该值是从终端缓冲区使用 shell 集成脚本报告的标记读取的。此外,将满足以下任一条件:

  • 命令从最左边的列开始,这很不寻常,或者
  • 命令是多行的,由于行连接字符和右提示符,检测起来更困难。
  • 命令行标记未由 shell 集成脚本报告。

命令行值的置信度中等。这意味着该值是从终端缓冲区使用 shell 集成脚本报告的标记读取的。命令是单行的,并且不从最左边的列开始(这很不寻常)。

命令行值的置信度很高。这意味着该值是从 shell 集成脚本显式发送的,或者该命令是通过 TerminalShellIntegration.executeCommand API 执行的。

TerminalShellExecutionEndEvent

一个事件,指示终端中的执行已结束。

属性

已结束的终端 shell 执行。

shell报告的退出码。

当此值为undefined时,可能意味着几种情况

  • shell未报告退出码(即,shell集成脚本行为异常)
  • shell报告的命令在命令完成之前启动(例如,打开了一个子shell)。
  • 用户通过ctrl+c取消了命令。
  • 当没有输入时,用户按下了回车键。

通常不应该发生这种情况。根据用例,最好将其视为失败。

示例

const execution = shellIntegration.executeCommand({
  command: 'echo',
  args: ['Hello world']
});
window.onDidEndTerminalShellExecution(event => {
  if (event.execution === execution) {
    if (event.exitCode === undefined) {
      console.log('Command finished but exit code is unknown');
    } else if (event.exitCode === 0) {
      console.log('Command succeeded');
    } else {
      console.log('Command failed');
    }
  }
});

shell集成对象。

shell集成已激活的终端。

TerminalShellExecutionStartEvent

一个事件,指示在终端中已启动执行。

属性

已结束的终端 shell 执行。

shell集成对象。

shell集成已激活的终端。

TerminalShellIntegration

终端拥有的基于shell集成的功能。

属性

终端的当前工作目录。此Uri可能代表另一台机器上的文件(例如,ssh到另一台机器)。这需要shell集成支持工作目录报告。

方法

执行命令,必要时发送^C以中断任何正在运行的命令。

  • 抛出-当在不支持此API的终端上运行时,例如任务终端。

示例

// Execute a command in a terminal immediately after being created
const myTerm = window.createTerminal();
window.onDidChangeTerminalShellIntegration(async ({ terminal, shellIntegration }) => {
  if (terminal === myTerm) {
    const execution = shellIntegration.executeCommand('echo "Hello world"');
    window.onDidEndTerminalShellExecution(event => {
      if (event.execution === execution) {
        console.log(`Command exited with code ${event.exitCode}`);
      }
    });
  }
}));
// Fallback to sendText if there is no shell integration within 3 seconds of launching
setTimeout(() => {
  if (!myTerm.shellIntegration) {
    myTerm.sendText('echo "Hello world"');
    // Without shell integration, we can't know when the command has finished or what the
    // exit code was.
  }
}, 3000);

示例

// Send command to terminal that has been alive for a while
const commandLine = 'echo "Hello world"';
if (term.shellIntegration) {
  const execution = shellIntegration.executeCommand({ commandLine });
  window.onDidEndTerminalShellExecution(event => {
    if (event.execution === execution) {
      console.log(`Command exited with code ${event.exitCode}`);
    }
  });
} else {
  term.sendText(commandLine);
  // Without shell integration, we can't know when the command has finished or what the
  // exit code was.
}
参数描述
commandLine: string

要执行的命令的命令行,这是将发送到终端的确切文本。

返回值描述
TerminalShellExecution

执行命令,必要时发送^C以中断任何正在运行的命令。

注意这不能保证能正常工作,因为必须激活shell集成。检查TerminalShellExecution.exitCode是否被拒绝,以验证是否成功。

示例

// Execute a command in a terminal immediately after being created
const myTerm = window.createTerminal();
window.onDidChangeTerminalShellIntegration(async ({ terminal, shellIntegration }) => {
  if (terminal === myTerm) {
    const command = shellIntegration.executeCommand({
      command: 'echo',
      args: ['Hello world']
    });
    const code = await command.exitCode;
    console.log(`Command exited with code ${code}`);
  }
}));
// Fallback to sendText if there is no shell integration within 3 seconds of launching
setTimeout(() => {
  if (!myTerm.shellIntegration) {
    myTerm.sendText('echo "Hello world"');
    // Without shell integration, we can't know when the command has finished or what the
    // exit code was.
  }
}, 3000);

示例

// Send command to terminal that has been alive for a while
const commandLine = 'echo "Hello world"';
if (term.shellIntegration) {
  const command = term.shellIntegration.executeCommand({
    command: 'echo',
    args: ['Hello world']
  });
  const code = await command.exitCode;
  console.log(`Command exited with code ${code}`);
} else {
  term.sendText(commandLine);
  // Without shell integration, we can't know when the command has finished or what the
  // exit code was.
}
参数描述
executable: string

要运行的命令。

args: string[]

用于启动可执行文件的参数。这些参数将被转义,以便在参数同时包含空格且不包含任何单引号、双引号或反引号字符时,将它们解释为单个参数。

请注意,这种转义不是为了安全措施,在将不受信任的数据传递给此API时要小心,因为像$(...)这样的字符串通常可以在shell中用于在字符串内执行代码。

返回值描述
TerminalShellExecution

TerminalShellIntegrationChangeEvent

一个事件,指示终端的shell集成已更改。

属性

shell集成对象。

shell集成已激活的终端。

TerminalSplitLocationOptions

使用父Terminal的位置作为终端的位置。

属性

要在此终端旁边拆分的父终端。无论父终端是在面板还是编辑器区域,这都有效。

TerminalState

表示Terminal的状态。

属性

Terminal是否已被交互。交互意味着终端已将数据发送到进程,这取决于终端的模式。默认情况下,在按下按键或命令或扩展发送文本时发送输入,但根据终端的模式,它也可能发生在

  • 指针单击事件
  • 指针滚动事件
  • 指针移动事件
  • 终端焦点进入/退出

有关可以发送数据的事件的更多信息,请参阅xterm控制序列上的“DEC Private Mode Set (DECSET)”https://invisible-island.net/xterm/ctlseqs/ctlseqs.html

已检测到的Terminal的shell类型。当没有明确信号表明shell是什么,或者shell尚未支持时,此值将为undefined。此值应更改为子shell的shell类型(例如,在zsh中运行bash)。

请注意,目前可能的值定义为以下任何一种:“bash”、“cmd”、“csh”、“fish”、“gitbash”、“julia”、“ksh”、“node”、“nu”、“pwsh”、“python”、“sh”、“wsl”、“xonsh”、“zsh”。

TestController

用于发现和执行测试的入口点。它包含TestController.items,用于填充编辑器UI,并与运行配置文件相关联,以允许执行测试。

属性

tests.createTestController中传递的控制器的ID。此ID必须是全局唯一的。

“顶级”TestItem实例的集合,这些实例反过来可以拥有自己的children来形成“测试树”。

扩展控制何时添加测试。例如,扩展程序应在workspace.onDidOpenTextDocument触发时为文件添加测试,以便文件中的测试装饰可见。

但是,编辑器有时会使用resolveHandler显式请求子项。有关更多详细信息,请参阅该方法的文档。

测试控制器的可读标签。

如果存在此方法,则UI中将显示一个刷新按钮,并且在单击它时将调用此方法。调用时,扩展应扫描工作区以查找任何新添加、已更改或已删除的测试。

建议扩展程序尝试实时更新测试,例如使用FileSystemWatcher,并将此方法作为后备。

参数描述
token: CancellationToken
返回值描述
void | Thenable<void>

测试已刷新后将解析的thenable。

编辑器可能会调用此函数来请求测试项的子项,前提是TestItem.canResolveChildrentrue。调用时,项应发现子项,并在发现子项时调用TestController.createTestItem

通常,扩展程序管理测试项的生命周期,但在某些情况下,编辑器可能会请求加载特定项的子项。例如,如果用户请求在重新加载编辑器后重新运行测试,编辑器可能需要调用此方法来解析先前运行的测试。

直到函数返回或返回的thenable解析之前,资源管理器中的项将自动标记为“忙碌”。

参数描述
item: TestItem

正在请求子项的未解析测试项,或者undefined用于解析控制器的初始items

返回值描述
void | Thenable<void>

方法

创建用于运行测试的配置文件。扩展程序必须至少创建一个配置文件才能运行测试。

参数描述
label: string

此配置文件的可读标签。

kind: TestRunProfileKind

配置此配置文件管理哪种类型的执行。

runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void>

调用以启动测试运行的函数。

isDefault?: boolean

这是其类型的默认操作吗。

tag?: TestTag

配置文件测试标签。

supportsContinuousRun?: boolean

配置文件是否支持连续运行。

返回值描述
TestRunProfile

TestRunProfile的实例,它会自动与此控制器关联。

创建新的托管TestItem实例。它可以添加到现有项的TestItem.children中,或添加到TestController.items中。

参数描述
id: string

TestItem的标识符。TestItem的ID在其添加到的TestItemCollection中必须是唯一的。

label: string

TestItem的可读标签。

uri?: Uri

与TestItem关联的URI。可以是文件或目录。

返回值描述
TestItem

创建TestRun。当请求执行测试时,这应该由TestRunProfile调用,并且在检测到外部测试运行时也可以调用。创建后,包含在请求中的测试将被移至队列状态。

使用相同的request实例创建的所有运行将被分组在一起。例如,如果在一台机器上运行一组测试,这会很有用。

参数描述
request: TestRunRequest

测试运行请求。只能修改include中的测试,并且会忽略exclude中的测试。

name?: string

运行的可读名称。这可以用来区分测试运行中的多个结果集。例如,如果跨多个平台运行测试,则很有用。

persist?: boolean

创建的运行结果是否应在编辑器中持久化。如果结果来自已在外部保存的文件,例如覆盖率信息文件,则可能为false。

返回值描述
TestRun

TestRun的实例。从调用此方法的那一刻起,它将被视为“正在运行”,直到调用TestRun.end

注销测试控制器,销毁其关联的测试和未持久化的结果。

参数描述
返回值描述
void

将项的结果标记为过时。当代码或配置发生更改,并且先前结果不再被视为相关时,通常会调用此方法。用于将结果标记为过时的相同逻辑可用于驱动连续测试运行

如果将项传递给此方法,则该项及其所有子项的测试结果将被标记为过时。如果未传递项,则将标记TestController拥有的所有测试为过时。

在此方法调用时刻之前开始的所有测试运行,包括可能仍在进行的运行,都将被标记为过时并在编辑器的UI中降级。

参数描述
items?: TestItem | readonly TestItem[]

要标记为过时的项。如果未定义,则所有控制器的项都将被标记为过时。

返回值描述
void

TestCoverageCount

包含有关已覆盖资源的信息的类。可以为文件中的行、分支和声明提供计数。

构造函数

参数描述
covered: number
total: number
返回值描述
TestCoverageCount

属性

文件中已覆盖的项目数。

文件中已覆盖项目总数。

TestItem

“测试资源管理器”视图中显示的项。

TestItem可以表示测试套件或测试本身,因为它们具有相似的功能。

属性

控制项在测试资源管理器视图中是否显示为“忙碌”。这在发现子项时显示状态很有用。

默认为false

指示此测试项是否可以通过解析来发现子项。

如果为true,则此项在测试资源管理器视图中显示为可展开,并且展开该项将导致TestController.resolveHandler使用该项被调用。

默认为false

此测试项的子项。对于测试套件,这可能包含单个测试用例或嵌套套件。

可选描述,显示在标签旁边。

加载测试时遇到的可选错误。

请注意,这并不是测试结果,只能用于表示测试发现中的错误,例如语法错误。

TestItem的标识符。这用于将工作区中的测试结果和测试(测试资源管理器)与文档中的测试相关联。此ID在TestItem的生命周期内不能更改,并且在其父项的直接子项中必须是唯一的。

描述测试用例的显示名称。

此项的父项。它会自动设置,对于TestController.items中的顶级项以及尚未包含在其他项的children中的项,它将是未定义的。

测试项在uri中的位置。

这仅在uri指向文件时才有意义。

在与其他项进行比较时应使用的字符串。当为falsy时,将使用label

与此测试项关联的标签。可以与tags结合使用,或者仅作为组织功能。

TestItem关联的URI。可以是文件或目录。

TestItemCollection

测试项的集合,位于TestItem.childrenTestController.items中。

属性

获取集合中的项数。

方法

将测试项添加到子项中。如果存在具有相同ID的项,它将被替换。

参数描述
item: TestItem

要添加的项。

返回值描述
void

从集合中删除单个测试项。

参数描述
itemId: string

要删除的项ID。

返回值描述
void

迭代此集合中的每个条目。

参数描述
callback: (item: TestItem, collection: TestItemCollection) => unknown

为每个条目执行的函数。

thisArg?: any

调用处理函数时使用的 this 上下文。

返回值描述
void

高效地通过ID获取测试项(如果存在于子项中)。

参数描述
itemId: string

要获取的项ID。

返回值描述
TestItem

找到的项,如果不存在则为undefined。

替换集合中存储的项。

参数描述
items: readonly TestItem[]

要存储的项。

返回值描述
void

TestMessage

与测试状态相关的消息。可以链接到特定的源范围——例如,用于断言失败。

静态

创建一个新的TestMessage,它将在编辑器中显示为diff。

参数描述
message: string | MarkdownString

要显示给用户的消息。

expected: string

期望的输出。

actual: string

实际输出。

返回值描述
TestMessage

构造函数

创建一个新的TestMessage实例。

参数描述
message: string | MarkdownString

要显示给用户的消息。

返回值描述
TestMessage

属性

实际测试输出。如果与expectedOutput一起提供,将显示diff视图。

测试项的上下文值。这可用于为测试预览视图贡献消息特定的操作。此处设置的值可在以下 menus 贡献点的 testMessage 属性中找到

  • testing/message/context - 结果树中消息的上下文菜单
  • testing/message/content - 一个醒目的按钮,覆盖显示消息的编辑器内容。

例如

"contributes": {
  "menus": {
    "testing/message/content": [
      {
        "command": "extension.deleteCommentThread",
        "when": "testMessage == canApplyRichDiff"
      }
    ]
  }
}

命令将使用包含以下内容的属性进行调用

预期的测试输出。如果提供了 actualOutput ,则会显示 diff 视图。

关联的文件位置。

要显示的人类可读消息文本。

与消息或失败关联的堆栈跟踪。

TestMessageStackFrame

TestMessage.stackTrace 中找到的堆栈帧。

构造函数

参数描述
label: string

堆栈帧的名称

uri?: Uri
position?: Position

堆栈帧在文件中的位置

返回值描述
TestMessageStackFrame

属性

堆栈帧的名称,通常是方法或函数名。

堆栈帧在文件中的位置。

此堆栈帧的位置。如果调用帧的位置可由编辑器访问,则应将其提供为 URI。

TestRun

TestRun 表示一个正在进行或已完成的测试运行,并提供方法来报告运行中各个测试的状态。

事件

编辑器不再关心测试运行相关数据时触发的事件。

属性

测试运行是否会在编辑器重新加载后持久化。

运行的可读名称。这可以用来区分测试运行中的多个结果集。例如,如果跨多个平台运行测试,则很有用。

当测试运行从 UI 取消时将触发的取消令牌。

方法

为运行中的文件添加覆盖率。

参数描述
fileCoverage: FileCoverage
返回值描述
void

追加来自测试运行程序的原始输出。根据用户的请求,输出将显示在终端中。支持 ANSI 转义序列,例如颜色和文本样式。新行必须给出为 CRLF (\r\n) 而不是 LF (\n)。

参数描述
output: string

要追加的输出文本。

location?: Location

指示输出已记录在给定位置。

test?: TestItem

要将输出关联的测试项。

返回值描述
void

信号测试运行结束。在运行中包含的但状态未更新的任何测试的状态都将被重置。

参数描述
返回值描述
void

指示测试已排队等待稍后执行。

参数描述
test: TestItem

要更新的测试项。

返回值描述
void

指示测试已出错。您应该传递一个或多个 TestMessages 来描述失败。这与“失败”状态不同,因为它表示测试根本无法执行,例如由于编译错误。

参数描述
test: TestItem

要更新的测试项。

message: TestMessage | readonly TestMessage[]

与测试失败相关的消息。

duration?: number

测试执行耗时,以毫秒为单位。

返回值描述
void

指示测试失败。您应该传递一个或多个 TestMessages 来描述失败。

参数描述
test: TestItem

要更新的测试项。

message: TestMessage | readonly TestMessage[]

与测试失败相关的消息。

duration?: number

测试执行耗时,以毫秒为单位。

返回值描述
void

指示测试已通过。

参数描述
test: TestItem

要更新的测试项。

duration?: number

测试执行耗时,以毫秒为单位。

返回值描述
void

指示测试已被跳过。

参数描述
test: TestItem

要更新的测试项。

返回值描述
void

指示测试已开始运行。

参数描述
test: TestItem

要更新的测试项。

返回值描述
void

TestRunProfile

TestRunProfile 描述了一种执行 TestController 中测试的方法。

事件

当用户更改此项是否为默认配置文件时触发。该事件包含 isDefault 的新值。

属性

如果此方法存在,UI 中将出现一个配置齿轮,并且在单击它时将调用此方法。调用时,您可以执行其他编辑器操作,例如显示快速选择或打开配置文件。

参数描述
返回值描述
void

控制此配置文件是否为对其执行的操作将采取的默认操作。例如,如果用户单击通用的“运行所有”按钮,则将执行 TestRunProfileKind.Run 的默认配置文件,尽管用户可以对此进行配置。

用户在默认配置文件中所做的更改将在 onDidChangeDefault 事件后反映在此属性中。

配置此配置文件控制的执行类型。如果没有某种类型的配置文件,它将不会在 UI 中可用。

在 UI 中向用户显示的标签。

请注意,如果用户请求以某种方式重新运行测试,则标签具有一定意义。例如,如果正常运行了测试,并且用户请求在调试模式下重新运行它们,编辑器将尝试使用具有与 Debug 类型相同标签的配置。如果没有这样的配置,将使用默认配置。

扩展程序提供的函数,用于为文件提供详细的语句和函数级别的覆盖率。当需要文件更详细的信息时,编辑器会调用此函数,例如当文件在编辑器中打开或在“测试覆盖率”视图中展开时。

传递给此函数的 FileCoverage 对象与在与此配置文件关联的 TestRun.addCoverage 调用中发出的对象是相同的实例。

参数描述
testRun: TestRun
fileCoverage: FileCoverage
token: CancellationToken
返回值描述
Thenable<FileCoverageDetail[]>

扩展程序提供的函数,用于为文件中的单个测试提供详细的语句和函数级别的覆盖率。这是 TestRunProfile.loadDetailedCoverage 的每个测试的同类项,仅在 FileCoverage.includesTests 中提供了测试项并且仅针对报告了此类数据的文件的文件时调用。

当用户打开文件时,通常会先调用 TestRunProfile.loadDetailedCoverage,然后如果他们深入到特定的每个测试覆盖率信息,则会调用此方法。然后,此方法应仅返回在运行期间由特定测试执行的语句和声明的覆盖率数据。

传递给此函数的 FileCoverage 对象与在与此配置文件关联的 TestRun.addCoverage 调用中发出的对象是相同的实例。

参数描述
testRun: TestRun

生成覆盖率数据的测试运行。

fileCoverage: FileCoverage

要加载详细覆盖率的文件覆盖率对象。

fromTestItem: TestItem

请求覆盖率信息的测试项。

token: CancellationToken

指示应取消操作的取消令牌。

返回值描述
Thenable<FileCoverageDetail[]>

调用处理程序以启动测试运行。调用时,函数应至少调用一次 TestController.createTestRun,并且所有与请求相关的测试运行都应在函数返回或返回的 Promise 解析之前创建。

如果设置了 supportsContinuousRun,则 TestRunRequest.continuous 可能为 true。在这种情况下,配置文件应观察源代码的变化,并通过调用 TestController.createTestRun 来创建新的测试运行,直到在 token 上请求取消。

参数描述
request: TestRunRequest

测试运行的请求信息。

token: CancellationToken
返回值描述
void | Thenable<void>

此配置文件是否支持连续请求运行。如果支持,则 TestRunRequest.continuous 可能设置为 true。默认为 false。

与配置文件关联的标签。如果设置了此项,则只有在 TestItem.tags 数组中包含相同标签的 TestItem 实例才有资格在此配置文件中执行。

方法

删除运行配置文件。

参数描述
返回值描述
void

TestRunProfileKind

TestRunProfiles 控制的执行类型。

枚举成员

Run 测试配置文件类型。

Debug 测试配置文件类型。

Coverage 测试配置文件类型。

TestRunRequest

TestRunRequest 是 TestRun 的前身,而 TestRun 是通过将请求传递给 TestController.createTestRun 来创建的。TestRunRequest 包含有关哪些测试应该运行、哪些不应该运行以及如何运行它们(通过 profile)的信息。

通常,TestRunRequests 由编辑器创建并传递给 TestRunProfile.runHandler,但是您也可以在 runHandler 之外创建测试请求和运行。

构造函数

参数描述
include?: readonly TestItem[]

要运行的特定测试的数组,如果为 undefined,则表示运行所有测试

exclude?: readonly TestItem[]

要从运行中排除的测试数组。

profile?: TestRunProfile

此请求使用的运行配置文件。

continuous?: boolean

是否连续运行测试。

preserveFocus?: boolean

启动运行时是否保留用户焦点

返回值描述
TestRunRequest

属性

配置文件是否应在源代码更改时连续运行。仅对设置了 TestRunProfile.supportsContinuousRun 的配置文件有效。

用户已标记为排除在此运行中包含的测试的数组;排除项应在包含项之后应用。

如果未请求排除项,则可能省略。测试控制器不应运行排除的测试或任何被排除测试的子项。

用于运行特定测试的筛选器。如果给定,扩展程序应运行所有包含的测试及其所有子项,排除 TestRunRequest.exclude 中出现的任何测试。如果此属性为 undefined,则扩展程序应仅运行所有测试。

运行测试的过程应解析尚未解析的任何测试项的子项。

控制测试结果视图的焦点。如果为 true,编辑器将保持用户焦点。如果为 false,编辑器将优先将焦点移至测试结果视图,尽管用户可以对此进行配置。

此请求使用的配置文件。对于从编辑器 UI 发出的请求,此项始终已定义,尽管扩展程序可以以编程方式创建与任何配置文件无关的请求。

TestTag

标签可以与 TestItemsTestRunProfiles 关联。具有标签的配置文件只能执行在其 TestItem.tags 数组中包含该标签的测试。

构造函数

创建新的 TestTag 实例。

参数描述
id: string

测试标签的 ID。

返回值描述
TestTag

属性

测试标签的 ID。具有相同 ID 的 TestTag 实例被认为是相同的。

TextDocument

代表一个文本文档,例如源代码文件。文本文档具有 并且了解底层资源(如文件)。

属性

保存文档时将使用的文档的编码。

使用 onDidChangeTextDocument 事件来获取文档编码更改的通知。

请注意,当前可能的编码值定义为以下任一项:'utf8', 'utf8bom', 'utf16le', 'utf16be', 'windows1252', 'iso88591', 'iso88593', 'iso885915', 'macroman', 'cp437', 'windows1256', 'iso88596', 'windows1257', 'iso88594', 'iso885914', 'windows1250', 'iso88592', 'cp852', 'windows1251', 'cp866', 'cp1125', 'iso88595', 'koi8r', 'koi8u', 'iso885913', 'windows1253', 'iso88597', 'windows1255', 'iso88598', 'iso885910', 'iso885916', 'windows1254', 'iso88599', 'windows1258', 'gbk', 'gb18030', 'cp950', 'big5hkscs', 'shiftjis', 'eucjp', 'euckr', 'windows874', 'iso885911', 'koi8ru', 'koi8t', 'gb2312', 'cp865', 'cp850'。

文档中主要使用的 行尾 符序列。

关联资源的文件系统路径。这是 TextDocument.uri.fsPath 的简写。与 uri 方案无关。

如果文档已关闭,则为 true。已关闭的文档不再同步,并且在再次打开同一资源时不会被重复使用。

如果存在未保存的更改,则为 true

此文档是否表示一个从未保存过的未命名文件。请注意,这并不意味着文档将被保存到磁盘,请使用 Uri.scheme 来确定文档将被 保存 到何处,例如 fileftp 等。

与此文档关联的语言的标识符。

此文档的行数。

此文档的关联 uri。

请注意,大多数文档使用 file 方案,这意味着它们是磁盘上的文件。但是,并非所有文档都保存在磁盘上,因此在尝试访问磁盘上的底层文件或兄弟文件之前,必须检查 scheme

另请参阅

此文档的版本号(在每次更改后会严格递增,包括撤销/重做)。

方法

获取此文档的文本。可以通过提供范围来检索子字符串。范围将被 调整

参数描述
range?: Range

仅包含范围内文本。

返回值描述
字符串

提供范围内的文本或整个文本。

在给定位置获取单词范围。默认情况下,单词由常见分隔符定义,如空格、-、_ 等。此外,还可以定义每种语言的自定义 [单词定义]。也可以提供自定义正则表达式。

  • 注意 1:自定义正则表达式不得匹配空字符串,如果匹配,则将被忽略。
  • 注意 2:自定义正则表达式将无法匹配多行字符串,为了速度,正则表达式不应匹配带空格的单词。对于更复杂的、非单词场景,请使用 TextLine.text

该位置将被 调整

参数描述
position: Position

一个位置。

regex?: RegExp

描述单词是什么的可选正则表达式。

返回值描述
Range

跨越单词的范围,或 undefined

返回由行号表示的文本行。请注意,返回的对象是非活动的,文档的更改不会反映出来。

参数描述
line: number

[0, lineCount) 中的行号。

返回值描述
TextLine

一个

返回由位置表示的文本行。请注意,返回的对象是非活动的,文档的更改不会反映出来。

该位置将被 调整

另请参阅 TextDocument.lineAt

参数描述
position: Position

一个位置。

返回值描述
TextLine

一个

将位置转换为零基偏移量。

该位置将被 调整

参数描述
position: Position

一个位置。

返回值描述
number

UTF-16 代码单元 中的有效零基偏移量。

将零基偏移量转换为位置。

参数描述
offset: number

文档中的零基偏移量。此偏移量以 UTF-16 代码单元 为单位。

返回值描述
Position

有效的 Position

保存底层文件。

参数描述
返回值描述
Thenable<boolean>

一个 Promise,当文件已保存时,将解析为 true。如果保存失败,将返回 false

确保位置包含在此文档的范围内。

参数描述
position: Position

一个位置。

返回值描述
Position

给定位置或新、已调整的位置。

确保范围完全包含在此文档中。

参数描述
range: Range

一个范围。

返回值描述
Range

给定范围或新、已调整的范围。

TextDocumentChangeEvent

描述事务性 文档 更改的事件。

属性

内容更改数组。

受影响的文档。

文档更改的原因。如果原因未知,则为 undefined

TextDocumentChangeReason

文本文档更改的原因。

枚举成员

文本更改由撤销操作引起。

文本更改由重做操作引起。

TextDocumentContentChangeEvent

描述 文档 文本中单个更改的事件。

属性

被替换的范围。

被替换范围的长度。

被替换范围的偏移量。

该范围的新文本。

TextDocumentContentProvider

文本文档内容提供程序允许向编辑器添加只读文档,例如来自 dll 的源或 md 生成的 html。

内容提供程序是为 uri-scheme 注册 的。当要 加载 具有该方案的 uri 时,将询问内容提供程序。

事件

一个信号量资源已更改的事件。

方法

为给定的 uri 提供文本内容。

编辑器将使用返回的字符串内容来创建只读 文档。应在相应的文档 关闭 后释放分配的资源。

注意:由于行尾序列的规范化,创建的 文档 的内容可能与提供的文本不完全相同。

参数描述
uri: Uri

一个 uri,其方案与注册此提供程序的方案 匹配

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<string>

一个字符串或一个解析为该字符串的 thenable。

TextDocumentSaveReason

表示文本文档被保存的原因。

枚举成员

手动触发,例如,用户按下保存、开始调试或通过 API 调用。

延迟后自动保存。

当编辑器失去焦点时。

TextDocumentShowOptions

表示用于配置在 编辑器 中显示 文档 行为的选项。

属性

一个可选标志,当设置为 true 时,将阻止 编辑器 获取焦点。

一个可选标志,用于控制 编辑器 选项卡是否显示为预览。预览选项卡将被替换和重用,直到设置为保留 - 显式设置或通过编辑。

请注意,如果用户在设置中禁用了预览编辑器,则将忽略此标志。

用于在 编辑器 中为文档设置可选选择。

应显示 编辑器 的可选视图列。默认为 活动 列。不存在的列最多会创建到 ViewColumn.Nine。使用 ViewColumn.Beside 在当前活动编辑器旁边打开编辑器。

TextDocumentWillSaveEvent

文档 将要保存时触发的事件。

要在保存文档之前对其进行修改,请调用 waitUntil 函数,并提供一个解析为 文本编辑 数组的 thenable。

属性

将要保存的文档。

触发保存的原因。

方法

允许暂停事件循环并应用 预保存编辑。后续调用此函数的编辑将按顺序应用。如果文档发生了并发修改,这些编辑将被忽略

注意:此函数只能在事件分派期间调用,不能异步调用。

workspace.onWillSaveTextDocument(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
参数描述
thenable: Thenable<readonly TextEdit[]>

一个解析为 预保存编辑 的 thenable。

返回值描述
void

允许暂停事件循环直到提供的 thenable 解析。

注意:此函数只能在事件分派期间调用。

参数描述
thenable: Thenable<any>

一个延迟保存的 thenable。

返回值描述
void

TextEdit

文本编辑表示应应用于文档的编辑。

静态

创建删除编辑的实用程序。

参数描述
range: Range

一个范围。

返回值描述
TextEdit

一个新的文本编辑对象。

创建插入编辑的实用程序。

参数描述
position: Position

一个位置,它将成为一个空范围。

newText: string

一个字符串。

返回值描述
TextEdit

一个新的文本编辑对象。

创建替换编辑的实用程序。

参数描述
range: Range

一个范围。

newText: string

一个字符串。

返回值描述
TextEdit

一个新的文本编辑对象。

创建 eol 编辑的实用程序。

参数描述
eol: EndOfLine

一个 eol 序列。

返回值描述
TextEdit

一个新的文本编辑对象。

构造函数

创建一个新的 TextEdit。

参数描述
range: Range

一个范围。

newText: string

一个字符串。

返回值描述
TextEdit

属性

文档中使用的 eol 序列。

请注意,eol 序列将应用于整个文档。

此编辑将插入的字符串。

此编辑适用的范围。

TextEditor

表示附加到 文档 的编辑器。

属性

与此文本编辑器关联的文档。此文本编辑器在其整个生命周期中,其文档将保持不变。

文本编辑器选项。

此文本编辑器上的主选择。是 TextEditor.selections[0] 的简写。

此文本编辑器中的选择。主选择始终位于索引 0 处。

此编辑器显示的列。如果这不是主编辑器之一(例如,嵌入式编辑器),或者编辑器列大于三,则为 undefined

编辑器中当前可见的范围(垂直方向)。这仅考虑垂直滚动,不考虑水平滚动。

方法

在与此文本编辑器关联的文档上执行编辑。

给定的回调函数将使用一个 edit-builder 调用,必须使用该 edit-builder 来进行编辑。请注意,edit-builder 仅在回调执行期间有效。

参数描述
callback: (editBuilder: TextEditorEdit) => void

一个可以使用 edit-builder 创建编辑的函数。

options?: {undoStopAfter: boolean, undoStopBefore: boolean}

围绕此编辑的撤销/重做行为。默认情况下,将在该编辑之前和之后创建撤销点。

返回值描述
Thenable<boolean>

一个解析为指示编辑是否可以应用的布尔值的 Promise。

隐藏文本编辑器。

  • 已弃用 - 请改用命令 workbench.action.closeActiveEditor。此方法可能出现意外行为,将在下一个主要版本中删除。
参数描述
返回值描述
void

插入一个 片段 并将编辑器置于片段模式。“片段模式”意味着编辑器会添加占位符和其他光标,以便用户可以完成或接受片段。

参数描述
snippet: SnippetString

在此编辑中要插入的片段。

location?: Range | Position | readonly Range[] | readonly Position[]

插入片段的位置或范围,默认为当前编辑器选择或多个选择。

options?: {keepWhitespace: boolean, undoStopAfter: boolean, undoStopBefore: boolean}

围绕此编辑的撤销/重做行为。默认情况下,将在该编辑之前和之后创建撤销点。

返回值描述
Thenable<boolean>

一个 Promise,它解析为一个指示片段是否可以插入的布尔值。请注意,Promise 并不表示片段已完全填写或接受。

根据 revealType 进行滚动,以显示给定的范围。

参数描述
range: Range

一个范围。

revealType?: TextEditorRevealType

用于显示 range 的滚动策略。

返回值描述
void

向文本编辑器添加一组装饰。如果已存在具有给定 装饰类型 的装饰集,则会被替换。如果 rangesOrOptions 为空,则会删除具有给定 装饰类型 的现有装饰。

另请参阅 createTextEditorDecorationType

参数描述
decorationType: TextEditorDecorationType

装饰类型。

rangesOrOptions: readonly Range[] | readonly DecorationOptions[]

可以是 范围 或更详细的 选项

返回值描述
void

显示文本编辑器。

参数描述
column?: ViewColumn

显示此编辑器的 。此方法可能出现意外行为,将在下一个主要版本中删除。

返回值描述
void

TextEditorCursorStyle

光标的渲染样式。

枚举成员

将光标渲染为粗垂直线。

将光标渲染为实心块。

将光标渲染为粗水平线。

将光标渲染为细垂直线。

将光标渲染为带轮廓的块。

将光标渲染为细水平线。

TextEditorDecorationType

表示一组共享相同 样式选项 的装饰句柄,用于 文本编辑器

要获取 TextEditorDecorationType 的实例,请使用 createTextEditorDecorationType

属性

句柄的内部表示。

方法

删除此装饰类型以及所有使用它的文本编辑器上的所有装饰。

参数描述
返回值描述
void

TextEditorEdit

将在 TextEditor 上一次事务中应用的复杂编辑。它包含编辑的描述,如果编辑有效(例如,没有重叠区域,文档在此期间未被更改等),则可以将其应用于与 文本编辑器 关联的 文档 上。

方法

删除特定文本区域。

参数描述
location: Range | Selection

此操作应删除的范围。

返回值描述
void

在指定位置插入文本。您可以在 value 中使用 \r\n\n,它们将被标准化为当前 文档 的行尾序列。尽管可以使用 replace 创建等效的文本编辑,但 insert 会产生不同的结果选择(它会移动)。

参数描述
location: Position

应将新文本插入的位置。

value: string

此操作应插入的新文本。

返回值描述
void

用新值替换特定文本区域。您可以在 value 中使用 \r\n\n,它们将被标准化为当前 文档 的行尾序列。

参数描述
location: Range | Position | Selection

此操作应删除的范围。

value: string

在删除 location 后,此操作应插入的新文本。

返回值描述
void

设置行尾序列。

参数描述
endOfLine: EndOfLine

文档 的行尾序列。

返回值描述
void

TextEditorLineNumbersStyle

行号的渲染样式。

枚举成员

不渲染行号。

渲染行号。

渲染相对于主光标位置的行号。

在每第 10 行渲染行号。

TextEditorOptions

表示 文本编辑器选项

属性

此编辑器中光标的渲染样式。在获取文本编辑器选项时,此属性将始终存在。在设置文本编辑器选项时,此属性是可选的。

insertSpaces 为 true 时插入的空格数。

在获取文本编辑器选项时,此属性始终为数字(已解析)。在设置文本编辑器选项时,此属性是可选的,可以是数字或 "tabSize"

按下 Tab 键时插入 n 个空格。在获取文本编辑器选项时,此属性始终为布尔值(已解析)。在设置文本编辑器选项时,此属性是可选的,可以是布尔值或 "auto"

渲染相对于当前行号的相对行号。在获取文本编辑器选项时,此属性将始终存在。在设置文本编辑器选项时,此属性是可选的。

一个制表符占据的空格数。它有两个用途:

  • 制表符的渲染宽度;
  • insertSpaces 为 true 且 indentSize 设置为 "tabSize" 时插入的空格数。

在获取文本编辑器选项时,此属性始终为数字(已解析)。在设置文本编辑器选项时,此属性是可选的,可以是数字或 "auto"

TextEditorOptionsChangeEvent

表示描述 文本编辑器选项 更改的事件。

属性

文本编辑器选项 的新值。

选项已更改的 文本编辑器

TextEditorRevealType

表示文本编辑器中 显示 策略。

枚举成员

将以最少的滚动来显示范围。

该范围将始终在视口的中心显示。

如果该范围位于视口之外,它将显示在视口中心。否则,它将以尽可能少的滚动来显示。

该范围将始终在视口顶部显示。

TextEditorSelectionChangeEvent

表示描述 文本编辑器选择 更改的事件。

属性

触发此事件的更改类型。可以为undefined

文本编辑器选区的新值。

选区已更改的文本编辑器

TextEditorSelectionChangeKind

表示可能导致选区更改事件的源。

枚举成员

由于在编辑器中键入而导致的选区更改。

由于在编辑器中单击而导致的选区更改。

由于运行命令而导致的选区更改。

TextEditorViewColumnChangeEvent

表示描述文本编辑器视图列更改的事件。

属性

视图列已更改的文本编辑器

文本编辑器视图列的新值。

TextEditorVisibleRangesChangeEvent

表示描述文本编辑器可见范围更改的事件。

属性

可见范围已更改的文本编辑器

文本编辑器可见范围的新值。

TextLine

表示文本行,例如源代码行。

TextLine 对象是不可变的。当文档发生更改时,先前检索的行将不再代表最新状态。

属性

第一个非空白字符的偏移量,其中空白字符由/\s/定义。注意,如果一行全是空白字符,则返回该行的长度。

此行是否仅包含空白字符,是TextLine.firstNonWhitespaceCharacterIndex === TextLine.text.length的简写。

基于零的行号。

此行覆盖的范围(不包括行分隔符字符)。

此行覆盖的范围(包括行分隔符字符)。

此行的文本(不包括行分隔符字符)。

ThemableDecorationAttachmentRenderOptions

表示文本装饰内容之前之后的主题特定渲染样式。

属性

将应用于装饰附件的 CSS 样式属性。

将应用于装饰附件的 CSS 样式属性。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰附件的 CSS 样式属性。

将要在附件中渲染的图像的绝对路径或 URI。可以显示图标或文本,但不能同时显示。

定义将在附件中显示的文本内容。可以显示图标或文本,但不能同时显示。

将应用于装饰附件的 CSS 样式属性。

将应用于装饰附件的 CSS 样式属性。

将应用于装饰附件的 CSS 样式属性。

将应用于装饰附件的 CSS 样式属性。

将应用于装饰附件的 CSS 样式属性。

将应用于装饰附件的 CSS 样式属性。

ThemableDecorationInstanceRenderOptions

表示装饰实例的主题化渲染选项。

属性

定义插入在装饰文本之后的附件的渲染选项。

定义插入在装饰文本之前的附件的渲染选项。

ThemableDecorationRenderOptions

表示文本编辑器装饰的主题特定渲染样式。

属性

定义插入在装饰文本之后的附件的渲染选项。

装饰的背景颜色。使用 rgba() 并定义透明背景颜色以与其他装饰良好配合。或者,可以 引用 颜色注册表中的颜色。

定义插入在装饰文本之前的附件的渲染选项。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰所包围文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。

将应用于装饰所包围文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。

将应用于装饰所包围文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。

将应用于装饰所包围文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。

将应用于装饰所包围文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰所包围文本的 CSS 样式属性。

要渲染在装订区中的图像的**绝对路径**或 URI。

指定装订图标的大小。可用值为 'auto'、'contain'、'cover' 以及任何百分比值。更多信息请参阅:https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰所包围文本的 CSS 样式属性。

将应用于装饰包围的文本的 CSS 样式属性。建议使用 'outline' 来设置一个或多个单独的轮廓属性。

将应用于装饰包围的文本的 CSS 样式属性。建议使用 'outline' 来设置一个或多个单独的轮廓属性。

将应用于装饰包围的文本的 CSS 样式属性。建议使用 'outline' 来设置一个或多个单独的轮廓属性。

概览标尺中装饰的颜色。使用 rgba() 并定义透明颜色,以便与其他装饰良好配合。

将应用于装饰所包围文本的 CSS 样式属性。

ThemeColor

对工作台中颜色https://vscode.js.cn/api/references/theme-color的引用。优先使用主题颜色而非自定义颜色,因为它为主题作者和用户提供了更改颜色的可能性。

构造函数

创建一个主题颜色的引用。

参数描述
id: string

颜色的id。可用颜色列表可在https://vscode.js.cn/api/references/theme-color中找到。

返回值描述
ThemeColor

属性

此颜色的 ID。

ThemeIcon

命名图标的引用。当前支持FileFolderThemeIcon id。优先使用主题图标而非自定义图标,因为它为产品主题作者提供了更改图标的可能性。

注意,主题图标也可以在标签和描述中渲染。支持主题图标的地方会详细说明,并使用$(<name>)语法,例如quickPick.label = "Hello World $(globe)"

静态

代表文件的图标的引用。图标取自当前文件图标主题,或使用占位符图标。

代表文件夹的图标的引用。图标取自当前文件图标主题,或使用占位符图标。

构造函数

创建一个主题图标的引用。

参数描述
id: string

图标的 id。可用图标列表可在https://vscode.js.cn/api/references/icons-in-labels#icon-listing中找到。

color?: ThemeColor

可选的图标ThemeColor。该颜色目前仅在TreeItem中使用。

返回值描述
ThemeIcon

属性

图标的可选 ThemeColor。该颜色目前仅在TreeItem中使用。

图标的 id。可用图标列表可在https://vscode.js.cn/api/references/icons-in-labels#icon-listing中找到。

TreeCheckboxChangeEvent<T>

描述树项复选框状态更改的事件。

属性

被选中或取消选中的项。

TreeDataProvider<T>

提供树数据的提供程序

事件

一个可选事件,用于信号通知元素或根已更改。这将触发视图递归更新更改的元素/根及其子项(如果已显示)。要信号通知根已更改,请不要传递任何参数,或传递undefinednull

方法

获取 element 的子项,如果未传递 element,则获取根的子项。

参数描述
element?: T

提供程序从中获取子项的元素。可以为undefined

返回值描述
ProviderResult<T[]>

element 的子项,如果未传递 element,则为根的子项。

可选方法,用于返回 element 的父项。如果 element 是根的子项,则返回nullundefined

注意:应实现此方法以访问 reveal API。

参数描述
element: T

需要返回其父项的元素。

返回值描述
ProviderResult<T>

element 的父项。

获取 elementTreeItem 表示形式

参数描述
element: T

请求 TreeItem 表示形式的元素。

返回值描述
TreeItem | Thenable<TreeItem>

元素的 TreeItem 表示形式。

在鼠标悬停时调用以解析 TreeItem 属性(如果未定义)。在树项单击/打开时调用以解析 TreeItem 属性(如果未定义)。只能在 resolveTreeItem 中解析未定义的属性。将来可能会扩展功能,包括在选择和/或打开时调用以解析其他缺失的属性。

每个 TreeItem 只会调用一次。

不应从 resolveTreeItem 内部触发 onDidChangeTreeData。

注意,此函数在树项已显示在 UI 中时调用。因此,任何改变显示(标签、描述等)的属性都无法更改。

参数描述
item: TreeItem

应设置 item 的未定义属性,然后返回 item

element: T

与 TreeItem 关联的对象。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<TreeItem>

解析后的 tree item 或可解析为 tree item 的 thenable。返回给定的 item 也是可以的。当未返回结果时,将使用给定的 item

TreeDragAndDropController<T>

TreeView 提供拖放支持。

属性

TreeDragAndDropControllerhandleDrag 方法可能会添加到树数据传输中的 mime 类型。这可以是明确定义的、现有的 mime 类型,也可以是扩展定义的 mime 类型。

树的建议 mime 类型(application/vnd.code.tree.<treeidlowercase>)将自动添加。

DragAndDropControllerhandleDrop 方法支持的 mime 类型。这可以是明确定义的、现有的 mime 类型,也可以是扩展定义的 mime 类型。

要支持从树拖放,您需要添加该树的 mime 类型。这包括从同一树内拖放。建议树的 mime 类型格式为 application/vnd.code.tree.<treeidlowercase>

使用特殊的 files mime 类型来支持拖放的文件的所有类型,无论文件的实际 mime 类型如何。

要了解拖动项的 mime 类型

  1. 设置您的 DragAndDropController
  2. 使用“Developer: Set Log Level...”命令将级别设置为“Debug”
  3. 打开开发者工具,并将具有未知 mime 类型的项拖到您的树上。mime 类型将记录到开发者控制台

请注意,无法发送到扩展的 mime 类型将被省略。

方法

当用户开始从此 DragAndDropController 拖动项时,将调用 handleDrag。扩展可以使用 handleDrag 将其 DataTransferItem 项添加到拖放中。

handleDrag 中添加的 mime 类型在应用程序外部将不可用。

当项被拖放到同一棵树中的另一个树项时,您的 DataTransferItem 对象将被保留。使用树的推荐 mime 类型(application/vnd.code.tree.<treeidlowercase>)在数据传输中添加树对象。请参阅 DataTransferItem 的文档,了解如何充分利用此功能。

要添加可拖放到编辑器的数据传输项,请使用应用程序特定的 mime 类型“text/uri-list”。“text/uri-list”的数据应为用 \r\n 分隔的 toString()ed URI 字符串。要指定文件中的光标位置,请将 Uri 的片段设置为 L3,5,其中 3 是行号,5 是列号。

参数描述
source: readonly T[]

拖放操作的源项。

dataTransfer: DataTransfer

与此拖动关联的数据传输。

token: CancellationToken

表示拖动已被取消的取消令牌。

返回值描述
void | Thenable<void>

当拖放操作导致此 DragAndDropController 所属的树被放下时调用。

扩展应为需要刷新的任何元素触发 onDidChangeTreeData

参数描述
target: T

发生放置的树目标元素。当为 undefined 时,目标是根。

dataTransfer: DataTransfer

拖动源的数据传输项。

token: CancellationToken

表示放置已取消的取消令牌。

返回值描述
void | Thenable<void>

TreeItem

树项是树的 UI 元素。树项由数据提供程序创建。

构造函数

参数描述
label: string | TreeItemLabel

描述此项的可读字符串

collapsibleState?: TreeItemCollapsibleState
返回值描述
TreeItem

参数描述
resourceUri: Uri

表示此项的资源的Uri

collapsibleState?: TreeItemCollapsibleState
返回值描述
TreeItem

属性

辅助功能信息,用于屏幕阅读器与此树项交互。通常,TreeItem 无需设置 accessibilityInformation 的 role;但是,在某些情况下,TreeItem 的显示方式不是树状的,这时设置 role 可能是有意义的。

树项的TreeItemCheckboxState。当checkboxState更改时,应触发onDidChangeTreeData

当选择树项时应执行的Command

当树项在编辑器中打开内容时,请使用vscode.openvscode.diff作为命令 ID。使用这些命令可确保生成的编辑器与内置树打开编辑器的方式一致。

树项的上下文值。可用于在树中贡献项特定的操作。例如,如果树项具有 folder 的上下文值。在通过 menus 扩展点向 view/item/context 贡献操作时,您可以在 when 表达式中为 viewItem 键指定上下文值,例如 viewItem == folder

"contributes": {
  "menus": {
    "view/item/context": [
      {
        "command": "extension.deleteFolder",
        "when": "viewItem == folder"
      }
    ]
  }
}

这将仅为 contextValuefolder 的项显示操作 extension.deleteFolder

可读字符串,显示不那么醒目。如果为true,则从resourceUri派生;如果为falsy,则不显示。

树项的图标路径或ThemeIcon。如果为falsy,则分配Folder Theme Icon(如果项是可折叠的),否则分配File Theme Icon。当指定文件或文件夹ThemeIcon时,图标将从当前文件图标主题中为指定的 theme icon 派生,使用resourceUri(如果提供)。

树项的可选 ID,在树中必须唯一。ID 用于保留树项的选择和展开状态。

如果未提供 ID,则会根据树项的标签生成 ID。注意,当标签更改时,ID 也会更改,并且无法保持选择和展开状态的稳定。

描述此项的可读字符串。如果为falsy,则从resourceUri派生。

与此项目关联的资源的 Uri

设置后,此属性用于自动派生多个项目属性,如果它们没有被明确提供的话。

悬停在此项目上时的工具提示文本。

TreeItemCheckboxState

树项目复选框状态

枚举成员

确定项目未被选中

确定项目已被选中

TreeItemCollapsibleState

树项目的可折叠状态

枚举成员

确定项目既不能折叠也不能展开。暗示它没有子项。

确定一个项是折叠的

确定一个项是展开的

TreeItemLabel

描述 Tree item 的标签

属性

要高亮的标签中的范围。范围定义为两个数字的元组,第一个是包含的起始索引,第二个是排除的结束索引

描述 Tree item 的人类可读字符串。

TreeView<T>

表示一个 Tree 视图

事件

一个事件,用于指示元素或根已被选中或取消选中。

selection 发生变化时触发的事件

visibility 发生变化时触发的事件

当元素被折叠时触发的事件

当元素被展开时触发的事件

属性

此 TreeView 要显示的徽章。要删除徽章,请设置为 undefined。

可选的、人类可读的描述,将以不太突出的方式显示在视图标题中。将标题描述设置为 null、undefined 或空字符串将从视图中删除描述。

可选的、人类可读的消息,将在视图中显示。将消息设置为 null、undefined 或空字符串将从视图中删除消息。

当前选定的元素。

树视图的标题最初取自扩展的 package.json。对 title 属性的更改将正确地反映在视图标题的用户界面中。

如果 tree view 可见,则为 true,否则为 false

方法

销毁此对象。

参数描述
返回值描述
any

在树视图中显示指定的元素。如果树视图不可见,则显示树视图并显示元素。

默认情况下,已显示的元素将被选中。为了不选中,请将选项 select 设置为 false。为了聚焦,请将选项 focus 设置为 true。为了展开已显示的元素,请将选项 expand 设置为 true。要递归展开,请将 expand 设置为要展开的级别数。

参数描述
element: T
options?: {expand: number | boolean, focus: boolean, select: boolean}
返回值描述
Thenable<void>

TreeViewExpansionEvent<T>

TreeView 中的元素被展开或折叠时触发的事件

属性

已展开或折叠的元素。

TreeViewOptions<T>

创建 TreeView 的选项

属性

树是否支持多选。当树支持多选且从树中执行命令时,命令的第一个参数是执行命令的树项,第二个参数是包含所有选定树项的数组。

一个可选接口,用于在树视图中实现拖放。

默认情况下,当树项的子项已被获取时,子复选框将根据父树项的选中状态自动管理。如果树项默认折叠(表示子项尚未获取),则子复选框将不会更新。要覆盖此行为并在扩展中管理子项和父项的复选框状态,请将其设置为 true

TreeViewOptions.manageCheckboxStateManually 为 false(默认行为)的示例

  1. 选中一个树项,然后获取其子项。子项将被选中。

  2. 选中一个树项的父项。该树项及其所有同级项都将被选中。

  • 父项
    • 子项 1
    • 子项 2 当用户选中父项时,树将如下所示
  • 父项
    • 子项 1
    • 子项 2
  1. 选中一个树项及其所有同级项。父项将被选中。
  • 父项
    • 子项 1
    • 子项 2 当用户选中子项 1 和子项 2 时,树将如下所示
  • 父项
    • 子项 1
    • 子项 2
  1. 取消选中一个树项。父项将被取消选中。
  • 父项
    • 子项 1
    • 子项 2 当用户取消选中子项 1 时,树将如下所示
  • 父项
    • 子项 1
    • 子项 2

是否显示折叠所有操作。

提供树数据的提供程序。

TreeViewSelectionChangeEvent<T>

tree view's selection 发生变化时触发的事件

属性

选定的元素。

TreeViewVisibilityChangeEvent

tree view's visibility 发生变化时触发的事件

属性

如果 tree view 可见,则为 true,否则为 false

TypeDefinitionProvider

类型定义提供程序定义了扩展和转到类型定义功能之间的约定。

方法

提供指定位置和文档中的符号的类型定义。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<Definition | LocationLink[]>

定义或解析为定义的 thenable。可以通过返回 undefinednull 来表示没有结果。

TypeHierarchyItem

表示类型层次结构中的一个项目,例如类或接口。

构造函数

创建一个新的类型层次结构项。

参数描述
kind: SymbolKind

项目的种类。

name: string

项目的名称。

detail: string

项目的详细信息。

uri: Uri

项目的 URI。

range: Range

项目的整个范围。

selectionRange: Range

项目的选择范围。

返回值描述
TypeHierarchyItem

属性

此项的更多详细信息,例如函数的签名。

此项的种类。

此项的名称。

包含此符号的范围,不包括前导/尾随空格,但包括其他所有内容,例如注释和代码。

选择和显示此符号时应选择和显示的范围,例如类的名称。必须包含在 range 属性中。

此项的标签。

此项的资源标识符。

TypeHierarchyProvider

类型层次结构提供程序接口描述了扩展和类型层次结构功能之间的约定。

方法

通过返回由给定文档和位置表示的项目来引导类型层次结构。此项目将用作类型图的入口点。提供程序应在没有该位置的项目时返回 undefinednull

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<TypeHierarchyItem | TypeHierarchyItem[]>

一个或多个类型层次结构项,或一个解析为这些项的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

提供项目的所有子类型,例如所有从中派生/继承给定项目的类型。在图论中,这描述了类型图内的有向和带注释的边,例如给定项目是起始节点,结果是可以达到的节点。

参数描述
item: TypeHierarchyItem

应为其计算子类型的层次结构项。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<TypeHierarchyItem[]>

一组直接子类型或解析为这些子类型的 thenable。可以通过返回 undefinednull 来表示缺少结果。

提供项目的所有超类型,例如所有从中派生/继承的类型。在图论中,这描述了类型图内的有向和带注释的边,例如给定项目是起始节点,结果是可以达到的节点。

参数描述
item: TypeHierarchyItem

应为其计算超类型的层次结构项。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<TypeHierarchyItem[]>

一组直接超类型或解析为这些超类型的 thenable。可以通过返回 undefinednull 来表示缺少结果。

UIKind

可能使用扩展的 UI 类型。

枚举成员

从桌面应用程序访问扩展。

从 Web 浏览器访问扩展。

Uri

表示文件或其它资源的通用资源标识符,例如未命名资源。

静态

从文件系统路径创建 URI。scheme 将为 file

Uri.parse 和 Uri.file 之间的区别在于,后者将参数视为路径,而不是字符串化的 URI。例如,Uri.file(path)Uri.parse('file://' + path)相同,因为路径可能包含被解释的字符 (#_ 和 ?)。请参阅以下示例

const good = URI.file('/coding/c#/project1');
good.scheme === 'file';
good.path === '/coding/c#/project1';
good.fragment === '';

const bad = URI.parse('file://' + '/coding/c#/project1');
bad.scheme === 'file';
bad.path === '/coding/c'; // path is now broken
bad.fragment === '/project1';
参数描述
path: string

文件系统或 UNC 路径。

返回值描述
Uri

新的 Uri 实例。

从其组件部分创建 URI

另请参阅 Uri.toString

参数描述
components: {authority: string, fragment: string, path: string, query: string, scheme: string}

URI 的组件部分。

返回值描述
Uri

新的 Uri 实例。

创建一个新的 URI,其路径是连接基本 URI 的路径和提供的路径段的结果。

  • 注意 1:joinPath 仅影响路径组件,所有其他组件(scheme、authority、query 和 fragment)保持不变。
  • 注意 2:基本 URI 必须具有路径;否则会引发错误。

路径段按以下方式进行规范化

  • 路径分隔符(/\)的序列被替换为单个分隔符
  • 对于 Windows 上的 file-URI,反斜杠字符(``)被视为路径分隔符
  • .. 段表示父段,. 表示当前段
  • 路径有一个始终保留的根,例如在 Windows 上,驱动器字母是根,所以这是正确的:joinPath(Uri.file('file:///c:/root'), '../../other').fsPath === 'c:/other'
参数描述
base: Uri

一个 URI。必须具有路径。

...pathSegments: string[]

一个或多个路径片段

返回值描述
Uri

一个与给定片段连接的新 URI,其路径是连接的结果

从字符串创建 URI,例如 http://www.example.com/some/pathfile:///usr/homescheme:with/path

注意,一段时间以来,不带 scheme 的 URI 被接受。这是不正确的,因为所有 URI 都应该有一个 scheme。为了避免破坏现有代码,添加了可选的 strict 参数。我们强烈建议使用它,例如 Uri.parse('my:uri', true)

另请参阅 Uri.toString

参数描述
value: string

URI 的字符串值。

strict?: boolean

value 为空或无法解析 scheme 时,引发错误。

返回值描述
Uri

新的 Uri 实例。

构造函数

使用 file 和 parse 工厂函数来创建新的 Uri 对象。

参数描述
scheme: string
authority: string
path: string
query: string
fragment: string
返回值描述
Uri

属性

Authority 是 http://www.example.com/some/path?query#fragment 中的 www.example.com 部分。介于第一个双斜杠和下一个斜杠之间的部分。

Fragment 是 http://www.example.com/some/path?query#fragment 中的 fragment 部分。

此 Uri 对应的文件系统路径的字符串表示。

将处理 UNC 路径并将 Windows 驱动器号规范化为小写。还将使用特定于平台的路径分隔符。

  • 验证路径中的无效字符和语义。
  • 查看此 URI 的 scheme。
  • 生成的字符串不应用于显示目的,而应用于磁盘操作,如 readFile 等。

path 属性的区别在于使用了特定于平台的路径分隔符和对 UNC 路径的处理。以下示例概述了区别

const u = URI.parse('file://server/c$/folder/file.txt');
u.authority === 'server';
u.path === '/c$/folder/file.txt';
u.fsPath === '\\serverc$\folder\file.txt';

Path 是 http://www.example.com/some/path?query#fragment 中的 /some/path 部分。

Query 是 http://www.example.com/some/path?query#fragment 中的 query 部分。

Scheme 是 http://www.example.com/some/path?query#fragment 中的 http 部分。第一个冒号之前的部分。

方法

返回此 Uri 的 JSON 表示。

参数描述
返回值描述
any

一个对象。

返回此 Uri 的字符串表示。URI 的表示和规范化取决于 scheme。

  • 生成的字符串可以安全地与 Uri.parse 一起使用。
  • 生成的字符串不应用于显示目的。

注意,实现将进行激进编码,这通常会导致意外但并非不正确的結果。例如,冒号被编码为 %3A,这对于文件 URI 来说可能出乎意料。同样,&= 也将被编码,这对于 http URI 来说可能出乎意料。出于稳定性原因,这无法更改。如果您受到过于激进的编码影响,应使用 skipEncoding 参数:uri.toString(true)

参数描述
skipEncoding?: boolean

不对结果进行百分比编码,默认为 false。请注意,路径中出现的 #? 字符将始终被编码。

返回值描述
字符串

此 Uri 的字符串表示。

从此 URI 派生一个新的 URI。

let file = Uri.parse('before:some/file/path');
let other = file.with({ scheme: 'after' });
assert.ok(other.toString() === 'after:some/file/path');
参数描述
change: {authority: string, fragment: string, path: string, query: string, scheme: string}

描述对此 URI 进行更改的对象。要取消设置组件,请使用 null 或空字符串。

返回值描述
Uri

一个反映给定更改的新 URI。如果更改不更改任何内容,则返回 this URI。

UriHandler

URI 处理程序负责处理系统范围的 uris

另请参阅 window.registerUriHandler

方法

处理提供的系统范围的 Uri

另请参阅 window.registerUriHandler

参数描述
uri: Uri
返回值描述
ProviderResult<void>

ViewBadge

显示视图值的徽章

属性

要在徽章的工具提示中显示的标签。

要在徽章中显示的值。

ViewColumn

表示窗口中的编辑器位置。编辑器可以排列成网格,每个列按其出现的顺序表示网格中的一个编辑器位置。

枚举成员

一个符号化的编辑器列,表示活动列旁边的列。此值可在打开编辑器时使用,但编辑器的解析 viewColumn 值将始终为 OneTwoThree... 或 undefined,但绝不会是 Beside

一个符号化的编辑器列,表示当前活动的列。此值可在打开编辑器时使用,但编辑器的解析 viewColumn 值将始终为 OneTwoThree... 或 undefined,但绝不会是 Active

第一个编辑器列。

第二个编辑器列。

第三个编辑器列。

第四个编辑器列。

第五个编辑器列。

第六个编辑器列。

第七个编辑器列。

第八个编辑器列。

第九个编辑器列。

Webview

显示 HTML 内容,类似于 iframe。

事件

当 Webview 内容发送消息时触发。

Webview 内容可以将字符串或 JSON 可序列化对象发送回扩展。它们不能发送 BlobFileImageData 和其他 DOM 特定的对象,因为接收消息的扩展不在浏览器环境中运行。

属性

Webview 资源的 CSP(内容安全策略)源。

这是内容安全策略规则中应使用的源。

`img-src https: ${webview.cspSource} ...;`;

Webview 的 HTML 内容。

这应该是一个完整、有效的 HTML 文档。更改此属性会导致 Webview 被重新加载。

Webview 与常规扩展进程是隔离的,因此与 Webview 的所有通信都必须使用消息传递。要从扩展向 Webview 发送消息,请使用 postMessage。要从 Webview 向扩展发送消息,请使用 Webview 内的 acquireVsCodeApi 函数获取对编辑器的 API 的句柄,然后调用 .postMessage()

<script>
    const vscode = acquireVsCodeApi(); // acquireVsCodeApi can only be invoked once
    vscode.postMessage({ message: 'hello!' });
</script>

要加载工作区中的资源到 Webview,请使用 asWebviewUri 方法,并确保资源的目录已列在 WebviewOptions.localResourceRoots 中。

请记住,即使 Webview 是沙箱化的,它们仍然允许运行脚本和加载任意内容,因此扩展在处理 Webview 时必须遵循所有标准的 Web 安全最佳实践。这包括正确地清理所有不受信任的输入(包括来自工作区的输入),并设置 内容安全策略

Webview 的内容设置。

方法

将本地文件系统的 URI 转换为可在 Webview 中使用的 URI。

Webview 不能直接使用 file: URI 从工作区或本地文件系统加载资源。asWebviewUri 函数接受一个本地的 file: URI,并将其转换为一个可在 Webview 中用于加载相同资源的 URI。

webview.html = `<img src="${webview.asWebviewUri(
  vscode.Uri.file('/Users/codey/workspace/cat.gif')
)}">`;
参数描述
localResource: Uri
返回值描述
Uri

向 Webview 内容发送消息。

只有当 Webview 处于活动状态时(可见或在后台且设置了 retainContextWhenHidden),才会传递消息。

参数描述
message: any

消息正文。这必须是一个字符串或其他 JSON 可序列化对象。

对于旧版本的 VS Code,如果 ArrayBuffer 包含在 message 中,它将无法正确序列化,Webview 也无法接收。同样,任何类型化数组(如 Uint8Array)的序列化效率将非常低,并且在 Webview 中也不会被重新创建为类型化数组。

然而,如果您的扩展在 package.jsonengines 字段中定位的是 VS Code 1.57+,那么出现在 message 中的任何 ArrayBuffer 值都将更有效地传输到 Webview,并且在 Webview 中也会被正确地重新创建。

返回值描述
Thenable<boolean>

发送消息到 Webview 或因消息不可传递而被丢弃时解析的 Promise。

如果消息已发送到 Webview,则返回 true。消息只能发送到活动的 Webview(即,可见的 Webview 或设置了 retainContextWhenHidden 的隐藏 Webview)。

返回 true 并不意味着消息实际上已被 Webview 收到。例如,Webview 中可能没有设置任何消息监听器,或者消息发送后 Webview 就被销毁了,但在消息被接收之前。

如果您想确认消息是否已被实际接收,可以尝试让您的 Webview 将确认消息发送回您的扩展。

WebviewOptions

Webview 的内容设置。

属性

控制是否在 Webview 内容中启用命令 URI。

默认为 false(禁用命令 URI)。

如果传递一个数组,则只允许数组中的命令。

控制是否在 Webview 内容中启用表单。

如果 启用了脚本,则默认为 true。否则默认为 false。将此属性显式设置为 true 或 false 会覆盖默认值。

控制是否在 Webview 内容中启用脚本。

默认为 false(禁用脚本)。

Webview 可以使用 asWebviewUri 中的 URI 加载本地(文件系统)资源的根路径。

默认为当前工作区的根文件夹以及扩展的安装目录。

传递一个空数组可禁止访问任何本地资源。

Webview 内部 localhost 端口的映射。

端口映射允许 Webview 透明地定义 localhost 端口如何解析。这可用于允许在 Webview 中使用一个静态的 localhost 端口,该端口解析到服务正在运行的随机端口。

如果 Webview 访问 localhost 内容,我们建议您指定端口映射,即使 webviewPortextensionHostPort 端口相同。

注意:端口映射仅适用于 httphttps URL。WebSocket URL(例如 ws://:3000)不能映射到另一个端口。

WebviewPanel

包含 Webview 的面板。

事件

当面板的视图状态发生变化时触发。

当面板被处置时触发。

这可能是因为用户关闭了面板,或者对其调用了 .dispose()

在面板被处置后尝试使用该面板将抛出异常。

属性

面板是否处于活动状态(被用户聚焦)。

面板在 UI 中显示的图标。

Webview 面板的内容设置。

面板在 UI 中显示的标题。

面板的编辑器位置。仅当 Webview 位于编辑器视图列之一时设置此属性。

标识 Webview 面板的类型,例如 'markdown.preview'

面板是否可见。

属于该面板的 Webview

方法

处置 Webview 面板。

这会关闭显示的面板并处置 Webview 拥有的资源。用户关闭 Webview 面板时,Webview 面板也会被处置。这两种情况都会触发 onDispose 事件。

参数描述
返回值描述
any

在给定列中显示 Webview 面板。

Webview 面板一次只能显示在一个列中。如果它已经显示,此方法会将其移动到新列。

参数描述
viewColumn?: ViewColumn

显示面板的视图列。如果未定义,则显示在当前 viewColumn 中。

preserveFocus?: boolean

true 时,Webview 不会获得焦点。

返回值描述
void

WebviewPanelOnDidChangeViewStateEvent

当 Webview 面板的视图状态改变时触发的事件。

属性

视图状态发生改变的 Webview 面板。

WebviewPanelOptions

Webview 面板的内容设置。

属性

控制是否在面板中启用查找小部件。

默认为false

控制当面板不再可见时是否保留 Webview 面板的内容(iframe)。

通常,当面板变为可见时,Webview 面板的 HTML 上下文会被创建;当它被隐藏时,会被销毁。具有复杂状态或 UI 的扩展可以设置 retainContextWhenHidden,使编辑器即使在 Webview 移动到后台标签页时也保留 Webview 上下文。当使用 retainContextWhenHidden 的 Webview 被隐藏时,其脚本和其他动态内容将被暂停。当面板再次可见时,上下文将自动恢复到原始状态。您不能向隐藏的 Webview 发送消息,即使启用了 retainContextWhenHidden

retainContextWhenHidden 会有很高的内存开销,只有在您的面板上下文无法快速保存和恢复时才应使用。

WebviewPanelSerializer<T>

恢复 VS Code 关闭时已持久化的 Webview 面板。

有两种 Webview 持久化类型:

  • 会话内的持久化。
  • 会话间持久化(编辑器重启后)。

WebviewPanelSerializer 仅适用于第二种情况:跨会话持久化 Webview。

会话内的持久化允许 Webview 在隐藏时保存其状态,并在再次可见时从该状态恢复其内容。这完全由 Webview 内容本身驱动。要保存已持久化的状态,请使用任意 JSON 可序列化对象调用 acquireVsCodeApi().setState()。要再次恢复状态,请调用 getState()

// Within the webview
const vscode = acquireVsCodeApi();

// Get existing state
const oldState = vscode.getState() || { value: 0 };

// Update state
setState({ value: oldState.value + 1 });

WebviewPanelSerializer 将此持久化扩展到编辑器重启后。编辑器关闭时,它将保存所有具有序列化器的 Webview 的 setState 状态。在重启后 Webview 首次变为可见时,此状态将被传递给 deserializeWebviewPanel。然后,扩展可以从此状态恢复旧的 WebviewPanel

方法

从其序列化的 state 恢复 Webview 面板。

当序列化的 Webview 首次变得可见时调用。

参数描述
webviewPanel: WebviewPanel

要恢复的 Webview 面板。序列化器应负责此面板。序列化器必须恢复 Webview 的 .html 并设置所有 Webview 事件。

state: T

来自 Webview 内容的持久化状态。

返回值描述
Thenable<void>

指示 Webview 已完全恢复的 Thenable。

WebviewPortMapping

定义 Webview 内部 localhost 使用的端口映射。

属性

目标端口。webviewPort 将解析到此端口。

在 Webview 中重新映射的 localhost 端口。

WebviewView

基于 Webview 的视图。

事件

当视图的可见性改变时触发的事件。

触发可见性变化的事件

  • 视图被折叠或展开。
  • 用户切换到侧边栏或面板中的不同视图组。

请注意,使用上下文菜单隐藏视图会处置视图并触发 onDidDispose

当视图被处置时触发的事件。

当用户显式隐藏视图时,视图会被处置(当用户右键单击视图并取消勾选 Webview 视图时发生)。

在视图被处置后尝试使用该视图将抛出异常。

属性

为此 Webview 视图显示的徽章。要移除徽章,请设置为 undefined。

人类可读的字符串,在标题中以不太突出的方式显示。

在 UI 中显示的视图标题。

视图标题最初来自扩展 package.json 的贡献。

标识 Webview 视图的类型,例如 'hexEditor.dataView'

跟踪 Webview 当前是否可见。

当视图在屏幕上且已展开时,视图是可见的。

视图的底层 Webview。

方法

在 UI 中显示视图。

如果视图被折叠,这将展开它。

参数描述
preserveFocus?: boolean

true 时,视图不会获得焦点。

返回值描述
void

WebviewViewProvider

用于创建 WebviewView 元素的提供程序。

方法

解析 Webview 视图。

当视图首次变得可见时,会调用 resolveWebviewView。这可能发生在视图首次加载时,或当用户隐藏然后再次显示视图时。

参数描述
webviewView: WebviewView

要恢复的 Webview 视图。提供程序应负责此视图。提供程序必须设置 Webview 的 .html 并设置所有它感兴趣的 Webview 事件。

context: WebviewViewResolveContext<unknown>

关于正在解析的视图的附加元数据。

token: CancellationToken

指示正在提供的视图不再需要的取消令牌。

返回值描述
void | Thenable<void>

可选的 thenable,指示视图已完全解析。

WebviewViewResolveContext<T>

正在解析的 Webview 视图的附加信息。

属性

来自 Webview 内容的持久化状态。

为了节省资源,编辑器通常会释放不可见的 Webview 文档(iframe 内容)。例如,当用户折叠视图或切换到侧边栏中的另一个顶级活动时,WebviewView 本身会被保留,但 Webview 的底层文档会被释放。当视图再次可见时,它会被重新创建。

您可以通过在 WebviewOptions 中设置 retainContextWhenHidden 来阻止此行为。但是,这会增加资源使用量,应尽可能避免。相反,您可以使用持久化状态来保存 Webview 的状态,以便它可以被快速重新创建。

要保存持久化状态,请在 Webview 内部使用任何 JSON 可序列化对象调用 acquireVsCodeApi().setState()。要再次恢复状态,请调用 getState()。例如:

// Within the webview
const vscode = acquireVsCodeApi();

// Get existing state
const oldState = vscode.getState() || { value: 0 };

// Update state
setState({ value: oldState.value + 1 });

编辑器确保在 Webview 被隐藏以及跨编辑器重启时正确保存持久化状态。

WindowState

表示窗口的状态。

属性

窗口是否最近有过交互。在活动后立即更改,或在用户不活动一段时间后更改。

当前窗口是否获得焦点。

WorkspaceConfiguration

表示配置。它是以下内容的合并视图:

  • 默认设置
  • 全局(用户)设置
  • 工作区设置
  • 工作区文件夹设置 - 来自请求资源所属的 工作区文件夹 之一。
  • 语言设置 - 在请求语言下定义的设置。

有效值(由 get 返回)通过以下顺序覆盖或合并值来计算:

  1. defaultValue(如果在 package.json 中定义,否则根据值的类型派生)
  2. globalValue(如果定义)
  3. workspaceValue(如果定义)
  4. workspaceFolderValue(如果定义)
  5. defaultLanguageValue(如果定义)
  6. globalLanguageValue(如果定义)
  7. workspaceLanguageValue(如果定义)
  8. workspaceFolderLanguageValue(如果定义)

注意:只有 object 值类型会被合并,所有其他值类型都会被覆盖。

示例 1:覆盖

defaultValue = 'on';
globalValue = 'relative';
workspaceFolderValue = 'off';
value = 'off';

示例 2:语言值

defaultValue = 'on';
globalValue = 'relative';
workspaceFolderValue = 'off';
globalLanguageValue = 'on';
value = 'on';

示例 3:对象值

defaultValue = { a: 1, b: 2 };
globalValue = { b: 3, c: 4 };
value = { a: 1, b: 3, c: 4 };

注意:工作区和工作区文件夹配置包含 launchtasks 设置。它们的基名将成为节标识符的一部分。以下片段显示了如何从 launch.json 中检索所有配置:

// launch.json configuration
const config = workspace.getConfiguration(
  'launch',
  vscode.workspace.workspaceFolders[0].uri
);

// retrieve values
const values = config.get('configurations');

有关更多信息,请参阅 设置

方法

从此配置返回值。

参数描述
section: string

配置名称,支持点分名称。

返回值描述
T

section 指定的值或 undefined

从此配置返回值。

参数描述
section: string

配置名称,支持点分名称。

defaultValue: T

当找不到值时,应返回一个值,该值是 undefined

返回值描述
T

section 指定的值或默认值。

检查此配置是否具有某个值。

参数描述
section: string

配置名称,支持点分名称。

返回值描述
布尔值

如果节不解析为 undefined,则为 true

检索有关配置设置的所有信息。配置值通常由默认值、全局或安装范围的值、工作区特定值、文件夹特定值和语言特定值组成(如果 WorkspaceConfiguration 作用于语言)。

还提供在给定配置设置下定义的所有语言 ID。

注意:配置名称必须指向配置树中的一个叶节点(editor.fontSize 而不是 editor),否则将不返回任何结果。

参数描述
section: string

配置名称,支持点分名称。

返回值描述
{defaultLanguageValue: T, defaultValue: T, globalLanguageValue: T, globalValue: T, key: string, languageIds: string[], workspaceFolderLanguageValue: T, workspaceFolderValue: T, workspaceLanguageValue: T, workspaceValue: T}

有关配置设置的信息或 undefined

更新配置值。更新的配置值将被持久化。

值可以在以下位置更改:

注意:要删除配置值,请使用 undefined,例如:config.update('somekey', undefined)

  • 抛出 - 更新时出错
    • 未注册的配置。
    • 窗口配置到工作区文件夹。
    • 当没有打开工作区时,配置到工作区或工作区文件夹。
    • 当配置不特定于资源时,配置到工作区文件夹。
    • WorkspaceConfiguration 未作用于资源时,配置到工作区文件夹。
参数描述
section: string

配置名称,支持点分名称。

value: any

新值。

configurationTarget?: boolean | ConfigurationTarget

configurationTarget 或布尔值。 - 如果为 true,则更新 全局设置。 - 如果为 false,则更新 工作区设置。 - 如果为 undefinednull,则更新到 工作区文件夹设置(如果配置是资源特定的),否则更新到 工作区设置

overrideInLanguage?: boolean

是否更新请求语言ID范围内的值。 - 如果 true,则更新请求语言ID下的值。 - 如果 undefined,则仅当配置了该语言时,才更新请求语言ID下的值。

返回值描述
Thenable<void>

WorkspaceEdit

WorkspaceEdit 是多个资源和文档的文本和文件更改的集合。

使用 applyEdit 函数来应用 WorkspaceEdit。

构造函数

参数描述
返回值描述
WorkspaceEdit

属性

受文本或资源更改影响的资源数量。

方法

创建一个常规文件。

参数描述
uri: Uri

新文件的 URI。

options?: {contents: Uint8Array | DataTransferFile, ignoreIfExists: boolean, overwrite: boolean}

定义是覆盖现有文件还是忽略。当 overwriteignoreIfExists 都设置时,overwrite 优先。当两者都未设置且文件已存在时,编辑将无法成功应用。content 属性允许设置创建文件的初始内容。

metadata?: WorkspaceEditEntryMetadata

条目的可选元数据。

返回值描述
void

删除给定范围内的文本。

参数描述
uri: Uri

资源标识符。

range: Range

一个范围。

metadata?: WorkspaceEditEntryMetadata

条目的可选元数据。

返回值描述
void

删除文件或文件夹。

参数描述
uri: Uri

要删除的文件的 URI。

options?: {ignoreIfNotExists: boolean, recursive: boolean}
metadata?: WorkspaceEditEntryMetadata

条目的可选元数据。

返回值描述
void

按资源分组的所有文本编辑。

参数描述
返回值描述
Array<[Uri, TextEdit[]]>

[Uri, TextEdit[]] 元组的浅拷贝。

获取资源的文本编辑。

参数描述
uri: Uri

资源标识符。

返回值描述
TextEdit[]

文本编辑数组。

检查资源是否存在文本编辑。

参数描述
uri: Uri

资源标识符。

返回值描述
布尔值

如果给定资源将受到此编辑的影响,则为 true

在给定位置插入给定文本。

参数描述
uri: Uri

资源标识符。

position: Position

一个位置。

newText: string

一个字符串。

metadata?: WorkspaceEditEntryMetadata

条目的可选元数据。

返回值描述
void

重命名一个文件或文件夹。

参数描述
oldUri: Uri

现有文件。

newUri: Uri

新的位置。

options?: {ignoreIfExists: boolean, overwrite: boolean}

定义是覆盖现有文件还是忽略。当 overwriteignoreIfExists 都设置时,overwrite 优先。

metadata?: WorkspaceEditEntryMetadata

条目的可选元数据。

返回值描述
void

替换给定资源的给定范围内的文本。

参数描述
uri: Uri

资源标识符。

range: Range

一个范围。

newText: string

一个字符串。

metadata?: WorkspaceEditEntryMetadata

条目的可选元数据。

返回值描述
void

设置(并替换)资源的文本编辑或片段编辑。

参数描述
uri: Uri

资源标识符。

edits: ReadonlyArray<TextEdit | SnippetTextEdit>

编辑数组。

返回值描述
void

设置(并替换)带元数据的资源的文本编辑或片段编辑。

参数描述
uri: Uri

资源标识符。

edits: ReadonlyArray<[TextEdit | SnippetTextEdit, WorkspaceEditEntryMetadata]>

编辑数组。

返回值描述
void

设置(并替换)资源的笔记本编辑。

参数描述
uri: Uri

资源标识符。

edits: readonly NotebookEdit[]

编辑数组。

返回值描述
void

设置(并替换)带元数据的资源的笔记本编辑。

参数描述
uri: Uri

资源标识符。

edits: ReadonlyArray<[NotebookEdit, WorkspaceEditEntryMetadata]>

编辑数组。

返回值描述
void

WorkspaceEditEntryMetadata

工作区编辑条目的附加数据。支持为条目添加标签,并标记需要用户确认的条目。编辑器将具有相同标签的编辑分组到树节点中,例如所有标记为“字符串更改”的编辑将成为一个树节点。

属性

人类可读的字符串,在同一行上显示得不那么醒目。

编辑的图标路径或 ThemeIcon

人类可读的字符串,显示得更醒目。

一个标志,指示需要用户确认。

WorkspaceEditMetadata

关于 WorkspaceEdit 的附加数据。

属性

向编辑器发出信号,表明此编辑是重构。

WorkspaceFolder

工作区文件夹是编辑器打开的可能多个根之一。所有工作区文件夹都是平等的,这意味着没有活动或主工作区文件夹的概念。

属性

此工作区文件夹的序数。

此工作区文件夹的名称。默认为其 uri 路径 的基本名称。

此工作区文件夹的关联 URI。

注意: Uri 类型被故意选择,以便将来版本的编辑器可以支持非本地磁盘上的工作区文件夹,例如 ftp://server/workspaces/foo

WorkspaceFolderPickOptions

配置 工作区文件夹 选择 UI 行为的选项。

属性

设置为 true 以便在焦点移至编辑器其他部分或另一个窗口时保持选择器打开。此设置在 iPad 上被忽略,并且始终为 false

一个可选字符串,用于在输入框中显示为占位符,以指导用户。

WorkspaceFoldersChangeEvent

描述 工作区文件夹 集合更改的事件。

属性

已添加的工作区文件夹。

已移除的工作区文件夹。

WorkspaceSymbolProvider<T>

工作区符号提供程序接口定义了扩展与 符号搜索 功能之间的合同。

方法

对匹配给定查询字符串的符号进行项目范围的搜索。

query 参数应以宽松方式解释,因为编辑器将对结果应用自己的高亮显示和评分。一个好的经验法则是区分大小写不敏感,并且只需检查查询的字符是否按其顺序出现在候选符号中。不要使用前缀、子字符串或类似的严格匹配。

为了提高性能,实现者可以实现 resolveWorkspaceSymbol,然后提供具有部分 location 对象的符号,而不定义 range。然后,编辑器将仅为选定的符号调用 resolveWorkspaceSymbol,例如在打开工作区符号时。

参数描述
query: string

一个查询字符串,可以是空字符串,在这种情况下应该返回所有符号。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T[]>

文档高亮的数组或解析为该数组的 thenable。可以通过返回 undefinednull 或空数组来表示缺少结果。

给定一个符号,填充其 location。每当在 UI 中选择一个符号时,都会调用此方法。提供程序可以实现此方法并从 provideWorkspaceSymbols 返回不完整的符号,这通常有助于提高性能。

参数描述
symbol: T

要解析的符号。保证是早期调用 provideWorkspaceSymbols 返回的对象的实例。

token: CancellationToken

取消令牌。

返回值描述
ProviderResult<T>

解析后的符号或解析到该符号的 thenable。如果没有返回结果,则使用给定的 symbol

API 模式

这些是我们在 VS Code API 中使用的一些常见模式。

Promises (承诺)

VS Code API 使用 promises 表示异步操作。从扩展中,可以返回任何类型的 promise,例如 ES6、WinJS、A+ 等。

API 中通过 Thenable 类型来表示独立于特定 promise 库。Thenable 表示通用部分,即 then 方法。

在大多数情况下,使用 promises 是可选的,当 VS Code 调用扩展时,它可以处理结果类型以及结果类型Thenable。当 promise 的使用是可选的时,API 通过返回 or 类型来表示。

provideNumber(): number | Thenable<number>

Cancellation Tokens (取消令牌)

操作通常在易失性状态上启动,该状态在操作完成之前会发生变化。例如,计算 IntelliSense 会启动,而用户继续键入,使得该操作的结果变得过时。

暴露给此类行为的 API 将传递一个 CancellationToken,您可以在其上检查取消(isCancellationRequested)或在发生取消时收到通知(onCancellationRequested)。取消令牌通常是函数调用的最后一个参数,并且是可选的。

Disposables (可处置对象)

VS Code API 使用 dispose pattern 来处理从 VS Code 获取的资源。这适用于事件监听、命令、与 UI 的交互以及各种语言贡献。

例如,setStatusBarMessage(value: string) 函数返回一个 Disposable,调用 dispose 后会再次删除该消息。

事件

VS Code API 中的事件以函数的形式暴露,您可以通过调用这些函数并传入一个监听器函数来订阅。订阅的调用会返回一个 Disposable,调用 dispose 后会移除事件监听器。

var listener = function(event) {
  console.log('It happened', event);
};

// start listening
var subscription = fsWatcher.onDidDelete(listener);

// do more stuff

subscription.dispose(); // stop listening

事件名称遵循 on[Will|Did]VerbNoun? 模式。名称指示事件是即将发生(onWill)还是已经发生(onDid),发生了什么(verb),以及上下文(noun),除非上下文显而易见。

VS Code API 中的一个示例是 window.onDidChangeActiveTextEditor,这是一个当活动文本编辑器(noun)被(onDid)更改(verb)时触发的事件。

Strict null (严格 null)

VS Code API 在适当的地方使用 undefinednull TypeScript 类型来支持 strict null checking

© . This site is unofficial and not affiliated with Microsoft.