参加你附近的 ,了解 VS Code 中的 AI 辅助开发。

VS Code API

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

API 命名空间和类

此列表是从 VS Code 仓库的 vscode.d.ts 文件编译而成的。

认证

身份验证的命名空间。

事件

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

函数

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

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

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

参数描述
providerId: string

要使用的提供程序的 ID

返回描述
Thenable<readonly AuthenticationSessionAccountInformation[]>

一个可解析为只读身份验证帐户数组的 Thenable。

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

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

参数描述
providerId: string

要使用的提供程序的 ID

scopes: readonly string[]

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

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

一个可解析为身份验证会话的 Thenable

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

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

参数描述
providerId: string

要使用的提供程序的 ID

scopes: readonly string[]

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

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

一个可解析为身份验证会话的 Thenable

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

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

参数描述
providerId: string

要使用的提供程序的 ID

scopes: readonly string[]

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

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

一个可解析为身份验证会话(如果可用)的 Thenable,如果没有任何会话,则为 undefined

注册身份验证提供程序。

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

参数描述
id: string

提供程序的唯一标识符。

label: string

提供程序的人类可读名称。

provider: AuthenticationProvider

身份验证提供程序。

options?: AuthenticationProviderOptions

提供程序的附加选项。

返回描述
Disposable

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

聊天

用于聊天功能的命名空间。用户通过在聊天视图中向聊天参与者发送消息来与他们互动。聊天参与者可以通过 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[]>

可解析为命令 ID 列表的 Thenable。

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

使用已存在的命令标识符两次注册命令将导致错误。

参数描述
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,在处置时注销此命令。

评论

函数

创建一个新的 评论控制器 实例。

参数描述
id: string

评论控制器的 id

label: string

评论控制器的人类可读字符串。

返回描述
CommentController

评论控制器 的实例。

debug

用于调试功能的命名空间。

变量

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

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

当前聚焦的线程或堆栈帧,如果没有聚焦线程或堆栈,则为 undefined。只要有活动的调试会话,线程就可以被聚焦,而堆栈帧只能在会话暂停并检索到调用堆栈时被聚焦。

断点列表。

事件

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

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

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

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

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

调试会话 终止时触发的 Event

函数

添加断点。

参数描述
breakpoints: readonly Breakpoint[]

要添加的断点。

返回描述
void

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

如果“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(或未给出触发方式参数)时,provideDebugConfigurations 方法用于提供初始调试配置以复制到新创建的 launch.json 中。使用触发方式 Dynamic 时,provideDebugConfigurations 方法用于动态确定要呈现给用户的调试配置(除了 launch.json 中的静态配置)。请注意,triggerKind 参数仅适用于 provideDebugConfigurations 方法:因此 resolveDebugConfiguration 方法完全不受影响。为不同触发方式注册具有解析方法的单个提供程序,会导致多次调用相同的解析方法。可以为相同类型注册多个提供程序。

参数描述
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?: DebugSession

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

返回描述
Thenable<void>

一个 Thenable,在会话停止时解析。

env

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

变量

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

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

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

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

系统剪贴板。

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

指示用户是否启用了遥测。可以观察到这一点以确定扩展是否应该发送遥测。

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

编辑器的当前日志级别。

计算机的唯一标识符。

远程的名称。由扩展定义,流行的示例包括 Windows Subsystem for Linux 的 wsl 或使用安全 shell 的远程的 ssh-remote

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

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

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

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

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

事件

当编辑器的日志级别更改时触发的 Event

当默认 shell 更改时触发的 Event。这将触发新的 shell 路径。

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

函数

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

http:https: 方案

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

如果扩展在客户端机器上运行,则此操作是空操作。

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

注意,通过 openExternal 传递的 URI 会自动解析,您不应该对它们调用 asExternalUri

vscode.env.uriScheme

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

扩展不应假定结果 URI 的任何内容,也不应以任何方式更改它。相反,扩展可以例如在身份验证流程中使用此 URI,通过将该 URI 作为回调查询参数添加到服务器以进行身份验证。

注意,如果服务器决定向 URI 添加额外的查询参数(例如令牌或密钥),它们将出现在传递给 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,当处理该 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 语言功能、GitHub 身份验证)不包含在 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, any>

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

返回描述
字符串

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

标记字符串以进行本地化。如果 env.language 指定的语言有可用的本地化包,并且该包对该消息有本地化值,则将返回该本地化值(并为任何模板值注入 args 值)。

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

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

返回描述
字符串

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

语言

用于参与特定语言编辑器 功能 的命名空间,例如智能感知、代码操作、诊断等。

存在许多编程语言,并且在语法、语义和范式方面存在巨大差异。尽管如此,诸如自动单词补全、代码导航或代码检查等功能已在针对不同编程语言的不同工具中流行起来。

编辑器提供了一个 API,通过将所有 UI 和操作都已到位并允许您仅通过提供数据来参与,从而简化了此类常见功能的提供。例如,要贡献一个悬停,您所要做的就是提供一个可以调用 TextDocumentPosition 并返回悬停信息的函数。其余的,例如跟踪鼠标、定位悬停、保持悬停稳定等,都由编辑器负责。

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

注册是使用 文档选择器 完成的,文档选择器可以是语言 ID(如 javascript),也可以是更复杂的 过滤器(如 { language: 'typescript', scheme: 'file' })。将文档与此类选择器匹配将产生一个 分数,该分数用于确定是否以及如何使用提供程序。当分数相等时,后来的提供程序获胜。对于允许完整多元性的功能(如 悬停),仅检查分数是否 >0,对于其他功能(如 智能感知),分数用于确定要求提供程序参与的顺序。

事件

当全局诊断集更改时触发的 Event。这是新添加和移除的诊断。

函数

创建一个诊断集合。

参数描述
name?: string

集合的 名称

返回描述
DiagnosticCollection

一个新的诊断集合。

创建一个新的 语言状态项

参数描述
id: string

项目的标识符。

selector: DocumentSelector

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

返回描述
LanguageStatusItem

一个新的语言状态项。

获取给定资源的所有诊断。

参数描述
resource: Uri

资源

返回描述
Diagnostic[]

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

获取所有诊断。

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

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

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

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

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

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

匹配度根据以下规则计算

  1. DocumentSelector 是一个数组时,计算每个包含的 DocumentFilter 或语言标识符的匹配度,并取最大值。
  2. 字符串将被解糖为 DocumentFilterlanguage 部分,因此 "fooLang" 就像 { language: "fooLang" }
  3. 一个 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,当被处置时,它会注销此提供程序。

注册一个代码镜头提供程序。

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

参数描述
selector: DocumentSelector

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

provider: CodeLensProvider<CodeLens>

一个代码镜头提供程序。

返回描述
Disposable

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

注册一个颜色提供程序。

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

参数描述
selector: DocumentSelector

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

provider: DocumentColorProvider

一个颜色提供程序。

返回描述
Disposable

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

注册一个补全提供程序。

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

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

参数描述
selector: DocumentSelector

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

provider: CompletionItemProvider<CompletionItem>

一个补全提供程序。

...triggerCharacters: string[]

当用户键入其中一个字符时触发补全。

返回描述
Disposable

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

注册一个声明提供程序。

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

参数描述
selector: DocumentSelector

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

provider: DeclarationProvider

一个声明提供程序。

返回描述
Disposable

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

注册一个定义提供程序。

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

参数描述
selector: DocumentSelector

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

provider: DefinitionProvider

一个定义提供程序。

返回描述
Disposable

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

注册一个新的 DocumentDropEditProvider

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

每个提供程序可以返回一个或多个 DocumentDropEdit。编辑项根据 DocumentDropEdit.yieldTo 属性排序。默认情况下,将应用第一个编辑项。如果有任何附加的编辑项,它们将作为可选择的拖放选项显示在拖放小部件中。

参数描述
selector: DocumentSelector

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

provider: DocumentDropEditProvider<DocumentDropEdit>

一个拖放提供程序。

metadata?: DocumentDropEditProviderMetadata

有关提供程序的附加元数据。

返回描述
Disposable

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

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

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

参数描述
selector: DocumentSelector

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

provider: DocumentFormattingEditProvider

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

返回描述
Disposable

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

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

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

参数描述
selector: DocumentSelector

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

provider: DocumentHighlightProvider

一个文档高亮提供程序。

返回描述
Disposable

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

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

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

参数描述
selector: DocumentSelector

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

provider: DocumentLinkProvider<DocumentLink>

一个文档链接提供程序。

返回描述
Disposable

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

注册一个新的 DocumentPasteEditProvider

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

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

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

参数描述
selector: DocumentSelector

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

provider: DocumentPasteEditProvider<DocumentPasteEdit>

一个粘贴编辑器提供程序。

metadata: DocumentPasteProviderMetadata

有关提供程序的附加元数据。

返回描述
Disposable

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

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

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

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

参数描述
selector: DocumentSelector

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

provider: DocumentRangeFormattingEditProvider

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

返回描述
Disposable

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

为文档范围注册语义令牌提供程序。

注意:如果文档同时具有 DocumentSemanticTokensProviderDocumentRangeSemanticTokensProvider,则范围提供程序将仅在初始阶段调用,即在完整文档提供程序解析第一个请求时。一旦完整文档提供程序解析了第一个请求,通过范围提供程序提供的语义令牌将被丢弃,并且从那时起,将仅使用文档提供程序。

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

参数描述
selector: DocumentSelector

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

provider: DocumentRangeSemanticTokensProvider

一个文档范围语义令牌提供程序。

legend: SemanticTokensLegend
返回描述
Disposable

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

为整个文档注册语义令牌提供程序。

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

参数描述
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` 设置时,此提供程序将处于活动状态。

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

参数描述
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

一个可释放对象,用于取消设置此配置。

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

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

参数描述
document: TextDocument

要更改语言的文档

languageId: string

新的语言标识符。

返回描述
Thenable<TextDocument>

一个解析为更新文档的 thenable。

lm

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

变量

所有扩展通过lm.registerTool注册的所有可用工具的列表。可以使用lm.invokeTool调用它们,输入与它们声明的`inputSchema`匹配。

事件

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

函数

根据给定的输入,按名称调用lm.tools中列出的工具。输入将根据工具声明的`inputSchema`进行验证

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

在前一种情况下,调用者应传递来自聊天请求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

此提供商的供应商。必须是全局唯一的。例如 `copilot` 或 `openai`。

provider: LanguageModelChatProvider<LanguageModelChatInformation>

要注册的提供程序

返回描述
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

一个可释放对象,在释放时取消注册提供程序。

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

参数描述
name: string
tool: LanguageModelTool<T>
返回描述
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

用于 Notebook 功能的命名空间。

Notebook 功能由三个松散耦合的组件组成

  1. NotebookSerializer 允许编辑器打开、显示和保存 Notebook
  2. NotebookController 拥有 Notebook 的执行,例如它们从代码单元格创建输出。
  3. NotebookRenderer 在编辑器中显示 Notebook 输出。它们在单独的上下文中运行。

函数

创建一个新的 Notebook 控制器。

参数描述
id: string

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

notebookType: string

此控制器所属的 Notebook 类型。

label: string

控制器的标签。

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

控制器的执行处理程序。

返回描述
NotebookController

一个新 Notebook 控制器。

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

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

要与之通信的渲染器 ID

返回描述
NotebookRendererMessaging

一个新的 Notebook 渲染器消息对象。

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

参数描述
notebookType: string

要注册的 Notebook 类型。

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`。活动编辑器是指当前获得焦点的编辑器,或者在没有焦点时,最近更改输入的编辑器。

表示当前窗口的状态。

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

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

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

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

事件

当活动颜色主题更改或有更改时触发的事件

活动的 Notebook 编辑器发生变化时触发的事件注意,当活动编辑器变为`undefined`时,此事件也会触发。

活动的终端发生变化时触发的事件请注意,当活动的终端变为`undefined`时,此事件也会触发。

活动编辑器发生变化时触发的事件请注意,当活动编辑器变为`undefined`时,此事件也会触发。

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

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

当 shell 集成在终端中激活或其属性之一发生变化时触发。

终端状态发生变化时触发的事件

当编辑器选项发生更改时触发的事件

当编辑器中的选择发生更改时触发的事件

当编辑器视图列发生更改时触发的事件

当编辑器可见范围发生更改时触发的事件

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

可见编辑器数组发生更改时触发的事件

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

当终端被释放时触发的事件

当终端命令结束时,此事件将被触发。此事件仅在终端的shell 集成被激活时才会触发。

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

当终端命令启动时,此事件将被触发。此事件仅在终端的shell 集成被激活时才会触发。

函数

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

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

参数描述
返回描述
InputBox

一个新的InputBox

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

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

参数描述
name: string

人类可读的字符串,将用于在 UI 中表示通道。

languageId?: string

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

返回描述
OutputChannel

一个新的输出通道。

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

参数描述
name: string

人类可读的字符串,将用于在 UI 中表示通道。

options: {log: true}

日志输出通道的选项。

返回描述
LogOutputChannel

一个新的日志输出通道。

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

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

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

一个新的快速选择

创建一个状态栏

参数描述
id: string

该项目的标识符。在扩展程序中必须是唯一的。

alignment?: StatusBarAlignment

项目的对齐方式。

priority?: number

项目的优先级。值越高,项目应越靠左显示。

返回描述
StatusBarItem

一个新的状态栏项目。

创建一个状态栏

另请参阅 createStatusBarItem,用于创建带标识符的状态栏项。

参数描述
alignment?: StatusBarAlignment

项目的对齐方式。

priority?: number

项目的优先级。值越高,项目应越靠左显示。

返回描述
StatusBarItem

一个新的状态栏项目。

创建一个带有后端 shell 进程的终端。如果工作区目录存在,终端的当前工作目录将是工作区目录。

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

将在 UI 中表示终端的可选人类可读字符串。

shellPath?: string

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

shellArgs?: string | readonly string[]

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

返回描述
终端

一个新的终端。

创建一个带有后端 shell 进程的终端

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

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

返回描述
终端

一个新的终端。

创建一个终端,其中扩展程序控制其输入和输出。

参数描述
options: ExtensionTerminalOptions

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

返回描述
终端

一个新的终端。

创建一个 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

新的网页视图面板。

为 `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

一个可释放对象,用于注销提供程序。

注册一个提供程序,用于在终端内检测和处理链接。

参数描述
provider: TerminalLinkProvider<TerminalLink>

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

返回描述
Disposable

注销提供程序的 Disposable。

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

参数描述
id: string

贡献终端配置文件的 ID。

provider: TerminalProfileProvider

终端配置文件提供程序。

返回描述
Disposable

一个可释放对象,用于取消注册提供程序。

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

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

参数描述
viewId: string

使用扩展点 `views` 贡献的视图 ID。

treeDataProvider: TreeDataProvider<T>

一个TreeDataProvider,为视图提供树形数据

返回描述
Disposable

一个可释放对象,用于注销TreeDataProvider

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

  • uri-scheme 必须是 `vscode.env.uriScheme`;
  • uri-authority 必须是扩展 ID(例如 `my.extension`);
  • uri-path、-query 和 -fragment 部分是任意的。

例如,如果 `my.extension` 扩展注册了一个 uri 处理程序,它将只被允许处理带有 `product-name://my.extension` 前缀的 uri。

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

  • 注意:当定向到当前扩展的 URI 即将处理时,会触发 `onUri` 激活事件。
参数描述
handler: UriHandler

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

返回描述
Disposable

一个可释放对象,用于注销处理程序。

注册一个 webview 面板序列化程序。

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

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

参数描述
viewType: string

可序列化的 webview 面板类型。

serializer: WebviewPanelSerializer<unknown>

网页视图序列化程序。

返回描述
Disposable

一个可释放对象,用于注销序列化程序。

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

参数描述
viewId: string

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

provider: WebviewViewProvider

网页视图提供者。

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

注销提供程序的 Disposable。

向状态栏设置一条消息。这是功能更强大的状态栏项目的简写。

参数描述
text: string

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

hideAfterTimeout: number

消息在多少毫秒后将被处置的超时时间。

返回描述
Disposable

一个可释放对象,用于隐藏状态栏消息。

向状态栏设置一条消息。这是功能更强大的状态栏项目的简写。

参数描述
text: string

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

hideWhenDone: Thenable<any>

在完成(解决或拒绝)时将处置消息的 Thenable。

返回描述
Disposable

一个可释放对象,用于隐藏状态栏消息。

向状态栏设置一条消息。这是功能更强大的状态栏项目的简写。

请注意,状态栏消息是堆叠的,不再使用时必须释放。

参数描述
text: string

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

返回描述
Disposable

一个可释放对象,用于隐藏状态栏消息。

显示错误消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

显示错误消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

显示错误消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

显示错误消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

向用户显示一条信息消息。可选地提供一组项目,这些项目将作为可点击按钮呈现。

参数描述
message: string

要显示的消息。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

向用户显示一条信息消息。可选地提供一组项目,这些项目将作为可点击按钮呈现。

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

显示一条信息消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

显示一条信息消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

打开一个输入框,要求用户输入。

如果输入框被取消(例如按下 ESC 键),则返回值为 `undefined`。否则,返回值为用户输入的字符串,如果用户未输入任何内容但通过“确定”关闭输入框,则返回空字符串。

参数描述
options?: InputBoxOptions

配置输入框的行为。

token?: CancellationToken

可用于发出取消信号的令牌。

返回描述
Thenable<string | undefined>

一个 promise,它解析为用户提供的字符串,或者在取消时解析为 `undefined`。

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

参数描述
document: NotebookDocument

要显示的文本文档。

options?: NotebookDocumentShowOptions

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

返回描述
Thenable<NotebookEditor>

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

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

参数描述
options?: OpenDialogOptions

控制对话框的选项。

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

一个 Promise,它解析为选定的资源或 undefined

显示一个允许进行多项选择的选择列表。

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

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

options: QuickPickOptions & {canPickMany: true}

配置选择列表的行为。

token?: CancellationToken

可用于发出取消信号的令牌。

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

一个 Promise,它解析为选定的项目或 undefined

显示一个选择列表。

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

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

options?: QuickPickOptions

配置选择列表的行为。

token?: CancellationToken

可用于发出取消信号的令牌。

返回描述
Thenable<string | undefined>

一个 Promise,它解析为选定的项或 undefined

显示一个允许进行多项选择的选择列表。

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

项数组,或解析为项数组的 Promise。

options: QuickPickOptions & {canPickMany: true}

配置选择列表的行为。

token?: CancellationToken

可用于发出取消信号的令牌。

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

一个 Promise,它解析为选定的项目或 undefined

显示一个选择列表。

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

项数组,或解析为项数组的 Promise。

options?: QuickPickOptions

配置选择列表的行为。

token?: CancellationToken

可用于发出取消信号的令牌。

返回描述
Thenable<T | undefined>

一个 Promise,它解析为选定的项或 undefined

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

参数描述
options?: SaveDialogOptions

控制对话框的选项。

返回描述
Thenable<Uri | undefined>

一个 Promise,它解析为选定的资源或 undefined

showTextDocument(document: TextDocument, column?: ViewColumn, preserveFocus?: boolean): Thenable<TextEditor>

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

参数描述
document: TextDocument

要显示的文本文档。

column?: ViewColumn

应显示 编辑器 的视图列。默认为 活动 列。将根据需要创建不存在的列,最多可达 ViewColumn.Nine。使用 ViewColumn.Beside 在当前活动编辑器旁边打开编辑器。

preserveFocus?: boolean

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

返回描述
Thenable<TextEditor>

一个 Promise,它解析为 编辑器

showTextDocument(document: TextDocument, options?: TextDocumentShowOptions): Thenable<TextEditor>

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

参数描述
document: TextDocument

要显示的文本文档。

options?: TextDocumentShowOptions

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

返回描述
Thenable<TextEditor>

一个 Promise,它解析为 编辑器

showTextDocument(uri: Uri, options?: TextDocumentShowOptions): Thenable<TextEditor>

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

另请参阅 workspace.openTextDocument

参数描述
uri: Uri

资源标识符。

options?: TextDocumentShowOptions

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

返回描述
Thenable<TextEditor>

一个 Promise,它解析为 编辑器

showWarningMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>

显示警告消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

showWarningMessage<T extends string>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>

显示警告消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

showWarningMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T | undefined>

显示警告消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

showWarningMessage<T extends MessageItem>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>

显示警告消息。

另请参阅 showInformationMessage

参数描述
message: string

要显示的消息。

options: MessageOptions

配置消息的行为。

...items: T[]

一组将在消息中呈现为操作的项目。

返回描述
Thenable<T | undefined>

一个解析为所选项目或在被驳回时解析为`undefined`的thenable。

showWorkspaceFolderPick(options?: WorkspaceFolderPickOptions): Thenable<WorkspaceFolder | undefined>

显示 工作区文件夹 的选择列表以供选择。如果未打开任何文件夹,则返回 undefined

参数描述
options?: WorkspaceFolderPickOptions

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

返回描述
Thenable<WorkspaceFolder | undefined>

一个 Promise,它解析为工作区文件夹或 undefined

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

在编辑器中显示进度。进度会在运行给定回调期间以及它返回的 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。

withScmProgress<R>(task: (progress: Progress<number>) => Thenable<R>): Thenable<R>

在源代码管理视图中显示进度,同时运行给定的回调,并且其返回的 Promise 既未解析也未拒绝。

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

一个返回 Promise 的回调函数。进度增量可以通过提供的 Progress-对象报告。

返回描述
Thenable<R>

任务返回的 Thenable。

工作区

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

也可以在没有工作区的情况下打开编辑器。例如,当您通过从平台的“文件”菜单中选择文件来打开新的编辑器窗口时,您将不在工作区中。在此模式下,编辑器的某些功能会受到限制,但您仍然可以打开文本文件并对其进行编辑。

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

工作区支持 监听 文件系统事件和 查找 文件。两者都表现良好,并在编辑器进程外部运行,因此应始终使用它们而不是 nodejs 等效项。

变量

fs: FileSystem

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

isTrusted: boolean

当为 true 时,用户已明确信任工作区的内容。

name: string | undefined

工作区的名称。当未打开工作区时为 undefined

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

notebookDocuments: readonly NotebookDocument[]

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

rootPath: string | undefined

workspaceFolders 第一个条目的 uri 作为 string。如果没有第一个条目,则为 undefined

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

textDocuments: readonly TextDocument[]

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

workspaceFile: Uri | undefined

工作区文件的位置,例如

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(),它在打开单个文件夹以及未命名或已保存工作区时都有效。

workspaceFolders: readonly WorkspaceFolder[] | undefined

在编辑器中打开的工作区文件夹列表(0-N)。当未打开工作区时为 undefined

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

事件

onDidChangeConfiguration: Event<ConfigurationChangeEvent>

配置 更改时发出的事件。

onDidChangeNotebookDocument: Event<NotebookDocumentChangeEvent>

笔记本 更改时发出的事件。

onDidChangeTextDocument: Event<TextDocumentChangeEvent>

文本文档 更改时发出的事件。这通常发生在 内容 更改时,但也会在其他内容(如 状态)更改时发生。

onDidChangeWorkspaceFolders: Event<WorkspaceFoldersChangeEvent>

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

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

onDidCloseNotebookDocument: Event<NotebookDocument>

笔记本 被处理时发出的事件。

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

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

onDidCloseTextDocument: Event<TextDocument>

文本文档 被处理或文本文档的语言 ID 已更改 时发出的事件。

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

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

onDidCreateFiles: Event<FileCreateEvent>

当文件被创建时发出的事件。

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

onDidDeleteFiles: Event<FileDeleteEvent>

当文件被删除时发出的事件。

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

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

onDidGrantWorkspaceTrust: Event<void>

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

onDidOpenNotebookDocument: Event<NotebookDocument>

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

onDidOpenTextDocument: Event<TextDocument>

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

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

onDidRenameFiles: Event<FileRenameEvent>

当文件被重命名时发出的事件。

注意 1: 此事件由用户手势触发,例如从资源管理器重命名文件,以及通过 workspace.applyEdit-API 重命名文件,但当文件在磁盘上更改时(例如由另一个应用程序触发或使用 workspace.fs-API 时)不会触发此事件。

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

onDidSaveNotebookDocument: Event<NotebookDocument>

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

onDidSaveTextDocument: Event<TextDocument>

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

onWillCreateFiles: Event<FileWillCreateEvent>

当文件正在创建时发出的事件。

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

注意 2: 触发此事件时,无法应用对正在创建的文件所做的编辑。

onWillDeleteFiles: Event<FileWillDeleteEvent>

当文件正在删除时发出的事件。

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

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

onWillRenameFiles: Event<FileWillRenameEvent>

当文件正在重命名时发出的事件。

注意 1: 此事件由用户手势触发,例如从资源管理器重命名文件,以及通过 workspace.applyEdit-API 重命名文件,但当文件在磁盘上更改时(例如由另一个应用程序触发或使用 workspace.fs-API 时)不会触发此事件。

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

onWillSaveNotebookDocument: Event<NotebookDocumentWillSaveEvent>

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

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

注意 2: 订阅者按顺序调用,他们可以通过注册异步工作来 延迟 保存。对行为不当的侦听器的保护措施如下:

  • 所有侦听器共享一个总体时间预算,如果预算耗尽,则不再调用任何侦听器
  • 长时间运行或频繁产生错误的侦听器将不再被调用

当前阈值为总时间预算 1.5 秒,侦听器在被忽略之前可以出错 3 次。

onWillSaveTextDocument: Event<TextDocumentWillSaveEvent>

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

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

注意 2: 订阅者按顺序调用,他们可以通过注册异步工作来 延迟 保存。对行为不当的侦听器的保护措施如下:

  • 所有侦听器共享一个总体时间预算,如果预算耗尽,则不再调用任何侦听器
  • 长时间运行或频繁产生错误的侦听器将不再被调用

当前阈值为总时间预算 1.5 秒,侦听器在被忽略之前可以出错 3 次。

函数

applyEdit(edit: WorkspaceEdit, metadata?: WorkspaceEditMetadata): Thenable<boolean>

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

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

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

参数描述
edit: WorkspaceEdit

一个工作区编辑。

metadata?: WorkspaceEditMetadata

编辑的可选 元数据

返回描述
Thenable<boolean>

当编辑可以应用时解析的 thenable。

asRelativePath(pathOrUri: string | Uri, includeWorkspaceFolder?: boolean): string

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

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

参数描述
pathOrUri: string | Uri

路径或 uri。如果给定 uri,则使用其 fsPath

includeWorkspaceFolder?: boolean

当为 true 且给定路径包含在工作区文件夹中时,工作区名称将添加到前面。当存在多个工作区文件夹时默认为 true,否则为 false

返回描述
字符串

相对于根或输入的路径。

createFileSystemWatcher(globPattern: GlobPattern, ignoreCreateEvents?: boolean, ignoreChangeEvents?: boolean, ignoreDeleteEvents?: boolean): FileSystemWatcher

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

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

可以通过提供具有 base 路径的 相对模式 来添加其他路径以进行文件监视。如果路径是文件夹且 pattern 复杂(例如包含 ** 或路径段),它将递归监视,否则将非递归监视(即只报告路径第一级的更改)。

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

如果可能,请将递归监视器的使用保持在最低限度,因为递归文件监视相当消耗资源。

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

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

要停止监听事件,必须处置监视器。

注意,来自递归文件监视器的文件事件可能会根据用户配置排除。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

一个新的文件系统监视器实例。不再需要时必须进行处理。

decode(content: Uint8Array): Thenable<string>

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

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

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

  • 抛出 - 当内容为二进制时,此方法将抛出错误。
参数描述
content: Uint8Array

要解码的文本内容,作为 Uint8Array

返回描述
Thenable<string>

一个解析为已解码 string 的 thenable。

decode(content: Uint8Array, options: {encoding: string}): Thenable<string>

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

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

  • 抛出 - 当内容为二进制时,此方法将抛出错误。
参数描述
content: Uint8Array

要解码的文本内容,作为 Uint8Array

options: {encoding: string}

选择编码的附加上下文。

返回描述
Thenable<string>

一个解析为已解码 string 的 thenable。

decode(content: Uint8Array, options: {uri: Uri}): Thenable<string>

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

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

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

  • 抛出 - 当内容为二进制时,此方法将抛出错误。
参数描述
content: Uint8Array

要解码的内容,作为 Uint8Array

options: {uri: Uri}

选择编码的附加上下文。

返回描述
Thenable<string>

一个解析为已解码 string 的 thenable。

encode(content: string): Thenable<Uint8Array>

string 的内容编码为 Uint8Array

将根据设置选择编码。

参数描述
content: string

要解码的内容,作为 string

返回描述
Thenable<Uint8Array>

一个解析为已编码 Uint8Array 的 thenable。

encode(content: string, options: {encoding: string}): Thenable<Uint8Array>

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

参数描述
content: string

要解码的内容,作为 string

options: {encoding: string}

选择编码的附加上下文。

返回描述
Thenable<Uint8Array>

一个解析为已编码 Uint8Array 的 thenable。

encode(content: string, options: {uri: Uri}): Thenable<Uint8Array>

string 的内容编码为 Uint8Array

编码是根据设置选择的。

参数描述
content: string

要解码的内容,作为 string

options: {uri: Uri}

选择编码的附加上下文。

返回描述
Thenable<Uint8Array>

一个解析为已编码 Uint8Array 的 thenable。

findFiles(include: GlobPattern, exclude?: GlobPattern, maxResults?: number, token?: CancellationToken): Thenable<Uri[]>

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

示例

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。如果没有打开 工作区文件夹,将不返回任何结果。

getConfiguration(section?: string, scope?: ConfigurationScope): WorkspaceConfiguration

获取工作区配置对象。

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

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

参数描述
section?: string

点分隔标识符。

scope?: ConfigurationScope

请求配置的范围。

返回描述
WorkspaceConfiguration

完整配置或子集。

getWorkspaceFolder(uri: Uri): WorkspaceFolder | undefined

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

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

一个 uri。

返回描述
WorkspaceFolder | undefined

一个工作区文件夹或 undefined

openNotebookDocument(uri: Uri): Thenable<NotebookDocument>

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

注意,返回笔记本的生命周期由编辑器拥有,而不是由扩展拥有。这意味着 onDidCloseNotebookDocument 事件可能在任何时候发生。

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

参数描述
uri: Uri

要打开的资源。

返回描述
Thenable<NotebookDocument>

一个解析为 笔记本 的 Promise

openNotebookDocument(notebookType: string, content?: NotebookData): Thenable<NotebookDocument>

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

另请参阅 workspace.openNotebookDocument

参数描述
notebookType: string

应使用的笔记本类型。

content?: NotebookData

笔记本的初始内容。

返回描述
Thenable<NotebookDocument>

一个解析为 笔记本 的 Promise。

openTextDocument(uri: Uri, options?: {encoding: string}): Thenable<TextDocument>

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

文档由 Uri 表示。根据 方案,适用以下规则:

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

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

参数描述
uri: Uri

标识要打开的资源。

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

一个解析为 文档 的 Promise。

openTextDocument(path: string, options?: {encoding: string}): Thenable<TextDocument>

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

另请参阅 workspace.openTextDocument

参数描述
path: string

磁盘上文件的路径。

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

一个解析为 文档 的 Promise。

openTextDocument(options?: {content: string, encoding: string, language: string}): Thenable<TextDocument>

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

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

用于控制文档创建方式的选项。

返回描述
Thenable<TextDocument>

一个解析为 文档 的 Promise。

registerFileSystemProvider(scheme: string, provider: FileSystemProvider, options?: {isCaseSensitive: boolean, isReadonly: boolean | MarkdownString}): Disposable

为给定方案(例如 ftp)注册文件系统提供程序。

每个方案只能有一个提供程序,当某个方案已被另一个提供程序占用或已保留时,将抛出错误。

参数描述
scheme: string

提供程序注册的 uri-方案

provider: FileSystemProvider

文件系统提供程序。

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

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

返回描述
Disposable

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

registerNotebookSerializer(notebookType: string, serializer: NotebookSerializer, options?: NotebookDocumentContentOptions): Disposable

注册一个 笔记本序列化器

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

参数描述
notebookType: string

一个笔记本。

serializer: NotebookSerializer

一个笔记本序列化器。

options?: NotebookDocumentContentOptions

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

返回描述
Disposable

一个 Disposable,在处理时注销此序列化器。

registerTaskProvider(type: string, provider: TaskProvider<Task>): Disposable

注册一个任务提供程序。

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

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

provider: TaskProvider<Task>

一个任务提供程序。

返回描述
Disposable

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

registerTextDocumentContentProvider(scheme: string, provider: TextDocumentContentProvider): Disposable

注册文本文档内容提供程序。

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

参数描述
scheme: string

要注册的 uri 方案。

provider: TextDocumentContentProvider

一个内容提供程序。

返回描述
Disposable

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

save(uri: Uri): Thenable<Uri | undefined>

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

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

参数描述
uri: Uri

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

返回描述
Thenable<Uri | undefined>

一个 Thenable,当保存操作完成时解析。

saveAll(includeUntitled?: boolean): Thenable<boolean>

保存所有脏文件。

参数描述
includeUntitled?: boolean

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

返回描述
Thenable<boolean>

一个 Thenable,当文件保存完成时解析。任何保存失败的文件将返回 false

saveAs(uri: Uri): Thenable<Uri | undefined>

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

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

参数描述
uri: Uri

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

返回描述
Thenable<Uri | undefined>

一个 Thenable,当另存为操作完成时解析。

updateWorkspaceFolders(start: number, deleteCount: number, ...workspaceFoldersToAdd: Array<{name: string, uri: Uri}>): boolean

此方法在 vscode.workspace.workspaceFolders 数组上用一组可选的 workspaceFoldersToAdd 替换从索引 start 开始的 deleteCount工作区文件夹。此“拼接”行为可用于在一个操作中添加、删除和更改工作区文件夹。

注意: 在某些情况下,调用此方法可能导致当前正在执行的扩展(包括调用此方法的扩展)被终止和重新启动。例如,当添加、删除或更改第一个工作区文件夹时,(已弃用)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;否则,如果使用的参数导致无效的工作区文件夹状态(例如,两个文件夹具有相同的 URI),则为 false。

AccessibilityInformation

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

属性

label: string

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

role?: string

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

AuthenticationForceNewSessionOptions

当调用 authentication.getSession 并设置 forceNewSession 标志时要使用的可选选项。

AuthenticationGetSessionOptions

AuthenticationProvider 获取 AuthenticationSession 时要使用的选项。

属性

要获取会话的帐户。此信息将传递给身份验证提供程序,用于创建正确的会话。

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

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

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

默认为 false。

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

如果为 true,将显示一个模式对话框,要求用户登录。如果为 false,帐户活动栏图标上将显示一个带数字的徽章。菜单下将添加一个用于登录的扩展条目。这允许静默提示用户登录。

如果提供了选项,也将看到对话框,但会提供额外的上下文。

如果存在匹配的会话但扩展尚未被授予访问权限,将其设置为 true 也会立即显示一个模式对话框,而 false 将在帐户图标上添加一个带数字的徽章。

默认为 false。

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

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

如果为 true,将显示一个模式对话框,要求用户再次登录。这主要用于令牌需要重新生成因为丢失了某些授权的场景。

如果提供了选项,也将看到对话框,但会提供额外的上下文。

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

默认为 false。

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

如果为 false,用户将在“帐户”菜单上看到一个徽章,其中包含一个用于扩展登录的选项。如果为 true,则不显示任何指示。

默认为 false。

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

AuthenticationGetSessionPresentationOptions

当调用 authentication.getSession 并设置交互式选项 forceNewSessioncreateIfNone 时要使用的可选选项。

属性

当请求重新身份验证时,将向用户显示的可选消息。提供有关请求用户重新身份验证的额外上下文可以帮助提高他们接受的可能性。

AuthenticationProvider

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

事件

当会话数组发生变化或会话内数据发生变化时触发的 Event

方法

提示用户登录。

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

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

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

参数描述
scopes: readonly string[]

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

options: AuthenticationProviderSessionOptions

创建会话的其他选项。

返回描述
Thenable<AuthenticationSession>

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

获取会话列表。

参数描述
scopes: readonly string[]

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

options: AuthenticationProviderSessionOptions

获取会话的其他选项。

返回描述
Thenable<AuthenticationSession[]>

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

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

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

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

参数描述
sessionId: string

要删除的会话的 ID。

返回描述
Thenable<void>

AuthenticationProviderAuthenticationSessionsChangeEvent

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

属性

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

AuthenticationProviderInformation

有关 AuthenticationProvider 的基本信息。

属性

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

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

AuthenticationProviderOptions

创建 AuthenticationProvider 的选项。

属性

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

AuthenticationProviderSessionOptions

属性

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

AuthenticationSession

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

属性

访问令牌。

与会话关联的帐户。

身份验证会话的标识符。

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

AuthenticationSessionAccountInformation

AuthenticationSession 关联的帐户信息。

属性

帐户的唯一标识符。

帐户的可读名称。

AuthenticationSessionsChangeEvent

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

属性

其会话已更改的 AuthenticationProvider

AutoClosingPair

描述当键入开始字符串时自动插入结束字符串的字符串对。

属性

当键入开始字符串时将自动插入的结束字符串。

不应自动关闭对的标记集。

将触发自动插入结束字符串的字符串。

BranchCoverage

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

构造函数

参数描述
executed: number | boolean

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

location?: Range | Position

分支位置。

label?: string
返回描述
BranchCoverage

属性

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

分支的标签,例如在“${label} 分支未被采用”的上下文中。

分支位置。

Breakpoint

所有断点类型的基类。

构造函数

创建新断点

参数描述
enabled?: boolean

断点是否启用。

condition?: string

条件断点的表达式

hitCondition?: string

控制忽略多少次断点命中的表达式

logMessage?: string

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

返回描述
断点

属性

条件断点的可选表达式。

断点是否启用。

控制忽略多少次断点命中的可选表达式。

断点的唯一 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 中的起始和结束索引。如果未定义,则引用不属于提示文本。

注意,索引考虑了前导 # 字符,这意味着它们可以用于按原样修改提示。

ChatParticipant

聊天参与者可以通过用户在聊天会话中使用 前缀进行调用。当它被调用时,它处理聊天请求,并完全负责向用户提供响应。ChatParticipant 是使用 chat.createChatParticipant 创建的。

事件

每当收到结果的反馈时(例如,当用户对结果点赞或点踩时)触发的事件。

传递的 result 保证具有与此聊天参与者的处理程序之前返回的结果相同的属性。

属性

此提供程序将在每个请求后调用一次,以检索建议的后续问题。

参与者在 UI 中显示的图标。

此参与者的唯一 ID。

此参与者的请求处理程序。

方法

处置此参与者并释放资源。

参数描述
返回描述
void

ChatParticipantToolToken

在处理聊天请求的上下文中调用工具时,可以传递给 lm.invokeTool 的令牌。

ChatPromptReference

用户添加到其聊天请求中的值的引用。

属性

此类引用的唯一标识符。

此值的描述,可在 LLM 提示中使用。

引用在 prompt 中的起始和结束索引。如果未定义,则引用不属于提示文本。

注意,索引考虑了前导 # 字符,这意味着它们可以用于按原样修改提示。

此引用的值。目前使用 string | Uri | Location 类型,但将来可能会扩展。

ChatRequest

对聊天参与者的请求。

属性

为此请求选择的 [ChatCommand 命令](#ChatCommand command) 的名称。

这是当前在 UI 中选择的模型。扩展可以使用此模型,或者使用 lm.selectChatModels 选择另一个模型。在请求生命周期结束后不要保留此模型。

用户输入的提示。

此请求中使用的引用的信息存储在 ChatRequest.references 中。

注意,参与者的 [ChatParticipant.name 名称](#ChatParticipant.name name) 和 [ChatCommand.name 命令](#ChatCommand.name command) 不属于提示。

提示中引用的引用及其值的列表。

注意,提示包含按原始方式编写的引用,并且由参与者进一步修改提示,例如通过内联引用值或创建到包含解析值的标题的链接。引用按其在提示中的范围倒序排序。这意味着提示中的最后一个引用是此列表中的第一个。这简化了提示的字符串操作。

在处理聊天请求的上下文中调用工具时,可以传递给 lm.invokeTool 的令牌。这会将工具调用与聊天会话相关联。

用户附加到其请求的工具列表。

当存在工具引用时,聊天参与者应使用 LanguageModelChatToolMode.Required 发出聊天请求,以强制语言模型为工具生成输入。然后,参与者可以使用 lm.invokeTool 使用工具将其结果附加到用户提示的请求。该工具可以为用户的请求提供有用的额外上下文。

ChatRequestHandler

ChatRequestTurn

表示聊天历史中的用户请求。

属性

为此请求选择的 [ChatCommand 命令](#ChatCommand command) 的名称。

此请求定向到的聊天参与者的 ID。

用户输入的提示。

此请求中使用的引用的信息存储在 ChatRequestTurn.references 中。

注意,参与者的 [ChatParticipant.name 名称](#ChatParticipant.name name) 和 [ChatCommand.name 命令](#ChatCommand.name command) 不属于提示。

此消息中使用的引用。

附加到此请求的工具列表。

ChatResponseAnchorPart

表示聊天响应的一部分,是一个锚点,渲染为指向目标的链接。

构造函数

创建新的 ChatResponseAnchorPart。

参数描述
value: Uri | Location

URI 或位置。

title?: string

与值一起渲染的可选标题。

返回描述
ChatResponseAnchorPart

属性

与值一起渲染的可选标题。

此锚点的目标。

ChatResponseCommandButtonPart

表示聊天响应的一部分,是一个执行命令的按钮。

构造函数

创建新的 ChatResponseCommandButtonPart。

参数描述
value: 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

与值一起渲染的可选标题。

返回描述
void

将命令按钮部分推送到此流。是 push(new ChatResponseCommandButtonPart(value, title)) 的简写。

参数描述
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

代码操作表示可以在代码中执行的更改,例如修复问题或重构代码。

代码操作必须设置 edit 和/或 command。如果同时提供,则首先应用 edit,然后执行命令。

构造函数

创建新的代码操作。

代码操作至少必须具有 titleedits 和/或 command

参数描述
title: string

代码操作的标题。

kind?: CodeActionKind

代码操作的类型。

返回描述
CodeAction

属性

此代码操作执行的 Command

如果此命令抛出异常,编辑器将在当前光标位置向用户显示异常消息。

此代码操作解决的 Diagnostics

标记代码操作当前无法应用。

  • 禁用的代码操作不会显示在自动 灯泡 代码操作菜单中。

  • 当用户请求更具体的代码操作类型(例如重构)时,禁用的操作在代码操作菜单中显示为灰色。

  • 如果用户有自动应用代码操作的 按键绑定,并且只返回禁用的代码操作,编辑器将向用户显示带有 reason 的错误消息。

参数描述
reason: string

此代码操作当前被禁用的可读描述。

这显示在代码操作 UI 中。

此代码操作执行的 工作区编辑

将此标记为首选操作。首选操作由 自动修复 命令使用,并且可以通过按键绑定进行定位。

如果快速修复正确解决了底层错误,则应将其标记为首选。如果重构是采取行动的最合理选择,则应将其标记为首选。

代码操作的种类

用于筛选代码操作。

此代码操作的简短、易读的标题。

CodeActionContext

包含有关运行代码操作的上下文的额外诊断信息。

属性

诊断数组。

请求返回的操作类型。

不属于此类型的操作会在通过灯泡图标显示之前被过滤掉。

请求代码操作的原因。

CodeActionKind

代码操作的种类。

种类是标识符的分层列表,由.分隔,例如"refactor.extract.function"

代码操作种类用于编辑器的UI元素,如重构上下文菜单。用户还可以通过editor.action.codeAction命令触发特定种类的代码操作。

静态

空种类。

所有适用于整个笔记本范围的代码操作的基类。使用此类的CodeActionKind应始终以notebook.开头。

这要求为其创建新的CodeActions并通过扩展贡献。现有的种类不能只添加新的notebook.前缀,因为其功能对于整个笔记本范围是独有的。

Notebook CodeActionKinds 可以按以下任一方式初始化(两者都将导致 notebook.source.xyz

  • const newKind = CodeActionKind.Notebook.append(CodeActionKind.Source.append('xyz').value)
  • const newKind = CodeActionKind.Notebook.append('source.xyz')

示例种类/操作

  • 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

返回描述
代码操作种类

属性

种类的字符串值,例如"refactor.extract.function"

方法

通过向当前种类添加更具体的选择器来创建新种类。

不修改当前种类。

参数描述
parts: string
返回描述
代码操作种类

检查 `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 中的显示方式。例如,灯泡小部件和“重构”命令会将返回的代码操作显示为列表,因此请勿返回大量可能使用户不知所措的代码操作。

参数描述
document: TextDocument

调用命令的文档。

range: Range | Selection

调用命令的选择器或范围。如果正在当前活动编辑器中请求操作,则这将始终是一个选择

context: CodeActionContext

提供有关正在请求哪些代码操作的附加信息。您可以使用此信息查看编辑器正在请求哪种特定类型的代码操作,以便返回更相关的操作并避免返回编辑器将丢弃的不相关代码操作。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<Array<Command | T>>

代码操作数组,例如快速修复或重构。可以通过返回undefinednull或空数组来表示没有结果。

出于历史原因,我们也支持返回Command,但所有新扩展都应返回CodeAction对象。

给定一个代码操作,填写其编辑属性。对所有其他属性(如标题)的更改将被忽略。已具有编辑的代码操作将不会被解析。

注意:返回命令而不是代码操作的代码操作提供程序无法成功实现此函数。返回命令已被弃用,应改为返回代码操作。

参数描述
codeAction: T

代码操作。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<T>

已解析的代码操作或解析为此的 thenable。可以返回给定的item。如果未返回结果,将使用给定的item

CodeActionProviderMetadata

有关CodeActionProvider提供的代码操作类型的元数据。

属性

一类代码操作的静态文档。

在以下两种情况下,提供程序的文档会显示在代码操作菜单中:

  • 编辑器请求了kind类型的代码操作。在这种情况下,编辑器将显示与请求的代码操作类型最匹配的文档。例如,如果提供程序同时具有RefactorRefactorExtract的文档,当用户请求RefactorExtract的代码操作时,编辑器将使用RefactorExtract的文档而不是Refactor的文档。

  • 提供者返回任何kind类型的代码操作。

每个提供程序最多显示一个文档条目。

CodeActionProvider可能返回的CodeActionKinds列表。

此列表用于确定是否应调用给定的CodeActionProvider。为避免不必要的计算,每个CodeActionProvider都应使用providedCodeActionKinds。种类列表可以是通用的,例如[CodeActionKind.Refactor],也可以列出所有提供的种类,例如[CodeActionKind.Refactor.Extract.append('function'), CodeActionKind.Refactor.Extract.append('constant'), ...]

CodeActionTriggerKind

请求代码操作的原因。

枚举成员

代码操作是由用户或扩展程序明确请求的。

代码操作是自动请求的。

这通常发生在文件中的当前选择发生变化时,但也可以在文件内容发生变化时触发。

CodeLens

代码透镜表示一个应与源代码一同显示的命令,例如引用数量、运行测试的方法等。

当没有命令与其关联时,代码透镜是未解析的。出于性能原因,代码透镜的创建和解析应分两个阶段完成。

另请参阅

构造函数

创建一个新的代码透镜对象。

参数描述
range: Range

此代码透镜应用的范围。

command?: Command

与此代码透镜关联的命令。

返回描述
CodeLens

属性

此代码透镜表示的命令。

当有命令关联时为true

此代码透镜有效的范围。应只跨越一行。

CodeLensProvider<T>

代码透镜提供程序向源文本添加命令。命令将作为专用水平线显示在源文本之间。

事件

一个可选事件,用于指示此提供程序中的代码透镜已更改。

方法

计算透镜列表。此调用应尽快返回,如果计算命令的开销很大,实现者应仅返回设置了范围的代码透镜对象并实现解析

参数描述
document: TextDocument

调用命令的文档。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<T[]>

代码透镜数组,或解析为代码透镜数组的 thenable。可以通过返回undefinednull或空数组来表示没有结果。

此函数将为每个可见的代码透镜调用,通常在滚动和调用计算透镜之后。

参数描述
codeLens: T

必须解析的代码透镜。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<T>

给定的已解析代码透镜或解析为此的 thenable。可以返回给定的item。如果未返回结果,将使用给定的item

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

颜色呈现对象描述了如何将颜色表示为文本,以及从源代码引用它需要进行哪些编辑。

对于某些语言,一种颜色可以有多种表示形式,例如 css 可以用常量 Red、十六进制值 #ff0000 或 rgba 和 hsla 形式表示红色。在 csharp 中,适用其他表示形式,例如 System.Drawing.Color.Red

构造函数

创建一个新的颜色表示。

参数描述
label: string

此颜色表示的标签。

返回描述
颜色呈现

属性

一个可选的附加文本编辑数组,在选择此颜色呈现时应用。编辑不得与主要编辑或自身重叠。

此颜色表示的标签。它将显示在颜色选择器标题上。默认情况下,这也是选择此颜色表示时插入的文本。

一个编辑,当选择此颜色表示时应用于文档。如果为falsy,则使用标签

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"
                }
            ]
        }
    }

这将仅显示contextValueeditable的评论的extension.deleteComment操作。

可选标签,描述注释。如果存在,标签将显示在作者姓名旁边。

评论的评论模式

评论的可选反应

将在评论中显示的可选时间戳。日期将根据用户的区域设置和偏好进行格式化。

CommentAuthorInformation

评论的作者信息

属性

作者的可选图标路径

评论作者的显示名称

CommentController

评论控制器能够为编辑器提供评论支持,并为用户提供与评论互动的各种方式。

属性

可选的评论范围提供程序。为任何给定资源 URI 提供支持评论的范围列表。

如果未提供,用户将无法发表任何评论。

此评论控制器的 ID。

此评论控制器的易读标签。

评论控制器选项

用于创建和删除评论上的反应的可选反应处理程序。

参数描述
comment: Comment
reaction: CommentReaction
返回描述
Thenable<void>

方法

创建评论线程。评论线程创建后将显示在可见文本编辑器(如果资源匹配)和评论面板中。

参数描述
uri: Uri

创建线程的文档的 URI。

range: Range

评论线程在文档中的范围。

comments: readonly Comment[]

线程的有序评论。

返回描述
评论线程

销毁此评论控制器。

一旦销毁,此评论控制器创建的所有评论线程也将从编辑器和评论面板中移除。

参数描述
返回描述
void

CommentingRangeProvider

评论控制器的评论范围提供程序。

方法

为给定文档提供允许创建新评论线程的范围列表,如果不支持则为 null。

参数描述
document: TextDocument
token: CancellationToken
返回描述
ProviderResult<Range[] | CommentingRanges>

CommentingRanges

CommentingRangeProvider 允许评论的范围。

属性

允许在没有特定范围的文件中添加注释。

允许创建新评论线程的范围。

CommentMode

评论的评论模式

枚举成员

显示评论编辑器

显示评论的预览

CommentOptions

属性

当评论输入框获得焦点时,可选的字符串作为占位符显示。

当注释输入框折叠时,可选的字符串显示在注释输入框上。

CommentReaction

评论的反应

属性

评论作者是否对此反应作出反应

对此反应作出反应的用户数量

UI 中显示的反应图标。

反应的人类可读标签

CommentReply

为注册在comments/commentThread/context中的操作提供的命令参数。

属性

评论编辑器中的值

活动的评论线程

CommentRule

描述语言的注释工作方式。

属性

块注释字符对,例如/* block comment */

行注释标记,例如 // this is a comment

CommentThread

一组评论,代表文档中特定范围的对话。

属性

线程是否支持回复。默认为 true。

打开文档时线程应折叠还是展开。默认为折叠。

线程的有序评论。

评论线程的上下文值。这可用于贡献线程特定的操作。例如,给评论线程一个上下文值editable。当使用menus扩展点向comments/commentThread/title贡献操作时,您可以在when表达式中为键commentThread指定上下文值,例如commentThread == editable

"contributes": {
  "menus": {
    "comments/commentThread/title": [
      {
        "command": "extension.deleteCommentThread",
        "when": "commentThread == editable"
      }
    ]
  }
}

这将仅显示contextValueeditable的评论线程的extension.deleteCommentThread操作。

描述评论线程的可选人类可读标签

评论线程在文档中的范围。线程图标将显示在范围的最后一行。如果设置为 undefined,则评论将与文件关联,而不是特定范围。

评论线程的可选状态,可能会影响评论的显示方式。

创建线程的文档的 URI。

方法

销毁此评论线程。

一旦销毁,此评论线程将适当地从可见编辑器和评论面板中移除。

参数描述
返回描述
void

CommentThreadCollapsibleState

评论线程的可折叠状态

枚举成员

确定项目是否折叠

确定项目是否展开

CommentThreadState

评论线程的状态。

枚举成员

未解决的线程状态

已解决的线程状态

CompletionContext

包含有关触发完成提供程序的上下文的附加信息。

属性

触发完成项提供程序的字符。

如果提供程序不是由字符触发的,则为undefined

当完成提供程序被触发时,触发字符已在文档中。

完成是如何触发的。

CompletionItem

完成项表示建议完成正在输入的文本的文本片段。

只需从标签创建完成项即可。在这种情况下,完成项将使用给定的标签或插入文本替换光标处的单词。否则使用给定的编辑

在编辑器中选择一个完成项时,其定义或合成的文本编辑将应用于所有光标/选择,而附加文本编辑将按提供的方式应用。

另请参阅

构造函数

创建一个新的完成项。

完成项至少必须有一个标签,该标签将用作插入文本以及排序和过滤。

参数描述
label: string | CompletionItemLabel

完成的标签。

kind?: CompletionItemKind

完成的种类

返回描述
完成项

属性

一个可选的附加文本编辑数组,在选择此完成项时应用。编辑不得与主要编辑或自身重叠。

一个可选的命令,在此完成项插入执行。注意,对当前文档的额外修改应使用additionalTextEdits属性描述。

当此补全项处于活动状态时,按下可选的字符集将首先接受它,然后输入该字符。注意,所有提交字符的length都应为1,多余的字符将被忽略。

人类可读的字符串,包含此项的附加信息,如类型或符号信息。

表示文档注释的人类可读字符串。

在过滤一组完成项时应使用的字符串。如果为falsy,则使用标签

请注意,过滤文本是与由范围属性定义的领先词(前缀)匹配的。

在选择此完成项时应插入文档的字符串或片段。如果为falsy,则使用标签

保留insertText的空白。默认情况下,编辑器会调整新行的前导空白,使其与接受项目的行的缩进匹配 - 将此设置为true将阻止此操作。

此完成项的种类。编辑器根据种类选择图标。

此完成项的标签。默认情况下,这也是选择此完成项时插入的文本。

显示时选择此项。注意,只能选择一个完成项,并且编辑器会决定选择哪个项。规则是,那些最匹配的项中的第一个项被选中。

一个范围或一个插入和替换范围,用于选择应由该完成项替换的文本。

省略时,当前词的范围用作替换范围,当前词的开头到当前位置用作插入范围。

注1:范围必须是单行,并且必须包含请求完成的位置。注2:插入范围必须是替换范围的前缀,这意味着它必须包含在替换范围中并从同一位置开始。

在与其他项比较时应使用的字符串。如果为falsy,则使用标签

请注意,sortText仅用于完成项的初始排序。当有一个领先词(前缀)时,排序基于完成项与该前缀的匹配程度,初始排序仅在完成项匹配程度相同时使用。前缀由range属性定义,因此每个完成项可能不同。

此完成项的标签。

  • 已废弃 - 请改用CompletionItem.insertTextCompletionItem.range

选择此完成项时应用于文档的编辑。如果提供了编辑,则忽略insertText的值。

编辑的范围必须是单行,并且与请求完成的行在同一行。

CompletionItemKind

完成项种类。

枚举成员

Text完成项种类。

Method完成项种类。

Function完成项种类。

Constructor完成项种类。

Field完成项种类。

Variable完成项种类。

Class完成项种类。

Interface完成项种类。

Module完成项种类。

Property完成项种类。

Unit完成项种类。

Value完成项种类。

Enum完成项种类。

Keyword完成项种类。

Snippet完成项种类。

Color完成项种类。

File完成项种类。

Reference完成项种类。

Folder完成项种类。

EnumMember完成项种类。

Constant完成项种类。

Struct完成项种类。

Event完成项种类。

Operator完成项种类。

TypeParameter完成项种类。

User完成项种类。

Issue完成项种类。

CompletionItemLabel

完成项的结构化标签。

属性

一个可选的字符串,显示在CompletionItemLabel.detail之后,显示得不那么突出。应用于完全限定名或文件路径。

一个可选字符串,在label后直接显示,不带任何空格,显示得不那么突出。应用于函数签名或类型注解。

此完成项的标签。

默认情况下,这也是选择此完成项时插入的文本。

CompletionItemProvider<T>

完成项提供程序接口定义了扩展和IntelliSense之间的约定。

提供程序可以通过实现resolveCompletionItem函数来延迟detaildocumentation属性的计算。但是,用于初始排序和过滤的属性(如sortTextfilterTextinsertTextrange)在解析期间不得更改。

提供程序会根据用户手势明确请求或(取决于配置)在键入单词或触发字符时隐式请求完成。

方法

为给定位置和文档提供完成项。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

context: CompletionContext

完成是如何触发的。

返回描述
ProviderResult<CompletionList<T> | T[]>

一个完成项数组、一个完成列表,或解析为其中之一的 thenable。可以通过返回undefinednull或空数组来表示没有结果。

给定一个完成项,填写更多数据,如文档注释详细信息

编辑器只会解析一次完成项。

注意,此函数在完成项已在 UI 中显示时或在已选择插入项时调用。因此,不能更改任何会改变显示(标签、排序、过滤等)或(主要)插入行为(插入文本)的属性。

此函数可能会填充 additionalTextEdits。但是,这意味着项可能会在解析完成之前插入,在这种情况下,编辑器将尽力应用这些附加的文本编辑。

参数描述
item: T

UI 中当前处于活动状态的补全项。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<T>

已解析的补全项或解析为该项的 Thenable。返回给定的 item 是可以的。如果没有返回结果,将使用给定的 item

CompletionItemTag

补全项标签是用于调整补全项渲染的额外注释。

枚举成员

将补全渲染为已过时,通常使用删除线。

CompletionList<T>

表示要在编辑器中呈现的 补全项 集合。

构造函数

创建一个新的补全列表。

参数描述
items?: T[]

补全项。

isIncomplete?: boolean

列表不完整。

返回描述
CompletionList<T>

属性

此列表不完整。进一步输入应导致重新计算此列表。

补全项。

CompletionTriggerKind

触发 补全提供程序 的方式

枚举成员

补全正常触发。

补全由触发字符触发。

由于当前补全列表不完整,补全被重新触发

ConfigurationChangeEvent

描述配置更改的事件

方法

检查给定部分是否已更改。如果提供了作用域,则检查给定作用域下的资源部分是否已更改。

参数描述
section: string

配置名称,支持点式名称。

scope?: ConfigurationScope

要检查的作用域。

返回描述
布尔值

如果给定部分已更改,则为 true

ConfigurationScope

可用的配置作用域

  • 表示资源的 Uri
  • 表示打开的文本文档的 TextDocument
  • 表示工作区文件夹的 WorkspaceFolder
  • 包含以下内容的对象
    • uri:文本文档的可选 Uri
    • languageId:文本文档的语言标识符

ConfigurationTarget

配置目标

枚举成员

全局配置

工作区配置

工作区文件夹配置

CustomDocument

表示 CustomEditorProvider 使用的自定义文档。

自定义文档仅在给定的 CustomEditorProvider 中使用。CustomDocument 的生命周期由编辑器管理。当 CustomDocument 没有更多引用时,它将被释放。

属性

此文档关联的 uri。

方法

释放自定义文档。

当给定 CustomDocument 没有更多引用时(例如,当与文档关联的所有编辑器都已关闭时),编辑器会调用此函数。

参数描述
返回描述
void

CustomDocumentBackup

A CustomDocument 的备份。

属性

备份的唯一标识符。

当从备份打开自定义编辑器时,此 ID 将传递回扩展中的 openCustomDocument

方法

删除当前备份。

当当前备份不再需要时(例如,创建新备份或保存文件时),编辑器会调用此函数。

参数描述
返回描述
void

CustomDocumentBackupContext

用于实现 CustomDocumentBackup 的附加信息。

属性

写入新备份的建议文件位置。

请注意,您的扩展程序可以忽略此项并使用自己的备份策略。

如果编辑器是来自当前工作区的资源,destination 将指向 ExtensionContext.storagePath 内的文件。destination 的父文件夹可能不存在,因此请确保在将备份写入此位置之前创建它。

CustomDocumentContentChangeEvent<T>

由扩展程序触发的事件,用于向编辑器发送 CustomDocument 内容已更改的信号。

另请参阅 CustomEditorProvider.onDidChangeCustomDocument

属性

更改所针对的文档。

CustomDocumentEditEvent<T>

由扩展程序触发的事件,用于向编辑器发送 CustomDocument 已发生编辑的信号。

另请参阅 CustomEditorProvider.onDidChangeCustomDocument

属性

编辑所针对的文档。

描述编辑的显示名称。

这将在 UI 中显示给用户,用于撤消/重做操作。

方法

重做编辑操作。

当用户重做此编辑时,编辑器会调用此函数。要实现 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。用户清除不支持撤消/重做的编辑器的脏状态的唯一方法是 saverevert 文件。

编辑器应该只触发 CustomDocumentEditEvent 事件,或者只触发 CustomDocumentContentChangeEvent 事件。

方法

备份脏的自定义文档。

备份用于热退出和防止数据丢失。您的 backup 方法应以其当前状态持久化资源,即应用编辑后的状态。最常见的情况是,这意味着将资源保存到 ExtensionContext.storagePath 中的磁盘。当编辑器重新加载并为资源打开自定义编辑器时,您的扩展程序应首先检查资源是否存在任何备份。如果存在备份,您的扩展程序应从备份而不是工作区中的资源加载文件内容。

backup 在用户停止编辑文档后大约一秒钟触发。如果用户快速编辑文档,则在编辑停止之前不会调用 backup

当启用 auto save 时,不会调用 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 时,编辑器会调用此方法。(请注意,这仅用于编辑器的 File: Revert File 命令,而不用于文件的 git revert)。

要实现 revert,实现者必须确保 document 的所有编辑器实例(webview)都以相同的状态显示文档,即保存状态。这通常意味着从工作区重新加载文件。

参数描述
document: T

要恢复的文档。

cancellation: CancellationToken

指示不再需要恢复的令牌。

返回描述
Thenable<void>

表示更改已完成的 Thenable。

保存自定义文档。

当用户保存自定义编辑器时,编辑器会调用此方法。这可能发生在用户在自定义编辑器处于活动状态时触发保存、通过 save all 等命令,或者如果启用自动保存。

要实现 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 中。

构造函数

参数描述
返回描述
数据传输

方法

获取一个新的迭代器,其中包含此数据传输中每个元素的 [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 是一个对象,则返回 json 字符串化 DataTransferItem.value 结果。

参数描述
返回描述
Thenable<string>

DebugAdapter

如果调试适配器实现了 DebugAdapter 接口,则可以将其注册到编辑器,该适配器实现了调试适配器协议。

事件

调试适配器向编辑器发送调试适配器协议消息后触发的事件。消息可以是请求、响应或事件。

方法

释放此对象。

参数描述
返回描述
任意

处理调试适配器协议消息。消息可以是请求、响应或事件。结果或错误通过 onSendMessage 事件返回。

参数描述
message: DebugProtocolMessage

调试适配器协议消息

返回描述
void

DebugAdapterDescriptor

表示不同类型的调试适配器

DebugAdapterDescriptorFactory

创建 调试适配器描述符 的调试适配器工厂。

方法

在调试会话开始时调用 'createDebugAdapterDescriptor' 以提供要使用的调试适配器的详细信息。这些详细信息必须作为 DebugAdapterDescriptor 类型的对象返回。目前支持两种类型的调试适配器

  • 调试适配器可执行文件指定为命令路径和参数(参见 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

实现调试适配器的命令或可执行路径。

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

调试适配器跟踪器是跟踪编辑器和调试适配器之间通信的一种方式。

事件

调试适配器已向编辑器发送调试适配器协议消息。

参数描述
message: any
返回描述
void

调试适配器即将从编辑器接收调试适配器协议消息。

参数描述
message: any
返回描述
void

与调试适配器的会话即将启动。

参数描述
返回描述
void

调试适配器会话即将停止。

参数描述
返回描述
void

方法

调试适配器发生错误。

参数描述
error: Error
返回描述
void

调试适配器已退出,并带有给定的退出代码或信号。

参数描述
code: number
signal: string
返回描述
void

DebugAdapterTrackerFactory

创建 调试适配器跟踪器 的调试适配器工厂。

方法

在调试会话开始时调用方法 'createDebugAdapterTracker',以返回一个“跟踪器”对象,该对象提供对编辑器和调试适配器之间通信的读取访问权限。

参数描述
session: DebugSession

将使用调试适配器跟踪器的 调试会话

返回描述
ProviderResult<DebugAdapterTracker>

一个 调试适配器跟踪器 或 undefined。

DebugConfiguration

调试会话的配置。

属性

调试会话的名称。

调试会话的请求类型。

调试会话的类型。

DebugConfigurationProvider

调试配置提供程序允许向调试服务添加调试配置,并在使用启动配置启动调试会话之前解析它们。调试配置提供程序通过 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 指定何时触发 DebugConfigurationProviderprovideDebugConfigurations 方法。目前有两种情况:为新创建的 launch.json 提供初始调试配置,或在用户通过 UI(例如,通过“选择并开始调试”命令)请求时提供动态生成的调试配置。在通过 debug.registerDebugConfigurationProvider 注册 DebugConfigurationProvider 时使用触发器类型。

枚举成员

调用 DebugConfigurationProvider.provideDebugConfigurations 以提供新创建的 launch.json 的初始调试配置。

当用户通过 UI(例如,通过“选择并开始调试”命令)请求时,调用 DebugConfigurationProvider.provideDebugConfigurations 以提供动态生成的调试配置。

DebugConsole

表示调试控制台。

方法

将给定值追加到调试控制台。

参数描述
value: string

一个字符串,虚假值将不会打印。

返回描述
void

将给定值和换行符追加到调试控制台。

参数描述
value: string

一个字符串,虚假值也将打印。

返回描述
void

DebugConsoleMode

调试会话使用的调试控制台模式,请参阅 选项

枚举成员

调试会话应有独立的调试控制台。

调试会话应与其父会话共享调试控制台。此值对没有父会话的会话无效。

DebugProtocolBreakpoint

DebugProtocolBreakpoint 是调试适配器协议中定义的 Breakpoint 类型的非透明替代类型。

DebugProtocolMessage

DebugProtocolMessage 是调试适配器协议中定义的 ProtocolMessage 类型的非透明替代类型。

DebugProtocolSource

DebugProtocolSource 是调试适配器协议中定义的 Source 类型的非透明替代类型。

DebugSession

调试会话。

属性

此会话的“已解析” 调试配置。“已解析”表示

  • 所有变量都已替换,并且
  • 平台特定属性部分已针对匹配平台“扁平化”,并为不匹配平台删除。

此调试会话的唯一 ID。

调试会话的名称最初取自 调试配置。任何更改都将正确反映在 UI 中。

此调试会话的父会话,如果它是作为子会话创建的。

另请参阅 DebugSessionOptions.parentSession

来自 调试配置 的调试会话类型。

此会话的工作区文件夹,或对于无文件夹设置,为 undefined

方法

向调试适配器发送自定义请求。

参数描述
command: string
args?: any
返回描述
Thenable<any>

将编辑器中的断点映射到调试会话的调试适配器管理的相应调试适配器协议 (DAP) 断点。如果不存在 DAP 断点(因为编辑器断点尚未注册,或者调试适配器对该断点不感兴趣),则返回 undefined

参数描述
breakpoint: Breakpoint

编辑器中的 断点

返回描述
Thenable<DebugProtocolBreakpoint>

一个解析为调试适配器协议断点或 undefined 的 Promise。

DebugSessionCustomEvent

调试会话 接收到的自定义调试适配器协议事件。

属性

事件特定信息。

事件类型。

接收自定义事件的 调试会话

DebugSessionOptions

启动调试会话 的选项。

属性

控制调试会话的父会话是否显示在 CALL STACK 视图中,即使它只有一个子会话。默认情况下,调试会话从不隐藏其父会话。如果 compact 为 true,则具有单个子会话的调试会话将在 CALL STACK 视图中隐藏,以使树更紧凑。

控制此会话是应该有独立的调试控制台还是与父会话共享调试控制台。对于没有父会话的会话无效。默认为 Separate。

控制是否将“重新启动”等生命周期请求发送到新创建的会话或其父会话。默认情况下(如果该属性为 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。可以通过返回 undefinednull 来表示没有结果。

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

符号的定义,表示为一个或多个位置。对于大多数编程语言,符号只在一个位置定义。

关于符号定义位置的信息。

提供比普通位置定义更多的元数据,包括定义符号的范围。

DefinitionProvider

定义提供程序接口定义了扩展与转到定义和查看定义功能之间的约定。

方法

在给定位置和文档处提供符号的定义。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<Definition | LocationLink[]>

一个定义或解析为定义的 thenable。可以通过返回 undefinednull 来表示没有结果。

Diagnostic

表示诊断,例如编译器错误或警告。诊断对象仅在文件范围内有效。

构造函数

创建一个新的诊断对象。

参数描述
range: Range

此诊断适用的范围。

message: string

人类可读的消息。

severity?: DiagnosticSeverity

严重性,默认为错误

返回描述
Diagnostic

属性

此诊断的代码或标识符。应将其用于后续处理,例如在提供代码操作时。

人类可读的消息。

此诊断适用的范围。

相关诊断信息的数组,例如,当作用域内的符号名冲突时,所有定义都可以通过此属性标记。

严重性,默认为错误

描述此诊断来源的人类可读字符串,例如“typescript”或“super lint”。

有关诊断的附加元数据。

DiagnosticChangeEvent

诊断更改时触发的事件。

属性

诊断已更改的资源数组。

DiagnosticCollection

诊断集合是一个管理一组诊断的容器。诊断始终限定于诊断集合和资源。

要获取 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[]

不可变的诊断数组或 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

表示可以释放资源(例如事件监听或计时器)的类型。

静态

将许多可处置对象合并为一个。当您拥有具有 dispose 函数但不是 Disposable 实例的对象时,可以使用此方法。

参数描述
...disposableLikes: Array<{dispose: () => any}>

至少具有 dispose 函数成员的对象。请注意,异步 dispose 函数不会被等待。

返回描述
Disposable

返回一个新的可处置对象,该对象在处置时将处置所有提供的可处置对象。

构造函数

创建一个新的可处置对象,在处置时调用所提供的函数。

注意,异步函数不会被等待。

参数描述
callOnDispose: () => any

处置某物的函数。

返回描述
Disposable

方法

释放此对象。

参数描述
返回描述
任意

DocumentColorProvider

文档颜色提供程序定义了扩展与编辑器中拾取和修改颜色功能之间的约定。

方法

提供颜色的表示

参数描述
color: Color

要显示和插入的颜色。

context: {document: TextDocument, range: Range}

包含附加信息的上下文对象

token: CancellationToken

取消令牌。

返回描述
ProviderResult<ColorPresentation[]>

一个颜色表示数组或解析为此类的 thenable。可以通过返回 undefinednull 或空数组来表示没有结果。

为给定文档提供颜色。

参数描述
document: TextDocument

调用命令的文档。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<ColorInformation[]>

一个颜色信息数组或解析为此类的 thenable。可以通过返回 undefinednull 或空数组来表示没有结果。

DocumentDropEdit

在拖放时应用的编辑操作。

构造函数

参数描述
insertText: string | SnippetString

要插入到拖放位置的文本或代码片段。

title?: string

描述编辑的人类可读标签。

kind?: DocumentDropOrPasteEditKind

编辑的类型

返回描述
DocumentDropEdit

属性

在拖放时应用的附加可选编辑。

要插入到拖放位置的文本或代码片段。

编辑的类型

描述编辑的人类可读标签。

控制多个编辑的排序。如果此提供程序屈服于编辑,它将显示在列表的下方。

DocumentDropEditProvider<T>

处理资源拖放到文本编辑器中的提供程序。

这允许用户将资源(包括来自外部应用程序的资源)拖放到编辑器中。在拖放文件时,用户可以按住 shift 将文件拖放到编辑器中,而不是打开它。需要启用 editor.dropIntoEditor.enabled

方法

提供将拖放内容插入到文档中的编辑。

参数描述
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/*

对于从资源管理器或工作台中其他树视图拖放的资源,请使用 text/uri-list

使用 files 表示如果DataTransfer中存在任何文件,则应调用提供程序。请注意,DataTransferFile 条目仅在从编辑器外部(例如从操作系统)拖放内容时创建。

提供程序在provideDocumentDropEdits中可能返回的类型列表。

这用于在请求特定类型的编辑时筛选掉提供程序。

DocumentDropOrPasteEditKind

静态

基本文本编辑的根类型。

此类型应用于将基本文本插入到文档中的编辑。一个很好的例子是粘贴剪贴板文本同时根据粘贴的文本更新文件中导入的编辑。为此,我们可以使用 text.updateImports.someLanguageId 等类型。

即使大多数拖放/粘贴编辑最终都插入文本,您也不应将Text用作每个编辑的基本类型,因为这会产生冗余。相反,应使用更具体地描述要插入内容类型的类型。例如,如果编辑添加了 Markdown 链接,请使用 markdown.link,因为即使插入的内容是文本,更重要的是要知道编辑插入了 Markdown 语法。

除了插入文本外,还更新文档中导入的编辑的根类型。

构造函数

参数描述
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

高亮类型,默认为文本

返回描述
DocumentHighlight

属性

高亮类型,默认为文本

此高亮适用的范围。

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

编辑的类型

返回描述
DocumentPasteEdit

属性

粘贴时应用的附加可选编辑。

要插入到粘贴位置的文本或代码片段。

如果您的编辑需要更高级的插入逻辑,请将其设置为空字符串,并改为提供附加编辑

编辑的类型

描述编辑的人类可读标签。

控制当可以应用多个粘贴编辑时,它们的排序。

如果此编辑让步于另一个编辑,它将在向用户显示的可能粘贴编辑列表中显示在较低位置。

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[]

要粘贴到的 文档 中的范围。

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/*

对于从资源管理器或工作台中其他树视图拖放的资源,请使用 text/uri-list

使用 files 表示如果 DataTransfer 中存在任何 文件,则应调用提供程序。请注意,DataTransferFile 条目仅在从编辑器外部(例如从操作系统)粘贴内容时创建。

提供程序可在 provideDocumentPasteEdits 中返回的 种类 列表。

这用于在请求特定类型的编辑时筛选掉提供程序。

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

应该显示选择的范围。

返回描述
文档符号

属性

此符号的子节点,例如类的属性。

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

此符号的种类。

此符号的名称。

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

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

此符号的标签。

DocumentSymbolProvider

文档符号提供程序接口定义了扩展与 转到符号 功能之间的契约。

方法

为给定文档提供符号信息。

参数描述
document: TextDocument

调用命令的文档。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<DocumentSymbol[] | SymbolInformation[]>

一个文档高亮数组或解析为此类的 thenable。可以通过返回 undefinednull 或空数组来表示没有结果。

DocumentSymbolProviderMetadata

有关文档符号提供程序的元数据。

属性

当一个文档显示多个大纲树时显示的易读字符串。

EndOfLine

表示 文档 中的行结束字符序列。

枚举成员

换行符 \n 字符。

回车换行符 \r\n 序列。

EnterAction

描述按 Enter 键时执行的操作。

属性

描述在新行和缩进之后要附加的文本。

描述如何处理缩进。

描述从新行的缩进中移除的字符数。

EnvironmentVariableCollection

扩展可以应用于进程环境的突变集合。

属性

环境变量集合的描述,这将用于在 UI 中描述更改。

集合是否应为工作区缓存并在窗口重新加载时应用于终端。当为 true 时,集合将在窗口重新加载时立即激活。此外,如果存在缓存版本,此 API 将返回缓存版本。当扩展被卸载或集合被清除时,集合将失效。默认为 true。

方法

将值附加到环境变量。

请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前的所有替换、附加或前置调用。

参数描述
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

要获取修改器的变量。

返回描述
环境变量修改器

将值前置到环境变量。

请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前的所有替换、附加或前置调用。

参数描述
variable: string

要前置的变量。

value: string

要前置到变量的值。

options?: EnvironmentVariableMutatorOptions

应用于修改器的选项,如果未提供任何选项,则默认为 { applyAtProcessCreation: true }

返回描述
void

用值替换环境变量。

请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前的所有替换、附加或前置调用。

参数描述
variable: string

要替换的变量。

value: string

替换变量的值。

options?: EnvironmentVariableMutatorOptions

应用于修改器的选项,如果未提供任何选项,则默认为 { applyAtProcessCreation: true }

返回描述
void

EnvironmentVariableMutator

应用于环境变量的突变类型及其值。

属性

应用于修改器的选项。

将对变量发生的突变类型。

用于变量的值。

EnvironmentVariableMutatorOptions

应用于修改器的选项。

属性

在进程创建之前立即应用于环境。默认为 false。

应用于 shell 集成脚本中的环境。请注意,如果 shell 集成被禁用或由于某种原因不起作用,这将 不会 应用修改器。默认为 false。

EnvironmentVariableMutatorType

可以应用于环境变量的突变类型。

枚举成员

替换变量的现有值。

附加到变量现有值的末尾。

前置到变量现有值的开头。

EnvironmentVariableScope

环境变量集合适用的范围对象。

属性

要获取集合的任何特定工作区文件夹。

EvaluatableExpression

一个可评估表达式表示文档中可由活动的调试器或运行时评估的表达式。此评估的结果将显示在类似工具提示的部件中。如果只指定了一个范围,则将从底层文档中提取表达式。可选表达式可用于覆盖提取的表达式。在这种情况下,范围仍用于突出显示文档中的范围。

构造函数

创建一个新的可评估表达式对象。

参数描述
range: Range

从中提取可评估表达式的底层文档中的范围。

expression?: string

如果指定,则覆盖提取的表达式。

返回描述
可评估表达式

属性

如果指定,表达式将覆盖提取的表达式。

该范围用于从底层文档中提取可评估表达式并突出显示它。

EvaluatableExpressionProvider

可评估表达式提供程序接口定义了扩展和调试悬停之间的契约。在此契约中,提供程序返回文档中给定位置的可评估表达式,编辑器在活动的调试会话中评估此表达式,并在调试悬停中显示结果。

方法

为给定文档和位置提供可评估表达式。编辑器将在活动的调试会话中评估此表达式,并在调试悬停中显示结果。表达式可以通过底层文档中的范围隐式指定,也可以通过显式返回表达式来指定。

参数描述
document: TextDocument

调试悬停即将出现的文档。

position: Position

调试悬停即将出现的文档中的行和字符位置。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<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

取消订阅事件监听器的 disposable。

EventEmitter<T>

事件发射器可用于创建和管理 Event,供其他人订阅。一个发射器始终拥有一个事件。

如果您想从扩展内部提供事件,例如在 TextDocumentContentProvider 内部或向其他扩展提供 API 时,请使用此C++类。

构造函数

参数描述
返回描述
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 读取和写入文件和文件夹。

一个数组,disposable 可以添加到其中。当此扩展停用时,disposable 将被释放。

注意:异步释放函数不会被等待。

一个 memento 对象,用于在当前打开的 工作区 的上下文中存储状态。

方法

获取扩展中包含的资源的绝对路径。

注意:绝对 uri 可以通过 Uri.joinPathextensionUri 构建,例如 vscode.Uri.joinPath(context.extensionUri, relativePath);

参数描述
relativePath: string

扩展中包含的资源的相对路径。

返回描述
字符串

资源的绝对路径。

ExtensionKind

在远程窗口中,扩展类型描述了扩展是在 UI(窗口)运行的地方运行,还是在远程运行。

枚举成员

扩展在 UI 运行的地方运行。

扩展在远程扩展主机运行的地方运行。

ExtensionMode

ExtensionMode 在 ExtensionContext 上提供,指示特定扩展运行的模式。

枚举成员

扩展在编辑器中正常安装(例如,从市场或 VSIX)。

扩展正在从启动编辑器时提供的 --extensionDevelopmentPath 运行。

扩展正在从 --extensionTestsPath 运行,并且扩展主机正在运行单元测试。

ExtensionTerminalOptions

描述虚拟进程终端应使用哪些选项的值对象。

属性

终端的图标 ThemeColor。建议使用标准 terminal.ansi* 主题键,以在不同主题之间获得最佳对比度和一致性。

终端的图标路径或 ThemeIcon

选择退出在重启和重新加载时默认终端持久性。这仅在启用 terminal.integrated.enablePersistentSessions 时生效。

一个人类可读的字符串,将用于在 UI 中表示终端。

允许扩展控制终端的 Pseudoterminal 的实现。

用于验证 shell 集成序列是否来自可信来源的 nonce。这在用户体验方面的一个影响是,如果命令行带有 nonce,则在通过 shell 集成命令装饰 重新运行它之前,不需要与用户验证命令行是否正确。

如果终端包含 自定义 shell 集成支持,则应使用此选项。它应设置为随机 GUID。在 Pseudoterminal 实现中,此值可以在相关序列中传递,以使其受信任。

FileChangeEvent

文件系统提供程序必须用来发出文件更改信号的事件。

属性

更改的类型。

已更改文件的 uri。

FileChangeType

文件更改类型的枚举。

枚举成员

文件的内容或元数据已更改。

已创建文件。

文件已被删除。

FileCoverage

包含文件的覆盖率元数据。

静态

创建一个 FileCoverage 实例,其计数从覆盖率详细信息中填充。

参数描述
uri: Uri

已覆盖文件的 URI

details: readonly FileCoverageDetail[]

详细的覆盖率信息

返回描述
文件覆盖率

构造函数

参数描述
uri: Uri

已覆盖文件的 URI

statementCoverage: TestCoverageCount

语句覆盖率信息。如果报告器不提供语句覆盖率信息,则可以将其用于表示行覆盖率。

branchCoverage?: TestCoverageCount

分支覆盖率信息

declarationCoverage?: TestCoverageCount

声明覆盖率信息

includesTests?: TestItem[]

此覆盖率报告中包含的测试用例,请参阅 FileCoverage.includesTests

返回描述
文件覆盖率

属性

分支覆盖率信息。

声明覆盖率信息。根据报告器和语言,这可能是函数、方法或命名空间等类型。

在此文件中生成覆盖率的 测试用例 列表。如果设置,则还应定义 TestRunProfile.loadDetailedCoverageForTest 以检索详细的覆盖率信息。

语句覆盖率信息。如果报告器不提供语句覆盖率信息,则可以将其用于表示行覆盖率。

文件 URI。

FileCoverageDetail

TestRunProfile.loadDetailedCoverage 返回的覆盖率详细信息。

FileCreateEvent

文件创建后触发的事件。

属性

已创建的文件。

FileDecoration

文件装饰表示可以与文件一起呈现的元数据。

构造函数

创建一个新的装饰。

参数描述
badge?: string

表示装饰的字母。

tooltip?: string

装饰的工具提示。

color?: ThemeColor

装饰的颜色。

返回描述
文件装饰

属性

表示此装饰的非常短的字符串。

此装饰的颜色。

一个标志,表示此装饰应传播到其父级。

此装饰的人类可读工具提示。

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。

返回描述
文件系统错误

创建错误以表示文件是文件夹。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回描述
文件系统错误

创建错误以表示文件不是文件夹。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回描述
文件系统错误

创建错误以表示未找到文件或文件夹。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回描述
文件系统错误

创建错误以表示操作缺少所需权限。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回描述
文件系统错误

创建错误以表示文件系统不可用或过于繁忙,无法完成请求。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回描述
文件系统错误

构造函数

创建新的文件系统错误。

参数描述
messageOrUri?: string | Uri

消息或 URI。

返回描述
文件系统错误

属性

标识此错误的代码。

可能的值是错误的名称,例如 FileNotFound,或针对未指定错误的 Unknown

FileSystemProvider

文件系统提供程序定义了编辑器读取、写入、发现和管理文件和文件夹所需的功能。它允许扩展从远程位置(如 ftp 服务器)提供文件,并将这些文件无缝集成到编辑器中。

  • 注意 1:文件系统提供程序 API 使用 uris 并假设分层路径,例如 foo:/my/pathfoo:/my/ 的子项,是 foo:/my/path/deeper 的父项。
  • 注意 2:当文件或文件夹被访问时,会触发一个激活事件 onFileSystem:<scheme>
  • 注意 3:“文件”一词通常用于表示所有类型的文件,例如文件夹、符号链接和常规文件。

事件

一个事件,用于表示资源已创建、更改或删除。此事件应针对此提供程序的客户端正在监视的资源触发。

注意:重要的是,更改文件的元数据提供了一个更新的 mtime,该 mtimestat 中的先前值提前,并且具有正确的 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/**

文件系统提供程序的职责是根据这些规则对每个更改调用 onDidChangeFile。对于与任何提供的排除项匹配的文件,不应发出事件。

参数描述
uri: Uri

要监视的文件或文件夹的 URI。

options: {excludes: readonly string[], recursive: boolean}

配置监视。

返回描述
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

文件系统观察器通知磁盘上或来自其他 FileSystemProviders 的文件和文件夹的更改。

要获取 FileSystemWatcher 的实例,请使用 createFileSystemWatcher

事件

在文件/文件夹更改时触发的事件。

在文件/文件夹创建时触发的事件。

在文件/文件夹删除时触发的事件。

属性

如果此文件系统观察器已创建为忽略更改文件系统事件,则为 true。

如果此文件系统观察器已创建为忽略创建文件系统事件,则为 true。

如果此文件系统观察器已创建为忽略删除文件系统事件,则为 true。

方法

释放此对象。

参数描述
返回描述
任意

FileType

文件类型枚举。FileDirectory 类型也可以是符号链接,在这种情况下使用 FileType.File | FileType.SymbolicLinkFileType.Directory | FileType.SymbolicLink

枚举成员

文件类型未知。

常规文件。

目录。

指向文件的符号链接。

FileWillCreateEvent

文件即将创建时触发的事件。

要在文件创建之前修改工作区,请使用一个解析为 工作区编辑 的 thenable 调用 waitUntil 函数。

属性

即将创建的文件。

取消令牌。

方法

允许暂停事件并应用 工作区编辑

注意:此函数只能在事件分派期间调用,而不能以异步方式调用。

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

文件即将删除时触发的事件。

要在文件删除之前修改工作区,请使用一个解析为 工作区编辑 的 thenable 调用 waitUntil 函数。

属性

即将删除的文件。

取消令牌。

方法

允许暂停事件并应用 工作区编辑

注意:此函数只能在事件分派期间调用,而不能以异步方式调用。

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

文件即将重命名时触发的事件。

要在文件重命名之前修改工作区,请使用一个解析为 工作区编辑 的 thenable 调用 waitUntil 函数。

属性

即将重命名的文件。

取消令牌。

方法

允许暂停事件并应用 工作区编辑

注意:此函数只能在事件分派期间调用,而不能以异步方式调用。

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

折叠范围的类型。

返回描述
折叠范围

属性

要折叠范围的基于零的结束行。折叠区域以该行的最后一个字符结束。为有效,结束行必须为零或更大,并小于文档中的行数。

描述折叠范围的 Kind,例如 CommentRegion。该 kind 用于对折叠范围进行分类,并由“折叠所有注释”等命令使用。有关所有类型的枚举,请参阅 FoldingRangeKind。如果未设置,则该范围源自语法元素。

要折叠范围的基于零的起始行。折叠区域从该行的最后一个字符之后开始。为有效,结束行必须为零或更大,并小于文档中的行数。

FoldingRangeKind

特定折叠范围类型的枚举。类型是 FoldingRange 的可选字段,用于区分特定的折叠范围,例如源自注释的范围。该类型由 Fold all commentsFold all regions 等命令使用。如果未在范围内设置类型,则该范围源自注释、导入或区域标记以外的语法元素。

枚举成员

表示注释的折叠范围类型。

表示导入的折叠范围类型。

表示源自折叠标记(如 #region#endregion)的区域的折叠范围类型。

FoldingRangeProvider

折叠范围提供程序接口定义了扩展和编辑器中折叠功能之间的契约。

事件

一个可选事件,用于指示此提供程序中的折叠范围已更改。

方法

返回折叠范围列表,如果提供程序不想参与或被取消,则返回 null 和 undefined。

参数描述
document: TextDocument

调用命令的文档。

context: FoldingContext

附加上下文信息(供将来使用)

token: CancellationToken

取消令牌。

返回描述
ProviderResult<FoldingRange[]>

FormattingOptions

描述格式化应使用哪些选项的值对象。

属性

优先使用空格而不是制表符。

制表符的大小(以空格为单位)。

FunctionBreakpoint

由函数名称指定的断点。

构造函数

创建新的函数断点。

参数描述
functionName: string
enabled?: boolean
condition?: string
hitCondition?: string
logMessage?: string
返回描述
函数断点

属性

条件断点的可选表达式。

断点是否启用。

此断点所附加的函数的名称。

控制忽略多少次断点命中的可选表达式。

断点的唯一 ID。

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

GlobalEnvironmentVariableCollection

扩展可以应用于进程环境的突变集合。适用于所有作用域。

属性

环境变量集合的描述,这将用于在 UI 中描述更改。

集合是否应为工作区缓存并在窗口重新加载时应用于终端。当为 true 时,集合将在窗口重新加载时立即激活。此外,如果存在缓存版本,此 API 将返回缓存版本。当扩展被卸载或集合被清除时,集合将失效。默认为 true。

方法

将值附加到环境变量。

请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前的所有替换、附加或前置调用。

参数描述
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

要获取修改器的变量。

返回描述
环境变量修改器

获取扩展的作用域特定的环境变量集合。这允许仅在指定作用域内更改终端环境变量,并在此全局集合之后(和额外)应用。

通过此方法获取的每个对象都是独立的,不影响其他作用域的对象,包括全局集合。

参数描述
scope: EnvironmentVariableScope

环境变量集合适用的作用域。

如果省略 scope 参数,则返回适用于该参数所有相关 scope 的集合。例如,如果未指定 'workspaceFolder' 参数,则将返回适用于所有工作区文件夹的集合。

返回描述
环境变量集合

传递作用域的环境变量集合。

将值前置到环境变量。

请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前的所有替换、附加或前置调用。

参数描述
variable: string

要前置的变量。

value: string

要前置到变量的值。

options?: EnvironmentVariableMutatorOptions

应用于修改器的选项,如果未提供任何选项,则默认为 { applyAtProcessCreation: true }

返回描述
void

用值替换环境变量。

请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前的所有替换、附加或前置调用。

参数描述
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

悬停表示符号或单词的附加信息。悬停以类似工具提示的小部件呈现。

构造函数

创建新的悬停对象。

参数描述
contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>

悬停的内容。

range?: Range

悬停适用的范围。

返回描述
Hover

属性

此悬停的内容。

此悬停适用的范围。如果缺失,编辑器将使用当前位置的单词范围或当前位置本身。

HoverProvider

悬停提供程序接口定义了扩展与悬停功能之间的契约。

方法

为给定位置和文档提供悬停。同一位置的多个悬停将由编辑器合并。悬停可以有一个范围,如果省略,则默认为该位置的单词范围。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<Hover>

悬停或解析为悬停的 thenable。可以通过返回 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

提示的 类型

返回描述
内联提示

属性

此提示的类型。内联提示类型定义此内联提示的外观。

此提示的标签。可读字符串或 标签部分 数组。

注意 字符串和标签部分都不能为空。

在提示前渲染填充。填充将使用编辑器的背景颜色,而不是提示本身的背景颜色。这意味着填充可用于视觉上对齐/分隔内联提示。

在提示后渲染填充。填充将使用编辑器的背景颜色,而不是提示本身的背景颜色。这意味着填充可用于视觉上对齐/分隔内联提示。

此提示的位置。

接受此内联提示时执行的可选 文本编辑。接受内联提示的默认手势是双击。

注意,期望编辑会更改文档,以便内联提示(或其最近的变体)现在是文档的一部分,并且内联提示本身现在已过时。

注意,此属性可以在解析内联提示的 后期 设置。

悬停在此项目上时显示的工具提示文本。

注意,此属性可以在解析内联提示的 后期 设置。

InlayHintKind

内联提示类型。

内联提示的类型定义其外观,例如使用相应的文本和背景颜色。

枚举成员

用于类型注释的内联提示。

用于参数的内联提示。

InlayHintLabelPart

内联提示标签部分允许内联提示的交互式和复合标签。

构造函数

创建新的内联提示标签部分。

参数描述
value: string

部分的价值。

返回描述
内联提示标签部分

属性

此标签部分的可选命令。

当标签部分定义 位置命令 时,编辑器会将带命令的部分渲染为可点击的链接。命令会添加到上下文菜单中。

注意,此属性可以在解析内联提示的 后期 设置。

表示此标签部分的可选源代码位置

编辑器将使用此位置进行悬停和代码导航功能:此部分将成为一个可点击的链接,解析为给定位置符号的定义(不一定是位置本身),它会显示给定位置的悬停,并显示一个带有更多代码导航命令的上下文菜单。

注意,此属性可以在解析内联提示的 后期 设置。

悬停在此标签部分时显示的工具提示文本。

注意,此属性可以在解析内联提示的 后期 设置。

此标签部分的值。

InlayHintsProvider<T>

内联提示提供程序接口定义了扩展与内联提示功能之间的契约。

事件

一个可选事件,用于指示此提供程序中的内联提示已更改。

方法

为给定的范围和文档提供内联提示。

注意,不被给定范围 包含 的内联提示将被忽略。

参数描述
document: TextDocument

调用命令的文档。

range: Range

应计算内联提示的范围。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<T[]>

一个内联提示数组,或者一个能解析为该数组的 Thenable。

给定内联提示,填充 tooltip文本编辑 或完整的标签 部分

注意 编辑器最多只会解析一个内联提示。

参数描述
hint: T

一个内联提示。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<T>

已解析的内联提示,或者一个能解析为该提示的 Thenable。返回给定的 item 即可。如果没有返回结果,将使用给定的 item

InlineCompletionContext

提供有关请求内联补全的上下文信息。

属性

如果自动补全小部件可见,则提供有关当前选定项目的信息。

如果已设置,提供的内联补全必须扩展所选项目的文本并使用相同的范围,否则它们将不显示为预览。例如,如果文档文本是 console. 并且所选项目是替换文档中 ..log,则内联补全也必须替换 . 并以 .log 开头,例如 .log()

每当所选项目更改时,内联补全提供程序会再次被请求。

描述内联补全是如何触发的。

InlineCompletionItem

一个内联补全项表示一个文本片段,建议内联以补全正在输入的文本。

另请参阅 InlineCompletionItemProvider.provideInlineCompletionItems

构造函数

创建一个新的内联补全项。

参数描述
insertText: string | SnippetString

用于替换范围的文本。

range?: Range

要替换的范围。如果未设置,将使用请求位置的单词。

command?: Command

一个可选的 Command,在插入此补全执行。

返回描述
InlineCompletionItem

属性

一个可选的 Command,在插入此补全执行。

用于决定是否显示此内联补全的文本。当 falsy 时,使用 InlineCompletionItem.insertText

如果替换的文本是筛选文本的前缀,则显示内联补全。

用于替换范围的文本。必须设置。用于预览和接受操作。

要替换的范围。必须在同一行开始和结束。

当用户删除已键入的文本时,优先使用替换而不是插入以提供更好的体验。

InlineCompletionItemProvider

内联补全项提供程序接口定义了扩展与内联补全功能之间的契约。

提供程序会根据用户手势显式请求补全,或在键入时隐式请求。

方法

为给定位置和文档提供内联补全项。如果启用了内联补全,则当用户停止键入时,将调用此方法。当用户显式触发内联补全或显式请求下一个或上一个内联补全时,也会调用此方法。在这种情况下,应返回所有可用的内联补全。context.triggerKind 可用于区分这些场景。

参数描述
document: TextDocument

请求内联补全的文档。

position: Position

请求内联补全的位置。

context: InlineCompletionContext

带有附加信息的上下文对象。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<InlineCompletionList | InlineCompletionItem[]>

一个补全项数组,或者一个能解析为补全项数组的 Thenable。

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

应计算内联值的可见文档范围。

context: InlineValueContext

一个包含上下文信息(如当前位置)的包。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<InlineValue[]>

一个 InlineValueDescriptor 数组,或者一个能解析为该数组的 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 可能因多种原因而隐藏,扩展将通过 QuickInput.onDidHide 收到通知。(示例包括:显式调用 QuickInput.hide,用户按下 Esc,打开其他输入 UI 等)。

当按钮被触发时发出的事件。

属性

如果 UI 应显示进度指示器。默认为 false。

将其更改为 true,例如,在加载更多数据或验证用户输入时。

UI 中的操作按钮。

如果 UI 应该允许用户输入。默认为 true。

将其更改为 false,例如,在验证用户输入或为用户输入的下一步加载数据时。

如果 UI 即使失去 UI 焦点也应保持打开状态。默认为 false。此设置在 iPad 上被忽略,始终为 false。

如果输入值应隐藏。默认为 false。

未输入值时显示的可选占位符。

一个可选的提示文本,向用户提供一些要求或解释。

一个可选的当前步数。

一个可选标题。

一个可选的总步数。

一个可选的验证消息,指示当前输入值的问题。通过返回字符串,InputBox 将使用默认的 InputBoxValidationSeverity (Error)。返回 undefined 清除验证消息。

当前输入值。

输入值中的选定范围。定义为两个数字的元组,其中第一个是包含的起始索引,第二个是排他的结束索引。当 undefined 时,将选择整个预填充值;当为空(起始等于结束)时,只设置光标;否则,将选择定义的范围。

当用户键入或进行选择时,此属性不会更新,但可以通过扩展进行更新。

方法

处理此输入 UI 和任何相关资源。如果它仍然可见,则首先隐藏它。在此调用之后,输入 UI 不再具有功能,不应再访问其上的其他方法或属性。相反,应创建一个新的输入 UI。

参数描述
返回描述
void

隐藏此输入 UI。这还将触发一个 QuickInput.onDidHide 事件。

参数描述
返回描述
void

使输入 UI 以其当前配置可见。任何其他输入 UI 将首先触发一个 QuickInput.onDidHide 事件。

参数描述
返回描述
void

InputBoxOptions

用于配置输入框 UI 行为的选项。

属性

设置为 true,以便当焦点移到编辑器的其他部分或另一个窗口时,输入框仍保持打开状态。此设置在 iPad 上被忽略,始终为 false。

控制是否显示密码输入。密码输入会隐藏键入的文本。

一个可选字符串,在输入框中显示为占位符,以指导用户输入。

显示在输入框下方的文本。

一个可选字符串,表示输入框的标题。

用于预填充输入框的值。

预填充 的选择。定义为两个数字的元组,其中第一个是包含的起始索引,第二个是排他的结束索引。当 undefined 时,将选择整个预填充值;当为空(起始等于结束)时,只设置光标;否则,将选择定义的范围。

方法

一个可选函数,将调用该函数以验证输入并向用户提供提示。

参数描述
value: string

输入框的当前值。

返回描述
string | InputBoxValidationMessage | Thenable<string | InputBoxValidationMessage>

一个人类可读的字符串,作为错误消息呈现,或者一个 InputBoxValidationMessage,可以提供特定的消息严重性。当“value”有效时,返回 undefinednull 或空字符串。

InputBoxValidationMessage

用于配置验证消息行为的对象。

属性

要显示的验证消息。

验证消息的严重性。注意:当使用 InputBoxValidationSeverity.Error 时,将不允许用户接受(按 ENTER 键)输入。InfoWarning 仍将允许 InputBox 接受输入。

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,但它们由贡献语言的扩展定义,并且可能会更改。

语言模型的不透明标识符。

在单个请求中可以发送到模型的最大令牌数。

语言模型的人类可读名称。

语言模型供应商的知名标识符。例如 copilot,但值由贡献聊天模型的扩展定义,需要与它们一起查找。

模型的不透明版本字符串。这由贡献语言模型的扩展定义,并且可能会更改。

方法

使用模型特定的分词器逻辑计算消息中的令牌数。

参数描述
text: string | LanguageModelChatMessage

字符串或消息实例。

token?: CancellationToken

可选的取消令牌。有关如何创建取消令牌,请参阅 CancellationTokenSource

返回描述
Thenable<number>

一个解析为令牌数的 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 将被拒绝。

LanguageModelChatInformation

表示由 LanguageModelChatProvider 提供的语言模型。

属性

模型支持的各种功能,例如工具调用或图像输入。

参数描述
imageInput: boolean

模型是否支持图像输入。通常支持的图像是 jpg 和 png,但每个模型支持的 MIME 类型会有所不同。

toolCalling: number | boolean

模型是否支持工具调用。如果提供了数字,则表示单个请求中可以提供给模型的最大工具数量。

一个可选的、人类可读的字符串,将与模型一起呈现。对于在 UI 中区分同名模型很有用。

语言模型的不透明族名。值可能是 gpt-3.5-turbogpt4phi2llama

语言模型的唯一标识符。每个提供程序必须唯一,但不需要全局唯一。

模型可以接受作为输入的最大令牌数。

模型能够生成的最大令牌数。

语言模型的人类可读名称。

将鼠标悬停在模型上时要呈现的工具提示。用于提供有关模型的更多信息。

模型的不透明版本字符串。这用作 LanguageModelChatSelector.version 中的查找值。例如 GPT 4o 有多个版本,如 2024-11-20 和 2024-08-06

LanguageModelChatMessage

表示聊天中的一条消息。可以扮演不同的角色,例如用户或助手。

静态

用于创建新助手消息的实用程序。

参数描述
content: string | Array<LanguageModelTextPart | LanguageModelToolCallPart>

消息的内容。

name?: string

消息的可选用户名称。

返回描述
LanguageModelChatMessage

用于创建新用户消息的实用程序。

参数描述
content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart>

消息的内容。

name?: string

消息的可选用户名称。

返回描述
LanguageModelChatMessage

构造函数

创建新的用户消息。

参数描述
role: LanguageModelChatMessageRole

消息的角色。

content: string | LanguageModelInputPart[]

消息的内容。

name?: string

消息的可选用户名称。

返回描述
LanguageModelChatMessage

属性

一个字符串或异构数组,其中包含消息内容。某些部分可能对于某些模型是消息类型特定的。

此消息的可选用户名称。

此消息的角色。

LanguageModelChatMessageRole

表示聊天消息的角色。这可以是用户或助手。

枚举成员

用户角色,例如与语言模型交互的人类。

助手角色,例如生成响应的语言模型。

LanguageModelChatProvider<T>

LanguageModelChatProvider 实现了对语言模型的访问,用户可以通过聊天视图或通过获取 LanguageModelChat 的扩展 API 来使用。例如,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。结果实际上会传递给进度回调。

使用模型特定的分词器逻辑,返回给定文本的令牌数。

参数描述
model: T

要使用的语言模型

text: string | LanguageModelChatRequestMessage

要计算令牌的文本

token: CancellationToken

取消令牌

返回描述
Thenable<number>

令牌数

LanguageModelChatRequestMessage

提供程序版本的 LanguageModelChatMessage

属性

一个异构数组,其中包含消息内容。某些部分可能对于某些模型是消息类型特定的。

此消息的可选用户名称。

此消息的角色。

LanguageModelChatRequestOptions

使用语言模型发出聊天请求的选项。

另请参阅 LanguageModelChat.sendRequest

属性

一个人类可读的消息,解释为什么需要访问语言模型以及它启用了哪些功能。

控制语言模型行为的一组选项。这些选项特定于语言模型,需要查阅相应的文档。

要使用的工具选择模式。默认为 LanguageModelChatToolMode.Auto

语言模型可用的工具可选列表。这些可以是已通过 lm.tools 注册的工具,也可以是仅在调用扩展中实现的私有工具。

如果 LLM 请求调用其中一个工具,它将在 LanguageModelChatResponse.stream 中返回 LanguageModelToolCallPart。调用方负责调用该工具。如果它是通过 lm.tools 注册的工具,则意味着调用 lm.invokeTool

然后,可以通过创建一个带有 LanguageModelToolCallPart 的 Assistant 类型 LanguageModelChatMessage,然后是一个带有 LanguageModelToolResultPart 的 User 类型消息,将工具结果提供给 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

语言模型使用的工具调用模式。

枚举成员

语言模型可以选择调用工具或生成消息。这是默认设置。

语言模型必须调用所提供的工具之一。注意 - 某些模型在使用此模式时只支持单个工具。

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

部分的值,即 vscode/prompt-tsxrenderElementJSON 的结果。

返回描述
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 中定义的架构匹配

用于提示工具应在其响应中返回多少个令牌的选项,并使工具能够准确计算令牌。

一个不透明对象,将工具调用与来自 聊天参与者 的聊天请求绑定。

获取有效工具调用令牌的唯一方法是使用聊天请求中提供的 toolInvocationToken。在这种情况下,聊天响应视图中将自动显示工具调用的进度条,如果工具需要用户确认,则会在聊天视图中以内联方式显示。

如果工具在聊天请求之外调用,则应传入 undefined,除了确认之外,不会显示任何特殊 UI。

请注意,在调用过程中调用另一个工具的工具,可以传递其收到的 toolInvocationToken

LanguageModelToolInvocationPrepareOptions<T>

属性

调用工具时使用的输入。

LanguageModelToolResult

工具调用返回的结果。如果使用 vscode/prompt-tsx,此结果可以使用 ToolResult 渲染。

构造函数

创建 LanguageModelToolResult

参数描述
content: Array<LanguageModelTextPart | LanguageModelPromptTsxPart>

工具结果内容部分的列表

返回描述
LanguageModelToolResult

属性

工具结果内容部分的列表。包含 unknown,因为此列表将来可能会扩展新的内容类型。

另请参阅 lm.invokeTool

LanguageModelToolResultPart

工具调用的结果。这是 工具调用 的对应部分,只能包含在用户消息的内容中。

构造函数

参数描述
callId: string

工具调用的 ID。

content: unknown[]

工具结果的内容。

返回描述
LanguageModelToolResultPart

属性

工具调用的 ID。

请注意,这应与工具调用部分的 callId 匹配。

工具结果的值。

LanguageModelToolTokenizationOptions

与工具调用令牌化相关的选项。

属性

如果已知,工具在其结果中应发出的最大令牌数。

方法

使用模型特定的分词器逻辑计算消息中的令牌数。

参数描述
text: string

一个字符串。

token?: CancellationToken

可选的取消令牌。有关如何创建取消令牌,请参阅 CancellationTokenSource

返回描述
Thenable<number>

一个解析为令牌数的 Thenable。

LanguageStatusItem

语言状态项是为活动文本编辑器显示语言状态报告的首选方式,例如选定的 lint 工具或配置问题通知。

属性

屏幕阅读器与此项交互时使用的辅助功能信息

控制项目是否显示为“忙碌”。默认为 false

此项的 命令

可选,此项的人类可读详细信息。

此项的标识符。

此项的简称,例如“Java 语言状态”等。

定义此项显示哪些编辑器的 选择器

此项的严重性。

默认为 信息。您可以使用此属性向用户发出需要注意的问题信号,例如缺少可执行文件或无效配置。

条目显示的文本。您可以通过以下语法在文本中嵌入图标:

我的文本 $(icon-name) 包含像 $(icon-name) 这样的图标。

其中 icon-name 取自 ThemeIcon 图标集,例如 light-bulbthumbsupzap 等。

方法

释放并解除关联的资源。

参数描述
返回描述
void

LanguageStatusSeverity

表示语言状态的严重级别。

枚举成员

信息性严重性级别。

警告严重性级别。

错误严重性级别。

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 语法 进行格式化的人类可读文本。

supportThemeIcons 设置为 true 时,支持通过 $(<name>) 语法渲染 主题图标

supportHtml 设置为 true 时,支持渲染嵌入式 html。

构造函数

使用给定值创建一个新的 markdown 字符串。

参数描述
value?: string

可选,初始值。

supportThemeIcons?: boolean

可选,指定 MarkdownString 中是否支持 ThemeIcons

返回描述
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 字符串可以包含 ThemeIcons,例如 $(zap)

markdown 字符串。

方法

使用提供的语言将给定字符串作为代码块附加。

参数描述
value: string

代码片段。

language?: string

可选的 语言标识符

返回描述
MarkdownString

将给定字符串“原样”附加到此 markdown 字符串。当 supportThemeIconstrue 时,value 中的 ThemeIcons 将被图标化。

参数描述
value: string

Markdown 字符串。

返回描述
MarkdownString

将给定字符串附加并转义到此 markdown 字符串。

参数描述
value: string

纯文本。

返回描述
MarkdownString

MarkedString

MarkedString 可用于渲染人类可读文本。它既可以是 markdown 字符串,也可以是提供语言和代码片段的代码块。请注意,markdown 字符串将被清理 - 这意味着 html 将被转义。

McpHttpServerDefinition

McpHttpServerDefinition 表示通过可流式 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 服务器时将调用此函数。此时,扩展可以执行任何可能需要用户交互的操作,例如身份验证。服务器的任何非 readonly 属性都可以修改,并且扩展应返回已解析的服务器。

扩展可以返回 undefined 以指示不应启动服务器,或抛出错误。如果存在待处理的工具调用,编辑器将取消它并向语言模型返回错误消息。

参数描述
server: T

要解析的 MCP 服务器

token: CancellationToken

取消令牌。

返回描述
ProviderResult<T>

已解析的服务器或解析为该服务器的 Thenable。这可能是给定的 server 定义,其中非只读属性已填充。

McpStdioServerDefinition

McpStdioServerDefinition 表示通过运行本地进程并在其 stdin 和 stdout 流上操作而可用的 MCP 服务器。该进程将作为扩展主机的一个子进程生成,并且默认情况下不会在 shell 环境中运行。

构造函数

参数描述
label: string

服务器的人类可读名称。

command: string

用于启动服务器的命令。

args?: string[]

传递给服务器的附加命令行参数。

env?: Record<string, string | number>

服务器的可选附加环境信息。

version?: string

服务器的可选版本标识。

返回描述
McpStdioServerDefinition

属性

传递给服务器的附加命令行参数。

用于启动服务器的命令。基于 Node.js 的服务器可以使用 process.execPath 来使用编辑器的 Node.js 版本运行脚本。

用于启动服务器的工作目录。

服务器的可选附加环境信息。此环境中的变量将覆盖或删除(如果为 null)编辑器扩展主机的默认环境变量。

服务器的人类可读名称。

服务器的可选版本标识。如果此值更改,编辑器将指示工具已更改并提示刷新它们。

Memento

备忘录表示存储实用程序。它可以存储和检索值。

方法

返回值。

参数描述
key: string

一个字符串。

返回描述
T

存储的值或 undefined

返回值。

参数描述
key: string

一个字符串。

defaultValue: T

当没有给定键的值(undefined)时应返回的值。

返回描述
T

存储的值或 defaultValue。

返回存储的键。

参数描述
返回描述
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 Pending](#NotebookCellExecutionState.Pending Pending) 状态。当在执行任务上调用 start(...) 时,它进入 [NotebookCellExecutionState.Executing Executing](#NotebookCellExecutionState.Executing Executing) 状态。当调用 end(...) 时,它进入 [NotebookCellExecutionState.Idle 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

笔记本单元格输出表示执行单元格的结果。它是一个包含多个 输出项 的容器类型,其中包含的项表示相同的结果但使用不同的 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 中的运行手势(例如“运行单元格”、“全部运行”、“运行选择”等)被选中时,会调用执行处理程序。执行处理程序负责创建和管理 执行 对象。

参数描述
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

此控制器是否支持执行顺序,以便编辑器可以为其渲染占位符。

方法

创建单元格执行任务。

注意,每个单元格一次只能有一个执行,如果在另一个单元格执行仍在活动时创建单元格执行,则会抛出错误。

这应该在调用 执行处理程序 或单元格执行已从其他来源(例如,单元格已在执行或单元格执行已从其他来源触发)开始时使用。

参数描述
cell: NotebookCell

为其创建执行的笔记本单元格。

返回描述
NotebookCellExecution

笔记本单元格执行。

释放并解除关联的资源。

参数描述
返回描述
void

控制器可以为特定的笔记本文档设置亲和性。这允许控制器在某些笔记本中更显眼地显示。

参数描述
notebook: NotebookDocument

为其设置优先级的笔记本。

affinity: NotebookControllerAffinity

控制器亲和性

返回描述
void

NotebookControllerAffinity

笔记本控制器对笔记本文档的亲和性。

另请参阅 NotebookController.updateNotebookAffinity

枚举成员

默认亲和性。

控制器是笔记本的首选。

NotebookData

笔记本的原始表示。

扩展负责创建 NotebookData,以便编辑器可以创建 NotebookDocument

另请参阅 NotebookSerializer

构造函数

创建新的笔记本数据。

参数描述
cells: NotebookCellData[]

单元格数据数组。

返回描述
NotebookData

属性

此笔记本数据的单元格数据。

笔记本数据的任意元数据。

NotebookDocument

表示一个笔记本,它本身是 代码或标记单元格 的序列。笔记本文档是从 笔记本数据 创建的。

属性

笔记本中单元格的数量。

如果笔记本已关闭,则为 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

笔记本内容选项定义了笔记本的哪些部分被持久化。注意

例如,笔记本序列化器可以选择不保存输出,在这种情况下,当笔记本的输出发生变化时,编辑器不会将笔记本标记为

属性

控制单元格元数据属性更改事件是否会触发笔记本文档内容更改事件,以及是否会在差异编辑器中使用,默认为 false。如果内容提供程序未在文件文档中持久化元数据属性,则应将其设置为 true。

控制文档元数据属性更改事件是否会触发笔记本文档内容更改事件,以及是否会在差异编辑器中使用,默认为 false。如果内容提供程序未在文件文档中持久化元数据属性,则应将其设置为 true。

控制输出更改事件是否会触发笔记本文档内容更改事件以及是否会在差异编辑器中使用,默认为 false。如果内容提供程序未在文件文档中持久化输出,则应将其设置为 true。

NotebookDocumentShowOptions

表示配置在 笔记本编辑器 中显示 笔记本文档 行为的选项。

属性

一个可选标志,当 true 时,将阻止 笔记本编辑器 获取焦点。

一个可选标志,用于控制 笔记本编辑器 选项卡是否显示为预览。预览选项卡将被替换和重复使用,直到明确或通过编辑设置为保留。默认行为取决于 workbench.editor.enablePreview 设置。

笔记本编辑器 中应用于文档的可选选择。

一个可选的视图列,用于显示 笔记本编辑器。默认是 活动 列。如果列不存在,将根据需要创建,最多可达 ViewColumn.Nine。使用 ViewColumn.Beside 在当前活动编辑器旁边打开编辑器。

NotebookDocumentWillSaveEvent

笔记本文档 将要保存时触发的事件。

要在文档保存前对其进行修改,请调用 waitUntil 函数,并传入一个解析为 工作区编辑 的可 then 对象。

属性

将要保存的 笔记本文档

触发保存的原因。

取消令牌。

方法

允许暂停事件循环并应用 工作区编辑。后续调用此函数所做的编辑将按顺序应用。如果笔记本文档发生并发修改,则这些编辑将被“忽略”。

注意:此函数只能在事件分派期间调用,而不能以异步方式调用。

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 之前或等于 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

创建相对于此位置的新位置。

参数描述
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

编辑器中可以显示进度信息的位置。进度的视觉表示方式取决于位置。

枚举成员

在源代码管理视图中显示进度,作为图标的叠加层和视图中的进度条(可见时)。不支持取消、不连续进度或描述操作的标签。

在编辑器的状态栏中显示进度。不支持取消或离散进度。支持通过进度标签中的 $() 语法渲染 主题图标

显示带可选取消按钮的通知进度。支持显示无限和离散进度,但不支持渲染图标。

ProgressOptions

描述进度应如何显示的值对象。

属性

控制是否显示取消按钮,以允许用户取消长时间运行的操作。请注意,目前只有 ProgressLocation.Notification 支持显示取消按钮。

进度应显示的位置。

用于描述操作的人类可读字符串。

ProvideLanguageModelChatResponseOptions

LanguageModelChatRequestOptions 的提供程序版本

属性

一组控制语言模型行为的选项。这些选项特定于语言模型。

要使用的工具选择模式。提供程序必须实现尊重此模式。

语言模型可用的工具可选列表。这些可以是已通过 lm.tools 注册的工具,也可以是仅在调用扩展中实现的私有工具。

如果 LLM 请求调用其中一个工具,它将在 LanguageModelChatResponse.stream 中返回 LanguageModelToolCallPart。调用方负责调用该工具。如果它是通过 lm.tools 注册的工具,则意味着调用 lm.invokeTool

然后,可以通过创建一个带有 LanguageModelToolCallPart 的 Assistant 类型 LanguageModelChatMessage,然后是一个带有 LanguageModelToolResultPart 的 User 类型消息,将工具结果提供给 LLM。

ProviderResult<T>

提供程序结果表示提供程序(例如 HoverProvider)可能返回的值。这可以是实际的结果类型 T(例如 Hover),也可以是解析为该类型 T 的 thenable。此外,可以直接或从 thenable 返回 nullundefined

以下代码段都是 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 之前触发的事件将被忽略。

示例: 将终端名称更改为“My new terminal”。

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);

一个事件,当它被触发时,允许覆盖终端的尺寸。请注意,当设置时,覆盖的尺寸只有在它们小于终端的实际尺寸时才会生效(即,永远不会有滚动条)。设置为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只会将光标向下移动 1 行,您还需要写入\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

快速差异提供程序提供一个uri,指向已修改资源的原始状态。编辑器将使用此信息在文本中渲染即时差异。

方法

为任何给定的资源 URI 提供一个Uri到原始资源。

参数描述
uri: Uri

在文本编辑器中打开的资源的 URI。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<Uri>

一个可解析为匹配原始资源 URI 的 Thenable。

QuickInput

一个轻量级的用户输入 UI,初始不可见。通过其属性进行配置后,扩展可以通过调用QuickInput.show使其可见。

此 UI 可能因多种原因而隐藏,扩展将通过 QuickInput.onDidHide 收到通知。(示例包括:显式调用 QuickInput.hide,用户按下 Esc,打开其他输入 UI 等)。

用户按下 Enter 键或表示接受当前状态的其他手势不会自动隐藏此 UI 组件。由扩展决定是否接受用户的输入,以及是否应通过调用QuickInput.hide来隐藏 UI。

当扩展不再需要此输入 UI 时,应QuickInput.dispose它以释放与其相关的任何资源。

有关具体的 UI,请参阅QuickPickInputBox

事件

当此输入 UI 隐藏时发出的事件。

此 UI 可能因多种原因而隐藏,扩展将通过 QuickInput.onDidHide 收到通知。(示例包括:显式调用 QuickInput.hide,用户按下 Esc,打开其他输入 UI 等)。

属性

如果 UI 应显示进度指示器。默认为 false。

将其更改为 true,例如,在加载更多数据或验证用户输入时。

如果 UI 应该允许用户输入。默认为 true。

将其更改为 false,例如,在验证用户输入或为用户输入的下一步加载数据时。

如果 UI 即使失去 UI 焦点也应保持打开状态。默认为 false。此设置在 iPad 上被忽略,始终为 false。

一个可选的当前步数。

一个可选标题。

一个可选的总步数。

方法

处理此输入 UI 和任何相关资源。如果它仍然可见,则首先隐藏它。在此调用之后,输入 UI 不再具有功能,不应再访问其上的其他方法或属性。相反,应创建一个新的输入 UI。

参数描述
返回描述
void

隐藏此输入 UI。这还将触发一个 QuickInput.onDidHide 事件。

参数描述
返回描述
void

使输入 UI 以其当前配置可见。任何其他输入 UI 将首先触发一个 QuickInput.onDidHide 事件。

参数描述
返回描述
void

QuickInputButton

QuickPickInputBox中用于操作的按钮。

属性

按钮图标。

一个可选的工具提示。

QuickInputButtons

QuickPickInputBox预定义的按钮。

静态

用于QuickPickInputBox的后退按钮。

当需要导航“后退”按钮时,应使用此按钮以保持一致性。它带有预定义的图标、工具提示和位置。

QuickPick<T>

一个具体的QuickInput,用于让用户从 T 类型的项列表中选择一个项。这些项可以通过过滤文本字段进行过滤,并且有一个选项canSelectMany来允许选择多个项。

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

事件

一个事件,表示用户接受了选定的项。

一个事件,表示活动项已更改。

一个事件,表示选定的项已更改。

一个事件,表示筛选文本的值已更改。

当此输入 UI 隐藏时发出的事件。

此 UI 可能因多种原因而隐藏,扩展将通过 QuickInput.onDidHide 收到通知。(示例包括:显式调用 QuickInput.hide,用户按下 Esc,打开其他输入 UI 等)。

一个事件,表示触发了顶级按钮(存储在buttons中的按钮)。此事件不会针对QuickPickItem上的按钮触发。

一个事件,表示触发了特定QuickPickItem中的按钮。此事件不会针对标题栏中的按钮触发。

属性

活动项。这可以由扩展读取和更新。

如果 UI 应显示进度指示器。默认为 false。

将其更改为 true,例如,在加载更多数据或验证用户输入时。

UI 中的操作按钮。

是否可以同时选择多个项。默认为 false。

如果 UI 应该允许用户输入。默认为 true。

将其更改为 false,例如,在验证用户输入或为用户输入的下一步加载数据时。

如果 UI 即使失去 UI 焦点也应保持打开状态。默认为 false。此设置在 iPad 上被忽略,始终为 false。

可供选择的项。这可以由扩展读取和更新。

一个可选标志,用于在更新快速选择项时保持快速选择的滚动位置。默认为 false。

筛选文本是否也应与项的描述匹配。默认为 false。

筛选文本是否也应与项的详细信息匹配。默认为 false。

可选的占位符,当未输入筛选条件时显示在筛选文本框中。

选定的项。这可以由扩展读取和更新。

一个可选的当前步数。

一个可选标题。

一个可选的总步数。

筛选文本的当前值。

方法

处理此输入 UI 和任何相关资源。如果它仍然可见,则首先隐藏它。在此调用之后,输入 UI 不再具有功能,不应再访问其上的其他方法或属性。相反,应创建一个新的输入 UI。

参数描述
返回描述
void

隐藏此输入 UI。这还将触发一个 QuickInput.onDidHide 事件。

参数描述
返回描述
void

使输入 UI 以其当前配置可见。任何其他输入 UI 将首先触发一个 QuickInput.onDidHide 事件。

参数描述
返回描述
void

QuickPickItem

表示可以从项列表中选择的项。

属性

始终显示此项。

注意:当kind设置为QuickPickItemKind.Separator时,此属性将被忽略

将在此特定项上渲染的可选按钮。这些按钮在点击时将触发QuickPickItemButtonEvent。按钮仅在使用createQuickPick() API 创建的快速选择器时渲染。在使用showQuickPick() API 时,按钮不渲染。

注意:当kind设置为QuickPickItemKind.Separator时,此属性将被忽略

一个人类可读的字符串,在同一行中以不那么显眼的方式渲染。支持通过$(<name>)语法渲染主题图标

注意:当kind设置为QuickPickItemKind.Separator时,此属性将被忽略

一个人类可读的字符串,在单独的行中以不那么显眼的方式渲染。支持通过$(<name>)语法渲染主题图标

注意:当kind设置为QuickPickItemKind.Separator时,此属性将被忽略

QuickPickItem 的图标路径或ThemeIcon

QuickPickItem 的类型,它将决定此项在快速选择中的渲染方式。如果未指定,默认值为QuickPickItemKind.Default

一个人类可读的字符串,以醒目方式渲染。支持通过$(<name>)语法渲染主题图标

注意:当kind设置为QuickPickItemKind.Default(即常规项而不是分隔符)时,它支持通过$(<name>)语法渲染主题图标

可选标志,指示此项是否最初被选中。此标志仅在使用showQuickPick() API 时有效。要使用createQuickPick() API 实现相同的功能,只需将QuickPick.selectedItems设置为您希望最初选中的项。(注意:此标志仅在选择器允许多选时有效。)

另请参阅QuickPickOptions.canPickMany

注意:当kind设置为QuickPickItemKind.Separator时,此属性将被忽略

QuickPickItemButtonEvent<T>

一个事件,表示触发了特定QuickPickItem中的按钮。此事件不会针对标题栏中的按钮触发。

属性

被点击的按钮。

按钮所属的项。

QuickPickItemKind

快速选择项的类型。

枚举成员

QuickPickItem的类型为Separator时,该项仅是一个视觉分隔符,不代表实际项。唯一适用的属性是label。所有其他QuickPickItem上的属性都将被忽略,不起作用。

默认的QuickPickItem.kind是可以在快速选择中选择的项。

QuickPickOptions

用于配置快速选择 UI 行为的选项。

事件

一个可选函数,每当选择一个项时都会调用它。

参数描述
item: string | QuickPickItem
返回描述
任意

属性

一个可选标志,使选择器接受多项选择,如果为 true,则结果是选择数组。

设置为true可在焦点移至编辑器的其他部分或另一个窗口时保持选择器打开。此设置在 iPad 上将被忽略,并始终为 false。

一个可选标志,用于在筛选选择项时包含描述。

一个可选标志,用于在筛选选择项时包含详细信息。

一个可选字符串,在输入框中显示为占位符,以指导用户选择什么。

一个可选字符串,表示快速选择的标题。

Range

一个范围表示一对有序的两个位置。保证start.isBeforeOrEqual(end)

Range 对象是不可变的。使用withintersectionunion方法从现有范围派生新范围。

构造函数

从两个位置创建新范围。如果start不早于或等于end,则值将互换。

参数描述
start: Position

一个位置。

end: Position

一个位置。

返回描述
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

值对象,包含请求引用时的额外信息。

属性

包含当前符号的声明。

ReferenceProvider

引用提供程序接口定义了扩展和查找引用功能之间的契约。

方法

为给定位置和文档提供一组项目范围的引用。

参数描述
document: TextDocument

调用命令的文档。

position: Position

调用命令的位置。

context: ReferenceContext

关于引用请求的附加信息。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<Location[]>

一个位置数组或一个解析为位置数组的 Thenable。可以通过返回undefinednull或空数组来表示没有结果。

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

将机密存储在给定键下。

参数描述
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

如果选择的锚点结束位置,则该选择是反向的。

如果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

选择范围表示选择层次结构的一部分。一个选择范围可以有一个包含它的父选择范围。

构造函数

创建新的选择范围。

参数描述
range: Range

选择范围的范围。

parent?: SelectionRange

选择范围的父级。

返回描述
SelectionRange

属性

包含此范围的父选择范围。

此选择范围的Range

SelectionRangeProvider

选择范围提供程序接口定义了扩展和“扩展和收缩选择”功能之间的契约。

方法

为给定位置提供选择范围。

选择范围应针对每个位置单独且独立地计算。编辑器将合并并去重范围,但提供程序必须返回选择范围的层次结构,以便一个范围被其父级包含

参数描述
document: TextDocument

调用命令的文档。

positions: readonly Position[]

调用命令时的位置。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<SelectionRange[]>

选择范围或解析为选择范围的 thenable。可以通过返回undefinednull来表示没有结果。

SemanticTokens

表示语义标记,无论是在一个范围中还是在整个文档中。

另请参阅

构造函数

创建新的语义标记。

参数描述
data: Uint32Array

标记数据。

resultId?: string

结果标识符。

返回描述
SemanticTokens

属性

实际的令牌数据。

另请参阅provideDocumentSemanticTokens以了解格式说明。

标记的结果 ID。

这是将传递给DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits(如果已实现)的 ID。

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 }字面量,则charsToEscape中的所有字符都将使用escapeChar进行转义。

用于强引用的字符。字符串的长度必须为 1。

用于弱引用的字符。字符串的长度必须为 1。

SignatureHelp

签名帮助表示某个可调用内容的签名。可以有多个签名,但只有一个是活动的,并且只有一个活动参数。

构造函数

参数描述
返回描述
SignatureHelp

属性

活动签名的活动参数。

活动签名。

一个或多个签名。

SignatureHelpContext

关于触发SignatureHelpProvider的上下文的附加信息。

属性

当前活动的SignatureHelp

activeSignatureHelpactiveSignature字段会根据用户通过可用签名进行切换而更新。

如果签名帮助在触发时已显示,则为 true

当签名帮助已激活时会发生重新触发,这可能是由于输入触发字符、光标移动或文档内容更改等操作引起的。

导致签名帮助被触发的字符。

当签名帮助不是通过打字触发时(例如手动调用签名帮助或移动光标时),此值为 undefined

导致签名帮助被触发的操作。

SignatureHelpProvider

签名帮助提供程序接口定义了扩展和参数提示功能之间的契约。

方法

在给定位置和文档中提供签名帮助。

参数描述
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

代码片段字符串是一个模板,允许插入文本并在插入时控制编辑器光标。

代码片段可以使用 $1$2${3:foo} 定义制表位和占位符。$0 定义最终的制表位,默认为代码片段的末尾。变量使用 $name${name:default value} 定义。另请参阅完整的代码片段语法

构造函数

创建一个新的代码片段字符串。

参数描述
value?: string

一个代码片段字符串。

返回描述
SnippetString

属性

代码片段字符串。

方法

构建器函数,将一个选择(${1|a,b,c|})附加到此代码片段字符串的 value

参数描述
values: readonly string[]

选择的值 - 字符串数组

number?: number

此制表位的编号,默认为从 1 开始的自增值。

返回描述
SnippetString

此代码片段字符串。

构建器函数,将一个占位符(${1:value})附加到此代码片段字符串的 value

参数描述
value: string | (snippet: SnippetString) => any

此占位符的值 - 可以是字符串,也可以是用于创建嵌套代码片段的函数。

number?: number

此制表位的编号,默认为从 1 开始的自增值。

返回描述
SnippetString

此代码片段字符串。

构建器函数,将一个制表位($1$2 等)附加到此代码片段字符串的 value

参数描述
number?: number

此制表位的编号,默认为从 1 开始的自增值。

返回描述
SnippetString

此代码片段字符串。

构建器函数,将给定字符串附加到此代码片段字符串的 value

参数描述
string: string

要“按原样”附加的值。字符串将被转义。

返回描述
SnippetString

此代码片段字符串。

构建器函数,将一个变量(${VAR})附加到此代码片段字符串的 value

参数描述
name: string

变量的名称 - 不包括 $

defaultValue: string | (snippet: SnippetString) => any

当无法解析变量名时使用的默认值 - 可以是字符串,也可以是用于创建嵌套代码片段的函数。

返回描述
SnippetString

此代码片段字符串。

SnippetTextEdit

代码片段编辑表示由编辑器执行的交互式编辑。

注意,代码片段编辑始终可以作为常规文本编辑执行。当没有匹配的编辑器打开时,或者当工作区编辑包含多个文件的代码片段编辑时,就会发生这种情况。在这种情况下,只有与活动编辑器匹配的代码片段编辑才会作为代码片段编辑执行,而其他则作为常规文本编辑执行。

静态

用于创建插入代码片段编辑的实用程序。

参数描述
position: Position

一个位置,将成为一个空范围。

snippet: SnippetString

一个代码片段字符串。

返回描述
SnippetTextEdit

一个新的代码片段编辑对象。

用于创建替换代码片段编辑的实用程序。

参数描述
range: Range

一个范围。

snippet: SnippetString

一个代码片段字符串。

返回描述
SnippetTextEdit

一个新的代码片段编辑对象。

构造函数

创建一个新的代码片段编辑。

参数描述
range: Range

一个范围。

snippet: SnippetString

一个代码片段字符串。

返回描述
SnippetTextEdit

属性

是否应在保留现有空白的情况下应用代码片段编辑。

此编辑适用的范围。

此编辑将执行的 代码片段

SourceBreakpoint

由源位置指定的断点。

构造函数

为源位置创建一个新断点。

参数描述
location: Location
enabled?: boolean
condition?: string
hitCondition?: string
logMessage?: string
返回描述
SourceBreakpoint

属性

条件断点的可选表达式。

断点是否启用。

控制忽略多少次断点命中的可选表达式。

断点的唯一 ID。

此断点的源和行位置。

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

SourceControl

一个源代码控制能够向编辑器提供 资源状态,并以几种与源代码控制相关的方式与编辑器进行交互。

属性

可选的接受输入命令。

当用户在源代码控制输入中接受值时,将调用此命令。

可选的提交模板字符串。

源代码控制视图将在适当的时候使用此值填充源代码控制输入。

此源代码控制的 资源状态 的 UI 可见计数。

如果未定义,此源代码控制将

  • 将其 UI 可见计数显示为零,并且
  • 将其 资源状态 的计数贡献给所有源代码控制的 UI 可见聚合计数。

此源代码控制的 ID。

此源代码控制的 输入框

此源代码控制的人类可读标签。

此源代码控制根目录的(可选)Uri。

可选的状态栏命令。

这些命令将显示在编辑器的状态栏中。

方法

创建一个新的 资源组

参数描述
id: string
label: string
返回描述
SourceControlResourceGroup

处置此源代码控制。

参数描述
返回描述
void

SourceControlInputBox

表示源代码控制视图中的输入框。

属性

控制输入框是否启用(默认为 true)。

在输入框中显示为占位符的字符串,用于引导用户。

输入框内容的设置器和获取器。

控制输入框是否可见(默认为 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"
      }
    ]
  }
}

这将仅对 contextValue 等于 exportable 的资源组显示操作 extension.export

当此源代码控制资源组不包含任何 源代码控制资源状态 时是否隐藏。

此源代码控制资源组的 ID。

此源代码控制资源组的标签。

此组的 源代码控制资源状态 集合。

方法

处置此源代码控制资源组。

参数描述
返回描述
void

SourceControlResourceState

源代码控制资源状态表示特定 源代码控制组 中基础工作区资源的状态。

属性

当资源状态在源代码控制视图中打开时应运行的 命令

资源状态的上下文值。这可用于贡献资源特定的操作。例如,如果资源被赋予上下文值 diffable。当使用 menus 扩展点向 scm/resourceState/context 贡献操作时,可以在 when 表达式中指定键 scmResourceState 的上下文值,例如 scmResourceState == diffable

"contributes": {
  "menus": {
    "scm/resourceState/context": [
      {
        "command": "extension.diff",
        "when": "scmResourceState == diffable"
      }
    ]
  }
}

这将仅对 contextValuediffable 的资源显示操作 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 语言指示器”、“Git 状态”等。尝试保持名称长度简短,但足以描述状态栏项的用途。

此项的优先级。值越高表示该项应更多地显示在左侧。

条目显示的文本。您可以通过以下语法在文本中嵌入图标:

我的文本 $(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

笔记本的类型。映射到 NotebookDocuments 的 notebookType

返回描述
TabInputNotebook

属性

笔记本的类型。映射到 NotebookDocuments 的 notebookType

选项卡所代表的 uri。

TabInputNotebookDiff

选项卡表示以差异配置显示的两个笔记本。

构造函数

构造笔记本差异选项卡输入。

参数描述
original: Uri

原始未修改笔记本的 uri。

modified: Uri

修改后笔记本的 uri。

notebookType: string

笔记本的类型。映射到 NotebookDocuments 的 notebookType

返回描述
TabInputNotebookDiff

属性

修改后笔记本的 uri。

笔记本的类型。映射到 NotebookDocuments 的 notebookType

原始笔记本的 uri。

TabInputTerminal

该选项卡表示编辑器区域中的一个终端。

构造函数

构造终端选项卡输入。

参数描述
返回描述
TabInputTerminal

TabInputText

该选项卡表示单个基于文本的资源。

构造函数

用给定的 URI 构造一个文本选项卡输入。

参数描述
uri: Uri

选项卡的 URI。

返回描述
TabInputText

属性

选项卡表示的 uri。

TabInputTextDiff

选项卡表示两个文本资源以差异形式呈现。

构造函数

用给定的 URI 构造一个新的文本差异选项卡输入。

参数描述
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

定义系统中任务类型(Task Kind)的结构。该值必须可 JSON 字符串化。

属性

由扩展提供的描述任务的任务定义。通常,任务提供程序定义更多属性来识别任务。它们需要在扩展的 package.json 文件中的“taskDefinitions”扩展点下定义。例如,npm 任务定义如下所示。

interface NpmTaskDefinition extends TaskDefinition {
  script: string;
}

请注意,以“$”开头的类型标识符保留供内部使用,扩展不应使用。

TaskEndEvent

表示已执行任务结束的事件。

此接口不打算实现。

属性

表示已完成任务的任务项。

TaskExecution

表示已执行任务的对象。可用于终止任务。

此接口不打算实现。

属性

已启动的任务。

方法

终止任务执行。

参数描述
返回描述
void

TaskFilter

任务筛选器根据其版本和类型来表示任务。

属性

要返回的任务类型;

任务的 version,如 tasks.json 文件中所用。该字符串支持 package.json semver 符号。

TaskGroup

任务的分组。编辑器默认支持“Clean”、“Build”、“RebuildAll”和“Test”组。

静态

构建任务组;

清理任务组;

重建所有任务组;

测试所有任务组;

构造函数

私有构造函数

参数描述
id: string

任务组的标识符。

label: string

任务组的人类可读名称。

返回描述
任务组

属性

任务组的 ID。是 TaskGroup.Clean.id、TaskGroup.Build.id、TaskGroup.Rebuild.id 或 TaskGroup.Test.id 之一。

属于此组的任务是否为该组的默认任务。此属性无法通过 API 设置,由用户的任务配置控制。

TaskPanelKind

控制任务通道在任务之间如何使用

枚举成员

与其他任务共享一个面板。这是默认设置。

为此任务使用专用面板。该面板不与其他任务共享。

每次执行此任务时都会创建一个新面板。

TaskPresentationOptions

控制任务在 UI 中的呈现方式。

属性

控制在执行任务之前是否清除终端。

控制在执行任务后是否关闭终端。

控制是否在用户界面中回显与任务关联的命令。

控制显示任务输出的面板是否获得焦点。

控制任务面板是仅用于此任务(专用)、在任务之间共享(共享)还是在每次任务执行时创建一个新面板(新建)。默认为 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

遥测记录器,可供扩展用于记录使用情况和错误遥测。

记录器包装了 发送器,但它保证

  • 尊重禁用或调整遥测的用户设置,并且
  • 潜在敏感数据被删除

它还启用了“回显 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 的选项

属性

应注入数据对象的任何其他通用属性。

是否避免将内置通用属性(如操作系统、扩展名等)注入数据对象。如果未定义,则默认为 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 集成 提供支持的终端功能的 Shell 集成对象。在终端创建后,此项将始终为 undefined。监听 window.onDidChangeTerminalShellIntegration 以在终端激活 shell 集成时获得通知。

请注意,如果 shell 集成从未激活,此对象可能仍为 undefined。例如,命令提示符不支持 shell 集成,并且用户的 shell 设置可能与自动 shell 集成激活冲突。

终端 的当前状态。

方法

释放并解除关联的资源。

参数描述
返回描述
void

如果此终端当前正在显示,则隐藏终端面板。

参数描述
返回描述
void

向终端发送文本。文本被写入终端底层 pty 进程 (shell) 的标准输入。

参数描述
text: string

要发送的文本。

shouldExecute?: boolean

指示正在发送的文本应该执行,而不是仅仅插入到终端中。添加的字符为 \n\r\n,具体取决于平台。这默认为 true

返回描述
void

显示终端面板并在 UI 中显示此终端。

参数描述
preserveFocus?: boolean

true 时,终端将不会获得焦点。

返回描述
void

TerminalDimensions

表示终端的尺寸。

属性

终端中的列数。

终端中的行数。

TerminalEditorLocationOptions

假定 TerminalLocation 为编辑器,并允许指定 ViewColumnpreserveFocus 属性

属性

一个可选标志,当设置为 true 时,将阻止 终端 获得焦点。

终端在编辑器区域中显示的视图列。默认值为 活动 列。如果需要,将创建不存在的列,最多可达 ViewColumn.Nine。使用 ViewColumn.Beside 在当前活动编辑器的旁边打开编辑器。

TerminalExitReason

终端退出原因类型。

枚举成员

未知原因。

窗口已关闭/重新加载。

shell 进程已退出。

用户关闭了终端。

扩展程序处理了终端。

TerminalExitStatus

表示终端如何退出。

属性

终端退出的退出代码,它可以有以下值

  • 零:终端进程或自定义执行成功。
  • 非零:终端进程或自定义执行失败。
  • undefined:用户强制关闭终端或自定义执行退出时未提供退出代码。

触发终端退出的原因。

终端行上的一个链接。

构造函数

创建新的终端链接。

参数描述
startIndex: number

链接在 TerminalLinkContext.line 上的起始索引。

length: number

链接在 TerminalLinkContext.line 上的长度。

tooltip?: string

将鼠标悬停在此链接上时显示的工具提示文本。

如果提供了工具提示,它将显示在一个字符串中,其中包括如何触发链接的说明,例如 {0} (ctrl + click)。具体说明因操作系统、用户设置和本地化而异。

返回描述
终端链接

属性

链接在 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。这在用户体验方面的一个影响是,如果命令行带有 nonce,则在通过 shell 集成命令装饰 重新运行它之前,不需要与用户验证命令行是否正确。

如果终端包含 自定义 shell 集成支持,则应使用此选项。它应设置为一个随机 GUID,然后将设置 VSCODE_NONCE 环境变量。在 shell 内部,应将其从环境中移除,以保护其免受一般访问。完成此操作后,可以在相关序列中传递它以使其受信任。

终端中要使用的自定义 shell 可执行文件的路径。

终端进程环境是否应与 TerminalOptions.env 中提供的完全一致。当此为 false(默认值)时,环境将基于窗口环境,并且还将应用配置的平台设置,例如 terminal.integrated.env.windows。当此为 true 时,必须提供完整的环境,因为不会从进程或任何配置继承任何内容。

TerminalProfile

终端配置文件定义了终端将如何启动。

构造函数

创建一个新的终端配置文件。

参数描述
options: TerminalOptions | ExtensionTerminalOptions

终端将启动的选项。

返回描述
终端配置文件

属性

终端将启动的选项。

TerminalProfileProvider

在通过 UI 或命令启动时,为贡献的终端配置文件提供终端配置文件。

方法

提供终端配置文件。

参数描述
token: CancellationToken

一个取消令牌,指示不再需要结果。

返回描述
ProviderResult<TerminalProfile>

终端配置文件。

TerminalShellExecution

在终端中执行的命令。

属性

已执行的命令行。此值的 置信度 取决于特定 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 集成脚本显式报告(即 高置信度)并且它使用随机数进行验证时,此项才为 true

已执行的完整命令行,包括命令及其参数。

TerminalShellExecutionCommandLineConfidence

枚举成员

命令行值的置信度较低。这意味着该值是从终端缓冲区中使用 shell 集成脚本报告的标记读取的。此外,将满足以下条件之一

  • 命令从最左列开始,这不寻常,或者
  • 命令是多行,由于行连接字符和右侧提示符,更难以准确检测。
  • shell 集成脚本未报告命令行标记。

命令行值的置信度为中等。这意味着该值是从终端缓冲区中使用 shell 集成脚本报告的标记读取的。该命令是单行且不从最左列开始(这不寻常)。

命令行值的置信度很高。这意味着该值是由 shell 集成脚本明确发送的,或者该命令是通过 TerminalShellIntegration.executeCommand API 执行的。

TerminalShellExecutionEndEvent

表示终端中执行已结束的事件。

属性

已结束的终端 shell 执行。

shell 报告的退出代码。

当此值为 undefined 时,可能意味着几件事

  • shell 未报告退出代码(即 shell 集成脚本行为异常)
  • shell 在命令完成之前报告命令已启动(例如,打开了子 shell)。
  • 用户通过 ctrl+c 取消了命令。
  • 用户在没有输入时按下了 enter。

通常这不应该发生。根据用例,最好将其视为失败。

示例

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 以中断任何正在运行的命令。

示例

// 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

要执行的命令行,这是将发送到终端的精确文本。

返回描述
终端 shell 执行

执行命令,必要时发送 ^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 中用于在字符串中执行代码。

返回描述
终端 shell 执行

TerminalShellIntegrationChangeEvent

表示终端的 shell 集成已更改的事件。

属性

shell 集成对象。

已激活 shell 集成的终端。

TerminalSplitLocationOptions

使用父 终端 的位置作为终端

属性

要将此终端拆分到旁边的父终端。无论父终端是在面板中还是在编辑器区域中,这都有效。

TerminalState

表示 Terminal 的状态。

属性

终端 是否已交互。交互意味着终端已根据终端的*模式*向进程发送数据。默认情况下,当按下键或当命令或扩展发送文本时发送输入,但根据终端的模式,它也可以在以下情况发生

  • 指针点击事件
  • 指针滚动事件
  • 指针移动事件
  • 终端焦点进入/退出

有关可能发送数据的事件的更多信息,请参阅 https://invisible-island.net/xterm/ctlseqs/ctlseqs.html 上的“DEC Private Mode Set (DECSET)”

检测到的 终端 的 shell 类型。当没有明确的信号表明 shell 是什么,或者 shell 尚未受支持时,此值将为 undefined。当启动子 shell 时(例如,在 zsh 中运行 bash),此值应更改为子 shell 的 shell 类型。

请注意,可能的值目前定义为以下任何一种:“bash”、“cmd”、“csh”、“fish”、“gitbash”、“julia”、“ksh”、“node”、“nu”、“pwsh”、“python”、“sh”、“wsl”、“zsh”。

TestController

发现和执行测试的入口点。它包含 TestController.items,用于填充编辑器 UI,并与 运行配置文件 关联,以允许执行测试。

属性

tests.createTestController 中传入的控制器的 ID。这必须是全局唯一的。

“顶级” TestItem 实例的集合,这些实例又可以拥有自己的 子项 以形成“测试树”。

扩展控制何时添加测试。例如,扩展应在 workspace.onDidOpenTextDocument 触发时添加文件的测试,以便文件内测试的装饰可见。

但是,编辑器有时可能会使用 resolveHandler 显式请求子项。有关详细信息,请参阅该方法的文档。

测试控制器的可读标签。

如果存在此方法,则 UI 中将显示刷新按钮,并在单击时调用此方法。调用时,扩展应扫描工作区以查找任何新建、更改或删除的测试。

建议扩展尝试实时更新测试,例如使用 FileSystemWatcher,并将此方法用作备用。

参数描述
token: CancellationToken
返回描述
void | Thenable<void>

当测试已刷新时解析的 Thenable。

一个由扩展提供的函数,如果 TestItem.canResolveChildrentrue,编辑器可以调用此函数来请求测试项的子项。调用时,项应发现子项并在发现子项时调用 TestController.createTestItem

通常,扩展管理测试项的生命周期,但在某些情况下,编辑器可能会请求加载特定项的子项。例如,如果用户在重新加载编辑器后请求重新运行测试,编辑器可能需要调用此方法来解析先前运行的测试。

在函数返回或返回的 thenable 解析之前,资源管理器中的项将自动标记为“忙碌”。

参数描述
item: TestItem

正在请求子项的未解析测试项,或 undefined 以解析控制器的初始

返回描述
void | Thenable<void>

方法

创建用于运行测试的配置文件。扩展必须创建至少一个配置文件才能运行测试。

参数描述
label: string

此配置文件的可读标签。

kind: TestRunProfileKind

配置此配置文件管理的执行类型。

runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void>

调用以开始测试运行的函数。

isDefault?: boolean

这是否是其类型的默认操作。

tag?: TestTag

配置文件测试标签。

supportsContinuousRun?: boolean

配置文件是否支持持续运行。

返回描述
测试运行配置文件

一个 TestRunProfile 实例,它自动与此控制器关联。

创建一个新的托管 TestItem 实例。它可以添加到现有项的 TestItem.children 中,或添加到 TestController.items 中。

参数描述
id: string

TestItem 的标识符。TestItem 的 ID 在它所属的 TestItemCollection 中必须是唯一的。

label: string

测试项的可读标签。

uri?: Uri

此 TestItem 关联的 URI。可以是文件或目录。

返回描述
测试项

创建一个 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 的标识符。这用于将文档中的测试结果和测试与工作区(测试资源管理器)中的测试关联起来。在 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。

返回描述
测试项

找到的项目或如果不存在则为 undefined。

替换集合存储的项目。

参数描述
items: readonly TestItem[]

要存储的项目。

返回描述
void

TestMessage

与测试状态关联的消息。可以链接到特定的源范围——例如,对于断言失败很有用。

静态

创建新的 TestMessage,它将在编辑器中显示为差异。

参数描述
message: string | MarkdownString

显示给用户的消息。

expected: string

预期输出。

actual: string

实际输出。

返回描述
TestMessage

构造函数

创建新的 TestMessage 实例。

参数描述
message: string | MarkdownString

显示给用户的消息。

返回描述
TestMessage

属性

实际测试输出。如果与 expectedOutput 一起提供,将显示差异视图。

测试项目的上下文值。这可用于向测试预览视图提供消息特定操作。此处设置的值可在以下 menus 贡献点的 testMessage 属性中找到

  • testing/message/context - 结果树中消息的上下文菜单
  • testing/message/content - 覆盖显示消息的编辑器内容的突出按钮。

例如

"contributes": {
  "menus": {
    "testing/message/content": [
      {
        "command": "extension.deleteCommentThread",
        "when": "testMessage == canApplyRichDiff"
      }
    ]
  }
}

命令将使用包含以下内容的对象调用

预期测试输出。如果与 actualOutput 一起提供,将显示差异视图。

关联的文件位置。

要显示的人类可读消息文本。

与消息或故障关联的堆栈跟踪。

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 中的测试。如果此属性未定义,则扩展应简单地运行所有测试。

运行测试的过程应解析所有尚未解析的测试项的子项。

控制测试结果视图如何聚焦。如果为 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

另请参阅

version: number

此文档的版本号(每次更改后严格递增,包括撤消/重做)。

方法

获取此文档的文本。可以通过提供范围来检索子字符串。该范围将被 调整

参数描述
range?: Range

仅包含范围内的文本。

返回描述
字符串

所提供范围内的文本或整个文本。

在给定位置获取单词范围。默认情况下,单词由常见的分隔符(如空格、-、_ 等)定义。此外,可以定义每种语言的自定义 [单词定义]。也可以提供自定义正则表达式。

  • *注意 1:*自定义正则表达式不得匹配空字符串,如果匹配,则将被忽略。
  • *注意 2:*自定义正则表达式将无法匹配多行字符串,并且为了速度,正则表达式不应匹配带空格的单词。对于更复杂、非单词的场景,请使用 TextLine.text

位置将是 调整 的。

参数描述
position: Position

一个位置。

regex?: RegExp

描述单词的可选正则表达式。

返回描述
Range

跨越单词的范围,或 undefined

返回由行号表示的文本行。请注意,返回的对象*不是*实时的,并且文档的更改不会反映出来。

参数描述
line: number

[0, lineCount) 中的行号。

返回描述
TextLine

一行 TextLine

返回由位置表示的文本行。请注意,返回的对象*不是*实时的,并且文档的更改不会反映出来。

位置将是 调整 的。

*另请参阅* TextDocument.lineAt

参数描述
position: Position

一个位置。

返回描述
TextLine

一行 TextLine

将位置转换为从零开始的偏移量。

位置将是 调整 的。

参数描述
position: Position

一个位置。

返回描述
number

UTF-16 代码单元 中有效的从零开始的偏移量。

将从零开始的偏移量转换为位置。

参数描述
offset: number

文档中的从零开始的偏移量。此偏移量以 UTF-16 代码单元 表示。

返回描述
Position

一个有效的 Position

保存底层文件。

参数描述
返回描述
Thenable<boolean>

一个 Promise,当文件保存成功时解析为 true。如果保存失败,则返回 false

确保位置包含在此文档的范围内。

参数描述
position: Position

一个位置。

返回描述
Position

给定位置或新的调整位置。

确保范围完全包含在此文档中。

参数描述
range: Range

一个范围。

返回描述
Range

给定范围或新的调整范围。

TextDocumentChangeEvent

描述事务性 文档 更改的事件。

属性

内容更改数组。

document: TextDocument

受影响的文档。

reason: TextDocumentChangeReason

文档更改的原因。如果原因未知,则为 undefined

TextDocumentChangeReason

文本文档更改的原因。

枚举成员

文本更改是由撤消操作引起的。

文本更改是由重做操作引起的。

TextDocumentContentChangeEvent

描述 文档 文本中单个更改的事件。

属性

被替换的范围。

被替换范围的长度。

rangeOffset: number

被替换范围的偏移量。

范围的新文本。

TextDocumentContentProvider

文本文档内容提供程序允许向编辑器添加只读文档,例如来自 DLL 的源或由 md 生成的 HTML。

内容提供程序针对 uri 方案 注册。当要 加载 具有该方案的 uri 时,会请求内容提供程序。

事件

指示资源已更改的事件。

方法

为给定 URI 提供文本内容。

编辑器将使用返回的字符串内容创建只读 文档。当相应的文档已 关闭 时,应释放分配的资源。

**注意**:由于行尾序列标准化,创建的 文档 的内容可能与提供的文本不完全相同。

参数描述
uri: Uri

一个 URI,其方案与此提供程序 注册 的方案匹配。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<string>

一个字符串或一个解析为字符串的 thenable。

TextDocumentSaveReason

表示保存文本文档的原因。

枚举成员

手动触发,例如由用户按下保存、开始调试或 API 调用。

AfterDelay: 2

延迟后自动。

FocusOut: 3

当编辑器失去焦点时。

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: EndOfLine

行尾序列

返回描述
TextEdit

一个新的文本编辑对象。

构造函数

创建新的 TextEdit。

参数描述
range: Range

一个范围。

newText: string

一个字符串。

返回描述
TextEdit

属性

文档中使用的行尾序列。

*注意*,行尾序列将应用于整个文档。

newText: string

此编辑将插入的字符串。

range: Range

此编辑适用的范围。

TextEditor

表示附加到 文档 的编辑器。

属性

与此文本编辑器关联的文档。文档在此文本编辑器的整个生命周期内将保持不变。

文本编辑器选项。

此文本编辑器上的主选区。TextEditor.selections[0] 的简写。

此文本编辑器中的选区。主选区始终在索引 0 处。

此编辑器显示的列。如果这不是主要编辑器之一(例如嵌入式编辑器),或者编辑器列大于三,则为 undefined

编辑器中当前可见的范围(垂直方向)。这仅考虑垂直滚动,不考虑水平滚动。

方法

对此文本编辑器关联的文档执行编辑。

给定回调函数将使用 编辑构建器 调用,该构建器必须用于进行编辑。请注意,编辑构建器仅在回调执行期间有效。

参数描述
callback: (editBuilder: TextEditorEdit) => void

一个可以使用 编辑构建器 创建编辑的函数。

options?: {undoStopAfter: boolean, undoStopBefore: boolean}

此编辑前后的撤消/重做行为。默认情况下,将在此编辑之前和之后创建撤消停止点。

返回描述
Thenable<boolean>

一个 Promise,其解析值指示编辑是否可以应用。

隐藏文本编辑器。

  • *已弃用* - 请改用命令 workbench.action.closeActiveEditor。此方法显示意外行为,并将在下一次主要更新中删除。
参数描述
返回描述
void

插入一个 代码段 并使编辑器进入代码段模式。“代码段模式”表示编辑器会添加占位符和额外的光标,以便用户可以完成或接受代码段。

参数描述
snippet: SnippetString

此编辑中要插入的代码段。

location?: Range | Position | readonly Range[] | readonly Position[]

插入代码段的位置或范围,默认为当前编辑器选区或多个选区。

选项?: {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

一个复杂的编辑,将在文本编辑器上以一个事务应用。它包含对编辑的描述,如果编辑有效(即没有重叠区域,文档在此期间未更改等),则可以将其应用于与文本编辑器关联的文档

方法

删除某个文本区域。

参数描述
location: Range | Selection

此操作应删除的范围。

返回描述
void

在某个位置插入文本。您可以在value中使用\r\n\n,它们将被标准化为当前文档。尽管可以使用替换进行等效的文本编辑,但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

颜色。可用颜色列表请参见https://vscode.js.cn/api/references/theme-color

返回描述
ThemeColor

属性

此颜色的 ID。

ThemeIcon

对命名图标的引用。目前支持FileFolderThemeIcon ids。使用主题图标优于自定义图标,因为它允许产品主题作者更改图标。

注意,主题图标也可以在标签和描述中呈现。支持主题图标的地方会明确说明,并使用$(<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?: T

提供者获取子项的元素。可以为undefined

返回描述
ProviderResult<T[]>

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>

已解析的树项,或解析为该树项的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>

使用特殊的filesMIME 类型来支持所有类型的拖放文件,无论文件的实际 MIME 类型如何。

要了解拖动项的 MIME 类型:

  1. 设置您的DragAndDropController
  2. 使用“开发者:设置日志级别...”命令将级别设置为“调试”
  3. 打开开发者工具并将具有未知 MIME 类型的项拖到您的树上。MIME 类型将记录到开发者控制台

请注意,无法发送到扩展的 MIME 类型将被省略。

方法

当用户开始从此DragAndDropController拖动项目时,将调用handleDrag。扩展可以使用handleDrag将其DataTransferItem项目添加到拖放操作中。

handleDrag中添加的MIME类型在应用程序外部将不可用。

当项目被拖放到**同一棵树**中的**另一个树项**上时,您的DataTransferItem对象将被保留。使用树的推荐 MIME 类型(`application/vnd.code.tree.`)在数据传输中添加树对象。有关如何最好地利用此功能,请参阅`DataTransferItem`的文档。

要添加一个可以拖到编辑器中的数据传输项,请使用应用程序特定的 MIME 类型“text/uri-list”。“text/uri-list”的数据应该是一个字符串,其中包含由\r\n分隔的toString()ed Uris。要指定文件中光标的位置,请将 Uri 的片段设置为L3,5,其中 3 是行号,5 是列号。

参数描述
source: readonly T[]

拖放操作的源项目。

dataTransfer: DataTransfer

与此拖动关联的数据传输。

token: CancellationToken

指示拖动已被取消的取消令牌。

返回描述
void | Thenable<void>

当拖放操作导致拖放到此DragAndDropController所属的树上时调用。

扩展应为任何需要刷新的元素触发onDidChangeTreeData

参数描述
target: T

发生拖放的目标树元素。如果未定义,则目标为根。

dataTransfer: DataTransfer

拖动源的数据传输项。

token: CancellationToken

指示拖放已被取消的取消令牌。

返回描述
void | Thenable<void>

TreeItem

树项是树的 UI 元素。树项由数据提供程序创建。

构造函数

参数描述
label: string | TreeItemLabel

描述此项目的可读字符串

collapsibleState?: TreeItemCollapsibleState
返回描述
TreeItem

参数描述
resourceUri: Uri

表示此项目的资源的Uri

collapsibleState?: TreeItemCollapsibleState
返回描述
TreeItem

属性

屏幕阅读器与此树项交互时使用的辅助功能信息。通常,TreeItem 不需要设置辅助功能信息的role;但是,在某些情况下,TreeItem 未以树状方式显示,此时设置role可能才有意义。

树项的TreeItemCheckboxState。当checkboxState更改时应触发onDidChangeTreeData

选择树项时应执行的命令

当树项在编辑器中打开某些内容时,请使用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,则如果项可折叠,则分配文件夹主题图标,否则分配文件主题图标。当指定文件或文件夹主题图标时,图标将从当前文件图标主题中为指定的图标派生(如果提供resourceUri)。

树项的可选 ID,在整个树中必须是唯一的。ID 用于保留树项的选择和展开状态。

如果未提供,则使用树项的标签生成 ID。**注意**,当标签更改时,ID 也会更改,并且选择和展开状态将无法保持稳定。

描述此项目的可读字符串。如果为falsy,则派生自resourceUri

表示此项目的资源的Uri

当未提供时,将用于派生标签。当iconPath具有ThemeIcon值时,将用于从当前文件图标主题派生图标。

悬停在此项目上时显示的工具提示文本。

TreeItemCheckboxState

树项的复选框状态

枚举成员

确定项目未选中

确定项目已选中

TreeItemCollapsibleState

树项的可折叠状态

枚举成员

确定项既不能折叠也不能展开。意味着它没有子项。

确定项目是否折叠

确定项目是否展开

TreeItemLabel

描述树项的标签

属性

要在标签中突出显示的范围。范围定义为两个数字的元组,第一个是包含的开始索引,第二个是独占的结束索引

描述树项的可读字符串。

TreeView<T>

表示树视图

事件

一个事件,用于指示元素或根已被选中或取消选中。

选择发生更改时触发的事件

可见性发生更改时触发的事件

元素折叠时触发的事件

元素展开时触发的事件

属性

此 TreeView 要显示的徽章。要删除徽章,请设置为 undefined。

一个可选的可读描述,在视图标题中渲染时不太突出。将标题描述设置为 null、undefined 或空字符串将从视图中移除描述。

一个可选的可读消息,将在视图中呈现。将消息设置为 null、undefined 或空字符串将从视图中删除消息。

当前选定的元素。

树视图标题最初取自扩展包.json。标题属性的更改将正确反映在 UI 视图的标题中。

如果树视图可见,则为true,否则为false

方法

释放此对象。

参数描述
返回描述
任意

在树视图中显示给定的元素。如果树视图不可见,则显示树视图并显示元素。

默认情况下,显示的元素会被选中。为了不选中,将选项select设置为false。为了聚焦,将选项focus设置为true。为了展开显示的元素,将选项expand设置为true。要递归展开,将expand设置为要展开的级别数。

  • 注意: 您最多只能展开到 3 层。
  • 注意: 注册TreeViewTreeDataProvider必须实现getParent方法才能访问此 API。
参数描述
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>

树形视图的选中项发生变化时触发的事件

属性

选中的元素。

TreeViewVisibilityChangeEvent

树形视图的可见性发生变化时触发的事件

属性

如果树视图可见,则为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的可能种类。

枚举成员

从桌面应用程序访问扩展。

从网络浏览器访问扩展。

Uri

一个通用资源标识符,表示磁盘上的文件或另一个资源,如无标题资源。

静态

从文件系统路径创建URI。scheme将为file

Uri.parseUri.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-uris,反斜杠字符(``)被视为路径分隔符
  • ..-段表示父段,.表示当前段
  • 路径有一个始终保留的根,例如在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实例。

构造函数

使用fileparse工厂函数创建新的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的方案。
  • 结果字符串不应用于显示目的,而应用于磁盘操作,如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表示。

参数描述
返回描述
任意

一个对象。

返回此Uri的字符串表示。URI的表示和规范化取决于方案。

  • 结果字符串可以安全地与Uri.parse一起使用。
  • 结果字符串不应用于显示目的。

请注意,实现将进行积极的编码,这通常会导致意想不到但并非不正确的结果。例如,冒号被编码为%3A,这在文件uri中可能出乎意料。此外,&=将被编码,这对于http-uris可能出乎意料。由于稳定性原因,这无法再更改。如果您遇到过于积极的编码问题,应使用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 可序列化对象回发到扩展。它们不能发送 `Blob`、`File`、`ImageData` 和其他 DOM 特定对象,因为接收消息的扩展不在浏览器环境中运行。

属性

webview资源的Content Security Policy源。

这是内容安全策略规则中应使用的来源

`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。

Webviews不能直接使用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可序列化对象。

对于旧版本的VSCode,如果message中包含ArrayBuffer,它将无法正确序列化,并且webview将无法接收到。同样,任何TypedArray,例如Uint8Array,都将非常低效地序列化,并且在webview内部也不会重新创建为TypedArray。

但是,如果您的扩展在package.jsonengines字段中指定了vscode 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事件。

参数描述
返回描述
任意

在给定列中显示webview面板。

一个webview面板一次只能显示在一个列中。如果它已经显示,此方法将其移动到新列。

参数描述
viewColumn?: ViewColumn

显示面板的视图列。如果未定义,则在当前viewColumn中显示。

preserveFocus?: boolean

当为true时,webview将不会获取焦点。

返回描述
void

WebviewPanelOnDidChangeViewStateEvent

当webview面板的视图状态改变时触发的事件。

属性

视图状态发生变化的Webview面板。

WebviewPanelOptions

webview面板的内容设置。

属性

控制是否在面板中启用查找小部件。

默认为 false

控制即使面板不再可见,是否保留webview面板的内容(iframe)。

通常,当面板变为可见时,会创建其HTML上下文,并在隐藏时销毁。具有复杂状态或UI的扩展可以设置retainContextWhenHidden,使编辑器保留webview上下文,即使webview移动到后台选项卡。当使用retainContextWhenHidden的webview变为隐藏时,其脚本和其他动态内容将被暂停。当面板再次变为可见时,上下文会自动恢复到与原始状态完全相同的状态。即使启用了retainContextWhenHidden,您也无法向隐藏的webview发送消息。

retainContextWhenHidden的内存开销很高,只有在面板的上下文无法快速保存和恢复时才应使用。

WebviewPanelSerializer<T>

当vscode关闭时恢复已持久化的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

配置目标或布尔值。- 如果为true,则更新全局设置。- 如果为false,则更新工作区设置。- 如果为undefinednull,则如果配置是资源特定的,则更新到工作区文件夹设置,否则更新到工作区设置

overrideInLanguage?: boolean

是否在请求的languageId范围内更新值。- 如果为true,则在请求的languageId下更新值。- 如果为undefined,则仅当为该语言定义了配置时,才在请求的languageId下更新值。

返回描述
Thenable<void>

WorkspaceEdit

工作区编辑是多个资源和文档的文本和文件更改的集合。

使用applyEdit函数应用工作区编辑。

构造函数

参数描述
返回描述
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}

定义是否应覆盖或忽略现有文件。当 `overwrite` 和 `ignoreIfExists` 都设置时,`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

有关工作区编辑的附加数据。

属性

向编辑器发出信号,此编辑是重构。

WorkspaceFolder

工作区文件夹是编辑器打开的众多根目录之一。所有工作区文件夹都是平等的,这意味着没有活动或主要工作区文件夹的概念。

属性

此工作区文件夹的序数。

此工作区文件夹的名称。默认为其 URI 路径的基本名称。

此工作区文件夹关联的 URI。

注意: 特意选择了 Uri 类型,以便编辑器的未来版本可以支持不存储在本地磁盘上的工作区文件夹,例如 ftp://server/workspaces/foo

WorkspaceFolderPickOptions

配置 工作区文件夹 选择 UI 行为的选项。

属性

设置为true可在焦点移至编辑器的其他部分或另一个窗口时保持选择器打开。此设置在 iPad 上将被忽略,并始终为 false。

一个可选字符串,在输入框中显示为占位符,以指导用户选择什么。

WorkspaceFoldersChangeEvent

描述 工作区文件夹 集合变化的事件。

属性

添加的工作区文件夹。

移除的工作区文件夹。

WorkspaceSymbolProvider<T>

工作区符号提供程序接口定义了扩展和 符号搜索 功能之间的约定。

方法

在项目范围内搜索与给定查询字符串匹配的符号。

query 参数应以宽松的方式解释,因为编辑器将对结果应用其自己的高亮显示和评分。一个好的经验法则是不区分大小写地匹配,并简单地检查query的字符是否按其顺序出现在候选符号中。不要使用前缀、子字符串或类似的严格匹配。

为了提高性能,实现者可以实现 resolveWorkspaceSymbol,然后提供具有部分 位置 对象的符号,而不定义 range。编辑器将仅针对选定的符号调用 resolveWorkspaceSymbol,例如在打开工作区符号时。

参数描述
query: string

一个查询字符串,可以是空字符串,在这种情况下应返回所有符号。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<T[]>

一个文档高亮数组或解析为此类的 thenable。可以通过返回 undefinednull 或空数组来表示没有结果。

给定一个符号,填充其 位置。每当在 UI 中选择一个符号时,都会调用此方法。提供程序可以实现此方法并从 provideWorkspaceSymbols 返回不完整的符号,这通常有助于提高性能。

参数描述
symbol: T

待解析的符号。保证是先前对 provideWorkspaceSymbols 的调用返回的对象实例。

token: CancellationToken

取消令牌。

返回描述
ProviderResult<T>

已解析的符号或解析为该符号的 thenable。如果没有返回结果,则使用给定的 symbol

API 模式

这些是我们用于 VS Code API 的一些常见模式。

Promises(承诺)

VS Code API 使用 promises 表示异步操作。从扩展中,可以返回任何类型的 Promise,例如 ES6、WinJS、A+ 等。

通过 Thenable 类型在 API 中表达了与特定 Promise 库无关的特性。Thenable 代表了公共的接口,即 then 方法。

在大多数情况下,使用 Promise 是可选的,当 VS Code 调用扩展时,它可以处理结果类型以及结果类型Thenable。当使用 Promise 是可选的时,API 通过返回 or 类型来表示这一点。

provideNumber(): number | Thenable<number>

Cancellation Tokens(取消令牌)

通常,操作是在易变状态下启动的,在操作完成之前状态会发生变化。例如,计算智能感知启动,用户继续输入,使该操作的结果过时。

暴露于此类行为的 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)时触发的事件。

严格的空值

VS Code API 在适当的地方使用 undefinednull TypeScript 类型,以支持 严格的空值检查