VS Code API
VS Code API 是一套您可以在 Visual Studio Code 扩展中调用的 JavaScript API。本页列出了所有提供给扩展作者的 VS Code API。
API 命名空间和类
此列表来自 VS Code 存储库中的 vscode.d.ts 文件编译而成。
认证
事件
onDidChangeSessions: Event<AuthenticationSessionsChangeEvent>
当身份验证提供程序的身份验证会话被添加、删除或更改时触发的 Event。
函数
getAccounts(providerId: string): Thenable<readonly AuthenticationSessionAccountInformation[]>
获取用户登录的指定提供程序的所有账户。与 getSession 配对使用,以便获取特定账户的身份验证会话。
目前,编辑器内置的扩展贡献了两个身份验证提供程序,分别实现了 GitHub 和 Microsoft 身份验证:它们的 providerId 分别是 'github' 和 'microsoft'。
注意:获取账户并不意味着您的扩展可以访问该账户或其身份验证会话。您可以通过调用 getSession 来验证对账户的访问权限。
| 参数 | 描述 |
|---|---|
| providerId: string | 要使用的提供程序的 ID |
| 返回值 | 描述 |
| Thenable<readonly AuthenticationSessionAccountInformation[]> | 一个 thenable,它解析为只读的身份验证账户数组。 |
getSession(providerId: string, scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest, options: AuthenticationGetSessionOptions & {createIfNone: true | AuthenticationGetSessionPresentationOptions}): Thenable<AuthenticationSession>
获取匹配所需范围或满足 WWW-Authenticate 请求的身份验证会话。如果未注册具有 providerId 的提供程序,或者用户不同意与扩展共享身份验证信息,则会引发拒绝。如果存在多个具有相同范围的会话,用户将看到一个快速选择器来选择他们想要使用的账户。
内置身份验证提供程序包括
- 'github' - 用于 GitHub.com
- 'microsoft' - 用于个人和组织 Microsoft 账户
- (不太常见) 'github-enterprise' - 用于替代 GitHub 主机,GHE.com,GitHub Enterprise Server
- (不太常见) 'microsoft-sovereign-cloud' - 用于替代 Microsoft 云
| 参数 | 描述 |
|---|---|
| providerId: string | 要使用的提供程序的 ID |
| scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest | 请求的权限范围列表或 WWW-Authenticate 请求。这些取决于身份验证提供程序。 |
| options: AuthenticationGetSessionOptions & {createIfNone: true | AuthenticationGetSessionPresentationOptions} | |
| 返回值 | 描述 |
| Thenable<AuthenticationSession> | 一个 thenable,它解析为身份验证会话 |
getSession(providerId: string, scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest, options: AuthenticationGetSessionOptions & {forceNewSession: true | AuthenticationGetSessionPresentationOptions}): Thenable<AuthenticationSession>
获取匹配所需范围或请求的身份验证会话。如果未注册具有 providerId 的提供程序,或者用户不同意与扩展共享身份验证信息,则会引发拒绝。如果存在多个具有相同范围的会话,用户将看到一个快速选择器来选择他们想要使用的账户。
内置身份验证提供程序包括
- 'github' - 用于 GitHub.com
- 'microsoft' - 用于个人和组织 Microsoft 账户
- (不太常见) 'github-enterprise' - 用于替代 GitHub 主机,GHE.com,GitHub Enterprise Server
- (不太常见) 'microsoft-sovereign-cloud' - 用于替代 Microsoft 云
| 参数 | 描述 |
|---|---|
| providerId: string | 要使用的提供程序的 ID |
| scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest | 请求的权限范围列表或 WWW-Authenticate 请求。这些取决于身份验证提供程序。 |
| options: AuthenticationGetSessionOptions & {forceNewSession: true | AuthenticationGetSessionPresentationOptions} | |
| 返回值 | 描述 |
| Thenable<AuthenticationSession> | 一个 thenable,它解析为身份验证会话 |
getSession(providerId: string, scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest, options?: AuthenticationGetSessionOptions): Thenable<AuthenticationSession | undefined>
获取匹配所需范围或请求的身份验证会话。如果未注册具有 providerId 的提供程序,或者用户不同意与扩展共享身份验证信息,则会引发拒绝。如果存在多个具有相同范围的会话,用户将看到一个快速选择器来选择他们想要使用的账户。
内置身份验证提供程序包括
- 'github' - 用于 GitHub.com
- 'microsoft' - 用于个人和组织 Microsoft 账户
- (不太常见) 'github-enterprise' - 用于替代 GitHub 主机,GHE.com,GitHub Enterprise Server
- (不太常见) 'microsoft-sovereign-cloud' - 用于替代 Microsoft 云
| 参数 | 描述 |
|---|---|
| providerId: string | 要使用的提供程序的 ID |
| scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest | 请求的权限范围列表或 WWW-Authenticate 请求。这些取决于身份验证提供程序。 |
| options?: AuthenticationGetSessionOptions | |
| 返回值 | 描述 |
| Thenable<AuthenticationSession | undefined> | 一个 thenable,它解析为身份验证会话,如果使用了静默流且未找到会话,则解析为 undefined |
registerAuthenticationProvider(id: string, label: string, provider: AuthenticationProvider, options?: AuthenticationProviderOptions): Disposable
注册一个身份验证提供程序。
每个 ID 只能有一个提供程序,并且当另一个提供程序已使用某个 ID 时会引发错误。ID 是区分大小写的。
| 参数 | 描述 |
|---|---|
| id: string | 提供程序的唯一标识符。 |
| label: string | 提供程序的易读名称。 |
| provider: AuthenticationProvider | 身份验证提供程序。 |
| options?: AuthenticationProviderOptions | 提供程序的附加选项。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
chat
用于聊天功能的命名空间。用户通过向聊天视图中的聊天参与者发送消息来与他们互动。聊天参与者可以通过 ChatResponseStream 以 Markdown 或其他类型的内容进行响应。
函数
createChatParticipant(id: string, handler: ChatRequestHandler): ChatParticipant
创建一个新的 聊天参与者 实例。
| 参数 | 描述 |
|---|---|
| id: string | 参与者的唯一标识符。 |
| handler: ChatRequestHandler | 参与者的请求处理程序。 |
| 返回值 | 描述 |
| ChatParticipant | 一个新的聊天参与者 |
命令
用于处理命令的命名空间。简而言之,命令是一个具有唯一标识符的函数。该函数有时也称为命令处理程序。
命令可以使用 registerCommand 和 registerTextEditorCommand 函数添加到编辑器中。命令可以手动执行,也可以通过 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"
}
]
}
}
函数
executeCommand<T>(command: string, ...rest: any[]): Thenable<T>
执行由给定命令标识符表示的命令。
| 参数 | 描述 |
|---|---|
| command: string | 要执行的命令的标识符。 |
| ...rest: any[] | 传递给命令函数的参数。 |
| 返回值 | 描述 |
| Thenable<T> | 一个 thenable,它解析为给定命令的返回值。如果命令处理程序函数不返回任何内容,则返回 |
getCommands(filterInternal?: boolean): Thenable<string[]>
检索所有可用命令的列表。以下划线开头的命令被视为内部命令。
| 参数 | 描述 |
|---|---|
| filterInternal?: boolean | 设置为 |
| 返回值 | 描述 |
| Thenable<string[]> | 一个 thenable,它解析为命令 ID 列表。 |
registerCommand(command: string, callback: (args: any[]) => any, thisArg?: any): Disposable
注册一个可以通过键盘快捷键、菜单项、操作或直接调用的命令。
使用现有的命令标识符重复注册命令将导致错误。
| 参数 | 描述 |
|---|---|
| command: string | 命令的唯一标识符。 |
| callback: (args: any[]) => any | 命令处理函数。 |
| thisArg?: any | 调用处理函数时使用的 |
| 返回值 | 描述 |
| Disposable | Disposable,在被释放时注销此命令。 |
registerTextEditorCommand(command: string, callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void, thisArg?: any): Disposable
注册一个可以通过键盘快捷键、菜单项、操作或直接调用的文本编辑器命令。
文本编辑器命令与普通 命令 不同,它们仅在调用命令时存在活动编辑器时执行。此外,编辑器命令的处理程序可以访问活动编辑器和一个 edit-builder。请注意,edit-builder 仅在回调执行期间有效。
| 参数 | 描述 |
|---|---|
| command: string | 命令的唯一标识符。 |
| callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void | |
| thisArg?: any | 调用处理函数时使用的 |
| 返回值 | 描述 |
| Disposable | Disposable,在被释放时注销此命令。 |
comments
函数
createCommentController(id: string, label: string): CommentController
创建一个新的 评论控制器 实例。
| 参数 | 描述 |
|---|---|
| id: string | 评论控制器的 |
| label: string | 评论控制器的可读字符串。 |
| 返回值 | 描述 |
| CommentController | 评论控制器 的实例。 |
debug
用于调试功能的命名空间。
变量
activeDebugConsole: DebugConsole
当前活动的 调试控制台。如果没有活动调试会话,发送到调试控制台的输出将不会显示。
activeDebugSession: DebugSession | undefined
当前活动的 调试会话 或 undefined。活动调试会话是由调试操作浮动窗口表示的会话,或者当前显示在调试操作浮动窗口下拉菜单中的会话。如果没有活动调试会话,则值为 undefined。
activeStackItem: DebugThread | DebugStackFrame | undefined
当前聚焦的线程或堆栈帧,或者 undefined(如果没有聚焦线程或堆栈)。只要有活动的调试会话,线程就可以被聚焦;而堆栈帧只有在会话暂停并且已检索到调用堆栈时才能被聚焦。
breakpoints: readonly Breakpoint[]
断点列表。
事件
onDidChangeActiveDebugSession: Event<DebugSession | undefined>
onDidChangeActiveStackItem: Event<DebugThread | DebugStackFrame | undefined>
当 debug.activeStackItem 更改时触发的事件。
onDidChangeBreakpoints: Event<BreakpointsChangeEvent>
当断点集被添加、删除或更改时发出的 Event。
onDidReceiveDebugSessionCustomEvent: Event<DebugSessionCustomEvent>
onDidStartDebugSession: Event<DebugSession>
onDidTerminateDebugSession: Event<DebugSession>
函数
addBreakpoints(breakpoints: readonly Breakpoint[]): void
添加断点。
| 参数 | 描述 |
|---|---|
| breakpoints: readonly Breakpoint[] | 要添加的断点。 |
| 返回值 | 描述 |
| void |
asDebugSourceUri(source: DebugProtocolSource, session?: DebugSession): Uri
将通过调试适配器协议接收到的“Source”描述符对象转换为可用于加载其内容的 URI。如果源描述符基于路径,则返回文件 URI。如果源描述符使用引用号,则会构造一个特定的调试 URI(方案为“debug”),该 URI 需要一个相应的 ContentProvider 和一个正在运行的调试会话。
如果“Source”描述符信息不足以创建 URI,则会引发错误。
| 参数 | 描述 |
|---|---|
| source: DebugProtocolSource | 符合调试适配器协议中定义的 Source 类型的对象。 |
| session?: DebugSession | 一个可选的调试会话,当源描述符使用引用号从活动调试会话加载内容时使用。 |
| 返回值 | 描述 |
| Uri | 可用于加载源内容的 URI。 |
registerDebugAdapterDescriptorFactory(debugType: string, factory: DebugAdapterDescriptorFactory): Disposable
为特定调试类型注册 调试适配器描述符工厂。扩展只能为其定义的调试类型注册 DebugAdapterDescriptorFactory。否则会引发错误。为同一调试类型注册多个 DebugAdapterDescriptorFactory 会导致错误。
| 参数 | 描述 |
|---|---|
| debugType: string | 注册工厂的调试类型。 |
| factory: DebugAdapterDescriptorFactory | 要注册的 调试适配器描述符工厂。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此工厂。 |
registerDebugAdapterTrackerFactory(debugType: string, factory: DebugAdapterTrackerFactory): Disposable
为给定的调试类型注册调试适配器跟踪器工厂。
| 参数 | 描述 |
|---|---|
| debugType: string | 注册工厂的调试类型,或 '*' 用于匹配所有调试类型。 |
| factory: DebugAdapterTrackerFactory | 要注册的 调试适配器跟踪器工厂。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此工厂。 |
registerDebugConfigurationProvider(debugType: string, provider: DebugConfigurationProvider, triggerKind?: DebugConfigurationProviderTriggerKind): Disposable
为特定调试类型注册 调试配置提供程序。可选的 triggerKind 可用于指定何时触发提供程序的 provideDebugConfigurations 方法。目前有两种触发方式:使用 Initial(或未提供触发参数)值时,provideDebugConfigurations 方法用于提供要复制到新创建的 launch.json 的初始调试配置。使用 Dynamic 触发方式时,provideDebugConfigurations 方法用于动态确定要呈现给用户的调试配置(除了 launch.json 中的静态配置)。请注意,triggerKind 参数仅适用于 provideDebugConfigurations 方法:因此 resolveDebugConfiguration 方法不受任何影响。为不同触发方式注册具有 resolve 方法的单个提供程序会导致相同的 resolve 方法被调用多次。可以为同一类型注册多个提供程序。
| 参数 | 描述 |
|---|---|
| debugType: string | 注册提供程序的调试类型。 |
| provider: DebugConfigurationProvider | 要注册的 调试配置提供程序。 |
| triggerKind?: DebugConfigurationProviderTriggerKind | 注册了提供程序的 'provideDebugConfiguration' 方法的 触发器。如果缺少 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
removeBreakpoints(breakpoints: readonly Breakpoint[]): void
删除断点。
| 参数 | 描述 |
|---|---|
| breakpoints: readonly Breakpoint[] | 要删除的断点。 |
| 返回值 | 描述 |
| void |
startDebugging(folder: WorkspaceFolder, nameOrConfiguration: string | DebugConfiguration, parentSessionOrOptions?: DebugSession | DebugSessionOptions): Thenable<boolean>
通过使用命名启动或命名复合配置,或直接传递 DebugConfiguration 来启动调试。命名配置在给定文件夹中的 '.vscode/launch.json' 中查找。在调试开始之前,所有未保存的文件都会被保存,并且启动配置会更新到最新。配置中使用的文件夹特定变量(例如 '${workspaceFolder}')会根据给定的文件夹进行解析。
| 参数 | 描述 |
|---|---|
| folder: WorkspaceFolder | 用于查找命名配置和解析变量的 工作区文件夹,或用于非文件夹设置的 |
| nameOrConfiguration: string | DebugConfiguration | 调试配置或复合配置的名称,或者一个 DebugConfiguration 对象。 |
| parentSessionOrOptions?: DebugSession | DebugSessionOptions | 调试会话选项。当传递父 调试会话 时,假定选项仅包含此父会话。 |
| 返回值 | 描述 |
| Thenable<boolean> | 一个 thenable,在调试成功启动后解析。 |
stopDebugging(session?: DebugSession): Thenable<void>
停止给定的调试会话,或在省略 session 时停止所有调试会话。
| 参数 | 描述 |
|---|---|
| session?: DebugSession | 要停止的 调试会话;如果省略,则停止所有会话。 |
| 返回值 | 描述 |
| Thenable<void> | 一个 thenable,在会话停止后解析。 |
env
描述编辑器运行环境的命名空间。
变量
应用程序的托管位置。在桌面版上是 'desktop'。在 Web 版上是指定的嵌入器,例如 'github.dev'、'codespaces' 或 'web'(如果嵌入器未提供该信息)。
编辑器的应用程序名称,例如 'VS Code'。
编辑器运行的应用程序根文件夹。
请注意,当在没有应用程序根文件夹表示的环境中运行时,该值为空字符串。
clipboard: Clipboard
系统剪贴板。
指示这是应用程序的全新安装。如果在安装后的第一天内为 true,否则为 false。
指示用户是否启用了遥测。可以观察此值来确定扩展是否应发送遥测数据。
表示首选用户语言,例如 de-CH、fr 或 en-US。
logLevel: LogLevel
编辑器的当前日志级别。
计算机的唯一标识符。
remoteName: string | undefined
远程资源的名称。由扩展定义,常见的示例是 Linux 的 Windows 子系统(Windows Subsystem for Linux)的 wsl,或者使用安全外壳(secure shell)的远程资源的 ssh-remote。
请注意,当没有远程扩展主机时,该值为 undefined。但如果存在远程扩展主机,则在所有扩展主机(本地和远程)中该值都是已定义的。请使用 Extension.extensionKind 来了解特定扩展是否在远程运行。
当前会话的唯一标识符。每次启动编辑器时都会更改。
检测到的扩展主机默认 shell,它会被扩展主机平台的 terminal.integrated.defaultProfile 设置覆盖。请注意,在不支持 shell 的环境中,此值为空字符串。
uiKind: UIKind
UI kind 属性指示从哪个 UI 访问扩展。例如,扩展可以从桌面应用程序或 Web 浏览器访问。
编辑器在操作系统中注册的自定义 URI 方案。
事件
onDidChangeLogLevel: Event<LogLevel>
当编辑器的日志级别发生变化时触发的 事件。
onDidChangeShell: Event<string>
默认 shell 更改时触发的 事件。该事件会传递新的 shell 路径。
onDidChangeTelemetryEnabled: Event<boolean>
当用户启用或禁用遥测时触发的 事件。如果用户启用了遥测,则为 true;如果用户禁用了遥测,则为 false。
函数
asExternalUri(target: Uri): Thenable<Uri>
将 URI 解析为外部可访问的形式。
http: 或 https: 方案
将扩展正在运行的外部 URI(例如 http: 或 https: 链接)解析为客户端机器上相同资源的 URI。
如果扩展在客户端机器上运行,则此操作无效。
如果扩展在远程运行,此函数会自动建立从本地机器到远程 target 的端口转发隧道,并返回到该隧道的本地 URI。端口转发隧道的生命周期由编辑器管理,并且用户可以关闭隧道。
请注意,通过 openExternal 传递的 URI 会自动解析,您不应对它们调用 asExternalUri。
vscode.env.uriScheme
创建一个 URI,如果该 URI 在浏览器中打开(例如通过 openExternal),将触发已注册的 UriHandler。
扩展不应假定结果 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 时,编辑器将打开工作区。
createTelemetryLogger(sender: TelemetrySender, options?: TelemetryLoggerOptions): TelemetryLogger
创建一个新的 遥测记录器。
| 参数 | 描述 |
|---|---|
| sender: TelemetrySender | 遥测记录器使用的遥测发送器。 |
| options?: TelemetryLoggerOptions | 遥测记录器的选项。 |
| 返回值 | 描述 |
| TelemetryLogger | 一个新的遥测记录器 |
openExternal(target: Uri): Thenable<boolean>
使用默认应用程序在外部打开链接。根据所使用的方案,这可以是
- 浏览器(
http:,https:) - 邮件客户端(
mailto:) - VSCode 本身(来自
vscode.env.uriScheme的vscode:)
请注意,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));
变量
all: readonly Extension<any>[]
当前系统已知的 au 扩展。
事件
onDidChange: Event<void>
当 extensions.all 发生变化时触发的事件。这可能发生在扩展安装、卸载、启用或禁用时。
函数
getExtension<T>(extensionId: string): Extension<T> | undefined
通过以下格式的完整标识符获取扩展:publisher.name。
| 参数 | 描述 |
|---|---|
| extensionId: string | 扩展标识符。 |
| 返回值 | 描述 |
| Extension<T> | undefined | 扩展或 |
l10n
扩展 API 中与本地化相关的功能的命名空间。要正确使用此功能,必须在扩展清单中定义 l10n,并且拥有 bundle.l10n。
注意:内置扩展(例如 Git、TypeScript Language Features、GitHub Authentication)不包含在 l10n 属性要求中。换句话说,它们不需要在扩展清单中指定 l10n,因为它们的翻译字符串来自语言包。
变量
已为扩展加载的本地化字符串包。如果没有加载包,则为 undefined。通常,如果没有找到包或我们使用默认语言运行时,则不会加载包。
uri: Uri | undefined
已为扩展加载的本地化包的 URI。如果没有加载包,则为 undefined。通常,如果没有找到包或我们使用默认语言运行时,则不会加载包。
函数
t(message: string, ...args: Array<string | number | boolean>): string
标记字符串以进行本地化。如果对于 env.language 指定的语言有可用的本地化包,并且该包对此消息有本地化值,则将返回该本地化值(并为任何模板化值注入 args 值)。
示例
l10n.t('Hello {0}!', 'World');
| 参数 | 描述 |
|---|---|
| message: string | 要本地化的消息。支持索引模板,其中字符串如 |
| ...args: Array<string | number | boolean> | 将在本地化字符串中使用的参数。参数的索引用于匹配本地化字符串中的模板占位符。 |
| 返回值 | 描述 |
| 字符串 | 带有注入参数的本地化字符串。 |
t(message: string, args: Record<string, any>): string
标记字符串以进行本地化。如果对于 env.language 指定的语言有可用的本地化包,并且该包对此消息有本地化值,则将返回该本地化值(并为任何模板化值注入 args 值)。
示例
l10n.t('Hello {name}', { name: 'Erich' });
| 参数 | 描述 |
|---|---|
| message: string | 要本地化的消息。支持命名模板,其中字符串如 |
| args: Record<string, any> | 将在本地化字符串中使用的参数。Record 中键的名称用于匹配本地化字符串中的模板占位符。 |
| 返回值 | 描述 |
| 字符串 | 带有注入参数的本地化字符串。 |
t(options: {args: Array<string | number | boolean> | Record<string, any>, comment: string | string[], message: string}): string
标记字符串以进行本地化。如果对于 env.language 指定的语言有可用的本地化包,并且该包对此消息有本地化值,则将返回该本地化值(并为任何模板化值注入 args 值)。
| 参数 | 描述 |
|---|---|
| options: {args: Array<string | number | boolean> | Record<string, any>, comment: string | string[], message: string} | 本地化消息时使用的选项。 |
| 返回值 | 描述 |
| 字符串 | 带有注入参数的本地化字符串。 |
语言
参与特定语言编辑器的 功能 的命名空间,例如 IntelliSense、代码操作、诊断等。
存在许多编程语言,它们的语法、语义和范式差异很大。尽管如此,诸如自动单词补全、代码导航或代码检查等功能已在不同编程语言的不同工具中流行起来。
编辑器提供了一个 API,通过提供所有 UI 和操作,并允许您仅通过提供数据来参与,从而简化了这些常见功能的提供。例如,要贡献一个悬停提示,您所要做的就是提供一个函数,该函数可以根据 TextDocument 和 Position 被调用,并返回悬停信息。其余的,如跟踪鼠标、定位悬停提示、保持悬停提示稳定等,都由编辑器负责。
languages.registerHoverProvider('javascript', {
provideHover(document, position, token) {
return new Hover('I am a hover!');
}
});
注册使用 文档选择器 完成,该选择器可以是语言 ID,如 javascript,或者更复杂的 过滤器,如 { language: 'typescript', scheme: 'file' }。将文档与这样的选择器进行匹配将产生一个 分数,用于确定提供程序是否以及如何使用。当分数相等时,最后出现的提供程序获胜。对于允许任意数量参数的功能,如 悬停,分数仅用于检查是否 >0;对于其他功能,如 IntelliSense,分数用于确定按什么顺序询问提供程序。
事件
onDidChangeDiagnostics: Event<DiagnosticChangeEvent>
全局诊断集发生变化时触发的 事件。这是新添加和移除的诊断。
函数
createDiagnosticCollection(name?: string): DiagnosticCollection
创建诊断集合。
| 参数 | 描述 |
|---|---|
| name?: string | 集合的 名称。 |
| 返回值 | 描述 |
| DiagnosticCollection | 一个新的诊断集合。 |
createLanguageStatusItem(id: string, selector: DocumentSelector): LanguageStatusItem
创建一个新的 语言状态项。
| 参数 | 描述 |
|---|---|
| id: string | 项的标识符。 |
| selector: DocumentSelector | 定义该项显示在哪些编辑器的文档选择器。 |
| 返回值 | 描述 |
| LanguageStatusItem | 一个新的语言状态项。 |
getDiagnostics(resource: Uri): Diagnostic[]
获取给定资源的 au 诊断。
| 参数 | 描述 |
|---|---|
| resource: Uri | 资源 |
| 返回值 | 描述 |
| Diagnostic[] |
|
getDiagnostics(): Array<[Uri, Diagnostic[]]>
获取 au 诊断。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| Array<[Uri, Diagnostic[]]> | URI-诊断元组数组或空数组。 |
getLanguages(): Thenable<string[]>
返回所有已知语言的标识符。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| Thenable<string[]> | 解析为标识符字符串数组的 Promise。 |
match(selector: DocumentSelector, document: TextDocument): number
计算文档 选择器 与文档之间的匹配。大于零的值表示选择器匹配文档。
匹配根据以下规则计算
- 当 DocumentSelector 为数组时,计算包含的每个
DocumentFilter或语言标识符的匹配项,并取最大值。 - 字符串将被解构,成为 DocumentFilter 的
language部分,因此"fooLang"类似于{ language: "fooLang" }。 - 通过将 DocumentFilter 的各个部分与文档进行比较来计算匹配。适用以下规则
- 当
DocumentFilter为空({})时,结果为0 - 当
scheme、language、pattern或notebook已定义但其中一个不匹配时,结果为0 - 匹配
*会获得5的分数,通过相等性或 glob 模式匹配会获得10的分数 - 结果是每次匹配的最大值
- 当
示例
// 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 | 当选择器匹配时为 |
registerCallHierarchyProvider(selector: DocumentSelector, provider: CallHierarchyProvider): Disposable
注册调用层次结构提供程序。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: CallHierarchyProvider | 调用层次结构提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerCodeActionsProvider(selector: DocumentSelector, provider: CodeActionProvider<CodeAction>, metadata?: CodeActionProviderMetadata): Disposable
注册代码操作提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: CodeActionProvider<CodeAction> | 代码操作提供程序。 |
| metadata?: CodeActionProviderMetadata | 关于提供程序所提供代码操作类型元数据。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerCodeLensProvider(selector: DocumentSelector, provider: CodeLensProvider<CodeLens>): Disposable
注册代码 Lens 提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: CodeLensProvider<CodeLens> | 代码 Lens 提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerColorProvider(selector: DocumentSelector, provider: DocumentColorProvider): Disposable
注册颜色提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DocumentColorProvider | 颜色提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerCompletionItemProvider(selector: DocumentSelector, provider: CompletionItemProvider<CompletionItem>, ...triggerCharacters: string[]): Disposable
注册补全提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将按其 分数 排序,并且具有相同分数的组将被顺序地询问补全项。当一个或多个提供程序返回结果时,该过程停止。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
补全项提供程序可以与一组 triggerCharacters 关联。当键入触发字符时,会请求补全,但仅从注册了键入字符的提供程序处请求。因此,触发字符应与 字词字符 不同,常见的触发字符是 . 以触发成员补全。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: CompletionItemProvider<CompletionItem> | 补全提供程序。 |
| ...triggerCharacters: string[] | 键入这些字符之一时触发补全。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerDeclarationProvider(selector: DocumentSelector, provider: DeclarationProvider): Disposable
注册声明提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DeclarationProvider | 声明提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerDefinitionProvider(selector: DocumentSelector, provider: DefinitionProvider): Disposable
注册定义提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DefinitionProvider | 定义提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerDocumentDropEditProvider(selector: DocumentSelector, provider: DocumentDropEditProvider<DocumentDropEdit>, metadata?: DocumentDropEditProviderMetadata): Disposable
注册一个新的 DocumentDropEditProvider。
可以为一种语言注册多个拖放提供程序。将内容拖放到编辑器中时,将根据它们处理的 MIME 类型(由其 DocumentDropEditProviderMetadata 指定)调用该编辑器注册的所有提供程序。
每个提供程序可以返回一个或多个 DocumentDropEdits。编辑会根据 DocumentDropEdit.yieldTo 属性进行排序。默认情况下,将应用第一个编辑。如果存在其他编辑,这些编辑将显示给用户,作为拖放控件中可选的拖放选项。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DocumentDropEditProvider<DocumentDropEdit> | 拖放提供程序。 |
| metadata?: DocumentDropEditProviderMetadata | 有关提供程序的其他元数据。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在处置时会取消注册此提供程序。 |
registerDocumentFormattingEditProvider(selector: DocumentSelector, provider: DocumentFormattingEditProvider): Disposable
注册文档的格式化提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将按其 分数 排序,并使用最佳匹配的提供程序。所选提供程序的失败将导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DocumentFormattingEditProvider | 文档格式化编辑提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerDocumentHighlightProvider(selector: DocumentSelector, provider: DocumentHighlightProvider): Disposable
注册文档高亮提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将按其 分数 排序,并按顺序询问文档高亮。当提供程序返回 非假值 或 非失败 结果时,该过程停止。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DocumentHighlightProvider | 文档高亮提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerDocumentLinkProvider(selector: DocumentSelector, provider: DocumentLinkProvider<DocumentLink>): Disposable
注册文档链接提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DocumentLinkProvider<DocumentLink> | 文档链接提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerDocumentPasteEditProvider(selector: DocumentSelector, provider: DocumentPasteEditProvider<DocumentPasteEdit>, metadata: DocumentPasteProviderMetadata): Disposable
注册一个新的 DocumentPasteEditProvider。
可以为一种语言注册多个提供程序。所有已注册的语言提供程序都将根据其处理的 MIME 类型(由 DocumentPasteProviderMetadata 指定)在复制和粘贴操作中调用。
对于 复制操作,每个提供程序对 DataTransfer 所做的更改将合并到一个用于填充剪贴板的 DataTransfer 中。
对于 [DocumentPasteEditProvider.providerDocumentPasteEdits 粘贴操作](#_DocumentPasteEditProvider.providerDocumentPasteEdits 粘贴操作),将调用每个提供程序,并且它们可以返回一个或多个 DocumentPasteEdits。编辑会根据 DocumentPasteEdit.yieldTo 属性进行排序。默认情况下,将应用第一个编辑,其余编辑将显示给用户,作为粘贴控件中可选的粘贴选项。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DocumentPasteEditProvider<DocumentPasteEdit> | 粘贴编辑器提供程序。 |
| metadata: DocumentPasteProviderMetadata | 有关提供程序的其他元数据。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在处置时会取消注册此提供程序。 |
registerDocumentRangeFormattingEditProvider(selector: DocumentSelector, provider: DocumentRangeFormattingEditProvider): Disposable
为文档范围注册格式化提供程序。
注意: 文档范围提供程序也是一个 文档格式化程序,这意味着在注册范围提供程序时,无需 注册 文档格式化程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将按其 分数 排序,并使用最佳匹配的提供程序。所选提供程序的失败将导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DocumentRangeFormattingEditProvider | 文档范围格式化编辑提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerDocumentRangeSemanticTokensProvider(selector: DocumentSelector, provider: DocumentRangeSemanticTokensProvider, legend: SemanticTokensLegend): Disposable
为文档范围注册语义令牌提供程序。
注意: 如果一个文档同时拥有 DocumentSemanticTokensProvider 和 DocumentRangeSemanticTokensProvider,则范围提供程序仅在最初被调用,用于完全文档提供程序解析第一个请求所需的时间。一旦完全文档提供程序解析了第一个请求,通过范围提供程序提供的语义令牌将被丢弃,此后将仅使用文档提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将按其 分数 排序,并使用最佳匹配的提供程序。所选提供程序的失败将导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DocumentRangeSemanticTokensProvider | 文档范围语义令牌提供程序。 |
| legend: SemanticTokensLegend | |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerDocumentSemanticTokensProvider(selector: DocumentSelector, provider: DocumentSemanticTokensProvider, legend: SemanticTokensLegend): Disposable
为整个文档注册语义令牌提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将按其 分数 排序,并使用最佳匹配的提供程序。所选提供程序的失败将导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DocumentSemanticTokensProvider | 文档语义令牌提供程序。 |
| legend: SemanticTokensLegend | |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerDocumentSymbolProvider(selector: DocumentSelector, provider: DocumentSymbolProvider, metaData?: DocumentSymbolProviderMetadata): Disposable
注册文档符号提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: DocumentSymbolProvider | 文档符号提供程序。 |
| metaData?: DocumentSymbolProviderMetadata | 提供程序的元数据。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerEvaluatableExpressionProvider(selector: DocumentSelector, provider: EvaluatableExpressionProvider): Disposable
注册一个用于在文本文档中定位可求值表达式的提供程序。编辑器将在活动调试会话中求值表达式,并在调试悬停时显示结果。
如果为语言注册了多个提供程序,则将使用任意一个提供程序。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: EvaluatableExpressionProvider | 可求值表达式提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerFoldingRangeProvider(selector: DocumentSelector, provider: FoldingRangeProvider): Disposable
注册折叠范围提供程序。
可以为语言注册多个提供程序。在这种情况下,提供程序会并行请求,并将结果合并。如果多个折叠范围从同一位置开始,则仅使用第一个注册提供程序的结果。如果折叠范围与一个位置更小的范围重叠,它也会被忽略。
失败的提供程序(承诺被拒绝或抛出异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: FoldingRangeProvider | 折叠范围提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerHoverProvider(selector: DocumentSelector, provider: HoverProvider): Disposable
注册悬停提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: HoverProvider | 悬停提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerImplementationProvider(selector: DocumentSelector, provider: ImplementationProvider): Disposable
注册实现提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: ImplementationProvider | 实现提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerInlayHintsProvider(selector: DocumentSelector, provider: InlayHintsProvider<InlayHint>): Disposable
注册内嵌提示提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: InlayHintsProvider<InlayHint> | 内嵌提示提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerInlineCompletionItemProvider(selector: DocumentSelector, provider: InlineCompletionItemProvider): Disposable
注册内联完成提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: InlineCompletionItemProvider | 内联完成提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerInlineValuesProvider(selector: DocumentSelector, provider: InlineValuesProvider): Disposable
注册一个为调试器的“内联值”功能提供数据的提供程序。每当通用调试器在源文件中停止时,就会调用为该文件语言注册的提供程序,以返回将在编辑器行末显示的文本数据。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: InlineValuesProvider | 内联值提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerLinkedEditingRangeProvider(selector: DocumentSelector, provider: LinkedEditingRangeProvider): Disposable
注册链接编辑范围提供程序。
可以为语言注册多个提供程序。在这种情况下,提供程序将按其 得分 进行排序,并使用具有结果的最佳匹配提供程序。选定提供程序的失败将导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: LinkedEditingRangeProvider | 链接编辑范围提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerOnTypeFormattingEditProvider(selector: DocumentSelector, provider: OnTypeFormattingEditProvider, firstTriggerCharacter: string, ...moreTriggerCharacter: string[]): Disposable
注册一个在键入时工作的格式化提供程序。当用户启用 editor.formatOnType 设置时,该提供程序将处于活动状态。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将按其 分数 排序,并使用最佳匹配的提供程序。所选提供程序的失败将导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: OnTypeFormattingEditProvider | 键入时格式化编辑提供程序。 |
| firstTriggerCharacter: string | 应触发格式化的字符,例如 |
| ...moreTriggerCharacter: string[] | 更多触发字符。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerReferenceProvider(selector: DocumentSelector, provider: ReferenceProvider): Disposable
注册引用提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: ReferenceProvider | 引用提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerRenameProvider(selector: DocumentSelector, provider: RenameProvider): Disposable
注册重命名提供程序。
可以为语言注册多个提供程序。在这种情况下,提供程序将按其 得分 进行排序,并按顺序请求。第一个生成结果的提供程序定义了整个操作的结果。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: RenameProvider | 重命名提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerSelectionRangeProvider(selector: DocumentSelector, provider: SelectionRangeProvider): Disposable
注册选择范围提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: SelectionRangeProvider | 选择范围提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, ...triggerCharacters: string[]): Disposable
注册签名帮助提供程序。
可以为语言注册多个提供程序。在这种情况下,提供程序将按其 得分 进行排序,并按顺序调用,直到某个提供程序返回有效结果。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: SignatureHelpProvider | 签名帮助提供程序。 |
| ...triggerCharacters: string[] | 在用户键入 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, metadata: SignatureHelpProviderMetadata): Disposable
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: SignatureHelpProvider | 签名帮助提供程序。 |
| metadata: SignatureHelpProviderMetadata | 提供程序信息。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerTypeDefinitionProvider(selector: DocumentSelector, provider: TypeDefinitionProvider): Disposable
注册类型定义提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序将并行被调用,结果将被合并。失败的提供程序(拒绝的 Promise 或异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: TypeDefinitionProvider | 类型定义提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerTypeHierarchyProvider(selector: DocumentSelector, provider: TypeHierarchyProvider): Disposable
注册类型层次结构提供程序。
| 参数 | 描述 |
|---|---|
| selector: DocumentSelector | 定义此提供程序适用于哪些文档的选择器。 |
| provider: TypeHierarchyProvider | 类型层次结构提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
registerWorkspaceSymbolProvider(provider: WorkspaceSymbolProvider<SymbolInformation>): Disposable
注册工作区符号提供程序。
可以注册多个提供程序。在这种情况下,提供程序会并行请求,并将结果合并。失败的提供程序(承诺被拒绝或抛出异常)不会导致整个操作失败。
| 参数 | 描述 |
|---|---|
| provider: WorkspaceSymbolProvider<SymbolInformation> | 工作区符号提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
setLanguageConfiguration(language: string, configuration: LanguageConfiguration): Disposable
为语言设置 语言配置。
| 参数 | 描述 |
|---|---|
| language: string | 语言标识符,例如 |
| configuration: LanguageConfiguration | 语言配置。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,用于在移除配置时进行释放。 |
setTextDocumentLanguage(document: TextDocument, languageId: string): Thenable<TextDocument>
设置(并更改)与给定文档关联的 语言。
注意,调用此函数将触发 onDidCloseTextDocument 事件,然后是 onDidOpenTextDocument 事件。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 要更改语言的文档。 |
| languageId: string | 新的语言标识符。 |
| 返回值 | 描述 |
| Thenable<TextDocument> | 一个可等待的(thenable),它将以更新后的文档解析。 |
lm
与语言模型相关的功能的命名空间。
变量
tools: readonly LanguageModelToolInformation[]
所有可用工具的列表,这些工具已通过 lm.registerTool 由所有扩展程序注册。它们可以使用 lm.invokeTool 调用,其输入应与声明的 inputSchema 匹配。
事件
onDidChangeChatModels: Event<void>
当可用聊天模型集发生变化时触发的事件。
函数
invokeTool(name: string, options: LanguageModelToolInvocationOptions<object>, token?: CancellationToken): Thenable<LanguageModelToolResult>
通过名称和给定的输入调用 lm.tools 中列出的工具。输入将根据工具声明的模式进行验证。
工具可以由聊天参与者在处理聊天请求的上下文中调用,也可以由任何扩展在任何自定义流程中全局调用。
在前一种情况下,调用者应传递 toolInvocationToken(来自 聊天请求),这可以确保聊天 UI 为正确的对话显示工具调用。
工具 结果 是一个由 文本 和 prompt-tsx 部分组成的数组。如果工具调用者使用 vscode/prompt-tsx,它可以将响应部分合并到其提示中使用 ToolResult。如果不是,则可以将这些部分通过带有 LanguageModelToolResultPart 的用户消息传递给 LanguageModelChat。
如果聊天参与者希望保留跨多轮的工具结果,它可以将工具结果存储在处理程序返回的 ChatResult.metadata 中,并在下一轮从 ChatResponseTurn.result 中检索它们。
| 参数 | 描述 |
|---|---|
| name: string | 要调用的工具的名称。 |
| options: LanguageModelToolInvocationOptions<object> | 调用工具时使用的选项。 |
| token?: CancellationToken | 取消令牌。有关如何创建令牌,请参阅 CancellationTokenSource。 |
| 返回值 | 描述 |
| Thenable<LanguageModelToolResult> | 工具调用的结果。 |
registerLanguageModelChatProvider(vendor: string, provider: LanguageModelChatProvider<LanguageModelChatInformation>): Disposable
注册一个 LanguageModelChatProvider。注意:您还必须通过 package.json 中的 languageModelChatProviders 贡献点来定义语言模型聊天提供程序。
| 参数 | 描述 |
|---|---|
| vendor: string | 此提供程序的供应商。必须是全局唯一的。例如, |
| provider: LanguageModelChatProvider<LanguageModelChatInformation> | 要注册的提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 disposable,在被释放时取消注册提供程序。 |
registerMcpServerDefinitionProvider(id: string, provider: McpServerDefinitionProvider<McpServerDefinition>): Disposable
注册一个提供程序,该程序发布模型上下文协议(MCP)服务器供编辑器使用。这允许 MCP 服务器动态地提供给编辑器,而不仅仅是用户在其配置文件中创建的服务器。
在此方法调用之前,扩展必须使用相应的 id 注册 contributes.mcpServerDefinitionProviders 扩展点,例如:
"contributes": {
"mcpServerDefinitionProviders": [
{
"id": "cool-cloud-registry.mcp-servers",
"label": "Cool Cloud Registry",
}
]
}
当新的 McpServerDefinitionProvider 可用时,编辑器默认会在提交聊天消息时自动调用它来发现新服务器和工具。要启用此流程,扩展应在激活期间调用 registerMcpServerDefinitionProvider。
| 参数 | 描述 |
|---|---|
| id: string | 提供程序的 ID,它对扩展是唯一的。 |
| provider: McpServerDefinitionProvider<McpServerDefinition> | 要注册的提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 disposable,在被释放时取消注册提供程序。 |
registerTool<T>(name: string, tool: LanguageModelTool<T>): Disposable
注册一个 LanguageModelTool。该工具还必须在 package.json 的 languageModelTools 贡献点中注册。注册的工具可在 lm.tools 列表中供任何扩展查看。但是,为了让语言模型看到它,它必须在 LanguageModelChatRequestOptions.tools 中提供的可用工具列表中。
| 参数 | 描述 |
|---|---|
| name: string | |
| tool: LanguageModelTool<T> | |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时取消注册工具。 |
selectChatModels(selector?: LanguageModelChatSelector): Thenable<LanguageModelChat[]>
通过 选择器 选择聊天模型。这可能会产生零个或多个聊天模型,扩展程序必须优雅地处理这些情况,特别是当不存在聊天模型时。
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
笔记本的命名空间。
笔记本功能由三个松散耦合的组件组成:
- NotebookSerializer 使编辑器能够打开、显示和保存笔记本。
- NotebookController 负责笔记本的执行,例如,它们会生成代码单元格的输出。
- NotebookRenderer 在编辑器中呈现笔记本输出。它们在单独的上下文中运行。
函数
createNotebookController(id: string, notebookType: string, label: string, handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>): NotebookController
创建一个新的笔记本控制器。
| 参数 | 描述 |
|---|---|
| id: string | 控制器的标识符。在扩展程序中必须是唯一的。 |
| notebookType: string | 此控制器所属的笔记本类型。 |
| label: string | 控制器的标签。 |
| handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void> | 控制器的执行处理程序。 |
| 返回值 | 描述 |
| NotebookController | 新的笔记本控制器。 |
createRendererMessaging(rendererId: string): NotebookRendererMessaging
创建一个用于与特定渲染器通信的新消息实例。
- 注意 1:扩展只能创建它们在其
package.json文件中定义的渲染器。 - 注意 2:只有当渲染器的
notebookRenderer贡献中requiresMessaging设置为always或optional时,渲染器才能访问消息功能。
| 参数 | 描述 |
|---|---|
| rendererId: string | 要通信的渲染器 ID |
| 返回值 | 描述 |
| NotebookRendererMessaging | 一个新的笔记本渲染器消息对象。 |
registerNotebookCellStatusBarItemProvider(notebookType: string, provider: NotebookCellStatusBarItemProvider): Disposable
为给定的笔记本类型注册一个 单元格状态栏项提供程序。
| 参数 | 描述 |
|---|---|
| notebookType: string | 注册的笔记本类型。 |
| provider: NotebookCellStatusBarItemProvider | 一个单元格状态栏提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
scm
源代码管理命名空间。
变量
inputBox: SourceControlInputBox
扩展创建的最后一个源控件的 输入框。
- 已弃用 - 请改用 SourceControl.inputBox
函数
createSourceControl(id: string, label: string, rootUri?: Uri): SourceControl
创建一个新的 源控件 实例。
| 参数 | 描述 |
|---|---|
| id: string | 源控件的 |
| label: string | 源控件的人类可读字符串。例如: |
| rootUri?: Uri | 源控件根目录的 URI(可选)。例如: |
| 返回值 | 描述 |
| SourceControl | 源控件 的一个实例。 |
tasks
任务功能命名空间。
变量
taskExecutions: readonly TaskExecution[]
当前活动的任务执行,或者一个空数组。
事件
onDidEndTask: Event<TaskEndEvent>
任务结束时触发。
onDidEndTaskProcess: Event<TaskProcessEndEvent>
底层进程结束时触发。此事件不会为不执行底层进程的任务触发。
onDidStartTask: Event<TaskStartEvent>
任务开始时触发。
onDidStartTaskProcess: Event<TaskProcessStartEvent>
底层进程启动时触发。此事件不会为不执行底层进程的任务触发。
函数
executeTask(task: Task): Thenable<TaskExecution>
执行由编辑器管理的任务。返回的任务执行可用于终止任务。
- 抛出 - 当在无法启动新进程的环境中运行 ShellExecution 或 ProcessExecution 任务时。在此类环境中,只能运行 CustomExecution 任务。
| 参数 | 描述 |
|---|---|
| task: Task | 要执行的任务 |
| 返回值 | 描述 |
| Thenable<TaskExecution> | 一个解析为任务执行的 thenable。 |
fetchTasks(filter?: TaskFilter): Thenable<Task[]>
获取系统中所有可用的任务。这包括来自 tasks.json 文件的任务,以及通过扩展贡献的任务提供程序中的任务。
| 参数 | 描述 |
|---|---|
| filter?: TaskFilter | 可选过滤器,用于选择特定类型或版本的任务。 |
| 返回值 | 描述 |
| Thenable<Task[]> | 一个解析为任务数组的 thenable。 |
registerTaskProvider(type: string, provider: TaskProvider<Task>): Disposable
注册一个任务提供程序。
| 参数 | 描述 |
|---|---|
| type: string | 此提供程序注册的任务类型。 |
| provider: TaskProvider<Task> | 一个任务提供程序。 |
| 返回值 | 描述 |
| Disposable | 一个 Disposable,在被释放时注销此提供程序。 |
tests
测试功能命名空间。测试通过注册 TestController 实例来发布,然后添加 TestItems。控制器还可以通过创建一或多个 TestRunProfile 实例来描述如何运行测试。
函数
createTestController(id: string, label: string): TestController
创建一个新的测试控制器。
| 参数 | 描述 |
|---|---|
| id: string | 控制器的标识符,必须全局唯一。 |
| label: string | 控制器的可读标签。 |
| 返回值 | 描述 |
| TestController | TestController 的一个实例。 |
window
处理编辑器当前窗口的命名空间。即可见和活动的编辑器,以及显示消息、选择和请求用户输入的 UI 元素。
变量
activeColorTheme: ColorTheme
根据设置配置的当前活动颜色主题。活动主题可以通过 workbench.colorTheme 设置进行更改。
activeNotebookEditor: NotebookEditor | undefined
当前活动的 笔记本编辑器 或 undefined。活动编辑器是当前具有焦点编辑器,或者在没有编辑器有焦点时,是最近更改输入的编辑器。
activeTerminal: Terminal | undefined
当前活动的终端或 undefined。活动终端是当前具有焦点或最近拥有焦点的终端。
activeTextEditor: TextEditor | undefined
当前活动的编辑器或 undefined。活动编辑器是当前具有焦点编辑器,或者在没有编辑器有焦点时,是最近更改输入的编辑器。
state: WindowState
表示当前窗口的状态。
tabGroups: TabGroups
表示主编辑器区域内的网格小部件
terminals: readonly Terminal[]
当前打开的终端,或者一个空数组。
visibleNotebookEditors: readonly NotebookEditor[]
当前可见的 笔记本编辑器,或者一个空数组。
visibleTextEditors: readonly TextEditor[]
当前可见的编辑器,或者一个空数组。
事件
onDidChangeActiveColorTheme: Event<ColorTheme>
当活动颜色主题更改或发生更改时触发的 Event。
onDidChangeActiveNotebookEditor: Event<NotebookEditor | undefined>
onDidChangeActiveTerminal: Event<Terminal | undefined>
onDidChangeActiveTextEditor: Event<TextEditor | undefined>
onDidChangeNotebookEditorSelection: Event<NotebookEditorSelectionChangeEvent>
onDidChangeNotebookEditorVisibleRanges: Event<NotebookEditorVisibleRangesChangeEvent>
当 笔记本编辑器可见范围 更改时触发的 Event。
onDidChangeTerminalShellIntegration: Event<TerminalShellIntegrationChangeEvent>
当终端中的 Shell Integration 激活或其某个属性更改时触发。
onDidChangeTerminalState: Event<Terminal>
onDidChangeTextEditorOptions: Event<TextEditorOptionsChangeEvent>
当编辑器的选项更改时触发的 Event。
onDidChangeTextEditorSelection: Event<TextEditorSelectionChangeEvent>
当编辑器中的选区更改时触发的 Event。
onDidChangeTextEditorViewColumn: Event<TextEditorViewColumnChangeEvent>
当编辑器的视图列更改时触发的 Event。
onDidChangeTextEditorVisibleRanges: Event<TextEditorVisibleRangesChangeEvent>
当编辑器的可见范围更改时触发的 Event。
onDidChangeVisibleNotebookEditors: Event<readonly NotebookEditor[]>
onDidChangeVisibleTextEditors: Event<readonly TextEditor[]>
onDidChangeWindowState: Event<WindowState>
当当前窗口的焦点或活动状态更改时触发的 Event。事件的值表示窗口是否获得焦点。
onDidCloseTerminal: Event<Terminal>
当终端被释放时触发的 Event。
onDidEndTerminalShellExecution: Event<TerminalShellExecutionEndEvent>
当终端命令结束时触发。此事件仅在终端 激活了 Shell Integration 时触发。
onDidOpenTerminal: Event<Terminal>
当终端被创建时(通过 createTerminal API 或命令)触发的 Event。
onDidStartTerminalShellExecution: Event<TerminalShellExecutionStartEvent>
当终端命令开始时触发。此事件仅在终端 激活了 Shell Integration 时触发。
函数
createInputBox(): InputBox
创建一个 InputBox,让用户输入文本。
请注意,在许多情况下,更方便的 window.showInputBox 更易于使用。window.createInputBox 应在 window.showInputBox 不提供所需灵活性时使用。
createOutputChannel(name: string, languageId?: string): OutputChannel
使用给定的名称和语言 ID 创建一个新的 输出通道。如果未提供语言 ID,则使用 Log 作为默认语言 ID。
您可以从 可见编辑器 或 活动编辑器 访问可见或活动的输出通道,作为 文本文档,并使用语言 ID 来贡献语言功能,如语法着色、代码 Lens 等。
| 参数 | 描述 |
|---|---|
| name: string | 将在 UI 中用于表示通道的可读字符串。 |
| languageId?: string | 与通道关联的语言的标识符。 |
| 返回值 | 描述 |
| OutputChannel | 一个新的输出通道。 |
createOutputChannel(name: string, options: {log: true}): LogOutputChannel
使用给定的名称创建一个新的 日志输出通道。
| 参数 | 描述 |
|---|---|
| name: string | 将在 UI 中用于表示通道的可读字符串。 |
| options: {log: true} | 日志输出通道的选项。 |
| 返回值 | 描述 |
| LogOutputChannel | 一个新的日志输出通道。 |
createQuickPick<T extends QuickPickItem>(): QuickPick<T>
创建一个 QuickPick,让用户从 T 类型项的列表中选择一个项。
请注意,在许多情况下,更方便的 window.showQuickPick 更易于使用。window.createQuickPick 应在 window.showQuickPick 不提供所需灵活性时使用。
createStatusBarItem(id: string, alignment?: StatusBarAlignment, priority?: number): StatusBarItem
创建一个状态栏 项。
| 参数 | 描述 |
|---|---|
| id: string | 项的标识符。在扩展中必须是唯一的。 |
| alignment?: StatusBarAlignment | 项的对齐方式。 |
| priority?: number | 项的优先级。值越高表示项应显示在越靠左的位置。 |
| 返回值 | 描述 |
| StatusBarItem | 一个新的状态栏项。 |
createStatusBarItem(alignment?: StatusBarAlignment, priority?: number): StatusBarItem
创建一个状态栏 项。
另请参阅 createStatusBarItem,用于创建带标识符的状态栏项。
| 参数 | 描述 |
|---|---|
| alignment?: StatusBarAlignment | 项的对齐方式。 |
| priority?: number | 项的优先级。值越高表示项应显示在越靠左的位置。 |
| 返回值 | 描述 |
| StatusBarItem | 一个新的状态栏项。 |
createTerminal(name?: string, shellPath?: string, shellArgs?: string | readonly string[]): Terminal
使用后备 shell 进程创建一个 Terminal。终端的 cwd 将是工作区目录(如果存在)。
- 抛出 - 当在无法启动新进程的环境中运行时。
createTerminal(options: TerminalOptions): Terminal
使用后备 shell 进程创建一个 Terminal。
- 抛出 - 当在无法启动新进程的环境中运行时。
| 参数 | 描述 |
|---|---|
| options: TerminalOptions | 描述新终端特性的 TerminalOptions 对象。 |
| 返回值 | 描述 |
| 终端 | 一个新的 Terminal。 |
createTerminal(options: ExtensionTerminalOptions): Terminal
创建一个由扩展控制其输入和输出的 Terminal。
| 参数 | 描述 |
|---|---|
| options: ExtensionTerminalOptions | 描述新终端特性的 ExtensionTerminalOptions 对象。 |
| 返回值 | 描述 |
| 终端 | 一个新的 Terminal。 |
createTextEditorDecorationType(options: DecorationRenderOptions): TextEditorDecorationType
创建一个 TextEditorDecorationType,用于向文本编辑器添加装饰。
| 参数 | 描述 |
|---|---|
| options: DecorationRenderOptions | 装饰类型的渲染选项。 |
| 返回值 | 描述 |
| TextEditorDecorationType | 一个新的装饰类型实例。 |
createTreeView<T>(viewId: string, options: TreeViewOptions<T>): TreeView<T>
为使用 views 扩展点贡献的视图创建一个 TreeView。
| 参数 | 描述 |
|---|---|
| viewId: string | 使用 |
| options: TreeViewOptions<T> | 创建 TreeView 的选项。 |
| 返回值 | 描述 |
| TreeView<T> | 一个 TreeView。 |
createWebviewPanel(viewType: string, title: string, showOptions: ViewColumn | {preserveFocus: boolean, viewColumn: ViewColumn}, options?: WebviewPanelOptions & WebviewOptions): WebviewPanel
创建并显示一个新的 Webview 面板。
| 参数 | 描述 |
|---|---|
| viewType: string | 标识 Webview 面板的类型。 |
| title: string | 面板的标题。 |
| showOptions: ViewColumn | {preserveFocus: boolean, viewColumn: ViewColumn} | 在编辑器中显示 Webview 的位置。如果设置了 preserveFocus,则新 Webview 将不会获得焦点。 |
| options?: WebviewPanelOptions & WebviewOptions | 新面板的设置。 |
| 返回值 | 描述 |
| WebviewPanel | 新的 Webview 面板。 |
registerCustomEditorProvider(viewType: string, provider: CustomTextEditorProvider | CustomReadonlyEditorProvider<CustomDocument> | CustomEditorProvider<CustomDocument>, options?: {supportsMultipleEditorsPerDocument: boolean, webviewOptions: WebviewPanelOptions}): Disposable
为 customEditors 扩展点贡献的 viewType 注册自定义编辑器提供程序。
当打开自定义编辑器时,会触发 onCustomEditor:viewType 激活事件。您的扩展程序必须在激活时为 viewType 注册 CustomTextEditorProvider、CustomReadonlyEditorProvider 或 CustomEditorProvider。
| 参数 | 描述 |
|---|---|
| viewType: string | 自定义编辑器提供程序的唯一标识符。这应该与 |
| provider: CustomTextEditorProvider | CustomReadonlyEditorProvider<CustomDocument> | CustomEditorProvider<CustomDocument> | 解析自定义编辑器的提供程序。 |
| options?: {supportsMultipleEditorsPerDocument: boolean, webviewOptions: WebviewPanelOptions} | 提供程序的选项。 |
| 返回值 | 描述 |
| Disposable | 注销提供程序的 Disposable 对象。 |
registerFileDecorationProvider(provider: FileDecorationProvider): Disposable
注册文件装饰提供程序。
| 参数 | 描述 |
|---|---|
| provider: FileDecorationProvider | |
| 返回值 | 描述 |
| Disposable | 注销提供程序的 Disposable 对象。 |
registerTerminalLinkProvider(provider: TerminalLinkProvider<TerminalLink>): Disposable
注册一个提供程序,用于在终端中检测和处理链接。
| 参数 | 描述 |
|---|---|
| provider: TerminalLinkProvider<TerminalLink> | 提供终端链接的提供程序。 |
| 返回值 | 描述 |
| Disposable | 注销提供程序的 Disposable 对象。 |
registerTerminalProfileProvider(id: string, provider: TerminalProfileProvider): Disposable
为贡献的终端配置文件注册一个提供程序。
| 参数 | 描述 |
|---|---|
| id: string | 贡献的终端配置文件的 ID。 |
| provider: TerminalProfileProvider | 终端配置文件提供程序。 |
| 返回值 | 描述 |
| Disposable | 注销提供程序的 Disposable 对象。 |
registerTreeDataProvider<T>(viewId: string, treeDataProvider: TreeDataProvider<T>): Disposable
为使用 views 扩展点贡献的视图注册一个 TreeDataProvider。这将允许您向 TreeView 贡献数据并在数据更改时进行更新。
注意:要访问 TreeView 并对其执行操作,请使用 createTreeView。
| 参数 | 描述 |
|---|---|
| viewId: string | 使用 |
| treeDataProvider: TreeDataProvider<T> | 提供视图树数据的 TreeDataProvider。 |
| 返回值 | 描述 |
| Disposable | 注销 TreeDataProvider 的 Disposable 对象。 |
registerUriHandler(handler: UriHandler): Disposable
注册一个能够处理系统范围的 URI 的 URI 处理程序。如果打开了多个窗口,则最上面的窗口将处理 URI。URI 处理程序的作用域限定在其贡献的扩展程序内;它只能处理定向到扩展程序本身的 URI。URI 必须遵守以下规则:
- URI 方案必须是
vscode.env.uriScheme; - URI 权限必须是扩展 ID(例如
my.extension); - URI 路径、查询和片段部分是任意的。
例如,如果 my.extension 扩展程序注册了一个 URI 处理程序,它将只能处理以 product-name://my.extension 开头的 URI。
每个扩展程序在其整个激活生命周期中只能注册一个 URI 处理程序。
- 注意:存在一个
onUri激活事件,当一个指向当前扩展程序的 URI 即将处理时,该事件会被触发。
| 参数 | 描述 |
|---|---|
| handler: UriHandler | 要为此扩展程序注册的 URI 处理程序。 |
| 返回值 | 描述 |
| Disposable | 注销处理程序的 Disposable 对象。 |
registerWebviewPanelSerializer(viewType: string, serializer: WebviewPanelSerializer<unknown>): Disposable
注册 Webview 面板序列化器。
支持恢复的扩展程序应具有 "onWebviewPanel:viewType" 激活事件,并确保在激活期间调用 registerWebviewPanelSerializer。
对于给定的 viewType,一次只能注册一个序列化器。
| 参数 | 描述 |
|---|---|
| viewType: string | 可以序列化的 Webview 面板的类型。 |
| serializer: WebviewPanelSerializer<unknown> | Webview 序列化器。 |
| 返回值 | 描述 |
| Disposable | 注销序列化器的 Disposable 对象。 |
registerWebviewViewProvider(viewId: string, provider: WebviewViewProvider, options?: {webviewOptions: {retainContextWhenHidden: boolean}}): Disposable
为 Webview 视图注册新的提供程序。
| 参数 | 描述 |
|---|---|
| viewId: string | 视图的唯一 ID。这应该与 package.json 中的 |
| provider: WebviewViewProvider | Webview 视图的提供程序。 |
| options?: {webviewOptions: {retainContextWhenHidden: boolean}} | |
| 返回值 | 描述 |
| Disposable | 注销提供程序的 Disposable 对象。 |
setStatusBarMessage(text: string, hideAfterTimeout: number): Disposable
在状态栏上设置一条消息。这是更强大的状态栏 项目 的简写。
| 参数 | 描述 |
|---|---|
| text: string | 要显示的消息,支持图标替换,如状态栏 项目 中所述。 |
| hideAfterTimeout: number | 消息将被隐藏后的超时时间(毫秒)。 |
| 返回值 | 描述 |
| Disposable | 隐藏状态栏消息的 Disposable 对象。 |
setStatusBarMessage(text: string, hideWhenDone: Thenable<any>): Disposable
在状态栏上设置一条消息。这是更强大的状态栏 项目 的简写。
| 参数 | 描述 |
|---|---|
| text: string | 要显示的消息,支持图标替换,如状态栏 项目 中所述。 |
| hideWhenDone: Thenable<any> | 消息完成后(解析或拒绝)将被隐藏的 Promise。 |
| 返回值 | 描述 |
| Disposable | 隐藏状态栏消息的 Disposable 对象。 |
setStatusBarMessage(text: string): Disposable
在状态栏上设置一条消息。这是更强大的状态栏 项目 的简写。
注意状态栏消息会堆叠,并且在使用完毕后必须将其 disposed。
| 参数 | 描述 |
|---|---|
| text: string | 要显示的消息,支持图标替换,如状态栏 项目 中所述。 |
| 返回值 | 描述 |
| Disposable | 隐藏状态栏消息的 Disposable 对象。 |
showErrorMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>
显示错误消息。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showErrorMessage<T extends string>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
显示错误消息。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| options: MessageOptions | 配置消息的行为。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showErrorMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T | undefined>
显示错误消息。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showErrorMessage<T extends MessageItem>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
显示错误消息。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| options: MessageOptions | 配置消息的行为。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showInformationMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>
向用户显示信息消息。可以选择提供一个数组的项目,这些项目将显示为可点击的按钮。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showInformationMessage<T extends string>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
向用户显示信息消息。可以选择提供一个数组的项目,这些项目将显示为可点击的按钮。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| options: MessageOptions | 配置消息的行为。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showInformationMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T | undefined>
显示信息消息。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showInformationMessage<T extends MessageItem>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
显示信息消息。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| options: MessageOptions | 配置消息的行为。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showInputBox(options?: InputBoxOptions, token?: CancellationToken): Thenable<string | undefined>
打开一个输入框,要求用户输入。
如果输入框被取消(例如,按 ESC 键),则返回值将是 undefined。否则,返回值将是用户键入的字符串,如果用户未键入任何内容但用 OK 按钮关闭了输入框,则返回空字符串。
| 参数 | 描述 |
|---|---|
| options?: InputBoxOptions | 配置输入框的行为。 |
| token?: CancellationToken | 可用于发出取消信号的令牌。 |
| 返回值 | 描述 |
| Thenable<string | undefined> | 一个 Promise,解析为用户提供的字符串,或者在取消时解析为 |
showNotebookDocument(document: NotebookDocument, options?: NotebookDocumentShowOptions): Thenable<NotebookEditor>
在 笔记本编辑器 中显示给定的 NotebookDocument。
| 参数 | 描述 |
|---|---|
| document: NotebookDocument | 要显示的文本文档。 |
| options?: NotebookDocumentShowOptions | |
| 返回值 | 描述 |
| Thenable<NotebookEditor> | 一个解析为 笔记本编辑器 的 Promise。 |
showOpenDialog(options?: OpenDialogOptions): Thenable<Uri[] | undefined>
向用户显示文件打开对话框,允许选择要打开的文件。
| 参数 | 描述 |
|---|---|
| options?: OpenDialogOptions | 控制对话框的选项。 |
| 返回值 | 描述 |
| Thenable<Uri[] | undefined> | 一个 Promise,解析为选定的资源或 |
showQuickPick(items: readonly string[] | Thenable<readonly string[]>, options: QuickPickOptions & {canPickMany: true}, token?: CancellationToken): Thenable<string[] | undefined>
显示一个允许多选的选项列表。
| 参数 | 描述 |
|---|---|
| items: readonly string[] | Thenable<readonly string[]> | 一个字符串数组,或者一个解析为字符串数组的 Promise。 |
| options: QuickPickOptions & {canPickMany: true} | 配置选项列表的行为。 |
| token?: CancellationToken | 可用于发出取消信号的令牌。 |
| 返回值 | 描述 |
| Thenable<string[] | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showQuickPick(items: readonly string[] | Thenable<readonly string[]>, options?: QuickPickOptions, token?: CancellationToken): Thenable<string | undefined>
显示一个选项列表。
| 参数 | 描述 |
|---|---|
| items: readonly string[] | Thenable<readonly string[]> | 一个字符串数组,或者一个解析为字符串数组的 Promise。 |
| options?: QuickPickOptions | 配置选项列表的行为。 |
| token?: CancellationToken | 可用于发出取消信号的令牌。 |
| 返回值 | 描述 |
| Thenable<string | undefined> | 一个 Promise,解析为选定的字符串,或在取消时解析为 |
showQuickPick<T extends QuickPickItem>(items: readonly T[] | Thenable<readonly T[]>, options: QuickPickOptions & {canPickMany: true}, token?: CancellationToken): Thenable<T[] | undefined>
显示一个允许多选的选项列表。
| 参数 | 描述 |
|---|---|
| items: readonly T[] | Thenable<readonly T[]> | 一个项目数组,或者一个解析为项目数组的 Promise。 |
| options: QuickPickOptions & {canPickMany: true} | 配置选项列表的行为。 |
| token?: CancellationToken | 可用于发出取消信号的令牌。 |
| 返回值 | 描述 |
| Thenable<T[] | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showQuickPick<T extends QuickPickItem>(items: readonly T[] | Thenable<readonly T[]>, options?: QuickPickOptions, token?: CancellationToken): Thenable<T | undefined>
显示一个选项列表。
| 参数 | 描述 |
|---|---|
| items: readonly T[] | Thenable<readonly T[]> | 一个项目数组,或者一个解析为项目数组的 Promise。 |
| options?: QuickPickOptions | 配置选项列表的行为。 |
| token?: CancellationToken | 可用于发出取消信号的令牌。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在取消时解析为 |
showSaveDialog(options?: SaveDialogOptions): Thenable<Uri | undefined>
向用户显示文件保存对话框,允许选择要保存的文件。
| 参数 | 描述 |
|---|---|
| options?: SaveDialogOptions | 控制对话框的选项。 |
| 返回值 | 描述 |
| Thenable<Uri | undefined> | 一个 Promise,解析为选定的资源或 |
showTextDocument(document: TextDocument, column?: ViewColumn, preserveFocus?: boolean): Thenable<TextEditor>
| 参数 | 描述 |
|---|---|
| document: TextDocument | 要显示的文本文档。 |
| column?: ViewColumn | 应在其中显示 编辑器 的视图列。默认为 活动 列。不存在的列将根据需要创建,最多可达 ViewColumn.Nine。使用 ViewColumn.Beside 将编辑器打开到当前活动编辑器旁边。 |
| preserveFocus?: boolean | 如果设置为 |
| 返回值 | 描述 |
| 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)) 的简写。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| options?: TextDocumentShowOptions | |
| 返回值 | 描述 |
| Thenable<TextEditor> | 一个解析为 编辑器 的 Promise。 |
showWarningMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>
显示警告消息。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showWarningMessage<T extends string>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
显示警告消息。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| options: MessageOptions | 配置消息的行为。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showWarningMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T | undefined>
显示警告消息。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showWarningMessage<T extends MessageItem>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
显示警告消息。
| 参数 | 描述 |
|---|---|
| message: string | 要显示的消息。 |
| options: MessageOptions | 配置消息的行为。 |
| ...items: T[] | 将显示为消息中可点击操作的一组项目。 |
| 返回值 | 描述 |
| Thenable<T | undefined> | 一个 Promise,解析为选定的项目,或在消息被关闭时解析为 |
showWorkspaceFolderPick(options?: WorkspaceFolderPickOptions): Thenable<WorkspaceFolder | undefined>
显示一个 工作区文件夹 选择列表。如果未打开任何文件夹,则返回 undefined。
| 参数 | 描述 |
|---|---|
| options?: WorkspaceFolderPickOptions | 配置工作区文件夹列表的行为。 |
| 返回值 | 描述 |
| Thenable<WorkspaceFolder | undefined> | 一个 Promise,解析为工作区文件夹或 |
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 对象报告进度状态。 要报告离散进度,请使用 要监视操作是否已被用户取消,请使用提供的 CancellationToken。请注意,目前只有 |
| 返回值 | 描述 |
| Thenable<R> | 任务回调函数返回的 Promise。 |
withScmProgress<R>(task: (progress: Progress<number>) => Thenable<R>): Thenable<R>
在运行给定的回调函数期间以及在其返回的 Promise 未解析或拒绝时,在源代码管理视图中显示进度。
- 已弃用 - 请改用
withProgress。
workspace
用于处理当前工作区的命名空间。工作区是在编辑器窗口(实例)中打开的一个或多个文件夹的集合。
也可以在没有工作区的情况下打开编辑器。例如,当您通过从平台的“文件”菜单中选择一个文件来打开新编辑器窗口时,您将不在工作区中。在此模式下,编辑器的某些功能会受到限制,但您仍然可以打开文本文件并对其进行编辑。
有关工作区的概念,请参阅 https://vscode.js.cn/docs/editor/workspaces。
工作区支持 监听 fs 事件以及 查找 文件。两者性能都很好,并且在编辑器进程之外运行,因此应始终使用它们而不是 nodejs 等效项。
变量
fs: FileSystem
一个 文件系统 实例,允许与本地和远程文件进行交互,例如 vscode.workspace.fs.readDirectory(someUri) 允许检索目录的所有条目,或者 vscode.workspace.fs.stat(anotherUri) 返回文件的元数据。
如果为 true,则用户已明确信任工作区的內容。
工作区的名称。当没有打开工作区时为 undefined。
有关工作区的概念,请参阅 https://vscode.js.cn/docs/editor/workspaces。
notebookDocuments: readonly NotebookDocument[]
编辑器当前已知的所有笔记本文件。
string 形式的 workspaceFolders 的第一个条目的 URI。如果不存在第一个条目,则为 undefined。
有关工作区的概念,请参阅 https://vscode.js.cn/docs/editor/workspaces。
- 已弃用 - 请改用 workspaceFolders。
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>
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>
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>
onWillSaveTextDocument: Event<TextDocumentWillSaveEvent>
函数
applyEdit(edit: WorkspaceEdit, metadata?: WorkspaceEditMetadata): Thenable<boolean>
根据给定的 工作区编辑 来更改一个或多个资源,或创建、删除和重命名资源。
工作区编辑的所有更改都按其添加的顺序应用。如果多个文本插入发生在同一位置,这些字符串将按“插入”发生的顺序出现在结果文本中,除非它们与资源编辑交织在一起。无效的序列,如“删除文件 a”->“在文件 a 中插入文本”,会导致操作失败。
应用由文本编辑组成的工作区编辑时,将使用“全部或无”策略。包含资源创建或删除的工作区编辑将中止操作,例如,当单个编辑失败时,将不会尝试连续编辑。
| 参数 | 描述 |
|---|---|
| edit: WorkspaceEdit | 工作区编辑。 |
| metadata?: WorkspaceEditMetadata | 可选的 元数据。 |
| 返回值 | 描述 |
| Thenable<boolean> | 在编辑可以应用时解析的 Thenable。 |
asRelativePath(pathOrUri: string | Uri, includeWorkspaceFolder?: boolean): string
返回相对于工作区文件夹或文件夹的路径。
当没有 工作区文件夹 时,或者当路径不包含在其中时,将返回输入。
createFileSystemWatcher(globPattern: GlobPattern, ignoreCreateEvents?: boolean, ignoreChangeEvents?: boolean, ignoreDeleteEvents?: boolean): FileSystemWatcher
创建一个文件系统监视器,根据提供的参数,它会在文件事件(创建、更改、删除)上收到通知。
默认情况下,将监视所有打开的 工作区文件夹 的文件更改(递归)。
可以通过提供带有 base 路径以进行监视的 RelativePattern 来添加其他路径进行文件监视。如果路径是一个文件夹并且 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 | 要解码为 |
| 返回值 | 描述 |
| Thenable<string> | 一个解析为解码后的 |
decode(content: Uint8Array, options: {encoding: string}): Thenable<string>
使用提供的编码将 Uint8Array 的内容解码为 string。您必须一次性提供所有内容,以确保编码能够正确应用。请勿为此方法分块解码内容,这可能会导致结果不正确。
注意,如果您解码的内容不受编码支持,结果可能会包含适当的替换字符。
- 抛出 - 如果内容是二进制的,此方法将抛出错误。
| 参数 | 描述 |
|---|---|
| content: Uint8Array | 要解码为 |
| options: {encoding: string} | 选择编码的附加上下文。 |
| 返回值 | 描述 |
| Thenable<string> | 一个解析为解码后的 |
decode(content: Uint8Array, options: {uri: Uri}): Thenable<string>
将 Uint8Array 的内容解码为 string。您必须一次性提供所有内容,以确保编码能够正确应用。请勿为此方法分块解码内容,这可能会导致结果不正确。
将根据设置和缓冲区的内容(例如字节顺序标记)选择编码。
注意,如果您解码的内容不受编码支持,结果可能会包含适当的替换字符。
- 抛出 - 如果内容是二进制的,此方法将抛出错误。
| 参数 | 描述 |
|---|---|
| content: Uint8Array | 要解码为 |
| options: {uri: Uri} | 选择编码的附加上下文。 |
| 返回值 | 描述 |
| Thenable<string> | 一个解析为解码后的 |
encode(content: string): Thenable<Uint8Array>
将 string 的内容编码为 Uint8Array。
将根据设置选择编码。
| 参数 | 描述 |
|---|---|
| content: string | 要解码为 |
| 返回值 | 描述 |
| Thenable<Uint8Array> | 一个解析为编码后的 |
encode(content: string, options: {encoding: string}): Thenable<Uint8Array>
使用提供的编码将 string 的内容编码为 Uint8Array。
| 参数 | 描述 |
|---|---|
| content: string | 要解码为 |
| options: {encoding: string} | 选择编码的附加上下文。 |
| 返回值 | 描述 |
| Thenable<Uint8Array> | 一个解析为编码后的 |
encode(content: string, options: {uri: Uri}): Thenable<Uint8Array>
将 string 的内容编码为 Uint8Array。
将根据设置选择编码。
| 参数 | 描述 |
|---|---|
| content: string | 要解码为 |
| options: {uri: Uri} | 选择编码的附加上下文。 |
| 返回值 | 描述 |
| Thenable<Uint8Array> | 一个解析为编码后的 |
findFiles(include: GlobPattern, exclude?: GlobPattern, maxResults?: number, token?: CancellationToken): Thenable<Uri[]>
| 参数 | 描述 |
|---|---|
| include: GlobPattern | |
| exclude?: GlobPattern | 一个 glob 模式,用于定义要排除的文件和文件夹。该 glob 模式将与结果匹配项相对于其工作区的路径进行匹配。当为 |
| maxResults?: number | 结果的上限。 |
| token?: CancellationToken | 一个可用于向底层搜索引擎发出取消信号的 token。 |
| 返回值 | 描述 |
| Thenable<Uri[]> | 一个解析为资源标识符数组的 Thenable。如果没有打开 工作区文件夹,则返回无结果。 |
getConfiguration(section?: string, scope?: ConfigurationScope): WorkspaceConfiguration
获取工作区配置对象。
当提供节标识符时,将仅返回配置的该部分。节标识符中的点被解释为子访问,例如 { 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 | 工作区文件夹或 |
openNotebookDocument(uri: Uri): Thenable<NotebookDocument>
打开一个笔记本。如果此笔记本已加载,则会提前返回。否则,笔记本将被加载,并且会触发 onDidOpenNotebookDocument 事件。
请注意,返回的笔记本的生命周期由编辑器拥有,而不是由扩展拥有。这意味着 onDidCloseNotebookDocument 事件可能在打开后随时发生。
请注意,打开笔记本并不会显示笔记本编辑器。此函数仅返回一个笔记本文档,该文档可以在笔记本编辑器中显示,也可以用于其他目的。
| 参数 | 描述 |
|---|---|
| uri: Uri | 要打开的资源。 |
| 返回值 | 描述 |
| Thenable<NotebookDocument> | 解析为笔记本的 Promise。 |
openNotebookDocument(notebookType: string, content?: NotebookData): Thenable<NotebookDocument>
打开一个未命名笔记本。当文档要保存时,编辑器将提示用户输入文件路径。
| 参数 | 描述 |
|---|---|
| notebookType: string | 应使用的笔记本类型。 |
| content?: NotebookData | 笔记本的初始内容。 |
| 返回值 | 描述 |
| Thenable<NotebookDocument> | 解析为笔记本的 Promise。 |
openTextDocument(uri: Uri, options?: {encoding: string}): Thenable<TextDocument>
打开一个文档。如果文档已打开,则会提前返回。否则,文档将被加载,并且会触发 didOpen 事件。
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)) 的简写。
| 参数 | 描述 |
|---|---|
| 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。
请注意,必须打开一个具有提供资源的编辑器才能进行保存。
saveAll(includeUntitled?: boolean): Thenable<boolean>
保存所有脏文件。
| 参数 | 描述 |
|---|---|
| includeUntitled?: boolean | 也保存在此会话期间创建的文件。 |
| 返回值 | 描述 |
| Thenable<boolean> | 文件保存完成后解析的 thenable。对于任何未能保存的文件,将返回 |
saveAs(uri: Uri): Thenable<Uri | undefined>
将由给定资源标识的编辑器保存到用户提供的文件名,并返回结果资源,如果保存不成功、被取消或未找到具有给定资源的编辑器,则返回 undefined。
请注意,必须打开一个具有提供资源的编辑器才能另存为。
updateWorkspaceFolders(start: number, deleteCount: number, ...workspaceFoldersToAdd: Array<{name: string, uri: Uri}>): boolean
此方法将从索引 start 开始替换 deleteCount 个工作区文件夹,并可选地添加一组 workspaceFoldersToAdd 到 vscode.workspace.workspaceFolders 数组。这种“splice”行为可用于一次操作中添加、删除和更改工作区文件夹。
注意:在某些情况下,调用此方法可能会导致当前正在执行的扩展(包括调用此方法的扩展)被终止并重新启动。例如,当添加、删除或更改第一个工作区文件夹时,(已弃用的)rootPath 属性将被更新为指向第一个工作区文件夹。另一种情况是当从空工作区或单文件夹工作区过渡到多文件夹工作区时(另请参见:https://vscode.js.cn/docs/editor/workspaces)。
使用 onDidChangeWorkspaceFolders() 事件来获取工作区文件夹更新时的通知。
示例:在工作区文件夹末尾添加一个新的工作区文件夹。
workspace.updateWorkspaceFolders(workspace.workspaceFolders ? workspace.workspaceFolders.length : 0, null, { uri: ...});
示例:删除第一个工作区文件夹。
workspace.updateWorkspaceFolders(0, 1);
示例:用新的工作区文件夹替换现有工作区文件夹。
workspace.updateWorkspaceFolders(0, 1, { uri: ...});
可以将现有的工作区文件夹删除并以不同的名称重新添加,以重命名该文件夹。
注意:在等待 onDidChangeWorkspaceFolders() 触发之前,不能多次调用 updateWorkspaceFolders()。
AccessibilityInformation
控制屏幕阅读器行为的可访问性信息。
属性
当项目获得焦点时,屏幕阅读器会读取的标签。
小部件的角色,该角色定义了屏幕阅读器如何与其交互。当例如树状元素表现得像复选框时,应在特殊情况下设置角色。如果未指定角色,编辑器将自动选择适当的角色。有关 ARIA 角色的更多信息,请参见 https://w3c.github.io/aria/#widget_roles。
AuthenticationForceNewSessionOptions
在将标志 forceNewSession 用于 authentication.getSession 时使用的可选选项。
- 已弃用 - 请改用 AuthenticationGetSessionPresentationOptions。
AuthenticationForceNewSessionOptions: AuthenticationGetSessionPresentationOptions
AuthenticationGetSessionOptions
在从 AuthenticationProvider 获取 AuthenticationSession 时使用的选项。
属性
account?: AuthenticationSessionAccountInformation
您希望获取会话的帐户。这会传递给身份验证提供程序,用于创建正确的会话。
clearSessionPreference?: boolean
是否应清除现有的会话偏好设置。
对于支持一次登录多个帐户的身份验证提供程序,当调用 getSession 时,将提示用户选择要使用的帐户。此偏好设置将一直保留,直到调用 getSession 并设置此标志。
注意:偏好设置特定于扩展。因此,如果一个扩展调用 getSession,它不会影响另一个扩展调用 getSession 的会话偏好设置。此外,偏好设置是为当前工作区和全局设置的。这意味着新的工作区将首先使用“全局”值,然后当提供此标志时,可以为该工作区设置新值。这也意味着预先存在的工作区不会丢失其偏好设置,如果新工作区设置了此标志。
默认为 false。
createIfNone?: boolean | AuthenticationGetSessionPresentationOptions
如果没有匹配的会话,是否应执行登录。
如果为 true,将显示一个模态对话框,要求用户登录。如果为 false,将在帐户活动栏图标上显示一个编号徽章。将在菜单下添加扩展的条目以登录。这允许悄悄提示用户登录。
如果您提供选项,您也会看到对话框,但带有提供的附加上下文。
如果存在匹配的会话但扩展尚未获得访问权限,则将此设置为 true 也将导致立即显示模态对话框,而 false 将在帐户图标上添加编号徽章。
默认为 false。
注意:您不能将此选项与 silent 一起使用。
forceNewSession?: boolean | AuthenticationGetSessionPresentationOptions
即使已有会话可用,是否应尝试重新进行身份验证。
如果为 true,将显示一个模态对话框,要求用户再次登录。这主要用于需要重新颁发令牌的场景,因为令牌已丢失某些授权。
如果您提供选项,您也会看到对话框,但带有提供的附加上下文。
如果没有现有会话且 forceNewSession 为 true,则其行为将与 createIfNone 完全相同。
默认为 false。
是否应在帐户菜单中显示登录指示。
如果为 false,用户将在帐户菜单上看到一个带有扩展登录选项的徽章。如果为 true,则不会显示任何指示。
默认为 false。
注意:您不能将此选项与任何其他会提示用户的选项(如 createIfNone)一起使用。
AuthenticationGetSessionPresentationOptions
使用交互式选项 forceNewSession 和 createIfNone 调用 authentication.getSession 时使用的可选选项。
属性
当要求用户重新进行身份验证时,将显示给用户的可选消息。提供额外的上下文说明为何要求用户重新进行身份验证,有助于提高他们接受的可能性。
AuthenticationProvider
用于执行服务身份验证的提供程序。
事件
onDidChangeSessions: Event<AuthenticationProviderAuthenticationSessionsChangeEvent>
当会话数组发生更改或会话中的数据发生更改时触发的 Event。
方法
createSession(scopes: readonly string[], options: AuthenticationProviderSessionOptions): Thenable<AuthenticationSession>
提示用户登录。
如果登录成功,应触发 onDidChangeSessions 事件。
如果登录失败,应返回一个被拒绝的 Promise。
如果提供程序已指定不支持多个帐户,则当存在与这些范围匹配的现有会话时,不应调用此方法。
| 参数 | 描述 |
|---|---|
| scopes: readonly string[] | 新会话应创建的范围(权限)列表。 |
| options: AuthenticationProviderSessionOptions | 创建会话的附加选项。 |
| 返回值 | 描述 |
| Thenable<AuthenticationSession> | 解析为身份验证会话的 Promise。 |
getSessions(scopes: readonly string[], options: AuthenticationProviderSessionOptions): Thenable<AuthenticationSession[]>
获取会话列表。
| 参数 | 描述 |
|---|---|
| scopes: readonly string[] | 可选的范围列表。如果提供,则返回的会话应与这些权限匹配,否则应返回所有会话。 |
| options: AuthenticationProviderSessionOptions | 获取会话的附加选项。 |
| 返回值 | 描述 |
| Thenable<AuthenticationSession[]> | 解析为身份验证会话数组的 Promise。 |
removeSession(sessionId: string): Thenable<void>
删除与会话 ID 对应的会话。
如果删除成功,应触发 onDidChangeSessions 事件。
如果无法删除会话,提供程序应以错误消息拒绝。
| 参数 | 描述 |
|---|---|
| sessionId: string | 要删除的会话的 ID。 |
| 返回值 | 描述 |
| Thenable<void> |
AuthenticationProviderAuthenticationSessionsChangeEvent
当 AuthenticationSession 被添加、删除或更改时触发的 Event。
属性
added: readonly AuthenticationSession[]
changed: readonly AuthenticationSession[]
AuthenticationProvider 已更改的 AuthenticationSessions。当会话的数据(不包括 ID)更新时,会话会发生更改。一个例子是会话刷新,导致为该会话设置了新的访问令牌。
removed: readonly AuthenticationSession[]
AuthenticationProviderInformation
关于 AuthenticationProvider 的基本信息。
属性
身份验证提供程序的唯一标识符。
身份验证提供程序的易读名称。
AuthenticationProviderOptions
创建 AuthenticationProvider 的选项。
属性
supportsMultipleAccounts?: boolean
是否可以与此提供程序同时登录多个帐户。如果未指定,则默认为 false。
AuthenticationProviderSessionOptions
属性
account?: AuthenticationSessionAccountInformation
正在查询的帐户。如果提供了此项,提供程序应尝试返回仅与此帐户相关的会话。
AuthenticationSession
表示当前登录用户的会话。
属性
访问令牌。此令牌应用于对服务进行身份验证的请求。由 OAuth 普及。
account: AuthenticationSessionAccountInformation
与会话关联的帐户。
身份验证会话的标识符。
ID 令牌。此令牌包含用户的身份信息。由 OpenID Connect 普及。
会话访问令牌授予的权限。可用范围由 AuthenticationProvider 定义。
AuthenticationSessionAccountInformation
与 AuthenticationSession 关联的帐户的信息。
属性
帐户的唯一标识符。
帐户的易读名称。
AuthenticationSessionsChangeEvent
当 AuthenticationSession 被添加、删除或更改时触发的 Event。
属性
provider: AuthenticationProviderInformation
其会话已更改的 AuthenticationProvider。
AuthenticationWwwAuthenticateRequest
表示基于 WWW-Authenticate 标头值创建会话的参数。当 API 返回 401 并带有指示需要其他身份验证的 WWW-Authenticate 标头时使用此参数。其详细信息将传递给身份验证提供程序以创建会话。
- 注意 - 授权提供程序必须支持处理挑战,特别是此 WWW-Authenticate 值中的挑战。
- 注意 - 有关 WWW-Authenticate 的更多信息,请参阅 https://mdn.org.cn/docs/Web/HTTP/Reference/Headers/WWW-Authenticate。
属性
fallbackScopes?: readonly string[]
如果在 WWW-Authenticate 标头中找不到范围,则使用的备用范围。
触发此挑战的原始 WWW-Authenticate 标头值。该值将被身份验证提供程序解析以提取必要的挑战信息。
AutoClosingPair
描述字符串对,在键入开头的字符串时会自动插入结束字符串。
属性
键入开头的字符串时将自动插入的结束字符串。
notIn?: SyntaxTokenType[]
不应自动关闭配对的令牌集。
将触发自动插入结束字符串的字符串。
BranchCoverage
包含 StatementCoverage 分支的覆盖率信息。
构造函数
new BranchCoverage(executed: number | boolean, location?: Range | Position, label?: string): BranchCoverage
| 参数 | 描述 |
|---|---|
| executed: number | boolean | 此分支执行的次数,或指示其是否已执行的布尔值(如果确切计数未知)。如果为零或 false,则该分支将被标记为未覆盖。 |
| location?: Range | Position | 分支位置。 |
| label?: string | |
| 返回值 | 描述 |
| BranchCoverage |
属性
此分支执行的次数,或指示其是否已执行的布尔值(如果确切计数未知)。如果为零或 false,则该分支将被标记为未覆盖。
分支的标签,用于“未采用 ${label} 分支”的上下文,例如。
分支位置。
断点
所有断点类型的基类。
构造函数
new Breakpoint(enabled?: boolean, condition?: string, hitCondition?: string, logMessage?: string): Breakpoint
创建新的断点
| 参数 | 描述 |
|---|---|
| enabled?: boolean | 断点是否已启用。 |
| condition?: string | 条件断点的表达式 |
| hitCondition?: string | 控制断点命中次数的表达式 |
| logMessage?: string | 断点命中时显示的日志消息 |
| 返回值 | 描述 |
| 断点 |
属性
条件断点的可选表达式。
断点是否已启用。
可选表达式,用于控制忽略断点多少次命中。
断点的唯一 ID。
断点命中时要记录的可选消息。{} 中的嵌入表达式由调试适配器进行插值。
断点更改事件
描述 断点 集合更改的事件。
属性
added: readonly Breakpoint[]
添加的断点。
changed: readonly Breakpoint[]
更改的断点。
removed: readonly Breakpoint[]
删除的断点。
调用层次结构传入调用
表示一个传入调用,例如方法或构造函数的调用者。
构造函数
new CallHierarchyIncomingCall(item: CallHierarchyItem, fromRanges: Range[]): CallHierarchyIncomingCall
创建新的调用对象。
| 参数 | 描述 |
|---|---|
| item: CallHierarchyItem | 发起调用的项。 |
| fromRanges: Range[] | 调用出现的范围。 |
| 返回值 | 描述 |
| 调用层次结构传入调用 |
属性
from: CallHierarchyItem
发起调用的项。
fromRanges: Range[]
调用出现的范围。这相对于由 this.from 表示的调用者。
调用层次结构项
在调用层次结构的上下文中表示函数或构造函数等编程构造。
构造函数
new CallHierarchyItem(kind: SymbolKind, name: string, detail: string, uri: Uri, range: Range, selectionRange: Range): CallHierarchyItem
创建新的调用层次结构项。
| 参数 | 描述 |
|---|---|
| kind: SymbolKind | |
| name: string | |
| detail: string | |
| uri: Uri | |
| range: Range | |
| selectionRange: Range | |
| 返回值 | 描述 |
| 调用层次结构项 |
属性
此项的更多详细信息,例如函数的签名。
kind: SymbolKind
此项的种类。
此项的名称。
range: Range
包含此符号的范围,不包括前导/尾随空格,但包括其他所有内容,例如注释和代码。
selectionRange: Range
选择和显示此符号时应选择和显示的范围,例如函数名称。必须包含在 range 中。
tags?: readonly SymbolTag[]
此项的标签。
uri: Uri
此项的资源标识符。
调用层次结构传出调用
表示一个传出调用,例如从方法调用 getter,或从构造函数调用方法等。
构造函数
new CallHierarchyOutgoingCall(item: CallHierarchyItem, fromRanges: Range[]): CallHierarchyOutgoingCall
创建新的调用对象。
| 参数 | 描述 |
|---|---|
| item: CallHierarchyItem | 被调用的项 |
| fromRanges: Range[] | 调用出现的范围。 |
| 返回值 | 描述 |
| 调用层次结构传出调用 |
属性
fromRanges: Range[]
调用此项的范围。这是相对于调用者的范围,例如传递给 provideCallHierarchyOutgoingCalls 的项,而不是 this.to。
被调用的项。
调用层次结构提供程序
调用层次结构提供程序接口描述了扩展和调用层次结构功能之间的约定,该功能允许浏览函数、方法、构造函数等的调用和调用者。
方法
prepareCallHierarchy(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<CallHierarchyItem | CallHierarchyItem[]>
通过返回由给定文档和位置表示的项来引导调用层次结构。此项将用作进入调用图的入口。如果给定位置没有项,提供程序应返回 undefined 或 null。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<CallHierarchyItem | CallHierarchyItem[]> | 一个或多个调用层次结构项,或一个解析为此类项的 thenable。可以通过返回 |
provideCallHierarchyIncomingCalls(item: CallHierarchyItem, token: CancellationToken): ProviderResult<CallHierarchyIncomingCall[]>
提供项的所有传入调用,例如方法的所有调用者。在图论术语中,这描述了调用图内的有向和注解边,例如给定的项是起始节点,结果是可以到达的节点。
| 参数 | 描述 |
|---|---|
| item: CallHierarchyItem | 应为其计算传入调用的层次结构项。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<CallHierarchyIncomingCall[]> | 一组传入调用,或一个解析为此类调用的 thenable。可以通过返回 |
provideCallHierarchyOutgoingCalls(item: CallHierarchyItem, token: CancellationToken): ProviderResult<CallHierarchyOutgoingCall[]>
提供项的所有传出调用,例如从给定项调用函数、方法或构造函数。在图论术语中,这描述了调用图内的有向和注解边,例如给定的项是起始节点,结果是可以到达的节点。
| 参数 | 描述 |
|---|---|
| item: CallHierarchyItem | 应为其计算传出调用的层次结构项。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<CallHierarchyOutgoingCall[]> | 一组传出调用,或一个解析为此类调用的 thenable。可以通过返回 |
取消错误
应使用此错误类型来指示操作已取消。
此类型可用于响应 取消令牌 被取消,或当操作被该操作的执行者取消时。
构造函数
new CancellationError(): CancellationError
创建新的取消错误。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| 取消错误 |
取消令牌
取消令牌会传递给异步或长时间运行的操作以请求取消,例如,因为用户继续输入而取消补全项的请求。
要获取 CancellationToken 的实例,请使用 CancellationTokenSource。
属性
isCancellationRequested: boolean
当令牌被取消时为 true,否则为 false。
onCancellationRequested: Event<any>
在取消时触发的 事件。
取消令牌源
取消源创建并控制 取消令牌。
构造函数
new CancellationTokenSource(): CancellationTokenSource
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| 取消令牌源 |
属性
token: CancellationToken
此源的取消令牌。
方法
在令牌上发出取消信号。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
释放对象并回收资源。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
字符对
一对字符,例如一对开括号和闭括号。
CharacterPair: [string, string]
聊天上下文
传递给参与者的额外上下文。
属性
history: ReadonlyArray<ChatRequestTurn | ChatResponseTurn>
当前聊天会话中到目前为止的所有聊天消息。目前,仅包含当前参与者的聊天消息。
聊天错误详情
表示聊天请求的错误结果。
属性
显示给用户的错误消息。
如果设置为 true,则响应将被部分模糊。
聊天后续问题
参与者建议的后续问题。
属性
默认情况下,后续问题会发送到相同的参与者/命令。但可以设置此属性来调用不同的命令。
向用户显示的标题。如果不指定,将默认显示提示。
默认情况下,后续问题会发送到相同的参与者/命令。但可以设置此属性通过 ID 调用不同的参与者。后续问题只能调用由同一扩展名贡献的参与者。
发送到聊天的消息。
聊天后续问题提供程序
每次请求后都会调用一次,以获取建议的后续问题显示给用户。用户可以点击后续问题将其发送到聊天。
方法
provideFollowups(result: ChatResult, context: ChatContext, token: CancellationToken): ProviderResult<ChatFollowup[]>
为给定结果提供后续问题。
| 参数 | 描述 |
|---|---|
| result: ChatResult | 此对象具有与参与者回调返回的结果相同的属性,包括 |
| context: ChatContext | 传递给参与者的额外上下文。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<ChatFollowup[]> |
聊天语言模型工具引用
用户通过 # 语法内联或通过回形针按钮作为附件手动附加到其请求的工具的引用。
属性
工具的名称。指向 lm.tools 中列出的工具。
range?: [start: number, end: number]
在 prompt 中引用的开始和结束索引。如果未定义,则引用不是 prompt 文本的一部分。
注意,索引包含前导 # 字符,这意味着它们可用于按原样修改 prompt。
聊天参与者
聊天参与者可以通过 前缀在聊天会话中被用户调用。当调用它时,它会处理聊天请求,并仅负责向用户提供响应。聊天参与者使用 chat.createChatParticipant 创建。
事件
onDidReceiveFeedback: Event<ChatResultFeedback>
每当收到结果反馈时(例如,当用户对结果进行点赞或点踩时)都会触发的事件。
传递的 result 保证具有与此聊天参与者处理程序先前返回的结果相同的属性。
属性
followupProvider?: ChatFollowupProvider
每次请求后都会调用此提供程序来检索建议的后续问题。
iconPath?: IconPath
用于在 UI 中显示参与者的图标。
此参与者的唯一 ID。
requestHandler: ChatRequestHandler
此参与者请求的处理程序。
方法
释放此参与者并回收资源。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
聊天参与者工具令牌
在处理聊天请求的上下文中调用 lm.invokeTool 时可以传递给它的令牌。
ChatParticipantToolToken: never
聊天提示引用
对用户添加到其聊天请求的值的引用。
属性
此类引用的唯一标识符。
可以用于 LLM prompt 的此值的描述。
range?: [start: number, end: number]
在 prompt 中引用的开始和结束索引。如果未定义,则引用不是 prompt 文本的一部分。
注意,索引包含前导 # 字符,这意味着它们可用于按原样修改 prompt。
此引用的值。今天使用 string | Uri | Location 类型,但未来可能会扩展。
聊天请求
向聊天参与者的请求。
属性
为此请求选择的 ChatCommand 的名称。
model: LanguageModelChat
这是当前在 UI 中选择的模型。扩展可以使用此模型,或使用 lm.selectChatModels 来选择另一个模型。请勿在请求生命周期之外保留此模型。
用户输入的提示。
有关此请求中使用的引用的信息存储在 ChatRequest.references 中。
注意,参与者的 [ChatParticipant.name name](#_ChatParticipant.name name) 和 [ChatCommand.name command](#_ChatCommand.name command) 不在 prompt 中。
references: readonly ChatPromptReference[]
在 prompt 中引用的引用及其值的列表。
注意,prompt 包含作者输入的引用,由参与者进一步修改,例如通过内联引用值或创建指向包含已解析值的标题的链接。引用按其在 prompt 中的范围反向排序。这意味着 prompt 中的最后一个引用是此列表中的第一个。这简化了 prompt 的字符串操作。
在处理聊天请求的上下文中调用 lm.invokeTool 时可以传递给它的令牌。这会将工具调用与聊天会话关联起来。
toolReferences: readonly ChatLanguageModelToolReference[]
用户附加到其请求的工具列表。
当存在工具引用时,聊天参与者应使用 LanguageModelChatToolMode.Required 进行聊天请求,以强制语言模型为工具生成输入。然后,参与者可以使用 lm.invokeTool 来使用该工具,并将结果附加到其对用户 prompt 的请求中。该工具可能为用户的请求提供有用的额外上下文。
聊天请求处理程序
ChatRequestHandler: (request: ChatRequest, context: ChatContext, response: ChatResponseStream, token: CancellationToken) => ProviderResult<ChatResult | void>
聊天请求轮次
表示聊天历史中的用户请求。
属性
为此请求选择的 ChatCommand 的名称。
此请求的目标聊天参与者的 ID。
用户输入的提示。
有关此消息中使用的引用的信息存储在 ChatRequestTurn.references 中。
注意,参与者的 [ChatParticipant.name name](#_ChatParticipant.name name) 和 [ChatCommand.name command](#_ChatCommand.name command) 不在 prompt 中。
references: ChatPromptReference[]
此消息中使用的引用。
toolReferences: readonly ChatLanguageModelToolReference[]
附加到此请求的工具列表。
聊天响应锚点部分
表示聊天响应中作为锚点(呈现为指向目标的链接)的部分。
构造函数
new ChatResponseAnchorPart(value: Uri | Location, title?: string): ChatResponseAnchorPart
创建一个新的 ChatResponseAnchorPart。
| 参数 | 描述 |
|---|---|
| value: Uri | Location | 一个 URI 或位置。 |
| title?: string | 与 value 一起渲染的可选标题。 |
| 返回值 | 描述 |
| ChatResponseAnchorPart |
属性
与 value 一起渲染的可选标题。
此锚点的目标。
ChatResponseCommandButtonPart
表示聊天响应中可执行命令的按钮部分。
构造函数
new ChatResponseCommandButtonPart(value: Command): ChatResponseCommandButtonPart
创建一个新的 ChatResponseCommandButtonPart。
| 参数 | 描述 |
|---|---|
| value: Command | 点击按钮时将执行的命令。 |
| 返回值 | 描述 |
| ChatResponseCommandButtonPart |
属性
value: Command
点击按钮时将执行的命令。
ChatResponseFileTree
表示聊天响应中的文件树结构。
属性
children?: ChatResponseFileTree[]
子文件树的数组,如果当前文件树是目录。
文件或目录的名称。
ChatResponseFileTreePart
表示聊天响应中文件树部分。
构造函数
new ChatResponseFileTreePart(value: ChatResponseFileTree[], baseUri: Uri): ChatResponseFileTreePart
创建一个新的 ChatResponseFileTreePart。
| 参数 | 描述 |
|---|---|
| value: ChatResponseFileTree[] | 文件树数据。 |
| baseUri: Uri | 此文件树的相对基础 URI。 |
| 返回值 | 描述 |
| ChatResponseFileTreePart |
属性
baseUri: Uri
此文件树的相对基础 URI
value: ChatResponseFileTree[]
文件树数据。
ChatResponseMarkdownPart
表示聊天响应中以 Markdown 格式化部分。
构造函数
new ChatResponseMarkdownPart(value: string | MarkdownString): ChatResponseMarkdownPart
创建一个新的 ChatResponseMarkdownPart。
| 参数 | 描述 |
|---|---|
| value: string | MarkdownString | Markdown 字符串或应解释为 Markdown 的字符串。不支持 MarkdownString.isTrusted 的布尔形式。 |
| 返回值 | 描述 |
| ChatResponseMarkdownPart |
属性
value: MarkdownString
Markdown 字符串或应解释为 Markdown 的字符串。
ChatResponsePart
表示不同的聊天响应类型。
ChatResponsePart: ChatResponseMarkdownPart | ChatResponseFileTreePart | ChatResponseAnchorPart | ChatResponseProgressPart | ChatResponseReferencePart | ChatResponseCommandButtonPart
ChatResponseProgressPart
表示聊天响应中进度消息的部分。
构造函数
new ChatResponseProgressPart(value: string): ChatResponseProgressPart
创建一个新的 ChatResponseProgressPart。
| 参数 | 描述 |
|---|---|
| value: string | 进度消息 |
| 返回值 | 描述 |
| ChatResponseProgressPart |
属性
进度消息
ChatResponseReferencePart
表示聊天响应中单独渲染于内容之外的引用部分。
构造函数
new ChatResponseReferencePart(value: Uri | Location, iconPath?: IconPath): ChatResponseReferencePart
创建一个新的 ChatResponseReferencePart。
| 参数 | 描述 |
|---|---|
| value: Uri | Location | 一个 URI 或位置 |
| iconPath?: IconPath | UI 中显示的引用的图标 |
| 返回值 | 描述 |
| ChatResponseReferencePart |
属性
iconPath?: IconPath
引用的图标。
引用的目标。
ChatResponseStream
ChatResponseStream 是参与者向聊天视图返回内容的方式。它提供了几种流式传输不同类型内容的方法,这些内容将在聊天视图中以适当的方式呈现。参与者可以根据其要返回的内容类型使用辅助方法,也可以实例化一个 ChatResponsePart 并使用通用的 ChatResponseStream.push 方法返回它。
方法
anchor(value: Uri | Location, title?: string): void
将锚点部分推送到此流。push(new ChatResponseAnchorPart(value, title)) 的简写。锚点是对某种资源的内联引用。
button(command: Command): void
将命令按钮部分推送到此流。push(new ChatResponseCommandButtonPart(value, title)) 的简写。
| 参数 | 描述 |
|---|---|
| command: Command | 点击按钮时将执行的命令。 |
| 返回值 | 描述 |
| void |
filetree(value: ChatResponseFileTree[], baseUri: Uri): void
将文件树部分推送到此流。push(new ChatResponseFileTreePart(value)) 的简写。
| 参数 | 描述 |
|---|---|
| value: ChatResponseFileTree[] | 文件树数据。 |
| baseUri: Uri | 此文件树的相对基础 URI。 |
| 返回值 | 描述 |
| void |
markdown(value: string | MarkdownString): void
将 Markdown 部分推送到此流。push(new ChatResponseMarkdownPart(value)) 的简写。
| 参数 | 描述 |
|---|---|
| value: string | MarkdownString | Markdown 字符串或应解释为 Markdown 的字符串。不支持 MarkdownString.isTrusted 的布尔形式。 |
| 返回值 | 描述 |
| void |
将进度部分推送到此流。push(new ChatResponseProgressPart(value)) 的简写。
| 参数 | 描述 |
|---|---|
| value: string | 进度消息 |
| 返回值 | 描述 |
| void |
push(part: ChatResponsePart): void
将一部分内容推送到此流。
| 参数 | 描述 |
|---|---|
| part: ChatResponsePart | 响应的一部分,已呈现或元数据 |
| 返回值 | 描述 |
| void |
reference(value: Uri | Location, iconPath?: IconPath): void
将引用推送到此流。push(new ChatResponseReferencePart(value)) 的简写。
注意,引用不会与响应一起内联呈现。
ChatResponseTurn
表示聊天参与者在聊天历史中的响应。
属性
此响应来自的命令名称。
此响应来自的聊天参与者的 ID。
response: ReadonlyArray<ChatResponseMarkdownPart | ChatResponseFileTreePart | ChatResponseAnchorPart | ChatResponseCommandButtonPart>
从聊天参与者收到的内容。只表示表示实际内容的流部分(非元数据)。
result: ChatResult
从聊天参与者收到的结果。
ChatResult
聊天请求的结果。
属性
errorDetails?: ChatErrorDetails
如果请求导致错误,则此属性定义了错误详细信息。
此结果的任意元数据。可以是任何内容,但必须是可 JSON 字符串化的。
ChatResultFeedback
表示用户对结果的反馈。
属性
kind: ChatResultFeedbackKind
收到的反馈类型。
result: ChatResult
用户提供反馈的 ChatResult。此对象具有与参与者回调返回的结果相同的属性,包括 metadata,但不是同一个实例。
ChatResultFeedbackKind
表示收到的用户反馈的类型。
枚举成员
用户将结果标记为无用。
用户将结果标记为有用。
Clipboard
剪贴板提供对系统剪贴板的读写访问。
方法
将当前剪贴板内容读取为文本。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| Thenable<string> | 一个可解析为字符串的 thenable。 |
writeText(value: string): Thenable<void>
将文本写入剪贴板。
| 参数 | 描述 |
|---|---|
| value: string | |
| 返回值 | 描述 |
| Thenable<void> | 写入完成后可解析的 thenable。 |
CodeAction
构造函数
new CodeAction(title: string, kind?: CodeActionKind): CodeAction
| 参数 | 描述 |
|---|---|
| title: string | 代码操作的标题。 |
| kind?: CodeActionKind | 代码操作的种类。 |
| 返回值 | 描述 |
| CodeAction |
属性
command?: Command
此代码操作执行的 Command。
如果此命令抛出异常,编辑器将在当前光标位置向用户显示异常消息。
diagnostics?: Diagnostic[]
Diagnostics,此代码操作将解决这些问题。
标记代码操作当前无法应用。
| 参数 | 描述 |
|---|---|
| reason: string | 关于代码操作当前为何被禁用的易于理解的描述。 这将在代码操作 UI 中显示。 |
edit?: WorkspaceEdit
此代码操作执行的 workspace edit。
将其标记为首选操作。首选操作由 auto fix 命令使用,并且可以通过按键绑定进行定位。
快速修复应被标记为首选,如果它能正确解决潜在的错误。重构应被标记为首选,如果它是最合理的操作选择。
kind?: CodeActionKind
代码操作的 Kind。
用于过滤代码操作。
此代码操作的简短、易于理解的标题。
CodeActionContext
包含有关运行 代码操作时所处上下文的附加诊断信息。
属性
diagnostics: readonly Diagnostic[]
诊断的数组。
only: CodeActionKind
请求返回的操作种类。
在此种类之外的操作将在 灯泡显示之前被过滤掉。
triggerKind: CodeActionTriggerKind
请求代码操作的原因。
CodeActionKind
代码操作的种类。
种类是由 . 分隔的标识符的层次结构列表,例如 "refactor.extract.function"。
代码操作种类用于编辑器中的 UI 元素,例如重构上下文菜单。用户也可以使用 editor.action.codeAction 命令触发具有特定种类的代码操作。
静态
Empty: CodeActionKind
空种类。
Notebook: CodeActionKind
适用于整个笔记本范围的所有代码操作的基础种类。使用此种类的 CodeActionKind 应始终以 notebook. 开头
这要求为新代码操作创建它们并由扩展贡献。预先存在的种类不能仅添加新的 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: CodeActionKind
快速修复操作的基础种类:quickfix。
快速修复操作旨在解决代码中的问题,并在常规代码操作上下文菜单中显示。
Refactor: CodeActionKind
重构操作的基础种类:refactor
重构操作显示在重构上下文菜单中。
RefactorExtract: CodeActionKind
重构提取操作的基础种类:refactor.extract
示例提取操作
- 提取方法
- 提取函数
- 提取变量
- 从类中提取接口
- ...
RefactorInline: CodeActionKind
重构内联操作的基础种类:refactor.inline
示例内联操作
- 内联函数
- 内联变量
- 内联常量
- ...
RefactorMove: CodeActionKind
重构移动操作的基础种类:refactor.move
示例移动操作
- 将函数移动到新文件
- 在类之间移动属性
- 将方法移动到基类
- ...
RefactorRewrite: CodeActionKind
重构重写操作的基础种类:refactor.rewrite
示例重写操作
- 将 JavaScript 函数转换为类
- 添加或删除参数
- 封装字段
- 将方法设为静态
- ...
Source: CodeActionKind
源操作的基础种类:source
源代码操作应用于整个文件。它们必须显式请求,并且不会显示在常规的 灯泡菜单中。源操作可以在保存时使用 editor.codeActionsOnSave 运行,并且也会显示在 source 上下文菜单中。
SourceFixAll: CodeActionKind
自动修复源操作的基础种类:source.fixAll。
修复所有操作会尝试自动修复没有明确修复且不需要用户输入的问题。它们不应抑制错误或执行不安全的操作,例如生成新类型或类。
SourceOrganizeImports: CodeActionKind
组织导入源操作的基础种类:source.organizeImports。
构造函数
new CodeActionKind(value: string): CodeActionKind
私有构造函数,请使用静态 CodeActionKind.XYZ 从现有的代码操作种类派生。
| 参数 | 描述 |
|---|---|
| value: string | 种类的值,例如 |
| 返回值 | 描述 |
| CodeActionKind |
属性
种类的字符串值,例如 "refactor.extract.function"。
方法
append(parts: string): CodeActionKind
通过将更具体的选择器附加到当前种类来创建新种类。
不会修改当前种类。
| 参数 | 描述 |
|---|---|
| parts: string | |
| 返回值 | 描述 |
| CodeActionKind |
contains(other: CodeActionKind): boolean
检查 other 是否是此 CodeActionKind 的子种类。
例如,"refactor.extract" 种类包含 "refactor.extract" 和 "refactor.extract.function",但不包含 "unicorn.refactor.extract",或 "refactor.extractAll" 或 refactor。
| 参数 | 描述 |
|---|---|
| other: CodeActionKind | 要检查的种类。 |
| 返回值 | 描述 |
| 布尔值 |
intersects(other: CodeActionKind): boolean
检查此代码操作种类是否与 other 相交。
例如,"refactor.extract" 种类与 refactor、"refactor.extract" 和 "refactor.extract.function" 相交,但不与 "unicorn.refactor.extract" 或 "refactor.extractAll" 相交。
| 参数 | 描述 |
|---|---|
| other: CodeActionKind | 要检查的种类。 |
| 返回值 | 描述 |
| 布尔值 |
CodeActionProvider<T>
提供代码的上下文操作。代码操作通常用于修复问题或美化/重构代码。
代码操作通过几种不同的方式呈现给用户
灯泡功能,它在当前光标位置显示代码操作列表。灯泡的操作列表包括快速修复和重构。- 作为用户可以运行的命令,例如
Refactor。用户可以从命令面板或使用按键绑定运行这些命令。 - 作为源操作,例如
Organize Imports。 - 快速修复显示在问题视图中。
- 由
editor.codeActionsOnSave设置在保存时应用的更改。
方法
provideCodeActions(document: TextDocument, range: Range | Selection, context: CodeActionContext, token: CancellationToken): ProviderResult<Array<Command | T>>
获取文档中给定范围的代码操作。
仅为请求的范围返回与用户相关的代码操作。另外,请牢记返回的代码操作在 UI 中的显示方式。例如,灯泡小部件和 `Refactor` 命令会将返回的代码操作显示为列表,因此不要返回过多可能使用户不知所措的代码操作。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| range: Range | Selection | 调用命令的选择器或范围。如果正在请求当前活动编辑器中的代码操作,则始终是 selection。 |
| context: CodeActionContext | 提供有关正在请求哪些代码操作的附加信息。您可以使用此信息来查看编辑器正在请求哪种特定类型的代码操作,以便返回更相关的操作并避免返回编辑器将丢弃的无关代码操作。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<Array<Command | T>> | 代码操作数组,例如快速修复或重构。可以通过返回 `undefined`、`null` 或空数组来表示缺少结果。 我们还出于向后兼容的原因支持返回 `Command`,但所有新扩展都应返回 `CodeAction` 对象。 |
resolveCodeAction(codeAction: T, token: CancellationToken): ProviderResult<T>
给定一个代码操作,填写其 edit 属性。其他所有属性(如 title)的更改将被忽略。具有 edit 的代码操作将不会被解析。
请注意,返回命令而非代码操作的代码操作提供程序无法成功实现此函数。返回命令已弃用,应改用代码操作。
| 参数 | 描述 |
|---|---|
| codeAction: T | 一个代码操作。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T> | 已解析的代码操作或解析为该操作的 thenable。返回给定的 `item` 也是可以的。当没有返回结果时,将使用给定的 `item`。 |
CodeActionProviderMetadata
有关 CodeActionProvider 所提供代码操作类型的元数据。
属性
documentation?: ReadonlyArray<{command: Command, kind: CodeActionKind}>
一组代码操作的静态文档。
当满足以下任一条件时,将显示来自提供程序的文档:
编辑器请求了 `kind` 类型的代码操作。在这种情况下,编辑器将显示与所请求的代码操作类型最匹配的文档。例如,如果提供程序同时拥有 `Refactor` 和 `RefactorExtract` 的文档,当用户请求 `RefactorExtract` 的代码操作时,编辑器将使用 `RefactorExtract` 的文档,而不是 `Refactor` 的文档。
提供程序返回了 `kind` 类型的任何代码操作。
每个提供程序最多显示一条文档条目。
providedCodeActionKinds?: readonly CodeActionKind[]
CodeActionProvider 可能返回的 CodeActionKind 列表。
此列表用于确定是否应调用给定的 `CodeActionProvider`。为避免不必要的计算,每个 `CodeActionProvider` 都应列出 `providedCodeActionKinds`。种类列表可以是通用的,例如 `[CodeActionKind.Refactor]`,或者列出提供的所有种类,例如 `[CodeActionKind.Refactor.Extract.append('function'), CodeActionKind.Refactor.Extract.append('constant'), ...]`。
CodeActionTriggerKind
请求代码操作的原因。
枚举成员
代码操作由用户或扩展显式请求。
代码操作是自动请求的。
这通常发生在文件中的当前选择发生更改时,但也可以在文件内容更改时触发。
CodeLens
代码 Lens 表示一个应与源代码一起显示的 Command,例如引用次数、运行测试的方法等。
当没有关联命令时,代码 Lens 是未解析的。出于性能原因,代码 Lens 的创建和解析应分两个阶段进行。
另请参阅
构造函数
new CodeLens(range: Range, command?: Command): CodeLens
属性
command?: Command
此代码 Lens 所代表的命令。
当有关联命令时为 `true`。
range: Range
此代码 Lens 有效的范围。应仅跨单行。
CodeLensProvider<T>
代码 Lens 提供程序会在源代码文本中添加 命令。这些命令将显示在源代码文本之间的专用水平行上。
事件
onDidChangeCodeLenses?: Event<void>
一个可选的事件,用于指示此提供程序的代码 Lens 已更改。
方法
provideCodeLenses(document: TextDocument, token: CancellationToken): ProviderResult<T[]>
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T[]> | 代码 Lens 数组或解析为该数组的 thenable。可以通过返回 `undefined`、`null` 或空数组来表示缺少结果。 |
resolveCodeLens(codeLens: T, token: CancellationToken): ProviderResult<T>
此函数将针对每个可见的代码 Lens 调用,通常在滚动时以及调用 compute-lenses 之后。
| 参数 | 描述 |
|---|---|
| codeLens: T | 需要解析的代码 Lens。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T> | 已解析的代码 Lens 或解析为该 Lens 的 thenable。给定的已解析代码 Lens 或 thenable。 |
Color
表示 RGBA 空间中的颜色。
构造函数
new Color(red: number, green: number, blue: number, alpha: number): Color
创建一个新的颜色实例。
| 参数 | 描述 |
|---|---|
| red: number | 红色分量。 |
| green: number | 绿色分量。 |
| blue: number | 蓝色分量。 |
| alpha: number | Alpha 分量。 |
| 返回值 | 描述 |
| 颜色 |
属性
此颜色 Alpha 分量,范围为 `[0-1]`。
此颜色蓝色分量,范围为 `[0-1]`。
此颜色绿色分量,范围为 `[0-1]`。
此颜色红色分量,范围为 `[0-1]`。
ColorInformation
表示文档中的颜色范围。
构造函数
new ColorInformation(range: Range, color: Color): ColorInformation
属性
color: Color
此颜色范围的实际颜色值。
range: Range
颜色在文档中出现的范围。
ColorPresentation
颜色表示对象描述了 Color 应如何表示为文本以及从源代码中引用它所需的编辑。
对于某些语言,一种颜色可以有多种表示形式,例如,CSS 可以用常量 `Red`、十六进制值 `#ff0000` 或 RGBA 和 HSLA 形式来表示红色。在 C# 中,则有其他表示形式,例如 `System.Drawing.Color.Red`。
构造函数
new ColorPresentation(label: string): ColorPresentation
创建一个新的颜色表示。
| 参数 | 描述 |
|---|---|
| label: string | 此颜色表示的标签。 |
| 返回值 | 描述 |
| 颜色表示 |
属性
additionalTextEdits?: TextEdit[]
在选择此颜色表示时应用的附加 text edits 的可选数组。编辑不得与主 edit 或彼此重叠。
此颜色表示的标签。它将显示在颜色选择器的标题上。默认情况下,这也是选择此颜色表示时插入的文本。
textEdit?: TextEdit
ColorTheme
表示一个颜色主题。
属性
kind: ColorThemeKind
此颜色主题的类型:浅色、深色、高对比度深色和高对比度浅色。
ColorThemeKind
表示颜色主题类型。
枚举成员
浅色主题。
深色主题。
高对比度深色主题。
高对比度浅色主题。
Command
表示对命令的引用。提供一个 `title`,它将用于在 UI 中表示命令,还可以选择性地提供一个参数数组,在调用命令处理程序函数时将传递这些参数。
属性
命令处理程序应调用的参数。
实际命令处理程序的标识符。
命令的标题,例如 `save`。
命令在 UI 中显示时的工具提示。
Comment
评论在编辑器或评论面板中显示,具体取决于其提供方式。
属性
author: CommentAuthorInformation
评论的 作者信息。
body: string | MarkdownString
人类可读的评论正文。
评论的上下文值。这可用于贡献特定于评论的操作。例如,评论会获得一个上下文值 `editable`。当使用 `menus` 扩展点为 `comments/comment/title` 贡献操作时,您可以在 `when` 表达式中为键 `comment` 指定上下文值,例如 `comment == editable`。
"contributes": {
"menus": {
"comments/comment/title": [
{
"command": "extension.deleteComment",
"when": "comment == editable"
}
]
}
}
这将仅为上下文值为 `editable` 的评论显示操作 `extension.deleteComment`。
可选标签,用于描述 Comment。如果存在,标签将显示在作者姓名旁边。
mode: CommentMode
Comment mode of the comment.
reactions?: CommentReaction[]
Comment 的可选反应。
将显示在评论中的可选时间戳。日期将根据用户的区域设置和设置进行格式化。
CommentAuthorInformation
Comment 的作者信息。
属性
iconPath?: Uri
作者的可选图标路径。
评论作者的显示名称。
CommentController
评论控制器能够为编辑器提供 评论 支持,并为用户提供各种与评论交互的方式。
属性
commentingRangeProvider?: CommentingRangeProvider
可选的评论范围提供程序。为任何给定的资源 URI 提供支持评论的 范围 列表。
如果未提供,用户将无法留下任何评论。
此评论控制器的 ID。
此评论控制器的可读标签。
options?: CommentOptions
评论控制器选项。
reactionHandler?: (comment: Comment, reaction: CommentReaction) => Thenable<void>
用于在 Comment 上创建和删除反应的可选反应处理程序。
| 参数 | 描述 |
|---|---|
| comment: Comment | |
| reaction: CommentReaction | |
| 返回值 | 描述 |
| Thenable<void> |
方法
createCommentThread(uri: Uri, range: Range, comments: readonly Comment[]): CommentThread
创建 comment thread。创建后,评论线程将在可见的文本编辑器(如果资源匹配)和评论面板中显示。
Dispose 此评论控制器。
Dispose 后,此评论控制器创建的所有 comment threads 也将从编辑器和评论面板中移除。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
CommentingRangeProvider
comment controller 的评论范围提供程序。
方法
provideCommentingRanges(document: TextDocument, token: CancellationToken): ProviderResult<Range[] | CommentingRanges>
提供一个允许创建新评论线程的范围列表,或为给定文档提供 null。
| 参数 | 描述 |
|---|---|
| document: TextDocument | |
| token: CancellationToken | |
| 返回值 | 描述 |
| ProviderResult<Range[] | CommentingRanges> |
CommentingRanges
CommentingRangeProvider 启用的评论范围。
属性
允许在没有特定范围的情况下向文件添加评论。
ranges?: Range[]
允许创建新评论线程的范围。
CommentMode
Comment 的评论模式。
枚举成员
显示评论编辑器。
显示评论的预览。
CommentOptions
表示 comment controller 的 options。
属性
当评论输入框聚焦时,其中显示的占位符的可选字符串。
当评论输入框折叠时,其中显示的提示的可选字符串。
CommentReaction
Comment 的反应。
属性
评论的 作者 是否已对此反应做出反应。
对此反应做出反应的用户数量。
iconPath: string | Uri
UI 中显示的反应图标。
反应的显示标签。
CommentReply
在 `comments/commentThread/context` 中注册的操作的命令参数。
属性
评论编辑器中的值。
thread: CommentThread
活动的 comment thread。
CommentRule
描述语言的评论工作方式。
属性
blockComment?: CharacterPair
块注释字符对,例如 `/* block comment */`。
行注释令牌,例如 `// this is a comment`。
CommentThread
一组 comments,代表文档中特定范围内的对话。
属性
canReply: boolean | CommentAuthorInformation
该线程是否支持回复。默认为 true。
collapsibleState: CommentThreadCollapsibleState
在打开文档时,该线程应折叠还是展开。默认为 Collapsed。
comments: readonly Comment[]
线程的排序评论。
评论线程的上下文值。这可用于贡献特定于评论线程的操作。例如,评论线程会获得一个上下文值 `editable`。当使用 `menus` 扩展点为 `comments/commentThread/title` 贡献操作时,您可以在 `when` 表达式中为键 `commentThread` 指定上下文值,例如 `commentThread == editable`。
"contributes": {
"menus": {
"comments/commentThread/title": [
{
"command": "extension.deleteCommentThread",
"when": "commentThread == editable"
}
]
}
}
这将仅为上下文值为 `editable` 的评论线程显示操作 `extension.deleteCommentThread`。
描述 Comment Thread 的可选人类可读标签。
range: Range
评论线程在文档内的范围。线程图标将显示在范围的最后一行。当设置为 undefined 时,评论将与文件关联,而不是与特定范围关联。
state?: CommentThreadState
评论线程的可选状态,它可能影响评论的显示方式。
uri: Uri
创建线程的文档的 URI。
方法
Dispose 此评论线程。
Dispose 后,此评论线程将在适当的时候从可见编辑器和评论面板中移除。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
CommentThreadCollapsibleState
comment thread 的可折叠状态。
枚举成员
确定项目已折叠。
确定项目已展开。
CommentThreadState
评论线程的状态。
枚举成员
未解决的线程状态。
已解决的线程状态。
CompletionContext
包含触发 补全提供程序 的上下文的附加信息。
属性
触发补全项提供程序的字符。
如果提供程序不是由字符触发的,则为 undefined。
触发补全提供程序时,触发字符已在文档中。
triggerKind: CompletionTriggerKind
补全的触发方式。
CompletionItem
补全项代表一个文本片段,该片段被提议用于完成正在键入的文本。
仅通过 标签 创建补全项就足够了。在这种情况下,补全项将用给定的标签或 插入文本 替换光标之前的 单词。否则,将使用给定的 编辑。
在编辑器中选择补全项时,其定义的或合成的文本编辑将应用于所有光标/选择,而 附加文本编辑 将按提供的方式应用。
另请参阅
构造函数
new CompletionItem(label: string | CompletionItemLabel, kind?: CompletionItemKind): CompletionItem
创建一个新的补全项。
补全项必须至少有一个 标签,该标签将用作插入文本,并用于排序和过滤。
| 参数 | 描述 |
|---|---|
| label: string | CompletionItemLabel | 补全的标签。 |
| kind?: CompletionItemKind | 补全的 类型。 |
| 返回值 | 描述 |
| CompletionItem |
属性
additionalTextEdits?: TextEdit[]
command?: Command
在插入此补全项之后执行的可选 命令。注意,对当前文档的其他修改应使用 additionalTextEdits 属性进行描述。
当此补全项处于活动状态时按下的一组可选字符,按下这些字符将首先接受补全项,然后键入该字符。注意,所有提交字符的 length 都应为 1,多余的字符将被忽略。
一个人类可读的字符串,包含此项的附加信息,例如类型或符号信息。
documentation?: string | MarkdownString
一个人类可读的字符串,表示文档注释。
insertText?: string | SnippetString
选择此补全项时应插入到文档中的字符串或片段。如果为 falsy,则使用 标签。
保持 插入文本 中的空白符不变。默认情况下,编辑器会调整新行的前导空格,使其与接受补全项的行的缩进匹配 - 设置为 true 将阻止此操作。
kind?: CompletionItemKind
此补全项的类型。编辑器根据类型选择图标。
label: string | CompletionItemLabel
此补全项的标签。默认情况下,这也是选择此补全项时插入的文本。
显示时选择此项。注意,只能选择一个补全项,由编辑器决定选择哪个项。规则是选择最匹配的项中的第一个。
range?: Range | {inserting: Range, replacing: Range}
tags?: readonly CompletionItemTag[]
此补全项的标签。
textEdit?: TextEdit
- 已弃用 - 请改用
CompletionItem.insertText和CompletionItem.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 之后以不显眼的方式渲染。应使用此字符串来表示完全限定名称或文件路径。
一个可选的字符串,该字符串在 标签 之后立即以不显眼的方式渲染,不带任何空格。应使用此字符串来表示函数签名或类型注解。
此补全项的标签。
默认情况下,这也是选择此补全项时插入的文本。
CompletionItemProvider<T>
补全项提供程序接口定义了扩展和 IntelliSense 之间的契约。
提供程序可以通过实现 resolveCompletionItem 函数来延迟计算 detail 和 documentation 属性。但是,对于初始排序和过滤至关重要的属性,如 sortText、filterText、insertText 和 range,在解析过程中不得更改。
提供程序通过用户的手势显式请求补全,或者根据配置,在键入单词或触发字符时隐式请求补全。
方法
provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken, context: CompletionContext): ProviderResult<CompletionList<T> | T[]>
为给定位置和文档提供补全项。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| token: CancellationToken | 取消令牌。 |
| context: CompletionContext | 补全的触发方式。 |
| 返回值 | 描述 |
| ProviderResult<CompletionList<T> | T[]> | 一组补全项、一个 补全列表 或一个解析为其中之一的 thenable。可以通过返回 |
resolveCompletionItem(item: T, token: CancellationToken): ProviderResult<T>
给定一个补全项,填充更多数据,例如 文档注释 或 详细信息。
编辑器将只解析一次补全项。
注意,此函数在补全项已在 UI 中显示或已选择某个项进行插入时调用。因此,任何改变表示形式(标签、排序、过滤等)或(主要)插入行为(insertText)的属性都不能更改。
此函数可以填充 additionalTextEdits。但是,这意味着一个项可能会在解析完成之前插入,在这种情况下,编辑器将尽最大努力仍然应用这些附加文本编辑。
| 参数 | 描述 |
|---|---|
| item: T | 一个当前在 UI 中活动的补全项。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T> | 已解析的补全项或解析为该项的 thenable。返回给定的 |
CompletionItemTag
补全项标签是用于调整补全项渲染的额外注解。
枚举成员
将补全项渲染为过时,通常使用删除线。
CompletionList<T>
表示要呈现在编辑器中的 补全项 的集合。
构造函数
new CompletionList<T extends CompletionItem>(items?: T[], isIncomplete?: boolean): CompletionList<T>
创建一个新的补全列表。
| 参数 | 描述 |
|---|---|
| items?: T[] | 补全项。 |
| isIncomplete?: boolean | 列表不完整。 |
| 返回值 | 描述 |
| CompletionList<T> |
属性
此列表不完整。继续键入应导致重新计算此列表。
补全项。
CompletionTriggerKind
如何触发 补全提供程序
枚举成员
正常触发了补全。
通过触发字符触发了补全。
TriggerForIncompleteCompletions: 2
由于当前补全列表不完整而重新触发了补全
ConfigurationChangeEvent
描述配置更改的事件
方法
affectsConfiguration(section: string, scope?: ConfigurationScope): boolean
检查给定部分是否已更改。如果提供了作用域,则检查在给定作用域下的资源的部分是否已更改。
| 参数 | 描述 |
|---|---|
| section: string | 配置名称,支持点分隔的名称。 |
| scope?: ConfigurationScope | 检查时使用的一个作用域。 |
| 返回值 | 描述 |
| 布尔值 | 如果给定的部分已更改,则为 |
ConfigurationScope
配置作用域可以是
- 一个代表资源的 Uri
- 一个代表已打开文本文档的 TextDocument
- 一个代表工作区的 WorkspaceFolder
- 一个包含
uri: 可选的文本文档 UrilanguageId: 文本文档的语言标识符
ConfigurationScope: Uri | TextDocument | WorkspaceFolder | {languageId: string, uri: Uri}
ConfigurationTarget
配置目标
枚举成员
全局配置
工作区配置
工作区文件夹配置
CustomDocument
表示由 CustomEditorProvider 使用的自定义文档。
自定义文档仅在给定的 CustomEditorProvider 中使用。CustomDocument 的生命周期由编辑器管理。当不再引用 CustomDocument 时,它将被释放。
属性
uri: Uri
此文档的关联 URI。
方法
释放自定义文档。
当不再有对给定 CustomDocument 的引用时(例如,当与该文档关联的所有编辑器都关闭时),编辑器将调用此函数。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
CustomDocumentBackup
CustomDocument 的备份。
属性
备份的唯一标识符。
当从备份打开自定义编辑器时,此 ID 将被传回给您的扩展程序,在 openCustomDocument 中。
方法
删除当前备份。
当编辑器确定当前备份不再需要时(例如,当创建新备份或保存文件时),编辑器将调用此函数。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
CustomDocumentBackupContext
用于实现 CustomDocumentBackup 的附加信息。
属性
destination: Uri
写入新备份的建议文件位置。
请注意,您的扩展程序可以自由忽略此项,并使用自己的备份策略。
如果编辑器是针对当前工作区中的资源的,则 destination 将指向 ExtensionContext.storagePath 内的一个文件。destination 的父文件夹可能不存在,因此请确保在将备份写入该位置之前创建它。
CustomDocumentContentChangeEvent<T>
由扩展程序触发的事件,用于向编辑器发出信号,表明 CustomDocument 的内容已更改。
属性
内容更改的文档。
CustomDocumentEditEvent<T>
由扩展程序触发的事件,用于向编辑器发出信号,表明 CustomDocument 上发生了编辑。
属性
发生编辑的文档。
描述编辑的显示名称。
这将在 UI 中显示给用户,用于撤销/重做操作。
方法
重做编辑操作。
当用户重做此编辑时,编辑器会调用此方法。要实现 redo,您的扩展应该将文档和编辑器恢复到添加到编辑器内部编辑堆栈中的状态,就在 onDidChangeCustomDocument 之前。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void | Thenable<void> |
撤销编辑操作。
当用户撤销此编辑时,编辑器会调用此方法。要实现 undo,您的扩展应该将文档和编辑器恢复到添加到编辑器内部编辑堆栈中的状态,就在 onDidChangeCustomDocument 之前。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void | Thenable<void> |
CustomDocumentOpenContext
关于打开自定义文档的附加信息。
属性
用于恢复文档的备份 ID,如果没有备份则为 undefined。
如果提供了此项,您的扩展应从备份中恢复编辑器,而不是从用户工作区的读取文件。
untitledDocumentData: Uint8Array
如果 URI 是一个未命名的文件,则会填充该文件的字节数据。
如果提供了此项,您的扩展应使用此字节数据,而不是在传递的 URI 上执行 fs API。
CustomEditorProvider<T>
使用自定义文档模型的可编辑自定义编辑器的提供程序。
自定义编辑器使用 CustomDocument 作为其文档模型,而不是 TextDocument。这使扩展能够完全控制诸如编辑、保存和备份等操作。
在处理二进制文件或更复杂场景时,您应该使用这种类型的自定义编辑器。对于简单的基于文本的文档,请改用 CustomTextEditorProvider。
事件
onDidChangeCustomDocument: Event<CustomDocumentEditEvent<T>> | Event<CustomDocumentContentChangeEvent<T>>
信号自定义编辑器中发生了一个编辑。
每当自定义编辑器中发生编辑时,您的扩展都必须触发此事件。编辑可以是任何内容,从更改文本、裁剪图像到重新排序列表。您的扩展可以自由定义编辑是什么以及每个编辑存储什么数据。
触发 onDidChange 会导致编辑器被标记为脏。当用户保存或恢复文件时,此状态会被清除。
支持撤销/重做操作的编辑器在发生编辑时必须触发 CustomDocumentEditEvent。这允许用户使用编辑器的标准键盘快捷键来撤销和重做该编辑。如果用户撤销了所有编辑直到最后一个保存状态,编辑器还将标记为不再是脏的。
支持编辑但无法使用编辑器标准撤销/重做机制的编辑器必须触发 CustomDocumentContentChangeEvent。对于不支持撤销/重做的编辑器,用户清除脏状态的唯一方法是 save 或 revert 文件。
编辑器应该只触发 CustomDocumentEditEvent 事件,或者只触发 CustomDocumentContentChangeEvent 事件。
方法
backupCustomDocument(document: T, context: CustomDocumentBackupContext, cancellation: CancellationToken): Thenable<CustomDocumentBackup>
备份一个脏的自定义文档。
备份用于热退出和防止数据丢失。您的 backup 方法应将资源持久化到其当前状态,即应用了编辑的状态。最常见的是将资源保存到 ExtensionContext.storagePath。当编辑器重新加载并且您的自定义编辑器为某个资源打开时,您的扩展应首先检查该资源是否存在任何备份。如果存在备份,您的扩展应从此备份加载文件内容,而不是从工作区中的资源加载。
backup 方法将在用户停止编辑文档约一秒后触发。如果用户快速编辑文档,backup 将不会被调用,直到编辑停止。
当启用 自动保存 时,不会调用 backup(因为自动保存已将资源持久化)。
| 参数 | 描述 |
|---|---|
| document: T | 要备份的文档。 |
| context: CustomDocumentBackupContext | 可用于备份文档的信息。 |
| cancellation: CancellationToken | 一个信号,表示当前备份由于新的备份即将到来而取消。您的扩展可以决定如何响应取消。例如,如果您的扩展正在备份一个耗时操作的大文件,您的扩展可能会选择完成正在进行的备份而不是取消它,以确保编辑器有一个有效的备份。 |
| 返回值 | 描述 |
| Thenable<CustomDocumentBackup> |
openCustomDocument(uri: Uri, openContext: CustomDocumentOpenContext, token: CancellationToken): T | Thenable<T>
为给定的资源创建一个新文档。
openCustomDocument 在给定资源编辑器首次打开时被调用。打开的文档随后将传递给 resolveCustomEditor,以便可以向用户显示编辑器。
如果用户打开了更多编辑器,则会重用已打开的 CustomDocument。当给定资源的所有编辑器都关闭时,CustomDocument 将被处置。此时打开编辑器将触发对 openCustomDocument 的另一次调用。
| 参数 | 描述 |
|---|---|
| uri: Uri | 要打开的文档的 URI。 |
| openContext: CustomDocumentOpenContext | 关于打开自定义文档的附加信息。 |
| token: CancellationToken | 一个取消令牌,指示结果不再需要。 |
| 返回值 | 描述 |
| T | Thenable<T> | 自定义文档。 |
resolveCustomEditor(document: T, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
为给定的资源解析自定义编辑器。
每当用户为此 CustomEditorProvider 打开新编辑器时,都会调用此方法。
| 参数 | 描述 |
|---|---|
| document: T | 要解析的资源的文档。 |
| webviewPanel: WebviewPanel | 用于为此资源显示编辑器 UI 的 Webview 面板。 在解析过程中,提供程序必须填充内容 Webview 面板的初始 HTML,并为其挂接所有感兴趣的事件侦听器。提供程序还可以保留 |
| token: CancellationToken | 一个取消令牌,指示结果不再需要。 |
| 返回值 | 描述 |
| void | Thenable<void> | 可选的 Thenable,指示自定义编辑器已解析。 |
revertCustomDocument(document: T, cancellation: CancellationToken): Thenable<void>
将自定义文档恢复到其最后保存的状态。
当用户在自定义编辑器中触发 文件: 恢复文件 时,编辑器会调用此方法。(请注意,这仅用于编辑器的 文件: 恢复文件 命令,而不是用于文件的 git revert。)
要实现 revert,实现者必须确保 document 的所有编辑器实例(Webview)都显示与保存状态相同的文档。这通常意味着从工作区重新加载文件。
| 参数 | 描述 |
|---|---|
| document: T | 要恢复的文档。 |
| cancellation: CancellationToken | 一个信号,表示不再需要恢复(例如,如果触发了另一个恢复)。 |
| 返回值 | 描述 |
| Thenable<void> | 一个 Thenable,指示更改已完成。 |
saveCustomDocument(document: T, cancellation: CancellationToken): Thenable<void>
保存自定义文档。
当用户保存自定义编辑器时,编辑器会调用此方法。这可能发生在用户在自定义编辑器处于活动状态时触发保存,通过 全部保存 等命令,或通过自动保存(如果已启用)。
要实现 save,实现者必须持久化自定义编辑器。这通常意味着将自定义文档的文件数据写入磁盘。save 完成后,任何关联的编辑器实例将不再被标记为脏。
| 参数 | 描述 |
|---|---|
| document: T | 要保存的文档。 |
| cancellation: CancellationToken | 一个信号,表示不再需要保存(例如,如果触发了另一个保存)。 |
| 返回值 | 描述 |
| Thenable<void> | 一个 Thenable,指示保存已完成。 |
saveCustomDocumentAs(document: T, destination: Uri, cancellation: CancellationToken): Thenable<void>
将自定义文档保存到另一个位置。
当用户在自定义编辑器上触发“另存为”时,编辑器会调用此方法。实现者必须将自定义编辑器持久化到 destination。
当用户接受“另存为”时,当前编辑器将被新保存文件的非脏编辑器替换。
| 参数 | 描述 |
|---|---|
| document: T | 要保存的文档。 |
| destination: Uri | 要保存的位置。 |
| cancellation: CancellationToken | 一个信号,表示不再需要保存。 |
| 返回值 | 描述 |
| Thenable<void> | 一个 Thenable,指示保存已完成。 |
CustomExecution
用于将扩展回调作为任务执行的类。
构造函数
new CustomExecution(callback: (resolvedDefinition: TaskDefinition) => Thenable<Pseudoterminal>): CustomExecution
构造一个 CustomExecution 任务对象。回调将在任务运行时执行,此时扩展应返回它将“运行在”的 Pseudoterminal。任务应等到 Pseudoterminal.open 被调用后再执行。任务取消应使用 Pseudoterminal.close 处理。任务完成后,触发 Pseudoterminal.onDidClose。
| 参数 | 描述 |
|---|---|
| callback: (resolvedDefinition: TaskDefinition) => Thenable<Pseudoterminal> | 当任务由用户启动时将调用的回调。任务定义中的任何 ${} 样式变量都将被解析并作为 |
| 返回值 | 描述 |
| CustomExecution |
CustomReadonlyEditorProvider<T>
使用自定义文档模型之只读自定义编辑器的提供程序。
自定义编辑器使用 CustomDocument 作为其文档模型,而不是 TextDocument。
在处理二进制文件或更复杂场景时,您应该使用这种类型的自定义编辑器。对于简单的基于文本的文档,请改用 CustomTextEditorProvider。
方法
openCustomDocument(uri: Uri, openContext: CustomDocumentOpenContext, token: CancellationToken): T | Thenable<T>
为给定的资源创建一个新文档。
openCustomDocument 在给定资源编辑器首次打开时被调用。打开的文档随后将传递给 resolveCustomEditor,以便可以向用户显示编辑器。
如果用户打开了更多编辑器,则会重用已打开的 CustomDocument。当给定资源的所有编辑器都关闭时,CustomDocument 将被处置。此时打开编辑器将触发对 openCustomDocument 的另一次调用。
| 参数 | 描述 |
|---|---|
| uri: Uri | 要打开的文档的 URI。 |
| openContext: CustomDocumentOpenContext | 关于打开自定义文档的附加信息。 |
| token: CancellationToken | 一个取消令牌,指示结果不再需要。 |
| 返回值 | 描述 |
| T | Thenable<T> | 自定义文档。 |
resolveCustomEditor(document: T, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
为给定的资源解析自定义编辑器。
每当用户为此 CustomEditorProvider 打开新编辑器时,都会调用此方法。
| 参数 | 描述 |
|---|---|
| document: T | 要解析的资源的文档。 |
| webviewPanel: WebviewPanel | 用于为此资源显示编辑器 UI 的 Webview 面板。 在解析过程中,提供程序必须填充内容 Webview 面板的初始 HTML,并为其挂接所有感兴趣的事件侦听器。提供程序还可以保留 |
| token: CancellationToken | 一个取消令牌,指示结果不再需要。 |
| 返回值 | 描述 |
| void | Thenable<void> | 可选的 Thenable,指示自定义编辑器已解析。 |
CustomTextEditorProvider
基于文本的自定义编辑器的提供程序。
基于文本的自定义编辑器使用 TextDocument 作为其数据模型。这大大简化了实现自定义编辑器的过程,因为它允许编辑器处理许多常见操作,如撤销和备份。提供程序负责同步 Webview 和 TextDocument 之间的文本更改。
方法
resolveCustomTextEditor(document: TextDocument, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
为给定的文本资源解析自定义编辑器。
当用户首次为 CustomTextEditorProvider 打开资源,或者使用此 CustomTextEditorProvider 重新打开现有编辑器时,将调用此方法。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 要解析的资源的文档。 |
| webviewPanel: WebviewPanel | 用于为此资源显示编辑器 UI 的 Webview 面板。 在解析过程中,提供程序必须填充内容 Webview 面板的初始 HTML,并为其挂接所有感兴趣的事件侦听器。提供程序还可以保留 |
| token: CancellationToken | 一个取消令牌,指示结果不再需要。 |
| 返回值 | 描述 |
| void | Thenable<void> | 一个 Thenable,指示自定义编辑器已解析。 |
DataTransfer
一个映射,其中包含相应传输数据的 MIME 类型映射。
实现 handleDrag 的拖放控制器可以向数据传输添加额外的 MIME 类型。这些额外的 MIME 类型仅在拖动源自同一拖放控制器的元素时才会包含在 handleDrop 中。
构造函数
new DataTransfer(): DataTransfer
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| DataTransfer |
方法
[iterator](): IterableIterator<[mimeType: string, item: DataTransferItem]>
获取一个包含此数据传输中每个元素的 [mime, item] 对的新迭代器。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| IterableIterator<[mimeType: string, item: DataTransferItem]> |
forEach(callbackfn: (item: DataTransferItem, mimeType: string, dataTransfer: DataTransfer) => void, thisArg?: any): void
允许迭代数据传输项。
| 参数 | 描述 |
|---|---|
| callbackfn: (item: DataTransferItem, mimeType: string, dataTransfer: DataTransfer) => void | 用于迭代数据传输项的回调函数。 |
| thisArg?: any | 调用处理函数时使用的 |
| 返回值 | 描述 |
| void |
get(mimeType: string): DataTransferItem
检索给定 MIME 类型的传输数据项。
| 参数 | 描述 |
|---|---|
| mimeType: string | 要获取传输数据项的 MIME 类型,例如 特殊 MIME 类型
|
| 返回值 | 描述 |
| DataTransferItem |
set(mimeType: string, value: DataTransferItem): void
设置一个 MIME 类型到数据传输项的映射。
| 参数 | 描述 |
|---|---|
| mimeType: string | 要设置数据的 MIME 类型。MIME 类型存储为小写,查找时不区分大小写。 |
| value: DataTransferItem | 给定 MIME 类型的数据传输项。 |
| 返回值 | 描述 |
| void |
DataTransferFile
与 DataTransferItem 关联的文件。
此类型的实例只能由编辑器创建,不能由扩展创建。
属性
文件的名称。
uri?: Uri
文件的完整文件路径。
在 Web 端可能是 undefined。
方法
文件的完整文件内容。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| Thenable<Uint8Array> |
DataTransferItem
封装在拖放操作期间传输的数据。
构造函数
new DataTransferItem(value: any): DataTransferItem
| 参数 | 描述 |
|---|---|
| value: any | 存储在此项上的自定义数据。可以使用 DataTransferItem.value 检索。 |
| 返回值 | 描述 |
| DataTransferItem |
属性
存储在此项上的自定义数据。
您可以使用 value 来共享跨操作的数据。只要创建 DataTransferItem 的扩展运行在同一个扩展主机中,就可以检索原始对象。
方法
asFile(): DataTransferFile
尝试获取与此数据传输项关联的 文件。
请注意,文件对象仅在拖放操作的范围内有效。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| DataTransferFile | 数据传输的文件,如果该项不是文件或无法访问文件数据,则为 |
获取此项的字符串表示形式。
如果 DataTransferItem.value 是一个对象,则返回 JSON 字符串化 DataTransferItem.value 值的 json.stringify 的结果。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| Thenable<string> |
DebugAdapter
如果实现了 DebugAdapter 接口,则可以向编辑器注册实现 Debug Adapter Protocol 的调试适配器。
事件
onDidSendMessage: Event<DebugProtocolMessage>
在调试适配器将 Debug Adapter Protocol 消息发送给编辑器之后触发的事件。消息可以是请求、响应或事件。
方法
处置此对象。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| any |
handleMessage(message: DebugProtocolMessage): void
处理 Debug Adapter Protocol 消息。消息可以是请求、响应或事件。结果或错误通过 onSendMessage 事件返回。
| 参数 | 描述 |
|---|---|
| message: DebugProtocolMessage | 一个 Debug Adapter Protocol 消息。 |
| 返回值 | 描述 |
| void |
DebugAdapterDescriptor
表示不同类型的调试适配器。
DebugAdapterDescriptor: DebugAdapterExecutable | DebugAdapterServer | DebugAdapterNamedPipeServer | DebugAdapterInlineImplementation
DebugAdapterDescriptorFactory
创建一个 调试适配器描述符 的调试适配器工厂。
方法
createDebugAdapterDescriptor(session: DebugSession, executable: DebugAdapterExecutable): ProviderResult<DebugAdapterDescriptor>
在调试会话开始时调用 '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
表示调试适配器可执行文件以及传递给它的可选参数和运行时选项。
构造函数
new DebugAdapterExecutable(command: string, args?: string[], options?: DebugAdapterExecutableOptions): DebugAdapterExecutable
根据可执行程序创建调试适配器的描述。
| 参数 | 描述 |
|---|---|
| command: string | 实现调试适配器的命令或可执行文件路径。命令必须是可执行文件的绝对路径,或者是一个可以通过 PATH 环境变量查找的命令名称。 |
| args?: string[] | 要传递给命令或可执行文件的可选参数。 |
| options?: DebugAdapterExecutableOptions | 启动命令或可执行文件时使用的可选选项。 |
| 返回值 | 描述 |
| DebugAdapterExecutable |
属性
传递给调试适配器可执行文件的参数。默认为空数组。
调试适配器可执行文件的命令或路径。命令必须是可执行文件的绝对路径,或者是通过 PATH 环境变量查找的命令名称。特殊值 'node' 将映射到编辑器内置的 Node.js 运行时。
options?: DebugAdapterExecutableOptions
启动调试适配器时使用的可选选项。默认为 undefined。
DebugAdapterExecutableOptions
调试适配器可执行文件的选项。
属性
已执行调试适配器的当前工作目录。
已执行程序或 shell 的附加环境。如果省略,则使用父进程的环境。如果提供,则会与父进程的环境合并。
DebugAdapterInlineImplementation
用于内联实现的调试适配器描述符。
构造函数
new DebugAdapterInlineImplementation(implementation: DebugAdapter): DebugAdapterInlineImplementation
创建用于调试适配器内联实现的描述符。
| 参数 | 描述 |
|---|---|
| implementation: DebugAdapter | |
| 返回值 | 描述 |
| DebugAdapterInlineImplementation |
DebugAdapterNamedPipeServer
表示一个作为命名管道(Windows 上)/UNIX 域套接字(非 Windows 上)服务器运行的调试适配器。
构造函数
new DebugAdapterNamedPipeServer(path: string): DebugAdapterNamedPipeServer
创建用于作为命名管道(Windows 上)/UNIX 域套接字(非 Windows 上)服务器运行的调试适配器的描述。
| 参数 | 描述 |
|---|---|
| path: string | |
| 返回值 | 描述 |
| DebugAdapterNamedPipeServer |
属性
命名管道/UNIX 域套接字的路径。
DebugAdapterServer
表示一个作为套接字服务器运行的调试适配器。
构造函数
new DebugAdapterServer(port: number, host?: string): DebugAdapterServer
创建用于作为套接字服务器运行的调试适配器的描述。
| 参数 | 描述 |
|---|---|
| port: number | |
| host?: string | |
| 返回值 | 描述 |
| DebugAdapterServer |
属性
主机。
端口。
DebugAdapterTracker
调试适配器跟踪器是跟踪编辑器与调试适配器之间通信的一种方式。
事件
onDidSendMessage(message: any): void
调试适配器已向编辑器发送了调试适配器协议消息。
| 参数 | 描述 |
|---|---|
| message: any | |
| 返回值 | 描述 |
| void |
onWillReceiveMessage(message: any): void
调试适配器即将从编辑器接收调试适配器协议消息。
| 参数 | 描述 |
|---|---|
| message: any | |
| 返回值 | 描述 |
| void |
与调试适配器的会话即将启动。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
调试适配器会话即将停止。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
方法
调试适配器发生错误。
| 参数 | 描述 |
|---|---|
| error: Error | |
| 返回值 | 描述 |
| void |
onExit(code: number, signal: string): void
调试适配器已退出,具有给定的退出代码或信号。
| 参数 | 描述 |
|---|---|
| code: number | |
| signal: string | |
| 返回值 | 描述 |
| void |
DebugAdapterTrackerFactory
创建调试适配器跟踪器的调试适配器工厂。
方法
createDebugAdapterTracker(session: DebugSession): ProviderResult<DebugAdapterTracker>
在调试会话开始时调用 `createDebugAdapterTracker` 方法,以返回一个“跟踪器”对象,该对象提供对编辑器和调试适配器之间通信的只读访问。
| 参数 | 描述 |
|---|---|
| session: DebugSession | 将用于调试适配器跟踪器的调试会话。 |
| 返回值 | 描述 |
| ProviderResult<DebugAdapterTracker> | 调试适配器跟踪器或未定义。 |
DebugConfiguration
调试会话的配置。
属性
调试会话的名称。
调试会话的请求类型。
调试会话的类型。
DebugConfigurationProvider
调试配置提供程序允许向调试服务添加调试配置,并在启动调试会话之前解析启动配置。调试配置提供程序通过 debug.registerDebugConfigurationProvider 注册。
方法
provideDebugConfigurations(folder: WorkspaceFolder, token?: CancellationToken): ProviderResult<DebugConfiguration[]>
向调试服务提供调试配置。如果为同一类型注册了多个调试配置提供程序,则调试配置将按任意顺序连接。
| 参数 | 描述 |
|---|---|
| folder: WorkspaceFolder | 用于配置的工作区文件夹,或用于无文件夹设置的 |
| token?: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<DebugConfiguration[]> | 调试配置数组。 |
resolveDebugConfiguration(folder: WorkspaceFolder, debugConfiguration: DebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration>
通过填充缺失的值或添加/更改/删除属性来解析调试配置。如果为同一类型注册了多个调试配置提供程序,则 `resolveDebugConfiguration` 调用将按任意顺序链接,并且初始调试配置将通过该链接传递。返回 `undefined` 会阻止调试会话启动。返回 `null` 会阻止调试会话启动,并改用打开底层调试配置。
| 参数 | 描述 |
|---|---|
| folder: WorkspaceFolder | 配置来源的工作区文件夹,或用于无文件夹设置的 |
| debugConfiguration: DebugConfiguration | 要解析的调试配置。 |
| token?: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<DebugConfiguration> | 已解析的调试配置或未定义或 null。 |
resolveDebugConfigurationWithSubstitutedVariables(folder: WorkspaceFolder, debugConfiguration: DebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration>
此钩子在 `resolveDebugConfiguration` 之后直接调用,但所有变量都已替换。它可用于通过填充缺失的值或添加/更改/删除属性来解析或验证调试配置。如果为同一类型注册了多个调试配置提供程序,则 `resolveDebugConfigurationWithSubstitutedVariables` 调用将按任意顺序链接,并且初始调试配置将通过该链接传递。返回 `undefined` 会阻止调试会话启动。返回 `null` 会阻止调试会话启动,并改用打开底层调试配置。
| 参数 | 描述 |
|---|---|
| folder: WorkspaceFolder | 配置来源的工作区文件夹,或用于无文件夹设置的 |
| debugConfiguration: DebugConfiguration | 要解析的调试配置。 |
| token?: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<DebugConfiguration> | 已解析的调试配置或未定义或 null。 |
DebugConfigurationProviderTriggerKind
DebugConfigurationProviderTriggerKind 指定何时触发 `DebugConfigurationProvider` 的 `provideDebugConfigurations` 方法。当前有两种情况:为新创建的 launch.json 提供初始调试配置,或通过 UI(例如,“选择并启动调试”命令)动态生成调试配置。在注册 `DebugConfigurationProvider` 时,使用触发器类型 debug.registerDebugConfigurationProvider。
枚举成员
调用 `DebugConfigurationProvider.provideDebugConfigurations` 以提供新创建的 launch.json 的初始调试配置。
调用 `DebugConfigurationProvider.provideDebugConfigurations` 以在用户通过 UI(例如,“选择并启动调试”命令)请求时提供动态生成的调试配置。
DebugConsole
表示调试控制台。
方法
将给定值追加到调试控制台。
| 参数 | 描述 |
|---|---|
| value: string | 一个字符串,假值不会被打印。 |
| 返回值 | 描述 |
| void |
appendLine(value: string): void
将给定值和一个换行符追加到调试控制台。
| 参数 | 描述 |
|---|---|
| value: string | 一个字符串,假值会被打印。 |
| 返回值 | 描述 |
| void |
DebugConsoleMode
调试会话使用的调试控制台模式,请参阅 options。
枚举成员
调试会话应有一个单独的调试控制台。
调试会话应与其父会话共享调试控制台。此值对没有父会话的会话无效。
DebugProtocolBreakpoint
DebugProtocolBreakpoint 是调试适配器协议中定义的 `Breakpoint` 类型的不透明占位符类型。(Breakpoint)。
DebugProtocolMessage
DebugProtocolMessage 是调试适配器协议中定义的 `ProtocolMessage` 类型的 不透明占位符类型。
DebugProtocolSource
DebugProtocolSource 是调试适配器协议中定义的 `Source` 类型的 不透明占位符类型。
DebugSession
一个调试会话。
属性
configuration: DebugConfiguration
此会话的“已解析”调试配置。 “已解析”意味着
- 所有变量都已替换
- 并且特定于平台的属性部分已为匹配的平台“展平”,并为不匹配的平台移除。
此调试会话的唯一 ID。
调试会话的名称最初取自调试配置。任何更改都将正确反映在 UI 中。
parentSession?: DebugSession
此调试会话的父会话(如果它是作为子会话创建的)。
另请参阅 DebugSessionOptions.parentSession
来自调试配置的调试会话类型。
workspaceFolder: WorkspaceFolder
此会话的工作区文件夹,或用于无文件夹设置的 undefined。
方法
customRequest(command: string, args?: any): Thenable<any>
向调试适配器发送自定义请求。
| 参数 | 描述 |
|---|---|
| command: string | |
| args?: any | |
| 返回值 | 描述 |
| Thenable<any> |
getDebugProtocolBreakpoint(breakpoint: Breakpoint): Thenable<DebugProtocolBreakpoint>
将编辑器中的断点映射到调试会话的调试适配器管理的相应调试适配器协议 (DAP) 断点。如果不存在 DAP 断点(因为编辑器断点尚未注册,或者调试适配器不关心该断点),则返回 `undefined`。
| 参数 | 描述 |
|---|---|
| breakpoint: Breakpoint | 编辑器中的断点。 |
| 返回值 | 描述 |
| Thenable<DebugProtocolBreakpoint> | 解析为调试适配器协议断点或 `undefined` 的 Promise。 |
DebugSessionCustomEvent
从调试会话收到的自定义调试适配器协议事件。
属性
事件特定信息。
事件类型。
session: DebugSession
收到自定义事件的调试会话。
DebugSessionOptions
用于 启动调试会话 的选项。
属性
控制是否在 CALL STACK 视图中显示调试会话的父会话,即使它只有一个子项。默认情况下,调试会话永远不会隐藏其父会话。如果 `compact` 为 true,则隐藏具有单个子项的调试会话,以使树更紧凑。
consoleMode?: DebugConsoleMode
控制此会话是否应拥有独立的调试控制台,还是应与父会话共享。对没有父会话的会话无效。默认为 Separate。
lifecycleManagedByParent?: boolean
控制生命周期请求(如“重新启动”)是发送到新创建的会话还是其父会话。默认情况下(如果属性为 false 或缺失),生命周期请求会发送到新会话。如果会话没有父会话,则忽略此属性。
控制此会话是否应在不调试的情况下运行,从而忽略断点。如果未指定此属性,则使用父会话(如果存在)的值。
parentSession?: DebugSession
如果指定,新创建的调试会话将注册为该“父”调试会话的“子”会话。
suppressDebugStatusbar?: boolean
如果为 true,则窗口状态栏颜色不会为此会话更改。
suppressDebugToolbar?: boolean
如果为 true,则不会为此会话显示调试工具栏。
如果为 true,则调试视图将不会为此会话自动显示。
suppressSaveBeforeStart?: boolean
如果为 true,则无论 `debug.saveBeforeStart` 设置的值如何,在启动调试会话时都不会为打开的编辑器触发保存。
testRun?: TestRun
指示编辑器该调试会话是从测试运行请求启动的。这用于在 UI 操作中链接调试会话和测试运行的生命周期。
DebugStackFrame
表示调试会话中的堆栈帧。
属性
在调试协议中堆栈帧的 ID。
session: DebugSession
线程的调试会话。
在调试协议中关联线程的 ID。
DebugThread
表示调试会话中的线程。
属性
session: DebugSession
线程的调试会话。
在调试协议中关联线程的 ID。
Declaration
Declaration: Location | Location[] | LocationLink[]
DeclarationCoverage
包含声明的覆盖率信息。根据报告器和语言,这可能是函数、方法或命名空间等类型。
构造函数
new DeclarationCoverage(name: string, executed: number | boolean, location: Range | Position): DeclarationCoverage
| 参数 | 描述 |
|---|---|
| name: string | |
| executed: number | boolean | 此声明执行的次数,或一个指示它是否被执行的布尔值(如果确切计数未知)。如果为零或 false,则声明将被标记为未覆盖。 |
| location: Range | Position | 声明位置。 |
| 返回值 | 描述 |
| DeclarationCoverage |
属性
此声明执行的次数,或一个指示它是否被执行的布尔值(如果确切计数未知)。如果为零或 false,则声明将被标记为未覆盖。
声明位置。
声明的名称。
DeclarationProvider
声明提供程序接口定义了扩展和转到声明功能之间的约定。
方法
provideDeclaration(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Declaration>
提供给定位置和文档处的符号的声明。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<Declaration> | 一个声明或一个解析为该声明的 thenable。可以通过返回 `undefined` 或 `null` 来发出无结果的信号。 |
DecorationInstanceRenderOptions
表示装饰实例的渲染选项。请参阅 DecorationOptions.renderOptions。
属性
after?: ThemableDecorationAttachmentRenderOptions
定义插入到装饰文本之后的附件的渲染选项。
before?: ThemableDecorationAttachmentRenderOptions
定义插入到装饰文本之前的附件的渲染选项。
dark?: ThemableDecorationInstanceRenderOptions
深色主题的覆盖选项。
light?: ThemableDecorationInstanceRenderOptions
浅色主题的覆盖选项。
DecorationOptions
表示 装饰集 中特定装饰的选项。
属性
hoverMessage?: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>
悬停在装饰上时应渲染的消息。
range: Range
应用此装饰的范围。范围不能为空。
renderOptions?: DecorationInstanceRenderOptions
应用于当前装饰的渲染选项。为了性能起见,请保持装饰特定选项的数量较少,并尽可能使用装饰类型。
DecorationRangeBehavior
描述装饰在边缘键入/编辑时的行为。
枚举成员
当在开头或结尾发生编辑时,装饰的范围会扩大。
当在开头或结尾发生编辑时,装饰的范围不会扩大。
当在开头发生编辑时,装饰的范围会扩大,但在结尾不会。
当在结尾发生编辑时,装饰的范围会扩大,但在开头不会。
DecorationRenderOptions
表示 文本编辑器装饰 的渲染样式。
属性
after?: ThemableDecorationAttachmentRenderOptions
定义插入到装饰文本之后的附件的渲染选项。
backgroundColor?: string | ThemeColor
装饰的背景颜色。使用 rgba() 并定义透明背景颜色以与其他装饰良好兼容。或者,可以 引用 颜色注册表中的颜色。
before?: ThemableDecorationAttachmentRenderOptions
定义插入到装饰文本之前的附件的渲染选项。
将应用于装饰文本的 CSS 样式属性。
borderColor?: string | ThemeColor
将应用于装饰文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。
将应用于装饰文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。
将应用于装饰文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。
将应用于装饰文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。
将应用于装饰文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。
color?: string | ThemeColor
将应用于装饰文本的 CSS 样式属性。
将应用于装饰文本的 CSS 样式属性。
dark?: ThemableDecorationRenderOptions
深色主题的覆盖选项。
将应用于装饰文本的 CSS 样式属性。
将应用于装饰文本的 CSS 样式属性。
gutterIconPath?: string | Uri
在装订线中渲染的图像的绝对路径或 URI。
指定装订线图标的大小。可用值为 'auto'、'contain'、'cover' 和任何百分比值。有关更多信息:https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx
装饰是否也应在行文本之后的空白处渲染。默认为 false。
将应用于装饰文本的 CSS 样式属性。
light?: ThemableDecorationRenderOptions
浅色主题的覆盖选项。
将应用于装饰文本的 CSS 样式属性。
将应用于装饰文本的 CSS 样式属性。
outlineColor?: string | ThemeColor
将应用于装饰包围的文本的 CSS 样式属性。最好使用 'outline' 来设置一个或多个单独的轮廓属性。
将应用于装饰包围的文本的 CSS 样式属性。最好使用 'outline' 来设置一个或多个单独的轮廓属性。
将应用于装饰包围的文本的 CSS 样式属性。最好使用 'outline' 来设置一个或多个单独的轮廓属性。
overviewRulerColor?: string | ThemeColor
概览标尺中装饰的颜色。使用 rgba() 并定义透明颜色以与其他装饰配合使用。
overviewRulerLane?: OverviewRulerLane
装饰应在概览标尺中的哪个位置渲染。
rangeBehavior?: DecorationRangeBehavior
自定义装饰在装饰范围的边缘发生编辑时的增长行为。默认为 DecorationRangeBehavior.OpenOpen。
将应用于装饰文本的 CSS 样式属性。
Definition
表示符号的定义,该定义是一个或多个 位置。对于大多数编程语言,符号只有一个定义位置。
Definition: Location | Location[]
DefinitionLink
有关符号定义位置的信息。
提供比普通 Location 定义更多的元数据,包括定义符号的范围。
DefinitionLink: LocationLink
DefinitionProvider
定义提供程序接口定义了扩展与 转到定义 和查看定义功能之间的契约。
方法
provideDefinition(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
提供给定位置和文档中的符号定义。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<Definition | LocationLink[]> | 定义或一个可解析为该定义的 thenable。可以通过返回 |
Diagnostic
表示一个诊断,例如编译器错误或警告。诊断对象仅在文件范围内有效。
构造函数
new Diagnostic(range: Range, message: string, severity?: DiagnosticSeverity): Diagnostic
创建一个新的诊断对象。
| 参数 | 描述 |
|---|---|
| range: Range | 此诊断适用的范围。 |
| message: string | 人类可读的消息。 |
| severity?: DiagnosticSeverity | 严重性,默认为 错误。 |
| 返回值 | 描述 |
| Diagnostic |
属性
code?: string | number | {target: Uri, value: string | number}
此诊断的代码或标识符。应用于后续处理,例如在提供 代码操作 时。
人类可读的消息。
range: Range
此诊断适用的范围。
relatedInformation?: DiagnosticRelatedInformation[]
相关诊断信息的数组,例如,当作用域内的符号名称发生冲突时,可以通过此属性标记所有定义。
severity: DiagnosticSeverity
严重性,默认为 错误。
描述此诊断来源的可读字符串,例如“typescript”或“super lint”。
tags?: DiagnosticTag[]
关于诊断的附加元数据。
DiagnosticChangeEvent
当诊断发生更改时触发的事件。
属性
uris: readonly Uri[]
已更改诊断的资源数组。
DiagnosticCollection
诊断集合是管理一组 诊断 的容器。诊断始终限定于诊断集合和资源。
要获取 DiagnosticCollection 的实例,请使用 createDiagnosticCollection。
属性
此诊断集合的名称,例如 typescript。来自此集合的所有诊断都将与此名称相关联。此外,任务框架在定义 问题匹配器 时会使用此名称。
方法
从此集合中删除所有诊断。与调用 #set(undefined) 相同;
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
delete(uri: Uri): void
从此集合中删除属于提供的 uri 的所有诊断。与 #set(uri, undefined) 相同。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| 返回值 | 描述 |
| void |
释放并清理相关资源。调用 clear。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
forEach(callback: (uri: Uri, diagnostics: readonly Diagnostic[], collection: DiagnosticCollection) => any, thisArg?: any): void
迭代此集合中的每个条目。
| 参数 | 描述 |
|---|---|
| callback: (uri: Uri, diagnostics: readonly Diagnostic[], collection: DiagnosticCollection) => any | 为每个条目执行的函数。 |
| thisArg?: any | 调用处理函数时使用的 |
| 返回值 | 描述 |
| void |
get(uri: Uri): readonly Diagnostic[]
获取给定资源的诊断。注意,您不能修改从此调用返回的诊断数组。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| 返回值 | 描述 |
| readonly Diagnostic[] | 诊断的不可变数组或 |
has(uri: Uri): boolean
检查此集合是否包含给定资源的诊断。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| 返回值 | 描述 |
| 布尔值 | 如果此集合包含给定资源的诊断,则为 |
set(uri: Uri, diagnostics: readonly Diagnostic[]): void
为给定资源分配诊断。将替换该资源的现有诊断。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| diagnostics: readonly Diagnostic[] | 诊断数组或 |
| 返回值 | 描述 |
| void |
set(entries: ReadonlyArray<[Uri, readonly Diagnostic[]]>): void
替换此集合中多个资源的诊断。
注意,具有相同 uri 的多个元组将被合并,例如 [[file1, [d1]], [file1, [d2]]] 等同于 [[file1, [d1, d2]]]。如果诊断项为 undefined,如 [file1, undefined],则会删除所有先前的诊断,但不会删除后续的诊断。
| 参数 | 描述 |
|---|---|
| entries: ReadonlyArray<[Uri, readonly Diagnostic[]]> | 元组数组,如 |
| 返回值 | 描述 |
| void |
DiagnosticRelatedInformation
表示与诊断相关的消息和源代码位置。应使用此项指向导致或与诊断相关的代码位置,例如,在作用域中重复符号时。
构造函数
new DiagnosticRelatedInformation(location: Location, message: string): DiagnosticRelatedInformation
创建一个新的相关诊断信息对象。
| 参数 | 描述 |
|---|---|
| location: Location | 位置。 |
| message: string | 消息。 |
| 返回值 | 描述 |
| DiagnosticRelatedInformation |
属性
location: Location
此相关诊断信息的位置。
此相关诊断信息的消息。
DiagnosticSeverity
表示诊断的严重性。
枚举成员
语言规则或其他方式不允许的项。
可疑但允许的项。
用于告知的项,但不是问题。
用于提示更好的实现方式的项,例如建议重构。
DiagnosticTag
关于诊断类型的附加元数据。
枚举成员
未使用或不必要的代码。
带有此标签的诊断将显示为淡出。淡出程度由 "editorUnnecessaryCode.opacity" 主题颜色控制。例如,"editorUnnecessaryCode.opacity": "#000000c0" 将以 75% 的不透明度显示代码。对于高对比度主题,请使用 "editorUnnecessaryCode.border" 主题颜色为不必要的代码加下划线,而不是使其淡出。
已弃用或过时的代码。
带有此标签的诊断将显示为删除线。
Disposable
表示可以释放资源的类型,例如事件侦听或计时器。
静态
from(...disposableLikes: Array<{dispose: () => any}>): Disposable
将多个可处置对象合并为一个。当拥有具有 dispose 函数但不是 Disposable 实例的对象时,可以使用此方法。
| 参数 | 描述 |
|---|---|
| ...disposableLikes: Array<{dispose: () => any}> | 至少具有 |
| 返回值 | 描述 |
| Disposable | 返回一个新的可处置对象,该对象在 dispose 时将释放所有提供的可处置对象。 |
构造函数
new Disposable(callOnDispose: () => any): Disposable
创建一个新的可处置对象,该对象在 dispose 时调用提供的函数。
注意,异步函数不会被等待。
| 参数 | 描述 |
|---|---|
| callOnDispose: () => any | dispose 函数。 |
| 返回值 | 描述 |
| Disposable |
方法
处置此对象。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| any |
DocumentColorProvider
文档颜色提供程序定义了扩展与编辑器中颜色选取和修改功能之间的契约。
方法
provideColorPresentations(color: Color, context: {document: TextDocument, range: Range}, token: CancellationToken): ProviderResult<ColorPresentation[]>
为颜色提供 表示。
| 参数 | 描述 |
|---|---|
| color: Color | 要显示和插入的颜色。 |
| context: {document: TextDocument, range: Range} | 包含附加信息的上下文对象 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<ColorPresentation[]> | 颜色表示数组或可解析为该数组的 thenable。可以通过返回 |
provideDocumentColors(document: TextDocument, token: CancellationToken): ProviderResult<ColorInformation[]>
为给定文档提供颜色。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<ColorInformation[]> | 颜色信息数组或可解析为该数组的 thenable。可以通过返回 |
DocumentDropEdit
在 drop 时应用的编辑操作。
构造函数
new DocumentDropEdit(insertText: string | SnippetString, title?: string, kind?: DocumentDropOrPasteEditKind): DocumentDropEdit
| 参数 | 描述 |
|---|---|
| insertText: string | SnippetString | 要在 drop 位置插入的文本或代码片段。 |
| title?: string | 描述编辑的人类可读标签。 |
| kind?: DocumentDropOrPasteEditKind | 编辑的 类型。 |
| 返回值 | 描述 |
| DocumentDropEdit |
属性
additionalEdit?: WorkspaceEdit
在 drop 时应用的可选附加编辑。
insertText: string | SnippetString
要在 drop 位置插入的文本或代码片段。
kind?: DocumentDropOrPasteEditKind
编辑的 类型。
描述编辑的人类可读标签。
yieldTo?: readonly DocumentDropOrPasteEditKind[]
控制多个编辑的顺序。如果此提供程序屈服于编辑,它将在列表中显示得更低。
DocumentDropEditProvider<T>
处理将资源拖放到文本编辑器中的提供程序。
这允许用户将资源(包括来自外部应用程序的资源)拖放到编辑器中。在拖放文件时,用户可以按住 shift 键将文件拖放到编辑器中,而不是打开它。需要启用 editor.dropIntoEditor.enabled。
方法
provideDocumentDropEdits(document: TextDocument, position: Position, dataTransfer: DataTransfer, token: CancellationToken): ProviderResult<T | T[]>
提供将正在拖放的内容插入文档的编辑。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 发生 drop 的文档。 |
| position: Position | 发生 drop 的文档中的位置。 |
| dataTransfer: DataTransfer | 包含有关正在拖放内容的数据的 DataTransfer 对象。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T | T[]> | DocumentDropEdit 或可解析为该值的 thenable。可以通过返回 |
resolveDocumentDropEdit(edit: T, token: CancellationToken): ProviderResult<T>
可选方法,用于在应用编辑之前填充 DocumentDropEdit.additionalEdit。
每次编辑调用此方法一次,如果生成完整编辑可能需要很长时间,则应使用此方法。Resolve 只能用于更改 DocumentDropEdit.additionalEdit。
| 参数 | 描述 |
|---|---|
| edit: T | 要解析的 DocumentDropEdit。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T> | 解析后的编辑或可解析为该值的 thenable。返回给定的 |
DocumentDropEditProviderMetadata
提供有关 DocumentDropEditProvider 如何工作的附加元数据。
属性
dropMimeTypes: readonly string[]
提供程序可以处理的 DataTransfer mime 类型的列表。
这可以是精确的 mime 类型,例如 image/png,也可以是通配符模式,例如 image/*。
使用 text/uri-list 来处理从工作区中的资源管理器或其他树状视图拖放到其中的资源。
使用 files 来指示如果 DataTransfer 中存在任何 文件,则应调用提供程序。请注意,只有在从编辑器外部(例如操作系统)拖放内容时,才会创建 DataTransferFile 条目。
providedDropEditKinds?: readonly DocumentDropOrPasteEditKind[]
提供程序可以在 provideDocumentDropEdits 中返回的 kind 列表。
这用于在请求特定 kind 的编辑时过滤掉提供程序。
DocumentDropOrPasteEditKind
静态
Empty: DocumentDropOrPasteEditKind
Text: DocumentDropOrPasteEditKind
用于基本文本编辑的根 kind。
此 kind 应用于将基本文本插入文档的编辑。一个好的例子是粘贴剪贴板文本,同时还根据粘贴的文本更新文件中的导入。对于这种情况,我们可以使用诸如 text.updateImports.someLanguageId 之类的 kind。
尽管大多数拖放/粘贴编辑最终都会插入文本,但不应将 Text 用作每个编辑的基础 kind,因为这是冗余的。相反,应使用更具体地描述所插入内容的 kind。例如,如果编辑添加了一个 Markdown 链接,请使用 markdown.link,因为尽管所插入的内容是文本,但知道该编辑插入的是 Markdown 语法更为重要。
TextUpdateImports: DocumentDropOrPasteEditKind
用于在插入文本之外还更新文档中的导入的编辑的根 kind。
构造函数
new DocumentDropOrPasteEditKind(value: string): DocumentDropOrPasteEditKind
| 参数 | 描述 |
|---|---|
| value: string | |
| 返回值 | 描述 |
| DocumentDropOrPasteEditKind |
属性
kind 的原始字符串值。
方法
append(...parts: string[]): DocumentDropOrPasteEditKind
通过将其他范围附加到当前 kind 来创建一个新 kind。
不会修改当前种类。
| 参数 | 描述 |
|---|---|
| ...parts: string[] | |
| 返回值 | 描述 |
| DocumentDropOrPasteEditKind |
contains(other: DocumentDropOrPasteEditKind): boolean
检查 other 是否是此 DocumentDropOrPasteEditKind 的子 kind。
例如,kind "text.plain" 包含 "text.plain" 和 "text.plain.list",但不包含 "text" 或 "unicorn.text.plain"。
| 参数 | 描述 |
|---|---|
| other: DocumentDropOrPasteEditKind | 要检查的种类。 |
| 返回值 | 描述 |
| 布尔值 |
intersects(other: DocumentDropOrPasteEditKind): boolean
检查此 kind 是否与 other 相交。
例如,kind "text.plain" 与 text、"text.plain" 和 "text.plain.list" 相交,但与 "unicorn" 或 "textUnicorn.plain" 不相交。
| 参数 | 描述 |
|---|---|
| other: DocumentDropOrPasteEditKind | 要检查的种类。 |
| 返回值 | 描述 |
| 布尔值 |
DocumentFilter
文档过滤器通过不同的属性来标识文档,例如 language、资源的 scheme,或者应用于 path 的 glob 模式。
示例:适用于磁盘上的 TypeScript 文件的语言过滤器
{ language: 'typescript', scheme: 'file' }
示例:适用于所有 package.json 路径的语言过滤器
{ language: 'json', pattern: '**/package.json' }
属性
语言 ID,例如 typescript。
pattern?: GlobPattern
URI scheme,例如 file 或 untitled。
DocumentFormattingEditProvider
文档格式化提供程序接口定义了扩展和格式化功能之间的约定。
方法
provideDocumentFormattingEdits(document: TextDocument, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>
为整个文档提供格式化编辑。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| options: FormattingOptions | 控制格式化的选项。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<TextEdit[]> | 一组文本编辑或一个解析为这些编辑的 thenable。可以通过返回 |
DocumentHighlight
文档高亮是在文本文档中需要特别关注的一个范围。通常,文档高亮通过更改其范围的背景颜色来可视化。
构造函数
new DocumentHighlight(range: Range, kind?: DocumentHighlightKind): DocumentHighlight
创建一个新的文档高亮对象。
| 参数 | 描述 |
|---|---|
| range: Range | 高亮适用的范围。 |
| kind?: DocumentHighlightKind | 高亮 kind,默认为 text。 |
| 返回值 | 描述 |
| DocumentHighlight |
属性
kind?: DocumentHighlightKind
高亮 kind,默认为 text。
range: Range
此高亮适用的范围。
DocumentHighlightKind
文档高亮 kind。
枚举成员
文本出现。
符号的读取访问,例如读取变量。
符号的写入访问,例如写入变量。
DocumentHighlightProvider
文档高亮提供程序接口定义了扩展和单词高亮功能之间的约定。
方法
provideDocumentHighlights(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<DocumentHighlight[]>
提供一组文档高亮,例如变量的所有出现或函数的所有退出点。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<DocumentHighlight[]> | 文档高亮数组或解析为这些高亮的 thenable。可以通过返回 |
DocumentLink
文档链接是文本文档中链接到内部或外部资源的范围,例如另一个文本文档或网站。
构造函数
new DocumentLink(range: Range, target?: Uri): DocumentLink
创建一个新的文档链接。
| 参数 | 描述 |
|---|---|
| range: Range | 文档链接适用的范围。不能为空。 |
| target?: Uri | 文档链接指向的 URI。 |
| 返回值 | 描述 |
| DocumentLink |
属性
range: Range
此链接适用的范围。
target?: Uri
此链接指向的 URI。
鼠标悬停在此链接上时显示的工具提示文本。
如果提供了工具提示,它将显示在包含触发链接说明的字符串中,例如 {0} (ctrl + click)。具体说明因操作系统、用户设置和本地化而异。
DocumentLinkProvider<T>
文档链接提供程序定义了扩展和在编辑器中显示链接的功能之间的约定。
方法
provideDocumentLinks(document: TextDocument, token: CancellationToken): ProviderResult<T[]>
为给定文档提供链接。请注意,编辑器附带一个默认提供程序,该提供程序会检测 http(s) 和 file 链接。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T[]> | 文档链接数组或解析为这些链接的 thenable。可以通过返回 |
resolveDocumentLink(link: T, token: CancellationToken): ProviderResult<T>
给定一个链接,填充其 target。当 UI 中选择了不完整的链接时,会调用此方法。提供程序可以实现此方法,并从 provideDocumentLinks 方法返回不完整的链接(没有 target),这通常有助于提高性能。
| 参数 | 描述 |
|---|---|
| link: T | 要解析的链接。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T> |
DocumentPasteEdit
应用粘贴操作的编辑。
构造函数
new DocumentPasteEdit(insertText: string | SnippetString, title: string, kind: DocumentDropOrPasteEditKind): DocumentPasteEdit
创建一个新的粘贴编辑。
| 参数 | 描述 |
|---|---|
| insertText: string | SnippetString | 在粘贴位置插入的文本或片段。 |
| title: string | 描述编辑的人类可读标签。 |
| kind: DocumentDropOrPasteEditKind | 编辑的 类型。 |
| 返回值 | 描述 |
| DocumentPasteEdit |
属性
additionalEdit?: WorkspaceEdit
粘贴时应用的可选附加编辑。
insertText: string | SnippetString
在粘贴位置插入的文本或片段。
如果您的编辑需要更高级的插入逻辑,请将其设置为空字符串,然后提供 additional edit。
kind: DocumentDropOrPasteEditKind
编辑的 类型。
描述编辑的人类可读标签。
yieldTo?: readonly DocumentDropOrPasteEditKind[]
控制当多个粘贴编辑可能应用时的顺序。
如果此编辑让位于另一个编辑,它将在显示给用户的可能粘贴编辑列表中排在后面。
DocumentPasteEditContext
有关粘贴操作的附加信息。
属性
only: DocumentDropOrPasteEditKind
请求返回的粘贴编辑的 kind。
当通过 PasteAs 请求显式 kind 时,鼓励提供程序在生成请求 kind 的编辑时更加灵活。
triggerKind: DocumentPasteTriggerKind
请求粘贴编辑的原因。
DocumentPasteEditProvider<T>
当用户在 TextDocument 中复制或粘贴时调用的提供程序。
方法
prepareDocumentPaste(document: TextDocument, ranges: readonly Range[], dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
可选方法,在用户从 文本编辑器复制后调用。
这允许提供程序将有关复制文本的元数据附加到 DataTransfer。然后,此数据传输将在 provideDocumentPasteEdits 中传递回提供程序。
请注意,目前对 DataTransfer 的任何更改都仅限于当前编辑器窗口。这意味着任何添加的元数据都不能被其他编辑器窗口或其他应用程序看到。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 发生复制的文本文档。 |
| ranges: readonly Range[] | 在 document 中复制的范围。 |
| dataTransfer: DataTransfer | 与复制关联的数据传输。您可以为此存储其他值,供以后在 provideDocumentPasteEdits 中使用。此对象仅在此方法持续时间内有效。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| void | Thenable<void> | 可选的 thenable,在对 |
provideDocumentPasteEdits(document: TextDocument, ranges: readonly Range[], dataTransfer: DataTransfer, context: DocumentPasteEditContext, token: CancellationToken): ProviderResult<T[]>
在用户粘贴到 文本编辑器之前调用。
返回的编辑可以替换标准的粘贴行为。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 粘贴到的文档 |
| ranges: readonly Range[] | 在 document 中粘贴到的范围。 |
| dataTransfer: DataTransfer | 与粘贴关联的 DataTransfer。此对象仅在粘贴操作期间有效。 |
| context: DocumentPasteEditContext | 粘贴的附加上下文。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T[]> | 可以应用粘贴的潜在 编辑集。一次只应用一个返回的 DocumentPasteEdit。如果从所有提供程序返回多个编辑,则自动应用第一个,并显示一个允许用户切换到其他编辑的小部件。 |
resolveDocumentPasteEdit(pasteEdit: T, token: CancellationToken): ProviderResult<T>
可选方法,该方法在应用编辑之前填充 DocumentPasteEdit.additionalEdit。
此方法为每个编辑调用一次,如果生成完整编辑可能需要很长时间,则应使用此方法。Resolve 只能用于更改 DocumentPasteEdit.insertText 或 DocumentPasteEdit.additionalEdit。
| 参数 | 描述 |
|---|---|
| pasteEdit: T | 要解析的 DocumentPasteEdit。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T> | 解析后的粘贴编辑或解析为这些编辑的 thenable。返回给定的 |
DocumentPasteProviderMetadata
提供有关 DocumentPasteEditProvider 如何工作的附加元数据。
属性
copyMimeTypes?: readonly string[]
prepareDocumentPaste 在复制时可能添加的 MIME 类型。
pasteMimeTypes?: readonly string[]
provideDocumentPasteEdits 应该调用的 MIME 类型。
这可以是精确的 mime 类型,例如 image/png,也可以是通配符模式,例如 image/*。
使用 text/uri-list 来处理从工作区中的资源管理器或其他树状视图拖放到其中的资源。
使用 files 来指示如果 DataTransfer 中存在任何 文件,则应调用该提供程序。请注意,仅当从编辑器外部(例如从操作系统)粘贴内容时,才会创建 DataTransferFile 条目。
providedPasteEditKinds: readonly DocumentDropOrPasteEditKind[]
提供程序可能在 provideDocumentPasteEdits 中返回的 kinds 列表。
这用于在请求特定 kind 的编辑时过滤掉提供程序。
DocumentPasteTriggerKind
请求粘贴编辑的原因。
枚举成员
粘贴是作为正常粘贴操作的一部分请求的。
粘贴是用户通过 paste as 命令请求的。
DocumentRangeFormattingEditProvider
文档格式化提供程序接口定义了扩展和格式化功能之间的约定。
方法
provideDocumentRangeFormattingEdits(document: TextDocument, range: Range, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>
为文档中的某个范围提供格式化编辑。
给定的范围是一个提示,提供程序可以决定格式化一个更小或更大的范围。这通常通过调整范围的开始和结束到完整的语法节点来完成。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| range: Range | 应格式化的范围。 |
| options: FormattingOptions | 控制格式化的选项。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<TextEdit[]> | 一组文本编辑或一个解析为这些编辑的 thenable。可以通过返回 |
provideDocumentRangesFormattingEdits(document: TextDocument, ranges: Range[], options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>
为文档中的多个范围提供格式化编辑。
此函数是可选的,但它允许格式化程序在仅格式化修改后的范围或格式化大量选择时执行得更快。
给定的范围是提示,提供程序可以决定格式化一个更小或更大的范围。这通常通过调整范围的开始和结束到完整的语法节点来完成。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| ranges: Range[] | 应格式化的范围。 |
| options: FormattingOptions | 控制格式化的选项。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<TextEdit[]> | 一组文本编辑或一个解析为这些编辑的 thenable。可以通过返回 |
DocumentRangeSemanticTokensProvider
文档范围语义令牌提供程序接口定义了扩展和语义令牌之间的约定。
事件
onDidChangeSemanticTokens?: Event<void>
一个可选事件,用于信号指示此提供程序的语义令牌已更改。
方法
provideDocumentRangeSemanticTokens(document: TextDocument, range: Range, token: CancellationToken): ProviderResult<SemanticTokens>
| 参数 | 描述 |
|---|---|
| document: TextDocument | |
| range: Range | |
| token: CancellationToken | |
| 返回值 | 描述 |
| ProviderResult<SemanticTokens> |
DocumentSelector
语言选择器是语言标识符和 语言过滤器 的组合。
请注意,仅由语言标识符组成的文档选择器会选择所有文档,包括未保存在磁盘上的文档。只有当功能在没有进一步上下文的情况下工作时,才应使用此类选择器,例如,无需解析关联的“文件”。
示例
let sel: DocumentSelector = { scheme: 'file', language: 'typescript' };
DocumentSelector: DocumentFilter | string | ReadonlyArray<DocumentFilter | string>
DocumentSemanticTokensProvider
文档语义令牌提供程序接口定义了扩展和语义令牌之间的约定。
事件
onDidChangeSemanticTokens?: Event<void>
一个可选事件,用于信号指示此提供程序的语义令牌已更改。
方法
provideDocumentSemanticTokens(document: TextDocument, token: CancellationToken): ProviderResult<SemanticTokens>
文件中的令牌表示为整数数组。每个令牌的位置相对于前一个令牌进行表达,因为当在文件中进行编辑时,大多数令牌相对于彼此保持稳定。
简而言之,每个令牌需要 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: [] }
- 首先,必须设计一个图例。此图例必须预先提供,并包含所有可能的令牌类型。在此示例中,我们将选择以下图例,在注册提供程序时必须传递此图例
tokenTypes: ['property', 'type', 'class'],
tokenModifiers: ['private', 'static']
- 第一个转换步骤是使用图例将
tokenType和tokenModifiers编码为整数。令牌类型按索引查找,因此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 }
- 下一步是表示文件中的每个令牌相对于前一个令牌。在这种情况下,第二个令牌与第一个令牌在同一行,因此第二个令牌的
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 }
- 最后一步是将令牌的 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> |
provideDocumentSemanticTokensEdits(document: TextDocument, previousResultId: string, token: CancellationToken): ProviderResult<SemanticTokens | SemanticTokensEdits>
而不是始终返回文件中的所有令牌,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
表示文档中出现的变量、类、接口等编程构造。文档符号可以是分层的,并且它们有两个范围:一个包含其定义,一个指向其最有趣范围,例如标识符的范围。
构造函数
new DocumentSymbol(name: string, detail: string, kind: SymbolKind, range: Range, selectionRange: Range): DocumentSymbol
创建一个新的文档符号。
| 参数 | 描述 |
|---|---|
| name: string | 符号的名称。 |
| detail: string | 符号的详细信息。 |
| kind: SymbolKind | 符号的类型。 |
| range: Range | 符号的完整范围。 |
| selectionRange: Range | 应该显示的范围。 |
| 返回值 | 描述 |
| DocumentSymbol |
属性
children: DocumentSymbol[]
此符号的子项,例如类的属性。
此符号的更多详细信息,例如函数的签名。
kind: SymbolKind
此符号的类型。
此符号的名称。
range: Range
包含此符号的范围,不包括前导/尾随空格,但包括其他所有内容,例如注释和代码。
selectionRange: Range
选择和显示此符号时应选择的范围,例如函数名。必须包含在 range 中。
tags?: readonly SymbolTag[]
此符号的标签。
DocumentSymbolProvider
DocumentSymbolProvider 接口定义了扩展和 转到符号功能之间的契约。
方法
provideDocumentSymbols(document: TextDocument, token: CancellationToken): ProviderResult<DocumentSymbol[] | SymbolInformation[]>
为给定的文档提供符号信息。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<DocumentSymbol[] | SymbolInformation[]> | 文档高亮数组或解析为这些高亮的 thenable。可以通过返回 |
DocumentSymbolProviderMetadata
有关文档符号提供程序元数据。
属性
当一个文档显示多个大纲树时,显示一个人类可读的字符串。
EndOfLine
表示 文档中的行结束字符序列。
枚举成员
换行符 \n。
回车换行符 \r\n。
EnterAction
描述按下 Enter 键时应执行的操作。
属性
描述新行和缩进后要附加的文本。
indentAction: IndentAction
描述缩进的操作。
描述新行缩进要删除的字符数。
EnvironmentVariableCollection
扩展可以应用于进程环境的突变集合。
属性
description: string | MarkdownString
环境变量集合的描述,将用于在 UI 中描述更改。
集合是否应被缓存以供工作区使用,并在窗口重新加载时应用于终端。如果为 true,则集合将立即生效,例如在窗口重新加载时。此外,如果缓存版本存在,此 API 将返回缓存版本。在扩展卸载或集合被清除时,集合将失效。默认为 true。
方法
append(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
将值追加到环境变量。
请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。
| 参数 | 描述 |
|---|---|
| variable: string | 要追加到的变量。 |
| value: string | 要追加到变量的值。 |
| options?: EnvironmentVariableMutatorOptions | 应用于变异器的选项。如果未提供任何选项,则默认为 |
| 返回值 | 描述 |
| void |
清除此集合中的所有变异器。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
delete(variable: string): void
删除此集合对变量的变异器。
| 参数 | 描述 |
|---|---|
| variable: string | 要删除其变异器的变量。 |
| 返回值 | 描述 |
| void |
forEach(callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any, thisArg?: any): void
遍历此集合中的每个变异器。
| 参数 | 描述 |
|---|---|
| callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any | 为每个条目执行的函数。 |
| thisArg?: any | 调用处理函数时使用的 |
| 返回值 | 描述 |
| void |
get(variable: string): EnvironmentVariableMutator
获取此集合应用于变量的变异器(如果存在)。
| 参数 | 描述 |
|---|---|
| variable: string | 要获取其变异器的变量。 |
| 返回值 | 描述 |
| EnvironmentVariableMutator |
prepend(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
将值前置到环境变量。
请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。
| 参数 | 描述 |
|---|---|
| variable: string | 要前置到的变量。 |
| value: string | 要前置到变量的值。 |
| options?: EnvironmentVariableMutatorOptions | 应用于变异器的选项。如果未提供任何选项,则默认为 |
| 返回值 | 描述 |
| void |
replace(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
将环境变量替换为某个值。
请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。
| 参数 | 描述 |
|---|---|
| variable: string | 要替换的变量。 |
| value: string | 用于替换变量的值。 |
| options?: EnvironmentVariableMutatorOptions | 应用于变异器的选项。如果未提供任何选项,则默认为 |
| 返回值 | 描述 |
| void |
EnvironmentVariableMutator
应用于环境变量的变异类型及其值。
属性
options: EnvironmentVariableMutatorOptions
应用于变异器的选项。
type: EnvironmentVariableMutatorType
将要应用于变量的变异类型。
用于变量的值。
EnvironmentVariableMutatorOptions
应用于变异器的选项。
属性
applyAtProcessCreation?: boolean
在进程创建之前应用于环境。默认为 false。
applyAtShellIntegration?: boolean
应用于 shell 集成脚本中的环境。注意,如果 shell 集成被禁用或因某种原因无法正常工作,此设置不会应用变异器。默认为 false。
EnvironmentVariableMutatorType
可以应用于环境变量的变异类型。
枚举成员
替换变量的现有值。
追加到变量现有值末尾。
前置到变量现有值开头。
EnvironmentVariableScope
环境变量集合适用的作用域对象。
属性
workspaceFolder?: WorkspaceFolder
用于获取集合的任何特定工作区文件夹。
EvaluatableExpression
EvaluatableExpression 表示文档中可以由活动调试器或运行时进行评估的表达式。此评估的结果将显示在类似工具提示的小部件中。如果仅指定了范围,则表达式将从底层文档中提取。可选的 expression 可以用来覆盖提取的表达式。在这种情况下,范围仍然用于突出显示文档中的范围。
构造函数
new EvaluatableExpression(range: Range, expression?: string): EvaluatableExpression
创建新的可计算表达式对象。
| 参数 | 描述 |
|---|---|
| range: Range | 从中提取可计算表达式的底层文档中的范围。 |
| expression?: string | 如果指定,则覆盖提取的表达式。 |
| 返回值 | 描述 |
| EvaluatableExpression |
属性
如果指定,则表达式将覆盖提取的表达式。
range: Range
范围用于从底层文档中提取可计算表达式并突出显示它。
EvaluatableExpressionProvider
EvaluatableExpressionProvider 接口定义了扩展与调试悬停之间的契约。在此契约中,提供程序返回给定文档位置的可计算表达式,编辑器会在活动的调试会话中评估此表达式,并将结果显示在调试悬停中。
方法
provideEvaluatableExpression(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<EvaluatableExpression>
为给定的文档和位置提供可计算表达式。编辑器将在活动的调试会话中评估此表达式,并在调试悬停中显示结果。表达式可以由底层文档中的范围隐式指定,也可以通过显式返回表达式来指定。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 将要显示调试悬停的文档。 |
| position: Position | 将要显示调试悬停的文档中的行和字符位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<EvaluatableExpression> | EvaluatableExpression 或一个解析为此类型的 thenable。可以通过返回 |
Event<T>
表示一个类型化的事件。
一个函数,它表示一个事件,你可以通过调用它并传递一个监听器函数作为参数来订阅它。
示例
item.onDidChange(function(event) {
console.log('Event happened: ' + event);
});
(listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]): Disposable
一个函数,它表示一个事件,你可以通过调用它并传递一个监听器函数作为参数来订阅它。
| 参数 | 描述 |
|---|---|
| listener: (e: T) => any | 当事件发生时将调用监听器函数。 |
| thisArgs?: any | 调用事件监听器时将使用的 |
| disposables?: Disposable[] | 将向其添加 Disposable 的数组。 |
| 返回值 | 描述 |
| Disposable | 一个用于取消事件监听器的 disposable。 |
EventEmitter<T>
事件发射器可用于为他人创建和管理一个 Event 以便订阅。一个发射器总是拥有一个事件。
如果您想从扩展中提供事件,例如在 TextDocumentContentProvider 内部或向其他扩展提供 API 时,请使用此类。
构造函数
new EventEmitter<T>(): EventEmitter<T>
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| EventEmitter<T> |
属性
event: Event<T>
事件监听器可以订阅。
方法
释放此对象并回收资源。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
通知 事件的所有订阅者。一个或多个监听器的失败不会导致此函数调用失败。
| 参数 | 描述 |
|---|---|
| data: T | 事件对象。 |
| 返回值 | 描述 |
| void |
Extension<T>
表示一个扩展。
要获取 Extension 的实例,请使用 getExtension。
属性
此扩展导出的公共 API(activate 的返回值)。在此扩展激活之前访问此字段是无效操作。
extensionKind: ExtensionKind
扩展种类描述了一个扩展是在 UI 运行的地方运行,还是在远程扩展主机运行的地方运行。扩展种类在扩展的 package.json 文件中定义,但也可以通过 remote.extensionKind 设置进行细化。当没有远程扩展主机存在时,值为 ExtensionKind.UI。
包含此扩展的目录的绝对文件路径。是 Extension.extensionUri.fsPath 的简写(与 uri 方案无关)。
extensionUri: Uri
包含扩展的目录的 uri。
规范的扩展标识符,格式为:publisher.name。
如果扩展已激活,则为 true。
扩展的 package.json 的解析内容。
方法
激活此扩展并返回其公共 API。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| Thenable<T> | 一个将在扩展激活时解析的 Promise。 |
ExtensionContext
扩展上下文是扩展私有的实用程序集合。
ExtensionContext 的实例作为第一个参数传递给扩展的 activate 调用。
属性
environmentVariableCollection: GlobalEnvironmentVariableCollection
获取此工作区的扩展全局环境变量集合,从而可以对终端环境变量进行更改。
extension: Extension<any>
当前 Extension 实例。
extensionMode: ExtensionMode
扩展运行的模式。有关可能的值和场景,请参阅 ExtensionMode。
扩展目录的绝对文件路径。是 ExtensionContext.extensionUri.fsPath 的简写(与 uri 方案无关)。
extensionUri: Uri
包含扩展的目录的 uri。
globalState: Memento & {setKeysForSync}
一个 memento 对象,用于存储与当前打开的 工作区无关的状态。
扩展可以在其中存储全局状态的目录的绝对文件路径。该目录可能不存在于磁盘上,并且由扩展负责创建。但是,父目录保证存在。
使用 globalState 存储键值数据。
- 已弃用 - 请改用 globalStorageUri。
globalStorageUri: Uri
扩展可以在其中存储全局状态的目录的 uri。该目录可能不存在于磁盘上,并且由扩展负责创建。但是,父目录保证存在。
使用 globalState 存储键值数据。
另请参阅 workspace.fs,了解如何从 uri 读取和写入文件和文件夹。
languageModelAccessInformation: LanguageModelAccessInformation
一个保存有关此扩展如何使用语言模型的信息的对象。
扩展可以在其中创建日志文件的目录的绝对文件路径。该目录可能不存在于磁盘上,并且由扩展负责创建。但是,父目录保证存在。
- 已弃用 - 请改用 logUri。
logUri: Uri
扩展可以在其中创建日志文件的目录的 uri。该目录可能不存在于磁盘上,并且由扩展负责创建。但是,父目录保证存在。
另请参阅 workspace.fs,了解如何从 uri 读取和写入文件和文件夹。
secrets: SecretStorage
一个 secret 存储对象,用于存储与当前打开的 工作区无关的状态。
扩展可以在其中存储私有状态的工作区特定目录的绝对文件路径。该目录可能不存在于磁盘上,并且由扩展负责创建。但是,父目录保证存在。
使用 workspaceState 或 globalState 存储键值数据。
- 已弃用 - 请改用 storageUri。
storageUri: Uri
扩展可以在其中存储私有状态的工作区特定目录的 uri。该目录可能不存在,并且由扩展负责创建。但是,父目录保证存在。当没有打开工作区或文件夹时,值为 undefined。
使用 workspaceState 或 globalState 存储键值数据。
另请参阅 workspace.fs,了解如何从 uri 读取和写入文件和文件夹。
subscriptions: Array<{dispose}>
可以向其添加 disposable 的数组。当此扩展被停用时,这些 disposable 将被释放。
注意,异步释放函数不会被等待。
workspaceState: Memento
一个 memento 对象,用于在当前打开的 工作区的上下文中存储状态。
方法
asAbsolutePath(relativePath: string): string
获取扩展中包含的资源的绝对路径。
注意,可以通过 Uri.joinPath 和 extensionUri 构建绝对 uri,例如 vscode.Uri.joinPath(context.extensionUri, relativePath);
| 参数 | 描述 |
|---|---|
| relativePath: string | 扩展中包含的资源的相对路径。 |
| 返回值 | 描述 |
| 字符串 | 资源的绝对路径。 |
ExtensionKind
在远程窗口中,扩展种类描述了一个扩展是在 UI(窗口)运行的地方运行,还是在远程运行。
枚举成员
扩展在 UI 运行的地方运行。
扩展在远程扩展主机运行的地方运行。
ExtensionMode
ExtensionMode 在 ExtensionContext 上提供,并指示特定扩展运行的模式。
枚举成员
扩展正常安装在编辑器中(例如,从 marketplace 或 VSIX)。
扩展是从启动编辑器时提供的 --extensionDevelopmentPath 运行的。
扩展是从 --extensionTestsPath 运行的,并且扩展主机正在运行单元测试。
ExtensionTerminalOptions
用于描述虚拟进程终端应使用哪些选项的值对象。
属性
color?: ThemeColor
终端的图标 ThemeColor。推荐使用标准的 terminal.ansi* 主题键,以获得最佳对比度和跨主题的一致性。
iconPath?: IconPath
终端的图标路径或 ThemeIcon。
选择退出在重启和重载时自动持久化终端。只有当 terminal.integrated.enablePersistentSessions 启用时,此选项才生效。
location?: TerminalEditorLocationOptions | TerminalSplitLocationOptions | TerminalLocation
一个人类可读的字符串,将用于在 UI 中表示终端。
pty: Pseudoterminal
一个 Pseudoterminal 的实现,允许扩展控制一个终端。
shellIntegrationNonce?: string
用于验证 shell 集成序列是否来自可信源的 nonce。UX 的一个示例影响是,如果命令行报告了一个 nonce,它将无需与用户确认命令行是否正确即可通过 shell 集成命令装饰 重新运行它。
如果终端包含 自定义 shell 集成支持,则应使用此选项。应将其设置为一个随机 GUID。在 Pseudoterminal 实现中,此值可以在相关序列中传递,以使其成为可信的。
FileChangeEvent
文件系统提供程序必须使用此事件来指示文件更改。
属性
type: FileChangeType
更改的类型。
uri: Uri
已更改文件的 URI。
FileChangeType
文件更改类型的枚举。
枚举成员
文件的内容或元数据已更改。
文件已被创建。
文件已被删除。
FileCoverage
包含文件的覆盖元数据。
静态
fromDetails(uri: Uri, details: readonly FileCoverageDetail[]): FileCoverage
使用覆盖详细信息填充的计数器创建一个 FileCoverage 实例。
| 参数 | 描述 |
|---|---|
| uri: Uri | 已覆盖文件的 URI |
| details: readonly FileCoverageDetail[] | 详细的覆盖信息 |
| 返回值 | 描述 |
| FileCoverage |
构造函数
new FileCoverage(uri: Uri, statementCoverage: TestCoverageCount, branchCoverage?: TestCoverageCount, declarationCoverage?: TestCoverageCount, includesTests?: TestItem[]): FileCoverage
| 参数 | 描述 |
|---|---|
| uri: Uri | 已覆盖文件的 URI |
| statementCoverage: TestCoverageCount | 语句覆盖信息。如果报告器不提供语句覆盖信息,则此项可用于表示行覆盖。 |
| branchCoverage?: TestCoverageCount | 分支覆盖信息 |
| declarationCoverage?: TestCoverageCount | 声明覆盖信息 |
| includesTests?: TestItem[] | 此覆盖报告中包含的测试用例,请参阅 FileCoverage.includesTests |
| 返回值 | 描述 |
| FileCoverage |
属性
branchCoverage?: TestCoverageCount
分支覆盖信息。
declarationCoverage?: TestCoverageCount
声明覆盖信息。根据报告器和语言的不同,这可能是函数、方法或命名空间等类型。
includesTests?: TestItem[]
生成此文件覆盖的 测试用例 列表。如果设置了此项,则还应在 TestRunProfile.loadDetailedCoverageForTest 中定义,以便检索详细的覆盖信息。
statementCoverage: TestCoverageCount
语句覆盖信息。如果报告器不提供语句覆盖信息,则此项可用于表示行覆盖。
uri: Uri
文件 URI。
FileCoverageDetail
从 TestRunProfile.loadDetailedCoverage 返回的覆盖详细信息。
FileCoverageDetail: StatementCoverage | DeclarationCoverage
FileCreateEvent
文件创建后触发的事件。
属性
files: readonly Uri[]
已创建的文件。
FileDecoration
文件装饰表示可以与文件一起渲染的元数据。
构造函数
new FileDecoration(badge?: string, tooltip?: string, color?: ThemeColor): FileDecoration
创建新的装饰。
| 参数 | 描述 |
|---|---|
| badge?: string | 表示装饰的字母。 |
| tooltip?: string | 装饰的工具提示。 |
| color?: ThemeColor | 装饰的颜色。 |
| 返回值 | 描述 |
| FileDecoration |
属性
一个非常短的字符串,表示此装饰。
color?: ThemeColor
此装饰的颜色。
一个布尔标志,表示此装饰应传播给其父级。
此装饰的可读工具提示。
FileDecorationProvider
装饰提供程序接口定义了扩展与文件装饰之间的契约。
事件
onDidChangeFileDecorations?: Event<Uri | Uri[]>
方法
provideFileDecoration(uri: Uri, token: CancellationToken): ProviderResult<FileDecoration>
为给定的 URI 提供装饰。
请注意,此函数仅在文件 UI 中渲染时调用。这意味着,通过 onDidChangeFileDecorations 事件必须向编辑器发出关于向上传播的子项的装饰信号。
| 参数 | 描述 |
|---|---|
| uri: Uri | 为提供装饰的文件的 URI。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<FileDecoration> | 一个装饰或一个解析为该装饰的可thenable。 |
FileDeleteEvent
文件删除后触发的事件。
属性
files: readonly Uri[]
已删除的文件。
FilePermission
文件的权限。
枚举成员
文件是只读的。
注意:所有来自注册了 isReadonly: true 选项的 FileSystemProvider 的 FileStat 都将被隐式视为设置了 FilePermission.Readonly。因此,无法注册一个只读文件系统提供程序,其中某些 FileStat 不是只读的。
FileRenameEvent
文件重命名后触发的事件。
属性
files: ReadonlyArray<{newUri: Uri, oldUri: Uri}>
已重命名的文件。
FileStat
FileStat 类型表示文件的元数据
属性
创建时间戳(自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数)。
修改时间戳(自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数)。
注意:如果文件已更改,请务必提供一个比先前值更晚的更新的 mtime。否则,可能会有优化导致编辑器不显示更新后的文件内容。
permissions?: FilePermission
文件的权限,例如文件是否只读。
注意:此值可能是一个位掩码,例如 FilePermission.Readonly | FilePermission.Other。
大小(以字节为单位)。
注意:如果文件已更改,请务必提供更新的 size。否则,可能会有优化导致编辑器不显示更新后的文件内容。
type: FileType
文件的类型,例如普通文件、目录或指向文件的符号链接。
注意:此值可能是一个位掩码,例如 FileType.File | FileType.SymbolicLink。
FileSystem
文件系统接口公开编辑器内置和贡献的 文件系统提供程序。它允许扩展处理本地磁盘上的文件以及来自远程位置(如远程扩展主机或 ftp 服务器)的文件。
请注意,此接口的一个实例可通过 workspace.fs 访问。
方法
copy(source: Uri, target: Uri, options?: {overwrite: boolean}): Thenable<void>
复制文件或文件夹。
createDirectory(uri: Uri): Thenable<void>
创建新目录(注意,新文件是通过 write 调用创建的)。
请注意,缺失的目录会自动创建,例如此调用具有 mkdirp 的语义。
| 参数 | 描述 |
|---|---|
| uri: Uri | 新文件夹的 URI。 |
| 返回值 | 描述 |
| Thenable<void> |
delete(uri: Uri, options?: {recursive: boolean, useTrash: boolean}): Thenable<void>
删除文件。
| 参数 | 描述 |
|---|---|
| uri: Uri | 要删除的资源。 |
| options?: {recursive: boolean, useTrash: boolean} | 定义是否使用回收站以及是否递归删除文件夹。 |
| 返回值 | 描述 |
| Thenable<void> |
isWritableFileSystem(scheme: string): boolean
检查给定的文件系统是否支持写入文件。
请记住,即使文件系统支持写入,也并不意味着写入总是会成功。可能存在权限问题或其他错误导致文件写入失败。
| 参数 | 描述 |
|---|---|
| scheme: string | 文件系统的方案,例如 |
| 返回值 | 描述 |
| 布尔值 | 如果文件系统支持写入,则为 |
readDirectory(uri: Uri): Thenable<Array<[string, FileType]>>
检索 目录 的所有条目。
readFile(uri: Uri): Thenable<Uint8Array>
读取文件的全部内容。
| 参数 | 描述 |
|---|---|
| uri: Uri | 文件的 URI。 |
| 返回值 | 描述 |
| Thenable<Uint8Array> | 字节数组或解析为该数组的可thenable。 |
rename(source: Uri, target: Uri, options?: {overwrite: boolean}): Thenable<void>
重命名文件或文件夹。
stat(uri: Uri): Thenable<FileStat>
writeFile(uri: Uri, content: Uint8Array): Thenable<void>
将数据写入文件,替换其所有内容。
| 参数 | 描述 |
|---|---|
| uri: Uri | 文件的 URI。 |
| content: Uint8Array | 文件的内容。 |
| 返回值 | 描述 |
| Thenable<void> |
FileSystemError
文件系统提供程序应使用的类型来指示错误。
此类包含常见错误场景的工厂方法,例如 FileNotFound(文件或文件夹不存在),用法如下:throw vscode.FileSystemError.FileNotFound(someUri);
静态
FileExists(messageOrUri?: string | Uri): FileSystemError
创建错误以指示文件或文件夹已存在,例如在创建但不覆盖文件时。
| 参数 | 描述 |
|---|---|
| messageOrUri?: string | Uri | 消息或 URI。 |
| 返回值 | 描述 |
| FileSystemError |
FileIsADirectory(messageOrUri?: string | Uri): FileSystemError
创建错误以指示文件是一个文件夹。
| 参数 | 描述 |
|---|---|
| messageOrUri?: string | Uri | 消息或 URI。 |
| 返回值 | 描述 |
| FileSystemError |
FileNotADirectory(messageOrUri?: string | Uri): FileSystemError
创建错误以指示文件不是一个文件夹。
| 参数 | 描述 |
|---|---|
| messageOrUri?: string | Uri | 消息或 URI。 |
| 返回值 | 描述 |
| FileSystemError |
FileNotFound(messageOrUri?: string | Uri): FileSystemError
创建错误以指示文件或文件夹未找到。
| 参数 | 描述 |
|---|---|
| messageOrUri?: string | Uri | 消息或 URI。 |
| 返回值 | 描述 |
| FileSystemError |
NoPermissions(messageOrUri?: string | Uri): FileSystemError
创建错误以指示操作缺少必要的权限。
| 参数 | 描述 |
|---|---|
| messageOrUri?: string | Uri | 消息或 URI。 |
| 返回值 | 描述 |
| FileSystemError |
Unavailable(messageOrUri?: string | Uri): FileSystemError
创建错误以指示文件系统不可用或过于繁忙而无法完成请求。
| 参数 | 描述 |
|---|---|
| messageOrUri?: string | Uri | 消息或 URI。 |
| 返回值 | 描述 |
| FileSystemError |
构造函数
new FileSystemError(messageOrUri?: string | Uri): FileSystemError
创建新的文件系统错误。
| 参数 | 描述 |
|---|---|
| messageOrUri?: string | Uri | 消息或 URI。 |
| 返回值 | 描述 |
| FileSystemError |
属性
标识此错误的代码。
可能的值是错误的名称,例如 FileNotFound,或者 Unknown 表示未指定错误。
FileSystemProvider
文件系统提供程序定义了编辑器读取、写入、发现以及管理文件和文件夹所需的内容。它允许扩展从远程位置(如 ftp 服务器)提供文件,并将这些文件无缝集成到编辑器中。
事件
onDidChangeFile: Event<FileChangeEvent[]>
方法
copy(source: Uri, destination: Uri, options: {overwrite: boolean}): void | Thenable<void>
复制文件或文件夹。实现此函数是可选的,但它会加快复制操作的速度。
- 抛出 - FileNotFound,当
source不存在时。
- 抛出 - FileNotFound,当
destination的父目录不存在时,例如不需要mkdirp逻辑。
- 抛出 - FileExists,当
destination已存在且overwrite选项不是true时。
- 抛出 - NoPermissions,当权限不足时。
createDirectory(uri: Uri): void | Thenable<void>
创建新目录(注意,新文件是通过 write 调用创建的)。
- throws - FileNotFound 当
uri的父目录不存在时,例如,不需要 mkdirp 逻辑。
- throws - FileExists 当
uri已存在时。
- 抛出 - NoPermissions,当权限不足时。
| 参数 | 描述 |
|---|---|
| uri: Uri | 新文件夹的 URI。 |
| 返回值 | 描述 |
| void | Thenable<void> |
delete(uri: Uri, options: {recursive: boolean}): void | Thenable<void>
| 参数 | 描述 |
|---|---|
| uri: Uri | 要删除的资源。 |
| options: {recursive: boolean} | 定义是否递归删除文件夹。 |
| 返回值 | 描述 |
| void | Thenable<void> |
readDirectory(uri: Uri): Array<[string, FileType]> | Thenable<Array<[string, FileType]>>
检索 目录 的所有条目。
- throws - FileNotFound 当
uri不存在时。
readFile(uri: Uri): Uint8Array | Thenable<Uint8Array>
读取文件的全部内容。
- throws - FileNotFound 当
uri不存在时。
| 参数 | 描述 |
|---|---|
| uri: Uri | 文件的 URI。 |
| 返回值 | 描述 |
| Uint8Array | Thenable<Uint8Array> | 字节数组或解析为该数组的可thenable。 |
rename(oldUri: Uri, newUri: Uri, options: {overwrite: boolean}): void | Thenable<void>
重命名文件或文件夹。
- throws - FileNotFound 当
oldUri不存在时。
- throws - FileNotFound 当
newUri的父目录不存在时,例如,不需要 mkdirp 逻辑。
- throws - FileExists 当
newUri已存在且overwrite选项不为true时。
- 抛出 - NoPermissions,当权限不足时。
stat(uri: Uri): FileStat | Thenable<FileStat>
检索文件的元数据。
请注意,符号链接的元数据应为它们指向的文件的元数据。但是,除了实际类型之外,还必须使用 FileType.SymbolicLink,例如 FileType.SymbolicLink | FileType.Directory。
- throws - FileNotFound 当
uri不存在时。
watch(uri: Uri, options: {excludes: readonly string[], recursive: boolean}): Disposable
订阅文件或文件夹(由 uri 表示)的更改事件。对于文件夹,recursive 选项表示是否也应监视子文件夹、子子文件夹等的文件更改。当 recursive: false 时,只有文件夹的直接子文件的更改才会触发事件。
excludes 数组用于指示应从文件监视中排除的路径。它通常派生自用户可配置的 files.watcherExclude 设置。每个条目都可以是
- 要排除的绝对路径
- 要排除的相对路径(例如
build/output) - 简单的 glob 模式(例如
**/build、output/**)
文件系统提供商的职责是根据这些规则为每次更改调用 onDidChangeFile。不得为与提供的任何排除项匹配的文件发出事件。
| 参数 | 描述 |
|---|---|
| uri: Uri | 要监视的文件或文件夹的 uri。 |
| options: {excludes: readonly string[], recursive: boolean} | 配置监视。 |
| 返回值 | 描述 |
| Disposable | 一个 disposable,用于告知提供商停止监视 |
writeFile(uri: Uri, content: Uint8Array, options: {create: boolean, overwrite: boolean}): void | Thenable<void>
将数据写入文件,替换其所有内容。
- throws - FileNotFound 当
uri不存在且未设置create时。
- throws - FileNotFound 当
uri的父目录不存在且设置了create时,例如,不需要 mkdirp 逻辑。
- throws - FileExists 当
uri已存在,设置了create但未设置overwrite时。
- 抛出 - NoPermissions,当权限不足时。
| 参数 | 描述 |
|---|---|
| uri: Uri | 文件的 URI。 |
| content: Uint8Array | 文件的内容。 |
| options: {create: boolean, overwrite: boolean} | 定义是否应或必须创建不存在的文件。 |
| 返回值 | 描述 |
| void | Thenable<void> |
FileSystemWatcher
文件系统监视器会通知有关磁盘上的文件和文件夹或其他 FileSystemProviders 的更改。
要获取 FileSystemWatcher 的实例,请使用 createFileSystemWatcher。
事件
文件/文件夹更改时触发的事件。
文件/文件夹创建时触发的事件。
文件/文件夹删除时触发的事件。
属性
如果此文件系统监视器创建时忽略了更改文件系统事件,则为 true。
如果此文件系统监视器创建时忽略了创建文件系统事件,则为 true。
如果此文件系统监视器创建时忽略了删除文件系统事件,则为 true。
方法
处置此对象。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| any |
FileType
文件类型的枚举。File 和 Directory 类型也可以是符号链接,在这种情况下,请使用 FileType.File | FileType.SymbolicLink 和 FileType.Directory | FileType.SymbolicLink。
枚举成员
文件类型未知。
普通文件。
目录。
指向文件的符号链接。
FileWillCreateEvent
在文件即将创建时触发的事件。
要在文件创建之前对工作区进行修改,请使用 waitUntil 函数调用一个解析为 workspace edit 的 thenable。
属性
files: readonly Uri[]
将要创建的文件。
token: CancellationToken
取消令牌。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允许暂停事件并应用 workspace edit。
注意: 此函数只能在事件分派期间调用,不能异步调用
workspace.onWillCreateFiles(event => {
// async, will *throw* an error
setTimeout(() => event.waitUntil(promise));
// sync, OK
event.waitUntil(promise);
});
| 参数 | 描述 |
|---|---|
| thenable: Thenable<WorkspaceEdit> | 延迟保存的 thenable。 |
| 返回值 | 描述 |
| void |
waitUntil(thenable: Thenable<any>): void
允许暂停事件,直到提供的 thenable 解析。
注意: 此函数只能在事件分派期间调用。
| 参数 | 描述 |
|---|---|
| thenable: Thenable<any> | 延迟保存的 thenable。 |
| 返回值 | 描述 |
| void |
FileWillDeleteEvent
在文件即将删除时触发的事件。
要在文件删除之前对工作区进行修改,请使用 waitUntil 函数调用一个解析为 workspace edit 的 thenable。
属性
files: readonly Uri[]
将要删除的文件。
token: CancellationToken
取消令牌。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允许暂停事件并应用 workspace edit。
注意: 此函数只能在事件分派期间调用,不能异步调用
workspace.onWillCreateFiles(event => {
// async, will *throw* an error
setTimeout(() => event.waitUntil(promise));
// sync, OK
event.waitUntil(promise);
});
| 参数 | 描述 |
|---|---|
| thenable: Thenable<WorkspaceEdit> | 延迟保存的 thenable。 |
| 返回值 | 描述 |
| void |
waitUntil(thenable: Thenable<any>): void
允许暂停事件,直到提供的 thenable 解析。
注意: 此函数只能在事件分派期间调用。
| 参数 | 描述 |
|---|---|
| thenable: Thenable<any> | 延迟保存的 thenable。 |
| 返回值 | 描述 |
| void |
FileWillRenameEvent
在文件即将重命名时触发的事件。
要在文件重命名之前对工作区进行修改,请使用 waitUntil 函数调用一个解析为 workspace edit 的 thenable。
属性
files: ReadonlyArray<{newUri: Uri, oldUri: Uri}>
将要重命名的文件。
token: CancellationToken
取消令牌。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允许暂停事件并应用 workspace edit。
注意: 此函数只能在事件分派期间调用,不能异步调用
workspace.onWillCreateFiles(event => {
// async, will *throw* an error
setTimeout(() => event.waitUntil(promise));
// sync, OK
event.waitUntil(promise);
});
| 参数 | 描述 |
|---|---|
| thenable: Thenable<WorkspaceEdit> | 延迟保存的 thenable。 |
| 返回值 | 描述 |
| void |
waitUntil(thenable: Thenable<any>): void
允许暂停事件,直到提供的 thenable 解析。
注意: 此函数只能在事件分派期间调用。
| 参数 | 描述 |
|---|---|
| thenable: Thenable<any> | 延迟保存的 thenable。 |
| 返回值 | 描述 |
| void |
FoldingContext
折叠上下文(供将来使用)
FoldingRange
基于行的折叠范围。要有效,起始行和结束行必须大于零且小于文档行数。无效的范围将被忽略。
构造函数
new FoldingRange(start: number, end: number, kind?: FoldingRangeKind): FoldingRange
创建新的折叠范围。
| 参数 | 描述 |
|---|---|
| start: number | 折叠范围的起始行。 |
| end: number | 折叠范围的结束行。 |
| kind?: FoldingRangeKind | 折叠范围的类型。 |
| 返回值 | 描述 |
| FoldingRange |
属性
要折叠的范围的基于零的结束行。折叠区域以行的最后一个字符结束。为了有效,结束行必须大于等于零且小于文档行数。
kind?: FoldingRangeKind
描述折叠范围的 Kind,例如 Comment 或 Region。Kind 用于对折叠范围进行分类,并由“折叠所有注释”等命令使用。请参阅 FoldingRangeKind 以了解所有 Kind 的枚举。如果未设置,则范围源自语法元素。
要折叠的范围的基于零的起始行。折叠区域从行的最后一个字符之后开始。为了有效,结束行必须大于等于零且小于文档行数。
FoldingRangeKind
特定折叠范围种类的枚举。Kind 是 FoldingRange 的可选字段,用于区分特定折叠范围,例如源自注释的范围。Kind 由“折叠所有注释”或“折叠所有区域”等命令使用。如果未在范围内设置 Kind,则该范围源自注释、导入或区域标记以外的语法元素。
枚举成员
代表注释的折叠范围的 Kind。
代表导入的折叠范围的 Kind。
代表源自折叠标记(如 #region 和 #endregion)的区域的折叠范围的 Kind。
FoldingRangeProvider
折叠范围提供程序接口定义了扩展和编辑器中的 Folding 之间的合同。
事件
onDidChangeFoldingRanges?: Event<void>
一个可选事件,用于指示此提供程序的折叠范围已更改。
方法
provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken): ProviderResult<FoldingRange[]>
返回折叠范围列表,如果提供程序不想参与或被取消,则返回 null 和 undefined。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| context: FoldingContext | 附加上下文信息(供将来使用) |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<FoldingRange[]> |
FormattingOptions
描述格式化应使用哪些选项的值对象。
属性
偏好空格而不是制表符。
一个空格的制表符大小。
FunctionBreakpoint
由函数名指定的断点。
构造函数
new FunctionBreakpoint(functionName: string, enabled?: boolean, condition?: string, hitCondition?: string, logMessage?: string): FunctionBreakpoint
创建新的函数断点。
| 参数 | 描述 |
|---|---|
| functionName: string | |
| enabled?: boolean | |
| condition?: string | |
| hitCondition?: string | |
| logMessage?: string | |
| 返回值 | 描述 |
| FunctionBreakpoint |
属性
条件断点的可选表达式。
断点是否已启用。
此断点附加到的函数的名称。
可选表达式,用于控制忽略断点多少次命中。
断点的唯一 ID。
断点命中时要记录的可选消息。{} 中的嵌入表达式由调试适配器进行插值。
GlobalEnvironmentVariableCollection
扩展可以应用于进程环境的变量集合。适用于所有范围。
属性
description: string | MarkdownString
环境变量集合的描述,将用于在 UI 中描述更改。
集合是否应被缓存以供工作区使用,并在窗口重新加载时应用于终端。如果为 true,则集合将立即生效,例如在窗口重新加载时。此外,如果缓存版本存在,此 API 将返回缓存版本。在扩展卸载或集合被清除时,集合将失效。默认为 true。
方法
append(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
将值追加到环境变量。
请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。
| 参数 | 描述 |
|---|---|
| variable: string | 要追加到的变量。 |
| value: string | 要追加到变量的值。 |
| options?: EnvironmentVariableMutatorOptions | 应用于变异器的选项。如果未提供任何选项,则默认为 |
| 返回值 | 描述 |
| void |
清除此集合中的所有变异器。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
delete(variable: string): void
删除此集合对变量的变异器。
| 参数 | 描述 |
|---|---|
| variable: string | 要删除其变异器的变量。 |
| 返回值 | 描述 |
| void |
forEach(callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any, thisArg?: any): void
遍历此集合中的每个变异器。
| 参数 | 描述 |
|---|---|
| callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any | 为每个条目执行的函数。 |
| thisArg?: any | 调用处理函数时使用的 |
| 返回值 | 描述 |
| void |
get(variable: string): EnvironmentVariableMutator
获取此集合应用于变量的变异器(如果存在)。
| 参数 | 描述 |
|---|---|
| variable: string | 要获取其变异器的变量。 |
| 返回值 | 描述 |
| EnvironmentVariableMutator |
getScoped(scope: EnvironmentVariableScope): EnvironmentVariableCollection
获取扩展的作用域特定环境变量集合。这使得仅在指定作用域内修改终端环境变量成为可能,并且是在全局集合之上(以及之后)应用的。
通过此方法获得的每个对象都是隔离的,并且不会影响其他作用域的对象,包括全局集合。
| 参数 | 描述 |
|---|---|
| scope: EnvironmentVariableScope | 环境变量集合适用的作用域。 如果省略了作用域参数,则返回适用于该参数的所有相关作用域的集合。例如,如果未指定 'workspaceFolder' 参数,则将返回适用于所有工作区的集合。 |
| 返回值 | 描述 |
| EnvironmentVariableCollection | 传入作用域的环境变量集合。 |
prepend(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
将值前置到环境变量。
请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。
| 参数 | 描述 |
|---|---|
| variable: string | 要前置到的变量。 |
| value: string | 要前置到变量的值。 |
| options?: EnvironmentVariableMutatorOptions | 应用于变异器的选项。如果未提供任何选项,则默认为 |
| 返回值 | 描述 |
| void |
replace(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
将环境变量替换为某个值。
请注意,扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的所有调用。
| 参数 | 描述 |
|---|---|
| variable: string | 要替换的变量。 |
| value: string | 用于替换变量的值。 |
| options?: EnvironmentVariableMutatorOptions | 应用于变异器的选项。如果未提供任何选项,则默认为 |
| 返回值 | 描述 |
| void |
GlobPattern
用于匹配文件路径的 glob 文件模式。这可以是 glob 模式字符串(如 **/*.{ts,js} 或 *.{ts,js})或 relative pattern。
Glob 模式可以具有以下语法
*匹配路径段中的零个或多个字符?匹配路径段中的一个字符**匹配任意数量的路径段,包括零个{}用于分组条件(例如**/*.{ts,js}匹配所有 TypeScript 和 JavaScript 文件)[]用于声明路径段中要匹配的字符范围(例如,example.[0-9]匹配example.0、example.1等)[!...]用于否定路径段中要匹配的字符范围(例如,example.[!0-9]匹配example.a、example.b,但不匹配example.0)
注意:反斜杠 (``) 在 glob 模式中无效。如果要匹配现有文件路径,请考虑使用 relative pattern 支持,该支持会自动将任何反斜杠转换为斜杠。否则,请确保在创建 glob 模式时将任何反斜杠转换为斜杠。
GlobPattern: string | RelativePattern
Hover
Hover 代表符号或单词的附加信息。Hover 将在类似工具提示的窗口中小部件中呈现。
构造函数
new Hover(contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>, range?: Range): Hover
创建新的 Hover 对象。
| 参数 | 描述 |
|---|---|
| contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString> | Hover 的内容。 |
| range?: Range | Hover 适用的范围。 |
| 返回值 | 描述 |
| Hover |
属性
contents: Array<MarkdownString | MarkedString>
此 Hover 的内容。
range?: Range
此 Hover 适用的范围。如果省略,编辑器将使用当前位置的单词范围或当前位置本身。
HoverProvider
Hover 提供程序接口定义了扩展和 hover 功能之间的合同。
方法
provideHover(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Hover>
为给定的位置和文档提供 Hover。同一位置的多个 Hover 将由编辑器合并。Hover 可以有一个范围,如果省略,则默认为当前位置的单词范围。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<Hover> | Hover 或解析为 Hover 的 thenable。可以通过返回 |
IconPath
表示 UI 中的图标。这可以是 uri、浅色和深色主题的单独 uri,或 theme icon。
IconPath: Uri | {dark: Uri, light: Uri} | ThemeIcon
ImplementationProvider
实现提供程序接口定义了扩展和转到实现功能之间的合同。
方法
provideImplementation(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
提供给定位置和文档中符号的实现。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<Definition | LocationLink[]> | 定义或一个可解析为该定义的 thenable。可以通过返回 |
IndentAction
描述按 Enter 键时如何处理缩进。
枚举成员
插入新行并复制上一行的缩进。
插入新行并缩进一次(相对于上一行的缩进)。
插入两行新行
- 第一个被缩进,光标将停在那里
- the second one at the same indentation level
Insert new line and outdent once (relative to the previous line's indentation).
IndentationRule
Describes indentation rules for a language.
属性
If a line matches this pattern, then all the lines after it should be unindented once (until another rule matches).
If a line matches this pattern, then all the lines after it should be indented once (until another rule matches).
indentNextLinePattern?: RegExp
If a line matches this pattern, then only the next line after it should be indented once.
unIndentedLinePattern?: RegExp
If a line matches this pattern, then its indentation should not be changed and it should not be evaluated against the other rules.
InlayHint
Inlay hint information.
构造函数
new InlayHint(position: Position, label: string | InlayHintLabelPart[], kind?: InlayHintKind): InlayHint
Creates a new inlay hint.
| 参数 | 描述 |
|---|---|
| position: Position | The position of the hint. |
| label: string | InlayHintLabelPart[] | The label of the hint. |
| kind?: InlayHintKind | The kind of the hint. |
| 返回值 | 描述 |
| InlayHint |
属性
kind?: InlayHintKind
The kind of this hint. The inlay hint kind defines the appearance of this inlay hint.
label: string | InlayHintLabelPart[]
The label of this hint. A human readable string or an array of label parts.
Note that neither the string nor the label part can be empty.
Render padding before the hint. Padding will use the editor's background color, not the background color of the hint itself. That means padding can be used to visually align/separate an inlay hint.
Render padding after the hint. Padding will use the editor's background color, not the background color of the hint itself. That means padding can be used to visually align/separate an inlay hint.
position: Position
The position of this hint.
textEdits?: TextEdit[]
Optional text edits that are performed when accepting this inlay hint. The default gesture for accepting an inlay hint is the double click.
Note that edits are expected to change the document so that the inlay hint (or its nearest variant) is now part of the document and the inlay hint itself is now obsolete.
Note that this property can be set late during resolving of inlay hints.
tooltip?: string | MarkdownString
The tooltip text when you hover over this item.
Note that this property can be set late during resolving of inlay hints.
InlayHintKind
Inlay hint kinds.
The kind of an inline hint defines its appearance, e.g the corresponding foreground and background colors are being used.
枚举成员
An inlay hint that is for a type annotation.
An inlay hint that is for a parameter.
InlayHintLabelPart
An inlay hint label part allows for interactive and composite labels of inlay hints.
构造函数
new InlayHintLabelPart(value: string): InlayHintLabelPart
Creates a new inlay hint label part.
| 参数 | 描述 |
|---|---|
| value: string | The value of the part. |
| 返回值 | 描述 |
| InlayHintLabelPart |
属性
command?: Command
location?: Location
An optional source code location that represents this label part.
The editor will use this location for the hover and for code navigation features: This part will become a clickable link that resolves to the definition of the symbol at the given location (not necessarily the location itself), it shows the hover that shows at the given location, and it shows a context menu with further code navigation commands.
Note that this property can be set late during resolving of inlay hints.
tooltip?: string | MarkdownString
The tooltip text when you hover over this label part.
Note that this property can be set late during resolving of inlay hints.
The value of this label part.
InlayHintsProvider<T>
The inlay hints provider interface defines the contract between extensions and the inlay hints feature.
事件
onDidChangeInlayHints?: Event<void>
An optional event to signal that inlay hints from this provider have changed.
方法
provideInlayHints(document: TextDocument, range: Range, token: CancellationToken): ProviderResult<T[]>
Provide inlay hints for the given range and document.
Note that inlay hints that are not contained by the given range are ignored.
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| range: Range | The range for which inlay hints should be computed. |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T[]> | An array of inlay hints or a thenable that resolves to such. |
resolveInlayHint(hint: T, token: CancellationToken): ProviderResult<T>
Given an inlay hint fill in tooltip, text edits, or complete label parts.
Note that the editor will resolve an inlay hint at most once.
| 参数 | 描述 |
|---|---|
| hint: T | An inlay hint. |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T> | The resolved inlay hint or a thenable that resolves to such. It is OK to return the given |
InlineCompletionContext
Provides information about the context in which an inline completion was requested.
属性
selectedCompletionInfo: SelectedCompletionInfo
Provides information about the currently selected item in the autocomplete widget if it is visible.
If set, provided inline completions must extend the text of the selected item and use the same range, otherwise they are not shown as preview. As an example, if the document text is console. and the selected item is .log replacing the . in the document, the inline completion must also replace . and start with .log, for example .log().
Inline completion providers are requested again whenever the selected item changes.
triggerKind: InlineCompletionTriggerKind
Describes how the inline completion was triggered.
InlineCompletionItem
An inline completion item represents a text snippet that is proposed inline to complete text that is being typed.
See also InlineCompletionItemProvider.provideInlineCompletionItems
构造函数
new InlineCompletionItem(insertText: string | SnippetString, range?: Range, command?: Command): InlineCompletionItem
Creates a new inline completion item.
| 参数 | 描述 |
|---|---|
| insertText: string | SnippetString | The text to replace the range with. |
| range?: Range | The range to replace. If not set, the word at the requested position will be used. |
| command?: Command | An optional Command that is executed after inserting this completion. |
| 返回值 | 描述 |
| InlineCompletionItem |
属性
command?: Command
An optional Command that is executed after inserting this completion.
A text that is used to decide if this inline completion should be shown. When falsy the InlineCompletionItem.insertText is used.
An inline completion is shown if the text to replace is a prefix of the filter text.
insertText: string | SnippetString
The text to replace the range with. Must be set. Is used both for the preview and the accept operation.
range?: Range
The range to replace. Must begin and end on the same line.
Prefer replacements over insertions to provide a better experience when the user deletes typed text.
InlineCompletionItemProvider
The inline completion item provider interface defines the contract between extensions and the inline completion feature.
Providers are asked for completions either explicitly by a user gesture or implicitly when typing.
方法
provideInlineCompletionItems(document: TextDocument, position: Position, context: InlineCompletionContext, token: CancellationToken): ProviderResult<InlineCompletionList | InlineCompletionItem[]>
Provides inline completion items for the given position and document. If inline completions are enabled, this method will be called whenever the user stopped typing. It will also be called when the user explicitly triggers inline completions or explicitly asks for the next or previous inline completion. In that case, all available inline completions should be returned. context.triggerKind can be used to distinguish between these scenarios.
| 参数 | 描述 |
|---|---|
| document: TextDocument | The document inline completions are requested for. |
| position: Position | The position inline completions are requested for. |
| context: InlineCompletionContext | A context object with additional information. |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<InlineCompletionList | InlineCompletionItem[]> | An array of completion items or a thenable that resolves to an array of completion items. |
InlineCompletionList
Represents a collection of inline completion items to be presented in the editor.
构造函数
new InlineCompletionList(items: InlineCompletionItem[]): InlineCompletionList
Creates a new list of inline completion items.
| 参数 | 描述 |
|---|---|
| items: InlineCompletionItem[] | |
| 返回值 | 描述 |
| InlineCompletionList |
属性
items: InlineCompletionItem[]
The inline completion items.
InlineCompletionTriggerKind
Describes how an inline completion provider was triggered.
枚举成员
Completion was triggered explicitly by a user gesture. Return multiple completion items to enable cycling through them.
Completion was triggered automatically while editing. It is sufficient to return a single completion item in this case.
InlineValue
Inline value information can be provided by different means
- directly as a text value (class InlineValueText).
- as a name to use for a variable lookup (class InlineValueVariableLookup)
- as an evaluatable expression (class InlineValueEvaluatableExpression) The InlineValue types combines all inline value types into one type.
InlineValue: InlineValueText | InlineValueVariableLookup | InlineValueEvaluatableExpression
InlineValueContext
A value-object that contains contextual information when requesting inline values from a InlineValuesProvider.
属性
The stack frame (as a DAP Id) where the execution has stopped.
stoppedLocation: Range
The document range where execution has stopped. Typically the end position of the range denotes the line where the inline values are shown.
InlineValueEvaluatableExpression
Provide an inline value through an expression evaluation. If only a range is specified, the expression will be extracted from the underlying document. An optional expression can be used to override the extracted expression.
构造函数
new InlineValueEvaluatableExpression(range: Range, expression?: string): InlineValueEvaluatableExpression
Creates a new InlineValueEvaluatableExpression object.
| 参数 | 描述 |
|---|---|
| range: Range | 从中提取可计算表达式的底层文档中的范围。 |
| expression?: string | 如果指定,则覆盖提取的表达式。 |
| 返回值 | 描述 |
| InlineValueEvaluatableExpression |
属性
如果指定,则表达式将覆盖提取的表达式。
range: Range
The document range for which the inline value applies. The range is used to extract the evaluatable expression from the underlying document.
InlineValuesProvider
The inline values provider interface defines the contract between extensions and the editor's debugger inline values feature. In this contract the provider returns inline value information for a given document range and the editor shows this information in the editor at the end of lines.
事件
onDidChangeInlineValues?: Event<void>
An optional event to signal that inline values have changed.
另请参阅 EventEmitter
方法
provideInlineValues(document: TextDocument, viewPort: Range, context: InlineValueContext, token: CancellationToken): ProviderResult<InlineValue[]>
Provide "inline value" information for a given document and range. The editor calls this method whenever debugging stops in the given document. The returned inline values information is rendered in the editor at the end of lines.
| 参数 | 描述 |
|---|---|
| document: TextDocument | The document for which the inline values information is needed. |
| viewPort: Range | The visible document range for which inline values should be computed. |
| context: InlineValueContext | A bag containing contextual information like the current location. |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<InlineValue[]> | An array of InlineValueDescriptors or a thenable that resolves to such. The lack of a result can be signaled by returning |
InlineValueText
Provide inline value as text.
构造函数
new InlineValueText(range: Range, text: string): InlineValueText
Creates a new InlineValueText object.
| 参数 | 描述 |
|---|---|
| range: Range | The document line where to show the inline value. |
| text: string | The value to be shown for the line. |
| 返回值 | 描述 |
| InlineValueText |
属性
range: Range
The document range for which the inline value applies.
The text of the inline value.
InlineValueVariableLookup
Provide inline value through a variable lookup. If only a range is specified, the variable name will be extracted from the underlying document. An optional variable name can be used to override the extracted name.
构造函数
new InlineValueVariableLookup(range: Range, variableName?: string, caseSensitiveLookup?: boolean): InlineValueVariableLookup
Creates a new InlineValueVariableLookup object.
| 参数 | 描述 |
|---|---|
| range: Range | The document line where to show the inline value. |
| variableName?: string | The name of the variable to look up. |
| caseSensitiveLookup?: boolean | How to perform the lookup. If missing lookup is case sensitive. |
| 返回值 | 描述 |
| InlineValueVariableLookup |
属性
How to perform the lookup.
range: Range
The document range for which the inline value applies. The range is used to extract the variable name from the underlying document.
If specified the name of the variable to look up.
InputBox
A concrete QuickInput to let the user input a text value.
请注意,在许多情况下,更方便的 window.showInputBox 更易于使用。window.createInputBox 应在 window.showInputBox 不提供所需灵活性时使用。
事件
onDidAccept: Event<void>
An event signaling when the user indicated acceptance of the input value.
onDidChangeValue: Event<string>
An event signaling when the value has changed.
onDidHide: Event<void>
onDidTriggerButton: Event<QuickInputButton>
An event signaling when a button was triggered.
属性
Determines if the UI should show a progress indicator. Defaults to false.
Change this to true, for example, while loading more data or validating user input.
buttons: readonly QuickInputButton[]
Buttons for actions in the UI.
Determines if the UI should allow for user input. Defaults to true.
Change this to false, for example, while validating user input or loading data for the next step in user input.
Determines if the UI should stay open even when losing UI focus. Defaults to false. This setting is ignored on iPad and is always false.
Determines if the input value should be hidden. Defaults to false.
Optional placeholder text shown when no value has been input.
An optional prompt text providing some ask or explanation to the user.
An optional current step count for multi-step input flows.
An optional title for the input UI.
可选的多步输入流程的总步数。
validationMessage: string | InputBoxValidationMessage
一个可选的验证消息,指示当前输入值存在问题。
通过设置一个字符串,InputBox 将使用默认的 InputBoxValidationSeverity 级别 Error。返回 undefined 会清除验证消息。
当前的输入值。
valueSelection: readonly [number, number]
输入值中的选择范围。
定义为两个数字的元组,第一个是包含的起始索引,第二个是排除的结束索引。当为 undefined 时,将选择整个预填充值;当为空(开始等于结束)时,仅设置光标;否则,将选择定义的范围。
当用户键入或进行选择时,此属性不会更新,但可以由扩展更新。
方法
销毁此输入 UI 和任何相关资源。
如果 UI 仍然可见,它将首先被隐藏。在此调用之后,输入 UI 将不再可用,并且不应再访问其上的任何其他方法或属性。相反,应该创建新的输入 UI。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
隐藏此输入 UI。
这将触发一个 onDidHide 事件。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
使输入 UI 以其当前配置可见。
任何其他输入 UI 将首先触发一个 onDidHide 事件。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
InputBoxOptions
用于配置输入框 UI 行为的选项。
属性
设置为 true 可在焦点移至编辑器其他部分或另一个窗口时保持输入框打开。此设置在 iPad 上将被忽略,始终为 false。
控制是否显示密码输入。密码输入会隐藏输入的文本。
一个可选的字符串,用作输入框中的占位符,以指导用户输入内容。
显示在输入框下方的文本。
一个可选的字符串,表示输入框的标题。
用于预填充输入框的值。
valueSelection?: [number, number]
预填充的 value 的选择范围。定义为两个数字的元组,第一个是包含的起始索引,第二个是排除的结束索引。当为 undefined 时,将选择整个预填充值;当为空(开始等于结束)时,仅设置光标;否则,将选择定义的范围。
方法
validateInput(value: string): string | InputBoxValidationMessage | Thenable<string | InputBoxValidationMessage>
一个可选的函数,将用于验证输入并向用户提供提示。
| 参数 | 描述 |
|---|---|
| value: string | 输入框的当前值。 |
| 返回值 | 描述 |
| string | InputBoxValidationMessage | Thenable<string | InputBoxValidationMessage> | 一个人类可读的字符串,将作为错误消息显示,或者是一个 InputBoxValidationMessage,它可以提供特定的消息严重性。当 'value' 有效时,返回 |
InputBoxValidationMessage
表示 InputBox 的验证消息。
属性
要显示给用户的验证消息。
severity: InputBoxValidationSeverity
验证消息的严重性级别。
注意: 当使用 InputBoxValidationSeverity.Error 时,用户将无法接受输入(例如,通过按 Enter)。Info 和 Warning 严重性级别仍然允许接受输入。
InputBoxValidationSeverity
输入框验证消息的严重性级别。
枚举成员
表示一个信息性消息,它不会阻止输入被接受。
表示一个警告性消息,它不会阻止输入被接受。
表示一个错误消息,它会阻止用户接受输入。
LanguageConfiguration
语言配置接口定义了扩展与各种编辑器功能之间的契约,例如自动括号插入、自动缩进等。
属性
__characterPairSupport?: {autoClosingPairs: Array<{close: string, notIn: string[], open: string}>}
已弃用 请勿使用。
- 已弃用 - * 请改用语言配置文件中的 autoClosingPairs 属性。
| 参数 | 描述 |
|---|---|
| autoClosingPairs: Array<{close: string, notIn: string[], open: string}> |
|
__electricCharacterSupport?: {brackets: any, docComment: {close: string, lineStart: string, open: string, scope: string}}
已弃用 请勿使用。
- 已弃用 - 将很快被更好的 API 取代。
| 参数 | 描述 |
|---|---|
| brackets: any | 此属性已弃用,编辑器将忽略。
|
| docComment: {close: string, lineStart: string, open: string, scope: string} | 此属性已弃用,编辑器不再完全支持(scope 和 lineStart 被忽略)。请改用语言配置文件中的 autoClosingPairs 属性。
|
autoClosingPairs?: AutoClosingPair[]
语言的自动闭合对。
brackets?: CharacterPair[]
语言的括号。此配置会隐式影响围绕这些括号按下 Enter 键的行为。
comments?: CommentRule
语言的注释设置。
indentationRules?: IndentationRule
语言的缩进设置。
onEnterRules?: OnEnterRule[]
按下 Enter 键时要评估的语言规则。
语言的单词定义。如果语言支持 Unicode 标识符(例如 JavaScript),最好提供一个单词定义,该定义排除已知的分隔符。例如:一个匹配除已知分隔符之外的任何内容的正则表达式(小数点允许出现在浮点数中)。
/(-?\d*\.\d\w*)|([^\`\~\!\\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>/\?\s]+)/g
LanguageModelAccessInformation
表示扩展关于语言模型访问的特定信息。
事件
onDidChange: Event<void>
访问信息更改时触发的事件。
方法
canSendRequest(chat: LanguageModelChat): boolean
检查是否可以向语言模型发送请求。
注意 调用此函数不会触发同意 UI,只会检查持久化状态。
| 参数 | 描述 |
|---|---|
| chat: LanguageModelChat | 一个语言模型聊天对象。 |
| 返回值 | 描述 |
| 布尔值 | 如果可以发送请求,则为 |
LanguageModelChat
表示用于发送聊天请求的语言模型。
另请参阅 lm.selectChatModels
属性
语言模型的不透明系列名称。值可能是 gpt-3.5-turbo、gpt4、phi2 或 llama,但它们由贡献语言的扩展定义,并且可能会发生变化。
语言模型的不透明标识符。
单次请求可以发送到模型的最大 token 数。
语言模型的易于人类阅读的名称。
语言模型供应商的一个广为人知的标识符。例如 copilot,但值由贡献聊天模型的扩展定义,并且需要与它们一起查找。
模型的原始版本字符串。这由贡献语言模型的扩展定义,并且可能会发生变化。
方法
countTokens(text: string | LanguageModelChatMessage, token?: CancellationToken): Thenable<number>
使用模型特定的分词器逻辑计算消息中的 token 数。
| 参数 | 描述 |
|---|---|
| text: string | LanguageModelChatMessage | 一个字符串或一个消息实例。 |
| token?: CancellationToken | 可选的取消令牌。有关如何创建它的信息,请参阅 CancellationTokenSource。 |
| 返回值 | 描述 |
| Thenable<number> | 一个 thenable,它将解析为 token 数。 |
sendRequest(messages: LanguageModelChatMessage[], options?: LanguageModelChatRequestOptions, token?: CancellationToken): Thenable<LanguageModelChatResponse>
使用语言模型发送聊天请求。
注意 语言模型的使用可能受访问限制和用户同意的约束。首次(为扩展)调用此函数将向用户显示同意对话框,因此此函数仅在响应用户操作时才能调用!扩展可以使用 LanguageModelAccessInformation.canSendRequest 来检查它们是否具有发送请求的必要权限。
如果无法向语言模型发出请求,此函数将返回一个被拒绝的 Promise。原因可能包括:
- 用户未授予同意,请参阅
NoPermissions - 模型不再存在,请参阅
NotFound - 配额限制已超出,请参阅
Blocked - 其他问题,在这种情况下,扩展必须检查 [LanguageModelError.cause
LanguageModelError.cause](#_LanguageModelError.causeLanguageModelError.cause)
扩展可以通过将一组工具传递给 LanguageModelChatRequestOptions.tools 来利用语言模型的工具调用。语言模型将返回一个 LanguageModelToolCallPart,扩展可以调用该工具并用结果发送另一个请求。
| 参数 | 描述 |
|---|---|
| messages: LanguageModelChatMessage[] | 消息实例数组。 |
| options?: LanguageModelChatRequestOptions | 控制请求的选项。 |
| token?: CancellationToken | 一个控制请求的取消令牌。有关如何创建它的信息,请参阅 CancellationTokenSource。 |
| 返回值 | 描述 |
| Thenable<LanguageModelChatResponse> | 一个 thenable,它将解析为 LanguageModelChatResponse。如果请求无法发出,Promise 将被拒绝。 |
LanguageModelChatCapabilities
LanguageModelChatInformation 支持的各种功能,例如工具调用或图像输入。
属性
模型是否支持图像输入。常见的支持图像是 jpg 和 png,但每个模型支持的 MIME 类型各不相同。
toolCalling?: number | boolean
模型是否支持工具调用。如果提供一个数字,则表示在一次请求中可以提供给模型的最大工具数量。
LanguageModelChatInformation
表示由 LanguageModelChatProvider 提供的语言模型。
属性
capabilities: LanguageModelChatCapabilities
模型支持的各种功能,例如工具调用或图像输入。
一个可选的、易于人类阅读的字符串,将与模型一起渲染。用于在 UI 中区分同名模型。
语言模型的系列名称。值可能是 gpt-3.5-turbo、gpt4、phi2 或 llama。
语言模型的唯一标识符。在提供者之间必须是唯一的,但不需要全局唯一。
模型可以接受的最大输入 token 数。
模型能够生成的最大 token 数。
语言模型的易于人类阅读的名称。
悬停模型时渲染的工具提示。用于提供有关模型的更多信息。
模型的原始版本字符串。这用作 LanguageModelChatSelector.version 中的查找值。例如,GPT 4o 有多个版本,如 2024-11-20 和 2024-08-06。
LanguageModelChatMessage
表示聊天中的一条消息。可以承担不同的角色,例如用户或助手。
静态
Assistant(content: string | Array<LanguageModelTextPart | LanguageModelDataPart | LanguageModelToolCallPart>, name?: string): LanguageModelChatMessage
用于创建新助手消息的实用程序。
| 参数 | 描述 |
|---|---|
| content: string | Array<LanguageModelTextPart | LanguageModelDataPart | LanguageModelToolCallPart> | 消息的内容。 |
| name?: string | 消息的可选用户名。 |
| 返回值 | 描述 |
| LanguageModelChatMessage |
User(content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelDataPart>, name?: string): LanguageModelChatMessage
用于创建新用户消息的实用程序。
| 参数 | 描述 |
|---|---|
| content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelDataPart> | 消息的内容。 |
| name?: string | 消息的可选用户名。 |
| 返回值 | 描述 |
| LanguageModelChatMessage |
构造函数
new LanguageModelChatMessage(role: LanguageModelChatMessageRole, content: string | LanguageModelInputPart[], name?: string): LanguageModelChatMessage
创建一个新的用户消息。
| 参数 | 描述 |
|---|---|
| role: LanguageModelChatMessageRole | 消息的角色。 |
| content: string | LanguageModelInputPart[] | 消息的内容。 |
| name?: string | 消息的可选用户名。 |
| 返回值 | 描述 |
| LanguageModelChatMessage |
属性
content: LanguageModelInputPart[]
一个字符串或一个异构数组,表示消息可以包含的内容。某些部分可能因模型而异,是消息类型特定的。
此消息的可选用户名。
role: LanguageModelChatMessageRole
此消息的角色。
LanguageModelChatMessageRole
表示聊天消息的角色。这是用户或助手。
枚举成员
用户角色,例如与语言模型交互的人。
助手角色,例如生成响应的语言模型。
LanguageModelChatProvider<T>
LanguageModelChatProvider 实现对语言模型的访问,用户可以通过聊天视图或通过 API 获取 LanguageModelChat 来使用这些模型。例如,OpenAI 提供程序提供 gpt-5、o3 等模型。
事件
onDidChangeLanguageModelChatInformation?: Event<void>
可用语言模型集更改时触发的可选事件。
方法
provideLanguageModelChatInformation(options: PrepareLanguageModelChatModelOptions, token: CancellationToken): ProviderResult<T[]>
获取此提供程序提供的可用语言模型列表。
| 参数 | 描述 |
|---|---|
| options: PrepareLanguageModelChatModelOptions | 指定此函数调用上下文的选项。 |
| token: CancellationToken | 一个取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T[]> | 可用语言模型列表 |
provideLanguageModelChatResponse(model: T, messages: readonly LanguageModelChatRequestMessage[], options: ProvideLanguageModelChatResponseOptions, progress: Progress<LanguageModelResponsePart>, token: CancellationToken): Thenable<void>
为聊天请求返回响应,并将结果传递给进度回调。 LanguageModelChatProvider 必须在从语言模型接收到响应部分时,将它们发送到进度回调。
| 参数 | 描述 |
|---|---|
| model: T | 要使用的语言模型 |
| messages: readonly LanguageModelChatRequestMessage[] | 要包含在请求中的消息 |
| options: ProvideLanguageModelChatResponseOptions | 请求的选项 |
| progress: Progress<LanguageModelResponsePart> | 用于发送流式响应块的进度回调 |
| token: CancellationToken | 一个取消令牌。 |
| 返回值 | 描述 |
| Thenable<void> | 一个在响应完成后解析的 Promise。结果会实际传递给进度回调。 |
provideTokenCount(model: T, text: string | LanguageModelChatRequestMessage, token: CancellationToken): Thenable<number>
使用特定模型的分词器逻辑,返回给定文本的 token 数量。
| 参数 | 描述 |
|---|---|
| model: T | 要使用的语言模型 |
| text: string | LanguageModelChatRequestMessage | 要计算 token 的文本 |
| token: CancellationToken | 一个取消令牌。 |
| 返回值 | 描述 |
| Thenable<number> | token 数量 |
LanguageModelChatRequestMessage
Provider 版本的 LanguageModelChatMessage。
属性
消息可以包含的内容的异构数组。某些部分可能针对某些模型是特定于消息类型的。
此消息的可选用户名。
role: LanguageModelChatMessageRole
此消息的角色。
LanguageModelChatRequestOptions
使用语言模型进行聊天请求的选项。
属性
一条人类可读的消息,解释了为什么需要访问语言模型以及它启用了什么功能。
一组控制语言模型行为的选项。这些选项特定于语言模型,需要在相应文档中查找。
toolMode?: LanguageModelChatToolMode
要使用的工具选择模式。默认为 LanguageModelChatToolMode.Auto。
tools?: LanguageModelChatTool[]
可供语言模型使用的工具的可选列表。这些工具可以是 lm.tools 可用的已注册工具,也可以是仅在调用扩展中实现的私有工具。
如果 LLM 请求调用这些工具之一,它将在 LanguageModelChatResponse.stream 中返回一个 LanguageModelToolCallPart。调用方负责调用该工具。如果该工具已在 lm.tools 中注册,则意味着调用 lm.invokeTool。
然后,可以通过创建一个具有 LanguageModelToolCallPart 的 Assistant 类型 LanguageModelChatMessage,然后是具有 LanguageModelToolResultPart 的 User 类型消息,将工具结果提供给 LLM。
LanguageModelChatResponse
表示语言模型响应。
另请参阅 ChatRequest
属性
stream: AsyncIterable<unknown>
一个异步可迭代对象,它是构成整个响应的文本和工具调用部分的流。 LanguageModelTextPart 是助手响应的一部分,将显示给用户。 LanguageModelToolCallPart 是语言模型调用工具的请求。后者仅在通过 LanguageModelChatRequestOptions.tools 在请求中传递工具时返回。 unknown 类型用作未来部分(如图像数据部分)的占位符。
注意,在数据接收过程中发生错误时,此流将出错。流的消费者应相应地处理错误。
要取消流,消费者可以 取消 用于发出请求的 token,或从 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 中过滤掉除文本部分之外的所有内容。
LanguageModelChatSelector
描述如何为聊天请求选择语言模型。
另请参阅 lm.selectChatModels
属性
语言模型家族。
语言模型的标识符。
另请参阅 LanguageModelChat.id
语言模型的供应商。
语言模型的版本。
LanguageModelChatTool
可通过 LanguageModelChatRequestOptions 供语言模型使用的工具。语言模型使用此接口的所有属性来决定调用哪个工具以及如何调用它。
属性
工具的描述。
此工具接受的输入的 JSON schema。
工具的名称。
LanguageModelChatToolMode
语言模型使用的工具调用模式。
枚举成员
语言模型可以选择调用工具或生成消息。这是默认值。
语言模型必须调用提供的工具之一。注意,在某些模型中使用此模式时,它们仅支持单个工具。
LanguageModelDataPart
静态
image(data: Uint8Array, mime: string): LanguageModelDataPart
为图像创建新的 LanguageModelDataPart。
| 参数 | 描述 |
|---|---|
| data: Uint8Array | 二进制图像数据 |
| mime: string | 图像的 MIME 类型。常见值为 |
| 返回值 | 描述 |
| LanguageModelDataPart |
json(value: any, mime?: string): LanguageModelDataPart
为 JSON 创建新的 LanguageModelDataPart。
注意,此函数不期望“JSON 字符串”,而是期望一个可以字符串化的对象。当传入的值无法 JSON 字符串化时,此函数将抛出错误。
| 参数 | 描述 |
|---|---|
| value: any | JSON 可字符串化的值。 |
| mime?: string | 可选的 MIME 类型,默认为 |
| 返回值 | 描述 |
| LanguageModelDataPart |
text(value: string, mime?: string): LanguageModelDataPart
为文本创建新的 LanguageModelDataPart。
注意,使用 UTF-8 编码器来创建字符串的字节。
| 参数 | 描述 |
|---|---|
| value: string | 文本数据 |
| mime?: string | MIME 类型(如果有)。常见值为 |
| 返回值 | 描述 |
| LanguageModelDataPart |
构造函数
new LanguageModelDataPart(data: Uint8Array, mimeType: string): LanguageModelDataPart
使用给定内容构造一个通用数据部分。
| 参数 | 描述 |
|---|---|
| data: Uint8Array | 此部分的数据字节。 |
| mimeType: string | 数据的 MIME 类型。 |
| 返回值 | 描述 |
| LanguageModelDataPart |
属性
此部分的数据字节。
MIME 类型,它决定了如何解释 data 属性。
LanguageModelError
语言模型特定错误的错误类型。
语言模型的使用者应检查 code 属性以确定具体的失败原因,例如,对于指代未知语言模型的情况,使用 if(someError.code === vscode.LanguageModelError.NotFound.name) {...}。对于未指定错误,cause 属性将包含实际错误。
静态
Blocked(message?: string): LanguageModelError
请求者被阻止使用此语言模型。
| 参数 | 描述 |
|---|---|
| message?: string | |
| 返回值 | 描述 |
| LanguageModelError |
NoPermissions(message?: string): LanguageModelError
请求者无权使用此语言模型
| 参数 | 描述 |
|---|---|
| message?: string | |
| 返回值 | 描述 |
| LanguageModelError |
NotFound(message?: string): LanguageModelError
语言模型不存在。
| 参数 | 描述 |
|---|---|
| message?: string | |
| 返回值 | 描述 |
| LanguageModelError |
构造函数
new LanguageModelError(message?: string): LanguageModelError
| 参数 | 描述 |
|---|---|
| message?: string | |
| 返回值 | 描述 |
| LanguageModelError |
属性
标识此错误的代码。
可能的值是错误的名称,例如 NotFound,或者对于来自语言模型本身的未指定错误为 Unknown。在后一种情况下,cause 属性将包含实际错误。
LanguageModelInputPart
可以通过 LanguageModelChat.sendRequest 发送并通过 LanguageModelChatProvider 处理的各种消息类型。
LanguageModelInputPart: LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelToolCallPart | LanguageModelDataPart
LanguageModelPromptTsxPart
包含来自 vscode/prompt-tsx 的 PromptElementJSON 的语言模型响应部分。
构造函数
new LanguageModelPromptTsxPart(value: unknown): LanguageModelPromptTsxPart
使用给定内容构造一个 prompt-tsx 部分。
| 参数 | 描述 |
|---|---|
| value: unknown | 该部分的值,来自 |
| 返回值 | 描述 |
| LanguageModelPromptTsxPart |
属性
The value of the part.
LanguageModelResponsePart
LanguageModelChatProvider 可以在聊天响应流中发出的各种消息类型。
LanguageModelResponsePart: LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelToolCallPart | LanguageModelDataPart
LanguageModelTextPart
包含文本片段的语言模型响应部分,从 LanguageModelChatResponse 返回。
构造函数
new LanguageModelTextPart(value: string): LanguageModelTextPart
使用给定内容构造一个文本部分。
| 参数 | 描述 |
|---|---|
| value: string | 该部分包含的文本内容。 |
| 返回值 | 描述 |
| LanguageModelTextPart |
属性
该部分包含的文本内容。
LanguageModelTool<T>
可通过调用 LanguageModelChat 来调用的工具。
方法
invoke(options: LanguageModelToolInvocationOptions<T>, token: CancellationToken): ProviderResult<LanguageModelToolResult>
使用给定的输入调用工具并返回结果。
提供的 LanguageModelToolInvocationOptions.input 已根据声明的 schema 进行验证。
| 参数 | 描述 |
|---|---|
| options: LanguageModelToolInvocationOptions<T> | |
| token: CancellationToken | |
| 返回值 | 描述 |
| ProviderResult<LanguageModelToolResult> |
prepareInvocation(options: LanguageModelToolInvocationPrepareOptions<T>, token: CancellationToken): ProviderResult<PreparedToolInvocation>
在调用工具之前调用一次。建议实现此功能以自定义工具运行时显示的进度消息,并提供更具上下文信息的消息,其中包含调用输入的内容。如果适用,还可以指示工具在运行前需要用户确认。
- 注意 1: 必须无副作用。
- 注意 2: 调用
prepareInvocation不一定随后会调用invoke。
| 参数 | 描述 |
|---|---|
| options: LanguageModelToolInvocationPrepareOptions<T> | |
| token: CancellationToken | |
| 返回值 | 描述 |
| ProviderResult<PreparedToolInvocation> |
LanguageModelToolCallPart
指示工具调用的语言模型响应部分,从 LanguageModelChatResponse 返回,也可以作为 LanguageModelChatMessage 的内容部分包含,以表示聊天请求中先前的工具调用。
构造函数
new LanguageModelToolCallPart(callId: string, name: string, input: object): LanguageModelToolCallPart
创建一个新的 LanguageModelToolCallPart。
| 参数 | 描述 |
|---|---|
| callId: string | 工具调用的 ID。 |
| name: string | 要调用的工具的名称。 |
| input: object | 用于调用工具的输入。 |
| 返回值 | 描述 |
| LanguageModelToolCallPart |
属性
工具调用的 ID。这是聊天请求中工具调用的唯一标识符。
用于调用工具的输入。
要调用的工具的名称。
LanguageModelToolConfirmationMessages
当此对象在 PreparedToolInvocation 中返回时,用户将在运行工具前被要求确认。这些消息将显示带有“继续”和“取消”按钮。
属性
message: string | MarkdownString
确认消息的正文。
确认消息的标题。
LanguageModelToolInformation
有关 lm.tools 中可用已注册工具的信息。
属性
该工具的描述,可能会传递给语言模型。
此工具接受的输入的 JSON schema。
工具的唯一名称。
工具声明的一组标签,大致描述了工具的功能。工具用户可以使用这些标签来过滤与当前任务相关的工具集。
LanguageModelToolInvocationOptions<T>
为工具调用提供的选项。
属性
调用工具的输入。输入必须匹配 LanguageModelToolInformation.inputSchema 中定义的 schema。
tokenizationOptions?: LanguageModelToolTokenizationOptions
用于提示工具应在其响应中返回多少 token,并使工具能够准确计算 token 的选项。
toolInvocationToken: undefined
一个不透明对象,将工具调用与 聊天参与者 的聊天请求关联起来。
获取有效的工具调用 token 的唯一方法是使用聊天请求中提供的 toolInvocationToken。在这种情况下,将自动在聊天响应视图中为工具调用显示进度条,如果工具需要用户确认,它将内联显示在聊天视图中。
如果工具在聊天请求之外被调用,则应传递 undefined,除了确认之外,不会显示任何特殊 UI。
注意,在调用过程中调用另一个工具的工具可以传递它收到的 toolInvocationToken。
LanguageModelToolInvocationPrepareOptions<T>
属性
工具被调用的输入。
LanguageModelToolResult
从工具调用返回的结果。如果使用 vscode/prompt-tsx,可以使用 ToolResult 渲染此结果。
构造函数
new LanguageModelToolResult(content: unknown[]): LanguageModelToolResult
创建 LanguageModelToolResult。
| 参数 | 描述 |
|---|---|
| content: unknown[] | 工具结果内容部分列表。 |
| 返回值 | 描述 |
| LanguageModelToolResult |
属性
工具结果内容部分列表。包含 unknown,因为此列表将来可能会扩展新的内容类型。
另请参阅 lm.invokeTool。
LanguageModelToolResultPart
工具调用的结果。这是 工具调用 的对应项,并且它只能包含在 User 消息的内容中。
构造函数
new LanguageModelToolResultPart(callId: string, content: unknown[]): LanguageModelToolResultPart
| 参数 | 描述 |
|---|---|
| callId: string | 工具调用的 ID。 |
| content: unknown[] | 工具结果的内容。 |
| 返回值 | 描述 |
| LanguageModelToolResultPart |
属性
工具调用的 ID。
注意,这应该与工具调用部分的 callId 匹配。
工具结果的值。
LanguageModelToolTokenizationOptions
用于工具调用的与分词相关的选项。
属性
如果已知,则工具应在结果中发出的最大 token 数。
方法
countTokens(text: string, token?: CancellationToken): Thenable<number>
使用模型特定的分词器逻辑计算消息中的 token 数。
| 参数 | 描述 |
|---|---|
| text: string | 一个字符串。 |
| token?: CancellationToken | 可选的取消令牌。有关如何创建它的信息,请参阅 CancellationTokenSource。 |
| 返回值 | 描述 |
| Thenable<number> | 一个 thenable,它将解析为 token 数。 |
LanguageStatusItem
LanguageStatusItem 是呈现活动文本编辑器语言状态报告的首选方式,例如选择的 linter 或关于配置问题的通知。
属性
accessibilityInformation?: AccessibilityInformation
屏幕阅读器与此项交互时使用的可访问性信息
控制该项是否显示为“忙碌”。默认为 false。
command: Command
此项的 命令。
此项的可选、人类可读的详细信息。
此项的标识符。
此项的简称,例如“Java 语言状态”等。
selector: DocumentSelector
一个 选择器,用于定义此项显示在哪些编辑器中。
severity: LanguageStatusSeverity
此项的严重程度。
默认为 Information。您可以使用此属性向用户发出需要注意的问题信号,例如缺少可执行文件或配置无效。
要显示在条目中的文本。您可以通过利用以下语法来嵌入图标:
我的文本 $(icon-name) 包含诸如 $(icon-name) 之类的图标。
其中 icon-name 是从 ThemeIcon 图标集 中获取的,例如 light-bulb、thumbsup、zap 等。
方法
释放并清理相关资源。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
LanguageStatusSeverity
表示语言状态的严重程度级别。
枚举成员
信息性严重程度级别。
警告性严重程度级别。
错误性严重程度级别。
LinkedEditingRangeProvider
LinkedEditingRangeProvider 接口定义了扩展与链接编辑功能之间的契约。
方法
provideLinkedEditingRanges(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<LinkedEditingRanges>
对于文档中的给定位置,返回该位置处的符号的范围以及所有内容相同的范围。如果新内容有效,则对一个范围的更改可以应用于所有其他范围。可选的单词模式可以与结果一起返回,以描述有效内容。如果未提供特定于结果的单词模式,则将使用语言配置中的单词模式。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用提供程序的文档。 |
| position: Position | 调用提供程序的文档位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<LinkedEditingRanges> | 可以一起编辑的范围列表 |
LinkedEditingRanges
表示可以一起编辑的范围列表,以及用于描述有效范围内容的单词模式。
构造函数
new LinkedEditingRanges(ranges: Range[], wordPattern?: RegExp): LinkedEditingRanges
创建新的链接编辑范围对象。
| 参数 | 描述 |
|---|---|
| ranges: Range[] | 可以一起编辑的范围列表 |
| wordPattern?: RegExp | 描述给定范围有效内容的可选单词模式 |
| 返回值 | 描述 |
| LinkedEditingRanges |
属性
ranges: Range[]
可以一起编辑的范围列表。范围必须具有相同的长度和文本内容。范围不能重叠。
描述给定范围有效内容的可选单词模式。如果未提供模式,将使用语言配置的单词模式。
Location
表示资源中的位置,例如文本文件中的行。
构造函数
new Location(uri: Uri, rangeOrPosition: Range | Position): Location
属性
range: Range
此位置的文档范围。
uri: Uri
此位置的资源标识符。
LocationLink
表示两个位置之间的连接。提供比普通 Locations 更多的元数据,包括源范围。
属性
originSelectionRange?: Range
此链接源的选择范围。
用作鼠标定义悬停的下划线范围。默认为定义位置的单词范围。
targetRange: Range
此链接的目标完整范围。
targetSelectionRange?: Range
此链接的选择范围。
targetUri: Uri
此链接的目标资源标识符。
LogLevel
日志级别
枚举成员
此级别不记录任何消息。
此级别记录所有消息。
此级别记录调试及以上日志级别的消息。
此级别记录信息及以上日志级别的消息。
此级别记录警告及以上日志级别的消息。
此级别仅记录错误消息。
LogOutputChannel
用于包含日志输出的通道。
要获取 LogOutputChannel 的实例,请使用 createOutputChannel。
事件
onDidChangeLogLevel: Event<LogLevel>
当通道的日志级别发生变化时触发的 Event。
属性
logLevel: LogLevel
通道的当前日志级别。默认为 编辑器日志级别。
此输出通道的可读名称。
方法
将给定值附加到通道。
| 参数 | 描述 |
|---|---|
| value: string | 一个字符串,假值不会被打印。 |
| 返回值 | 描述 |
| void |
appendLine(value: string): void
将给定值和换行符附加到通道。
| 参数 | 描述 |
|---|---|
| value: string | 一个字符串,假值会被打印。 |
| 返回值 | 描述 |
| void |
清除通道中的所有输出。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
debug(message: string, ...args: any[]): void
将给定的调试消息输出到通道。
仅当通道配置为显示 调试 日志级别或更低级别时,才会记录该消息。
| 参数 | 描述 |
|---|---|
| message: string | 要记录的调试消息 |
| ...args: any[] | |
| 返回值 | 描述 |
| void |
释放并清理相关资源。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
error(error: string | Error, ...args: any[]): void
将给定的错误或错误消息输出到通道。
仅当通道配置为显示 错误 日志级别或更低级别时,才会记录该消息。
| 参数 | 描述 |
|---|---|
| error: string | Error | 要记录的错误或错误消息 |
| ...args: any[] | |
| 返回值 | 描述 |
| void |
从 UI 中隐藏此通道。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
info(message: string, ...args: any[]): void
将给定的信息消息输出到通道。
仅当通道配置为显示 信息 日志级别或更低级别时,才会记录该消息。
| 参数 | 描述 |
|---|---|
| message: string | 要记录的信息消息 |
| ...args: any[] | |
| 返回值 | 描述 |
| void |
用给定值替换通道中的所有输出。
| 参数 | 描述 |
|---|---|
| value: string | 一个字符串,假值不会被打印。 |
| 返回值 | 描述 |
| void |
show(preserveFocus?: boolean): void
在 UI 中显示此通道。
| 参数 | 描述 |
|---|---|
| preserveFocus?: boolean | 如果为 |
| 返回值 | 描述 |
| void |
show(column?: ViewColumn, preserveFocus?: boolean): void
在 UI 中显示此通道。
- 已弃用 - 请使用只有一个参数的重载(
show(preserveFocus?: boolean): void)。
| 参数 | 描述 |
|---|---|
| column?: ViewColumn | 此参数 **已弃用** 且将被忽略。 |
| preserveFocus?: boolean | 如果为 |
| 返回值 | 描述 |
| void |
trace(message: string, ...args: any[]): void
将给定的跟踪消息输出到通道。使用此方法记录详细信息。
仅当通道配置为显示 跟踪 日志级别时,才会记录该消息。
| 参数 | 描述 |
|---|---|
| message: string | 要记录的跟踪消息 |
| ...args: any[] | |
| 返回值 | 描述 |
| void |
warn(message: string, ...args: any[]): void
将给定的警告消息输出到通道。
仅当通道配置为显示 警告 日志级别或更低级别时,才会记录该消息。
| 参数 | 描述 |
|---|---|
| message: string | 要记录的警告消息 |
| ...args: any[] | |
| 返回值 | 描述 |
| void |
MarkdownString
支持通过 markdown 语法 进行格式化的可读文本。
当 supportThemeIcons 设置为 true 时,支持通过 $(<name>) 语法渲染 主题图标。
当 supportHtml 设置为 true 时,支持渲染嵌入式 HTML。
构造函数
new MarkdownString(value?: string, supportThemeIcons?: boolean): MarkdownString
使用给定值创建新的 markdown 字符串。
| 参数 | 描述 |
|---|---|
| value?: string | 可选的初始值。 |
| supportThemeIcons?: boolean | 可选,指定 MarkdownString 中是否支持 ThemeIcons。 |
| 返回值 | 描述 |
| MarkdownString |
属性
baseUri?: Uri
相对路径是相对于其解析的 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'
isTrusted?: boolean | {enabledCommands: readonly string[]}
表示此 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 字符串。
方法
appendCodeblock(value: string, language?: string): MarkdownString
将给定字符串作为代码块附加,使用提供的语言。
| 参数 | 描述 |
|---|---|
| value: string | 代码片段。 |
| language?: string | 可选的 语言标识符。 |
| 返回值 | 描述 |
| MarkdownString |
appendMarkdown(value: string): MarkdownString
将给定字符串“按原样”附加到此 markdown 字符串。当 supportThemeIcons 为 true 时,value 中的 ThemeIcons 将被图标化。
| 参数 | 描述 |
|---|---|
| value: string | Markdown 字符串。 |
| 返回值 | 描述 |
| MarkdownString |
appendText(value: string): MarkdownString
将给定字符串附加并转义到此 markdown 字符串。
| 参数 | 描述 |
|---|---|
| value: string | 纯文本。 |
| 返回值 | 描述 |
| MarkdownString |
MarkedString
MarkedString 可用于渲染可读文本。它是一个 markdown 字符串或一个提供语言和代码片段的代码块。请注意,markdown 字符串将被清理——这意味着 HTML 将被转义。
- 已弃用 - 此类型已弃用,请改用 MarkdownString。
MarkedString: string | {language: string, value: string}
McpHttpServerDefinition
McpHttpServerDefinition 表示一个可通过 Streamable HTTP 传输访问的 MCP 服务器。
构造函数
new McpHttpServerDefinition(label: string, uri: Uri, headers?: Record<string, string>, version?: string): McpHttpServerDefinition
| 参数 | 描述 |
|---|---|
| label: string | 服务器的可读名称。 |
| uri: Uri | 服务器的 URI。 |
| headers?: Record<string, string> | 发送到服务器的每个请求的可选附加头。 |
| version?: string | |
| 返回值 | 描述 |
| McpHttpServerDefinition |
属性
headers: Record<string, string>
发送到服务器的每个请求的可选附加头。
服务器的可读名称。
uri: Uri
服务器的 URI。编辑器将向此 URI 发送 POST 请求以开始每个会话。
服务器的可选版本标识。如果此值更改,编辑器将指示工具已更改并提示刷新它们。
McpServerDefinition
描述不同类型的 Model Context Protocol 服务器的定义,这些服务器可以从 McpServerDefinitionProvider 返回。
McpServerDefinition: McpStdioServerDefinition | McpHttpServerDefinition
McpServerDefinitionProvider<T>
可以提供 Model Context Protocol 服务器定义的类型。应在扩展激活期间使用 lm.registerMcpServerDefinitionProvider 注册此类型。
事件
onDidChangeMcpServerDefinitions?: Event<void>
一个可选事件,用于在可用服务器集发生变化时发出信号。
方法
provideMcpServerDefinitions(token: CancellationToken): ProviderResult<T[]>
提供可用的 MCP 服务器。编辑器将提前调用此方法以确保语言模型的服务器可用性,因此扩展不应执行需要用户交互的操作,例如身份验证。
| 参数 | 描述 |
|---|---|
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T[]> | 可用的 MCP 服务器数组 |
resolveMcpServerDefinition(server: T, token: CancellationToken): ProviderResult<T>
当编辑器需要启动 MCP 服务器时,将调用此函数。此时,扩展可以执行任何需要用户交互的操作,例如身份验证。服务器的任何非 readonly 属性都可以修改,并且扩展应返回解析后的服务器。
扩展可以返回 undefined 来指示不应启动服务器,或抛出错误。如果存在待处理的工具调用,编辑器将取消该调用并向语言模型返回错误消息。
| 参数 | 描述 |
|---|---|
| server: T | 要解析的 MCP 服务器 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T> | 解析后的服务器或解析为该服务器的 thenable。这可能是具有已填充的非 |
McpStdioServerDefinition
McpStdioServerDefinition 表示可以通过运行本地进程并操作其 stdin 和 stdout 流来访问的 MCP 服务器。该进程将作为扩展主机的子进程生成,默认情况下不会在 shell 环境中运行。
构造函数
new McpStdioServerDefinition(label: string, command: string, args?: string[], env?: Record<string, string | number>, version?: string): McpStdioServerDefinition
| 参数 | 描述 |
|---|---|
| label: string | 服务器的可读名称。 |
| command: string | 用于启动服务器的命令。 |
| args?: string[] | 传递给服务器的其他命令行参数。 |
| env?: Record<string, string | number> | 服务器的可选附加环境信息。 |
| version?: string | 服务器的可选版本标识。 |
| 返回值 | 描述 |
| McpStdioServerDefinition |
属性
传递给服务器的其他命令行参数。
用于启动服务器的命令。基于 Node.js 的服务器可以使用 process.execPath 来使用编辑器的 Node.js 版本来运行脚本。
cwd?: Uri
用于启动服务器的工作目录。
env: Record<string, string | number>
服务器的可选附加环境信息。此环境中的变量将覆盖或删除(如果为 null)编辑器扩展宿主器的默认环境变量。
服务器的可读名称。
服务器的可选版本标识。如果此值更改,编辑器将指示工具已更改并提示刷新它们。
Memento
Memento 表示一个存储实用程序。它可以存储和检索值。
方法
返回一个值。
| 参数 | 描述 |
|---|---|
| key: string | 一个字符串。 |
| 返回值 | 描述 |
| T | 存储的值或 |
get<T>(key: string, defaultValue: T): T
返回一个值。
| 参数 | 描述 |
|---|---|
| key: string | 一个字符串。 |
| defaultValue: T | 当给定键没有值( |
| 返回值 | 描述 |
| T | 存储的值或默认值。 |
返回存储的键。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| readonly string[] | 存储的键。 |
update(key: string, value: any): Thenable<void>
存储一个值。该值必须是 JSON 可序列化的。
请注意,使用 undefined 作为值将从底层存储中删除该键。
| 参数 | 描述 |
|---|---|
| key: string | 一个字符串。 |
| value: any | 一个值。必须不包含循环引用。 |
| 返回值 | 描述 |
| Thenable<void> |
MessageItem
属性
对于模态对话框,一个提示,表明当用户取消对话框时(例如,通过按 ESC 键)应该触发该项。
注意:此选项将被忽略非模态消息。
一个简短的标题,例如“重试”、“打开日志”等。
MessageOptions
属性
人类可读的详细消息,显示不那么突出。注意,只有对于 模态 消息才会显示详细信息。
指示此消息应为模态。
NotebookCell
属性
document: TextDocument
此单元格的 文本,表示为文本文档。
executionSummary: NotebookCellExecutionSummary
此单元格的最新 执行摘要。
此单元格在其 包含的笔记本 中的索引。当单元格在笔记本内移动时,索引会更新。当单元格从其笔记本中删除时,索引为 -1。
kind: NotebookCellKind
此单元格的类型。
此单元格的元数据。可以是任何内容,但必须是 JSON 可序列化的。
notebook: NotebookDocument
包含此单元格的 笔记本。
outputs: readonly NotebookCellOutput[]
此单元格的输出。
NotebookCellData
NotebookCellData 是笔记本单元格的原始表示。它是 NotebookData 的一部分。
构造函数
new NotebookCellData(kind: NotebookCellKind, value: string, languageId: string): NotebookCellData
创建新的单元格数据。最小单元格数据指定其类型、源值和源的语言标识符。
| 参数 | 描述 |
|---|---|
| kind: NotebookCellKind | 类型。 |
| value: string | 源值。 |
| languageId: string | 源值的语言标识符。 |
| 返回值 | 描述 |
| NotebookCellData |
属性
executionSummary?: NotebookCellExecutionSummary
此单元格数据的执行摘要。
kind: NotebookCellKind
此单元格数据的 类型。
此单元格数据源值的语言标识符。可以是 getLanguages 中的任何值。
此单元格数据的任意元数据。可以是任何内容,但必须是 JSON 可序列化的。
outputs?: NotebookCellOutput[]
此单元格数据的输出。
此单元格数据的源值 - 可以是源代码或格式化文本。
NotebookCellExecution
NotebookCellExecution 是 笔记本控制器 在执行笔记本单元格时如何修改它的方式。
当创建一个单元格执行对象时,单元格进入 [NotebookCellExecutionState.Pending 挂起](#_NotebookCellExecutionState.Pending Pending) 状态。当在执行任务上调用 start(...) 时,它进入 [NotebookCellExecutionState.Executing 执行中](#_NotebookCellExecutionState.Executing Executing) 状态。当调用 end(...) 时,它进入 [NotebookCellExecutionState.Idle 空闲](#_NotebookCellExecutionState.Idle Idle) 状态。
属性
cell: NotebookCell
为此执行创建的 单元格。
设置和取消此单元格执行的顺序。
token: CancellationToken
方法
appendOutput(out: NotebookCellOutput | readonly NotebookCellOutput[], cell?: NotebookCell): Thenable<void>
追加到正在执行的单元格的输出,或追加到受此执行影响的其他单元格的输出。
| 参数 | 描述 |
|---|---|
| out: NotebookCellOutput | readonly NotebookCellOutput[] | 追加到当前输出的输出。 |
| cell?: NotebookCell | 要清除输出的单元格。默认为此执行的 单元格。 |
| 返回值 | 描述 |
| Thenable<void> | 操作完成后解析的 thenable。 |
appendOutputItems(items: NotebookCellOutputItem | readonly NotebookCellOutputItem[], output: NotebookCellOutput): Thenable<void>
将输出项追加到现有单元格输出。
| 参数 | 描述 |
|---|---|
| items: NotebookCellOutputItem | readonly NotebookCellOutputItem[] | 追加到现有输出的输出项。 |
| output: NotebookCellOutput | 已存在的输出对象。 |
| 返回值 | 描述 |
| Thenable<void> | 操作完成后解析的 thenable。 |
clearOutput(cell?: NotebookCell): Thenable<void>
清除正在执行的单元格的输出,或清除受此执行影响的其他单元格的输出。
| 参数 | 描述 |
|---|---|
| cell?: NotebookCell | 要清除输出的单元格。默认为此执行的 单元格。 |
| 返回值 | 描述 |
| Thenable<void> | 操作完成后解析的 thenable。 |
end(success: boolean, endTime?: number): void
发出执行已结束的信号。
| 参数 | 描述 |
|---|---|
| success: boolean | 如果为 true,则单元格状态栏上显示绿色勾号。如果为 false,则显示红色叉号。如果为 undefined,则不显示勾号或叉号图标。 |
| endTime?: number | 执行完成的时间,以 Unix 纪元毫秒为单位。 |
| 返回值 | 描述 |
| void |
replaceOutput(out: NotebookCellOutput | readonly NotebookCellOutput[], cell?: NotebookCell): Thenable<void>
替换正在执行的单元格的输出,或替换受此执行影响的其他单元格的输出。
| 参数 | 描述 |
|---|---|
| out: NotebookCellOutput | readonly NotebookCellOutput[] | 替换当前输出的输出。 |
| cell?: NotebookCell | 要清除输出的单元格。默认为此执行的 单元格。 |
| 返回值 | 描述 |
| Thenable<void> | 操作完成后解析的 thenable。 |
replaceOutputItems(items: NotebookCellOutputItem | readonly NotebookCellOutputItem[], output: NotebookCellOutput): Thenable<void>
替换现有单元格输出的所有输出项。
| 参数 | 描述 |
|---|---|
| items: NotebookCellOutputItem | readonly NotebookCellOutputItem[] | 替换现有输出项的输出项。 |
| output: NotebookCellOutput | 已存在的输出对象。 |
| 返回值 | 描述 |
| Thenable<void> | 操作完成后解析的 thenable。 |
start(startTime?: number): void
发出执行已开始的信号。
| 参数 | 描述 |
|---|---|
| startTime?: number | 执行开始的时间,以 Unix 纪元毫秒为单位。用于驱动显示单元格已运行多长时间的时钟。如果未提供,则不显示时钟。 |
| 返回值 | 描述 |
| void |
NotebookCellExecutionSummary
笔记本单元格执行的摘要。
属性
执行发生的顺序。
执行是否成功完成。
timing?: {endTime: number, startTime: number}
执行开始和结束的时间,以 Unix 时间戳表示
| 参数 | 描述 |
|---|---|
| endTime: number | 执行结束时间。 |
| startTime: number | 执行开始时间。 |
NotebookCellKind
笔记本单元格类型。
枚举成员
标记单元格是用于显示的格式化源。
NotebookCellOutput
NotebookCellOutput 表示执行单元格的结果。它是一个包含多个 输出项 的容器类型,其中包含的项表示相同的结果,但使用不同的 MIME 类型。
构造函数
new NotebookCellOutput(items: NotebookCellOutputItem[], metadata?: ): NotebookCellOutput
创建新的笔记本输出。
| 参数 | 描述 |
|---|---|
| items: NotebookCellOutputItem[] | 笔记本输出项。 |
| metadata?: | 可选元数据。 |
| 返回值 | 描述 |
| NotebookCellOutput |
属性
items: NotebookCellOutputItem[]
此输出的输出项。每项必须表示相同的结果。注意,每个输出重复的 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 类型和数据定义。
静态
error(value: Error): NotebookCellOutputItem
用于创建使用 application/vnd.code.notebook.error MIME 类型的 NotebookCellOutputItem 的工厂函数。
| 参数 | 描述 |
|---|---|
| value: Error | 一个错误对象。 |
| 返回值 | 描述 |
| NotebookCellOutputItem | 一个新的输出项对象。 |
json(value: any, mime?: string): NotebookCellOutputItem
用于从 JSON 对象创建 NotebookCellOutputItem 的工厂函数。
注意,此函数不期望“JSON 字符串”,而是期望一个可以字符串化的对象。当传入的值无法 JSON 字符串化时,此函数将抛出错误。
| 参数 | 描述 |
|---|---|
| value: any | JSON 可字符串化的值。 |
| mime?: string | 可选的 MIME 类型,默认为 |
| 返回值 | 描述 |
| NotebookCellOutputItem | 一个新的输出项对象。 |
stderr(value: string): NotebookCellOutputItem
用于创建使用 application/vnd.code.notebook.stderr MIME 类型的 NotebookCellOutputItem 的工厂函数。
| 参数 | 描述 |
|---|---|
| value: string | 一个字符串。 |
| 返回值 | 描述 |
| NotebookCellOutputItem | 一个新的输出项对象。 |
stdout(value: string): NotebookCellOutputItem
用于创建使用 application/vnd.code.notebook.stdout MIME 类型的 NotebookCellOutputItem 的工厂函数。
| 参数 | 描述 |
|---|---|
| value: string | 一个字符串。 |
| 返回值 | 描述 |
| NotebookCellOutputItem | 一个新的输出项对象。 |
text(value: string, mime?: string): NotebookCellOutputItem
用于从字符串创建 NotebookCellOutputItem 的工厂函数。
注意,使用 UTF-8 编码器来创建字符串的字节。
| 参数 | 描述 |
|---|---|
| value: string | 一个字符串。 |
| mime?: string | 可选 MIME 类型,默认为 |
| 返回值 | 描述 |
| NotebookCellOutputItem | 一个新的输出项对象。 |
构造函数
new NotebookCellOutputItem(data: Uint8Array, mime: string): NotebookCellOutputItem
创建一个新的笔记本单元格输出项。
| 参数 | 描述 |
|---|---|
| data: Uint8Array | 输出项的值。 |
| mime: string | 输出项的 MIME 类型。 |
| 返回值 | 描述 |
| NotebookCellOutputItem |
属性
此输出项的数据。必须始终是无符号 8 位整数数组。
MIME 类型,决定如何解释 data 属性。
笔记本内置支持某些 MIME 类型,扩展可以添加对新类型的支持或覆盖现有类型。
NotebookCellStatusBarAlignment
表示状态栏项的对齐方式。
枚举成员
左对齐。
右对齐。
NotebookCellStatusBarItem
单元格状态栏的贡献项
构造函数
new NotebookCellStatusBarItem(text: string, alignment: NotebookCellStatusBarAlignment): NotebookCellStatusBarItem
创建新的 NotebookCellStatusBarItem。
| 参数 | 描述 |
|---|---|
| text: string | 要显示的项的文本。 |
| alignment: NotebookCellStatusBarAlignment | 项是左对齐还是右对齐。 |
| 返回值 | 描述 |
| NotebookCellStatusBarItem |
属性
accessibilityInformation?: AccessibilityInformation
当屏幕阅读器与此项交互时使用的可访问性信息。
alignment: NotebookCellStatusBarAlignment
项是左对齐还是右对齐。
command?: string | Command
项的优先级。值越高的项显示在越靠左的位置。
要显示的项的文本。
鼠标悬停在项上时显示的工具提示。
NotebookCellStatusBarItemProvider
一个可以为单元格编辑器下方的状态栏提供项的提供程序。
事件
onDidChangeCellStatusBarItems?: Event<void>
一个可选的事件,用于发出状态栏项已更改的信号。将再次调用提供程序方法。
方法
provideCellStatusBarItems(cell: NotebookCell, token: CancellationToken): ProviderResult<NotebookCellStatusBarItem | NotebookCellStatusBarItem[]>
当单元格滚动到视图中、其内容、输出、语言或元数据更改以及执行状态更改时,将调用该提供程序。
| 参数 | 描述 |
|---|---|
| cell: NotebookCell | 要返回项的单元格。 |
| token: CancellationToken | 如果此请求应被取消,则触发的令牌。 |
| 返回值 | 描述 |
| ProviderResult<NotebookCellStatusBarItem | NotebookCellStatusBarItem[]> | 一个或多个 单元格状态栏项 |
NotebookController
NotebookController 表示一个可以执行笔记本单元格的实体。这通常被称为内核。
可以有多个控制器,编辑器会允许用户选择为特定笔记本使用哪个控制器。notebookType 属性定义了控制器是用于哪种笔记本的,而 updateNotebookAffinity 函数允许控制器为特定的笔记本文档设置偏好。当选择了一个控制器后,它的 onDidChangeSelectedNotebooks 事件会触发。
当单元格正在运行时,编辑器将调用 executeHandler,控制器应创建一个并完成一个 笔记本单元格执行。然而,控制器也可以自由地自行创建执行。
事件
onDidChangeSelectedNotebooks: Event<{notebook: NotebookDocument, selected: boolean}>
属性
人类可读的描述,显示不那么突出。
人类可读的详细信息,显示不那么突出。
executeHandler: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>
当在 UI 中选择执行手势时(例如,运行单元格、运行全部、运行选区等),将调用 executeHandler。executeHandler 负责创建和管理 执行 对象。
| 参数 | 描述 |
|---|---|
| cells: NotebookCell[] | |
| notebook: NotebookDocument | |
| controller: NotebookController | |
| 返回值 | 描述 |
| void | Thenable<void> |
此笔记本控制器的标识符。
请注意,控制器通过其标识符被记住,并且扩展应该在会话中使用稳定的标识符。
interruptHandler?: (notebook: NotebookDocument) => void | Thenable<void>
可选的中断处理程序。
默认情况下,单元格执行通过 令牌 取消。取消令牌要求控制器能够跟踪其执行,以便稍后取消特定执行。并非所有场景都允许这样做,例如,REPL 式控制器通常通过中断当前正在运行的任何内容来工作。对于这些情况,存在中断处理程序 - 它可以被认为是终端中 SIGINT 或 Control+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
supportsExecutionOrder?: boolean
此控制器是否支持执行顺序,以便编辑器可以为其渲染占位符。
方法
createNotebookCellExecution(cell: NotebookCell): NotebookCellExecution
创建单元格执行任务。
注意,每个单元格一次只能有一个执行,如果在一个单元格仍在活动时创建另一个单元格的执行,则会抛出错误。
这应该在响应 executeHandler 被调用时使用,或者当单元格执行已开始时使用,例如当一个单元格已在执行或单元格执行是从另一个源触发时。
| 参数 | 描述 |
|---|---|
| cell: NotebookCell | 要为其创建执行的笔记本单元格。 |
| 返回值 | 描述 |
| NotebookCellExecution | 笔记本单元格执行。 |
释放并清理相关资源。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
updateNotebookAffinity(notebook: NotebookDocument, affinity: NotebookControllerAffinity): void
控制器可以为特定的笔记本文档设置关联。这使得某个控制器在某些笔记本中更突出。
| 参数 | 描述 |
|---|---|
| notebook: NotebookDocument | 设置优先级的笔记本。 |
| affinity: NotebookControllerAffinity | 控制器对笔记本的关联。 |
| 返回值 | 描述 |
| void |
NotebookControllerAffinity
笔记本文档的笔记本控制器关联。
枚举成员
默认关联。
控制器是笔记本的首选。
NotebookData
构造函数
new NotebookData(cells: NotebookCellData[]): NotebookData
创建新的笔记本数据。
| 参数 | 描述 |
|---|---|
| cells: NotebookCellData[] | 单元格数据的数组。 |
| 返回值 | 描述 |
| NotebookData |
属性
cells: NotebookCellData[]
此笔记本数据的单元格数据。
笔记本数据的任意元数据。
NotebookDocument
属性
笔记本中的单元格数量。
如果笔记本已关闭,则为 true。关闭的笔记本不再同步,并且在再次打开同一资源时不会被重新使用。
如果有未持久化的更改,则为 true。
此笔记本是否代表一个尚未保存的未命名文件。
此笔记本的任意元数据。可以是任何东西,但必须是 JSON 可序列化的。
笔记本的类型。
uri: Uri
此笔记本的关联 URI。
注意,大多数笔记本使用 file 方案,这意味着它们是磁盘上的文件。但是,并非所有笔记本都保存在磁盘上,因此在尝试访问底层文件或磁盘上的同级文件之前,必须检查 scheme。
另请参阅 FileSystemProvider
此笔记本的版本号(在每次更改后都会严格增加,包括撤销/重做)。
方法
cellAt(index: number): NotebookCell
返回指定索引处的单元格。索引将调整为笔记本的。
| 参数 | 描述 |
|---|---|
| index: number | 要检索的单元格的索引。 |
| 返回值 | 描述 |
| NotebookCell | 一个 单元格。 |
getCells(range?: NotebookRange): NotebookCell[]
获取此笔记本的单元格。可以通过提供范围来检索子集。范围将调整为笔记本的。
| 参数 | 描述 |
|---|---|
| range?: NotebookRange | 笔记本范围。 |
| 返回值 | 描述 |
| NotebookCell[] | 范围包含的单元格或所有单元格。 |
保存文档。保存将由相应的 序列化程序 处理。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| Thenable<boolean> | 当文档已保存时,将解析为 true 的 Promise。如果文件未更改或保存失败,将返回 false。 |
NotebookDocumentCellChange
描述笔记本单元格的更改。
属性
cell: NotebookCell
受影响的单元格。
document: TextDocument
单元格的文档,或 undefined,如果它没有改变。
注意,您应该使用 onDidChangeTextDocument 事件来获取详细的更改信息,例如执行了哪些编辑。
executionSummary: NotebookCellExecutionSummary
单元格的新执行摘要,或 undefined,如果它没有改变。
单元格的新元数据,或 undefined,如果它没有改变。
outputs: readonly NotebookCellOutput[]
单元格的新输出,或 undefined,如果它们没有改变。
NotebookDocumentChangeEvent
描述笔记本文档 事务性更改 的事件。
属性
cellChanges: readonly NotebookDocumentCellChange[]
单元格更改 的数组。
contentChanges: readonly NotebookDocumentContentChange[]
描述已添加或删除的 单元格 的内容更改数组。
笔记本的新元数据,或 undefined,如果它未更改。
notebook: NotebookDocument
受影响的笔记本。
NotebookDocumentContentChange
描述笔记本文档的结构性更改,例如新添加和删除的单元格。
属性
addedCells: readonly NotebookCell[]
已添加到文档的单元格。
range: NotebookRange
removedCells: readonly NotebookCell[]
已从文档中移除的单元格。
NotebookDocumentContentOptions
笔记本内容选项定义了笔记本的哪些部分将被持久化。注意
例如,笔记本序列化器可以选择不保存输出,在这种情况下,当其输出发生更改时,编辑器不会将笔记本标记为 dirty。
属性
控制单元格元数据属性更改事件是否会触发笔记本文档内容更改事件以及是否在 diff 编辑器中使用,默认为 false。如果内容提供者不在文件文档中持久化元数据属性,则应将其设置为 true。
控制文档元数据属性更改事件是否会触发笔记本文档内容更改事件以及是否在 diff 编辑器中使用,默认为 false。如果内容提供者不在文件文档中持久化元数据属性,则应将其设置为 true。
控制输出更改事件是否会触发笔记本文档内容更改事件以及是否在 diff 编辑器中使用,默认为 false。如果内容提供者不在文件文档中持久化输出,则应将其设置为 true。
NotebookDocumentShowOptions
属性
一个可选标志,如果设置为 true,将阻止 笔记本编辑器 获取焦点。
一个可选标志,用于控制 笔记本编辑器 标签页是否显示为预览。预览标签页将被替换并重用,直到被设置为保留 - 显式或通过编辑。默认行为取决于 workbench.editor.enablePreview 设置。
selections?: readonly NotebookRange[]
在 笔记本编辑器 中应用于文档的可选选择。
viewColumn?: ViewColumn
应显示 笔记本编辑器 的可选视图列。默认值为 活动。最多会创建到 ViewColumn.Nine 的不存在的列。使用 ViewColumn.Beside 将编辑器打开到当前活动的编辑器旁边。
NotebookDocumentWillSaveEvent
在 笔记本文档 将被保存时触发的事件。
要在保存文档之前对其进行修改,请调用 waitUntil 函数,并传入一个解析为 WorkspaceEdit 的 thenable。
属性
notebook: NotebookDocument
将要保存的 笔记本文档。
reason: TextDocumentSaveReason
触发保存的原因。
token: CancellationToken
取消令牌。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允许暂停事件循环并应用 WorkspaceEdit。此函数后续调用的编辑将按顺序应用。如果笔记本文档发生了并发修改,这些编辑将被 *忽略*。
注意: 此函数只能在事件分派期间调用,不能异步调用
workspace.onWillSaveNotebookDocument(event => {
// async, will *throw* an error
setTimeout(() => event.waitUntil(promise));
// sync, OK
event.waitUntil(promise);
});
| 参数 | 描述 |
|---|---|
| thenable: Thenable<WorkspaceEdit> | 解析为 WorkspaceEdit 的 thenable。 |
| 返回值 | 描述 |
| void |
waitUntil(thenable: Thenable<any>): void
允许暂停事件循环,直到提供的 thenable 解析。
注意: 此函数只能在事件分派期间调用。
| 参数 | 描述 |
|---|---|
| thenable: Thenable<any> | 延迟保存的 thenable。 |
| 返回值 | 描述 |
| void |
NotebookEdit
NotebookEdit 表示应应用于笔记本内容的编辑。
静态
deleteCells(range: NotebookRange): NotebookEdit
创建删除笔记本中单元格的编辑的实用程序。
| 参数 | 描述 |
|---|---|
| range: NotebookRange | 要删除的单元格的范围。 |
| 返回值 | 描述 |
| NotebookEdit |
insertCells(index: number, newCells: NotebookCellData[]): NotebookEdit
创建替换笔记本中单元格的编辑的实用程序。
| 参数 | 描述 |
|---|---|
| index: number | 插入单元格的索引。 |
| newCells: NotebookCellData[] | 新的笔记本单元格。 |
| 返回值 | 描述 |
| NotebookEdit |
replaceCells(range: NotebookRange, newCells: NotebookCellData[]): NotebookEdit
创建替换笔记本中单元格的编辑的实用程序。
| 参数 | 描述 |
|---|---|
| range: NotebookRange | 要替换的单元格范围 |
| newCells: NotebookCellData[] | 新的笔记本单元格。 |
| 返回值 | 描述 |
| NotebookEdit |
updateCellMetadata(index: number, newCellMetadata: ): NotebookEdit
创建更新单元格元数据的编辑的实用程序。
| 参数 | 描述 |
|---|---|
| index: number | 要更新的单元格的索引。 |
| newCellMetadata: | 单元格的新元数据。 |
| 返回值 | 描述 |
| NotebookEdit |
updateNotebookMetadata(newNotebookMetadata: ): NotebookEdit
创建更新笔记本元数据的编辑的实用程序。
| 参数 | 描述 |
|---|---|
| newNotebookMetadata: | 笔记本的新元数据。 |
| 返回值 | 描述 |
| NotebookEdit |
构造函数
new NotebookEdit(range: NotebookRange, newCells: NotebookCellData[]): NotebookEdit
创建新的笔记本编辑。
| 参数 | 描述 |
|---|---|
| range: NotebookRange | 笔记本范围。 |
| newCells: NotebookCellData[] | 新的单元格数据的数组。 |
| 返回值 | 描述 |
| NotebookEdit |
属性
单元格的可选新元数据。
newCells: NotebookCellData[]
正在插入的新单元格。可能为空。
笔记本的可选新元数据。
range: NotebookRange
正在编辑的单元格范围。可能为空。
NotebookEditor
表示附加到 笔记本 的笔记本编辑器。NotebookEditor 的其他属性可以在提议的 API 中找到,这些 API 将在稍后最终确定。
属性
notebook: NotebookDocument
与此笔记本编辑器关联的 笔记本文档。
selection: NotebookRange
此笔记本编辑器中的主要选择。
selections: readonly NotebookRange[]
此笔记本编辑器中的所有选择。
主要选择(或焦点范围)是 selections[0]。当文档没有单元格时,主要选择为空 { start: 0, end: 0 };
viewColumn?: ViewColumn
编辑器显示的列。
visibleRanges: readonly NotebookRange[]
编辑器中当前可见的范围(垂直方向)。
方法
revealRange(range: NotebookRange, revealType?: NotebookEditorRevealType): void
根据 revealType 滚动以显示给定范围。
| 参数 | 描述 |
|---|---|
| range: NotebookRange | 范围。 |
| revealType?: NotebookEditorRevealType | 用于显示 |
| 返回值 | 描述 |
| void |
NotebookEditorRevealType
表示附加到 笔记本 的笔记本编辑器。
枚举成员
将以最少的滚动量显示范围。
范围将始终在视口的中心显示。
如果范围在视口之外,则将其显示在视口中心。否则,将以最少的滚动量显示范围。
范围将始终在视口的顶部显示。
NotebookEditorSelectionChangeEvent
表示描述 笔记本编辑器选择 更改的事件。
属性
notebookEditor: NotebookEditor
其选择已更改的 笔记本编辑器。
selections: readonly NotebookRange[]
笔记本编辑器选择 的新值。
NotebookEditorVisibleRangesChangeEvent
表示描述 笔记本编辑器可见范围 更改的事件。
属性
notebookEditor: NotebookEditor
其可见范围已更改的 笔记本编辑器。
visibleRanges: readonly NotebookRange[]
笔记本编辑器可见范围 的新值。
NotebookRange
笔记本范围表示两个单元格索引的有序对。保证 start 小于或等于 end。
构造函数
new NotebookRange(start: number, end: number): NotebookRange
创建新的笔记本范围。如果 start 不小于或等于 end,则值将被交换。
| 参数 | 描述 |
|---|---|
| start: number | 起始索引 |
| end: number | 结束索引。 |
| 返回值 | 描述 |
| NotebookRange |
属性
此范围的排他性结束索引(零基)。
如果 start 和 end 相等,则为 true。
此范围的零基起始索引。
方法
with(change: {end: number, start: number}): NotebookRange
从此范围派生新范围。
| 参数 | 描述 |
|---|---|
| change: {end: number, start: number} | 描述对此范围更改的对象。 |
| 返回值 | 描述 |
| NotebookRange | 一个反映给定更改的范围。如果更改未改变任何内容,将返回 |
NotebookRendererMessaging
Renderer messaging 用于与单个渲染器通信。它从 notebooks.createRendererMessaging 返回。
事件
onDidReceiveMessage: Event<{editor: NotebookEditor, message: any}>
当从渲染器接收到消息时触发的事件。
方法
postMessage(message: any, editor?: NotebookEditor): Thenable<boolean>
将消息发送到一个或所有渲染器。
| 参数 | 描述 |
|---|---|
| message: any | 要发送的消息 |
| editor?: NotebookEditor | 要将消息定向到的编辑器。如果未提供,则消息将发送到所有渲染器。 |
| 返回值 | 描述 |
| Thenable<boolean> | 一个布尔值,指示消息是否已成功传递给任何渲染器。 |
NotebookSerializer
Notebook serializer 使编辑器能够打开笔记本文件。
核心上,编辑器只知道一个 笔记本数据结构,但不知道如何将该数据结构写入文件,也不知道如何从文件读取。Notebook serializer 通过将字节反序列化为笔记本数据和反之亦然来弥合这一差距。
方法
deserializeNotebook(content: Uint8Array, token: CancellationToken): NotebookData | Thenable<NotebookData>
将笔记本文件的内容反序列化为笔记本数据结构。
| 参数 | 描述 |
|---|---|
| content: Uint8Array | 笔记本文件的内容。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| NotebookData | Thenable<NotebookData> | 笔记本数据或可解析为该数据的 thenable。 |
serializeNotebook(data: NotebookData, token: CancellationToken): Uint8Array | Thenable<Uint8Array>
将笔记本数据序列化为文件内容。
| 参数 | 描述 |
|---|---|
| data: NotebookData | 笔记本数据结构。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| Uint8Array | Thenable<Uint8Array> | 字节数组或解析为该数组的可thenable。 |
OnEnterRule
描述按下 Enter 键时要评估的规则。
属性
action: EnterAction
要执行的操作。
仅当光标后的文本与此正则表达式匹配时,此规则才会执行。
仅当光标前的文本与此正则表达式匹配时,此规则才会执行。
仅当当前行上方的文本与此正则表达式匹配时,此规则才会执行。
OnTypeFormattingEditProvider
文档格式化提供程序接口定义了扩展和格式化功能之间的约定。
方法
provideOnTypeFormattingEdits(document: TextDocument, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>
在键入字符后提供格式化编辑。
给定的位置和字符应提示提供程序要扩展到的范围,例如在输入 `}` 时查找匹配的 `{`。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| ch: string | 键入的字符。 |
| options: FormattingOptions | 控制格式化的选项。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<TextEdit[]> | 一组文本编辑或一个解析为这些编辑的 thenable。可以通过返回 |
OpenDialogOptions
用于配置文件打开对话框行为的选项。
- 注意 1:在 Windows 和 Linux 上,文件对话框不能同时是文件选择器和文件夹选择器,因此如果您在这两个平台上都将
canSelectFiles和canSelectFolders设置为true,则会显示一个文件夹选择器。 - 注意 2:显式将
canSelectFiles和canSelectFolders设置为false是徒劳的,编辑器随后会静默地调整选项以选择文件。
属性
允许选择文件,默认为 true。
允许选择文件夹,默认为 false。
允许选择多个文件或文件夹。
defaultUri?: Uri
对话框打开时显示的资源。
一对用于对话框的文件过滤器。每个条目是一个人类可读的标签,例如“TypeScript”,以及一个扩展名数组,例如
{
'Images': ['png', 'jpg'],
'TypeScript': ['ts', 'tsx']
}
“打开”按钮的字符串,方便人类阅读。
对话框标题。
此参数可能会被忽略,因为并非所有操作系统都会在打开对话框时显示标题(例如 macOS)。
OutputChannel
输出通道是只读文本信息的容器。
要获取 OutputChannel 的实例,请使用 createOutputChannel。
属性
此输出通道的可读名称。
方法
将给定值附加到通道。
| 参数 | 描述 |
|---|---|
| value: string | 一个字符串,假值不会被打印。 |
| 返回值 | 描述 |
| void |
appendLine(value: string): void
将给定值和换行符附加到通道。
| 参数 | 描述 |
|---|---|
| value: string | 一个字符串,假值会被打印。 |
| 返回值 | 描述 |
| void |
清除通道中的所有输出。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
释放并清理相关资源。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
从 UI 中隐藏此通道。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
用给定值替换通道中的所有输出。
| 参数 | 描述 |
|---|---|
| value: string | 一个字符串,假值不会被打印。 |
| 返回值 | 描述 |
| void |
show(preserveFocus?: boolean): void
在 UI 中显示此通道。
| 参数 | 描述 |
|---|---|
| preserveFocus?: boolean | 如果为 |
| 返回值 | 描述 |
| void |
show(column?: ViewColumn, preserveFocus?: boolean): void
在 UI 中显示此通道。
- 已弃用 - 请使用只有一个参数的重载(
show(preserveFocus?: boolean): void)。
| 参数 | 描述 |
|---|---|
| column?: ViewColumn | 此参数 **已弃用** 且将被忽略。 |
| preserveFocus?: boolean | 如果为 |
| 返回值 | 描述 |
| void |
OverviewRulerLane
表示在 overview ruler 中渲染装饰的不同位置。overview ruler 支持三个通道。
枚举成员
overview ruler 的左侧通道。
overview ruler 的中心通道。
overview ruler 的右侧通道。
overview ruler 的所有通道。
ParameterInformation
表示可调用签名的参数。参数可以有一个标签和一个文档注释。
构造函数
new ParameterInformation(label: string | [number, number], documentation?: string | MarkdownString): ParameterInformation
创建新的参数信息对象。
| 参数 | 描述 |
|---|---|
| label: string | [number, number] | 一个标签字符串或包含在签名标签内的偏移量(包含开始,不包含结束)。 |
| documentation?: string | MarkdownString | 文档字符串。 |
| 返回值 | 描述 |
| ParameterInformation |
属性
documentation?: string | MarkdownString
此签名的可读文档注释。将在 UI 中显示,但可以省略。
label: string | [number, number]
Position
构造函数
new Position(line: number, character: number): Position
| 参数 | 描述 |
|---|---|
| line: number | 基于 0 的行值。 |
| character: number | 基于 0 的字符值。 |
| 返回值 | 描述 |
| Position |
属性
基于 0 的字符值。
字符偏移量使用 UTF-16 代码单元表示。
基于 0 的行值。
方法
compareTo(other: Position): number
将此与 other 进行比较。
| 参数 | 描述 |
|---|---|
| other: Position | 一个位置。 |
| 返回值 | 描述 |
| number | 如果此位置在给定位置之前,则返回小于零的数字;如果此位置在给定位置之后,则返回大于零的数字;如果此位置和给定位置相等,则返回零。 |
isAfter(other: Position): boolean
检查此位置是否在 other 之后。
| 参数 | 描述 |
|---|---|
| other: Position | 一个位置。 |
| 返回值 | 描述 |
| 布尔值 | 如果位置在更大的一行上,或者在同一行但字符更大,则为 |
isAfterOrEqual(other: Position): boolean
检查此位置是否在 other 之后或等于 other。
| 参数 | 描述 |
|---|---|
| other: Position | 一个位置。 |
| 返回值 | 描述 |
| 布尔值 | 如果位置在更大的一行上,或者在同一行但字符更大或相等,则为 |
isBefore(other: Position): boolean
检查此位置是否在 other 之前。
| 参数 | 描述 |
|---|---|
| other: Position | 一个位置。 |
| 返回值 | 描述 |
| 布尔值 | 如果位置在较小的一行上,或者在同一行但字符更小,则为 |
isBeforeOrEqual(other: Position): boolean
检查此位置是否在 other 之前或等于 other。
| 参数 | 描述 |
|---|---|
| other: Position | 一个位置。 |
| 返回值 | 描述 |
| 布尔值 | 如果位置在较小的一行上,或者在同一行但字符更小或相等,则为 |
isEqual(other: Position): boolean
检查此位置是否等于 other。
| 参数 | 描述 |
|---|---|
| other: Position | 一个位置。 |
| 返回值 | 描述 |
| 布尔值 | 如果给定位置的行和字符等于此位置的行和字符,则为 |
translate(lineDelta?: number, characterDelta?: number): Position
创建相对于此位置的新位置。
| 参数 | 描述 |
|---|---|
| lineDelta?: number | 行值的增量,默认为 |
| characterDelta?: number | 字符值的增量,默认为 |
| 返回值 | 描述 |
| Position | 一个位置,其行和字符是当前行和字符以及相应增量的总和。 |
translate(change: {characterDelta: number, lineDelta: number}): Position
派生一个相对于此位置的新位置。
| 参数 | 描述 |
|---|---|
| change: {characterDelta: number, lineDelta: number} | 一个描述此位置增量的对象。 |
| 返回值 | 描述 |
| Position | 一个反映给定增量的位置。如果更改未改变任何内容,则返回 |
with(line?: number, character?: number): Position
创建从此位置派生的新位置。
with(change: {character: number, line: number}): Position
派生一个从此位置获得的新位置。
| 参数 | 描述 |
|---|---|
| change: {character: number, line: number} | 一个描述此位置更改的对象。 |
| 返回值 | 描述 |
| Position | 一个反映给定更改的位置。如果更改未改变任何内容,则返回 |
PreparedToolInvocation
属性
confirmationMessages?: LanguageModelToolConfirmationMessages
此属性的存在表明应在运行工具之前要求用户确认。对于任何具有副作用或可能存在潜在危险的工具,都应要求用户确认。
invocationMessage?: string | MarkdownString
工具运行时要显示的自定义进度消息。
PrepareLanguageModelChatModelOptions
属性
是否应通过某种 UI 流程提示用户,或者是否应尝试静默解析模型。如果 silent 为 true,由于缺少 API 密钥等信息,可能无法解析所有模型。
ProcessExecution
任务的执行作为外部进程进行,无需 shell 交互。
构造函数
new ProcessExecution(process: string, options?: ProcessExecutionOptions): ProcessExecution
创建进程执行。
| 参数 | 描述 |
|---|---|
| process: string | 要启动的进程。 |
| options?: ProcessExecutionOptions | 启动进程的可选选项。 |
| 返回值 | 描述 |
| ProcessExecution |
new ProcessExecution(process: string, args: string[], options?: ProcessExecutionOptions): ProcessExecution
创建进程执行。
| 参数 | 描述 |
|---|---|
| process: string | 要启动的进程。 |
| args: string[] | 要传递给进程的参数。 |
| options?: ProcessExecutionOptions | 启动进程的可选选项。 |
| 返回值 | 描述 |
| ProcessExecution |
属性
传递给进程的参数。默认为空数组。
options?: ProcessExecutionOptions
进程执行时使用的进程选项。默认为 undefined。
要执行的进程。
ProcessExecutionOptions
进程执行的选项
属性
已执行程序或 shell 的当前工作目录。如果省略,则使用工具的当前工作区根。
已执行程序或 shell 的附加环境。如果省略,则使用父进程的环境。如果提供,则会与父进程的环境合并。
Progress<T>
定义了报告进度更新的通用方法。
方法
报告进度更新。
| 参数 | 描述 |
|---|---|
| value: T | 进度项,例如一条消息和/或关于已完成工作量的报告。 |
| 返回值 | 描述 |
| void |
ProgressLocation
可以显示进度信息的位置。进度如何显示取决于位置。
枚举成员
显示源代码管理视图的进度,作为图标叠加和视图中的进度条(可见时)。都不支持取消、离散进度或描述操作的标签。
在编辑器的状态栏中显示进度。既不支持取消,也不支持离散进度。支持通过进度标签中的 $(<name>) 语法渲染 主题图标。
显示为通知,带有可选的取消按钮。支持显示无限和离散进度,但不支持渲染图标。
ProgressOptions
描述进度显示位置和方式的值对象。
属性
控制是否显示取消按钮以允许用户取消长时间运行的操作。请注意,目前只有 ProgressLocation.Notification 支持显示取消按钮。
location: ProgressLocation | {viewId: string}
进度应显示的位置。
将用于描述操作的可读字符串。
ProvideLanguageModelChatResponseOptions
LanguageModelChatRequestOptions 的提供程序版本
属性
一组控制语言模型行为的选项。这些选项特定于语言模型。
toolMode: LanguageModelChatToolMode
要使用的工具选择模式。提供程序必须遵守此模式。
tools?: readonly LanguageModelChatTool[]
可供语言模型使用的工具的可选列表。这些工具可以是 lm.tools 可用的已注册工具,也可以是仅在调用扩展中实现的私有工具。
如果 LLM 请求调用这些工具之一,它将在 LanguageModelChatResponse.stream 中返回一个 LanguageModelToolCallPart。调用方负责调用该工具。如果该工具已在 lm.tools 中注册,则意味着调用 lm.invokeTool。
然后,可以通过创建一个具有 LanguageModelToolCallPart 的 Assistant 类型 LanguageModelChatMessage,然后是具有 LanguageModelToolResultPart 的 User 类型消息,将工具结果提供给 LLM。
ProviderResult<T>
提供程序结果表示提供程序(例如 HoverProvider)可能返回的值。一方面是实际结果类型 T,例如 Hover,或者是一个解析为该类型 T 的 thenable。此外,还可以直接或从 thenable 返回 null 和 undefined。
下面的代码片段都是 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
}
};
ProviderResult: T | undefined | null | Thenable<T | undefined | null>
Pseudoterminal
定义终端 pty 的接口,使扩展能够控制终端。
事件
onDidChangeName?: Event<string>
一个事件,当触发时允许更改终端的名称。
在调用 Pseudoterminal.open 之前触发的事件将被忽略。
示例:将终端名称更改为“我的新终端”。
const writeEmitter = new vscode.EventEmitter<string>();
const changeNameEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
onDidWrite: writeEmitter.event,
onDidChangeName: changeNameEmitter.event,
open: () => changeNameEmitter.fire('My new terminal'),
close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });
onDidClose?: Event<number | void>
当触发时,该事件将发出信号表示 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);
onDidOverrideDimensions?: Event<TerminalDimensions>
当触发时,该事件允许覆盖终端的 尺寸。请注意,设置后,覆盖的尺寸只有在小于终端的实际尺寸时才会生效(即,永远不会出现滚动条)。设置为 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 });
onDidWrite: Event<string>
当触发时,该事件会将数据写入终端。与 Terminal.sendText(它将文本发送到底层的子伪设备(子进程))不同,此事件会将文本写入父伪设备(终端本身)。
注意,写入 \n 只会将光标向下移动一行,您还需要写入 \r 才能将光标移到最左边的单元格。
在调用 Pseudoterminal.open 之前触发的事件将被忽略。
示例:向终端写入红色文本
const writeEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
onDidWrite: writeEmitter.event,
open: () => writeEmitter.fire('\x1b[31mHello world\x1b[0m'),
close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });
示例:将光标移动到第 10 行和第 20 列并写入一个星号
writeEmitter.fire('\x1b[10;20H*');
方法
实现此方法以处理用户关闭终端的操作。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
handleInput(data: string): void
实现此方法以处理终端中的传入按键或扩展调用 Terminal.sendText 时的情况。data 包含已序列化为其相应 VT 序列表示的按键/文本。
| 参数 | 描述 |
|---|---|
| data: string | 传入的数据。 示例:在终端中回显输入。回车符(
|
| 返回值 | 描述 |
| void |
open(initialDimensions: TerminalDimensions): void
实现此方法以处理 pty 打开并准备好开始触发事件的情况。
| 参数 | 描述 |
|---|---|
| initialDimensions: TerminalDimensions | 终端的尺寸,如果终端面板在此之前未打开,则此值为 |
| 返回值 | 描述 |
| void |
setDimensions(dimensions: TerminalDimensions): void
实现此方法以处理终端面板可容纳的行数和列数发生变化的情况,例如更改字体大小时或调整面板大小时。终端尺寸的初始状态应视为 undefined,直到触发此事件,因为终端的大小在用户界面中显示之前是未知的。
当尺寸被 onDidOverrideDimensions 覆盖时,setDimensions 将继续使用常规面板尺寸被调用,允许扩展继续响应尺寸变化。
| 参数 | 描述 |
|---|---|
| dimensions: TerminalDimensions | 新的尺寸。 |
| 返回值 | 描述 |
| void |
QuickDiffProvider
快速 diff 提供程序提供一个 uri 来表示已修改资源的原始状态。编辑器将使用此信息在文本中渲染临时 diff。
方法
provideOriginalResource(uri: Uri, token: CancellationToken): ProviderResult<Uri>
提供一个 Uri 来表示任何给定资源的原始资源。
| 参数 | 描述 |
|---|---|
| uri: Uri | 在文本编辑器中打开的资源的 uri。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<Uri> | 一个 thenable,它解析为匹配的原始资源的 uri。 |
QuickInput
所有快速输入类型的基本接口。
快速输入为扩展提供了一种通过简单的 UI 元素与用户进行交互的统一方式。快速输入 UI 最初是不可见的。在通过其属性配置它之后,扩展可以通过调用 show 来使其可见。
There are several reasons why this UI might have to be hidden and the extension will be notified through onDidHide. Examples include: an explicit call to hide, the user pressing Esc, some other input UI opening, etc.
用户按 Enter 键或执行其他暗示接受当前状态的手势不会自动隐藏此 UI 组件。扩展应决定是否接受用户的输入以及是否应通过调用 hide 来隐藏 UI。
当扩展不再需要此输入 UI 时,它应 dispose 它,以允许释放与其相关的任何资源。
事件
onDidHide: Event<void>
属性
Determines if the UI should show a progress indicator. Defaults to false.
Change this to true, for example, while loading more data or validating user input.
Determines if the UI should allow for user input. Defaults to true.
Change this to false, for example, while validating user input or loading data for the next step in user input.
Determines if the UI should stay open even when losing UI focus. Defaults to false. This setting is ignored on iPad and is always false.
An optional current step count for multi-step input flows.
An optional title for the input UI.
可选的多步输入流程的总步数。
方法
销毁此输入 UI 和任何相关资源。
如果 UI 仍然可见,它将首先被隐藏。在此调用之后,输入 UI 将不再可用,并且不应再访问其上的任何其他方法或属性。相反,应该创建新的输入 UI。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
隐藏此输入 UI。
这将触发一个 onDidHide 事件。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
使输入 UI 以其当前配置可见。
任何其他输入 UI 将首先触发一个 onDidHide 事件。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
QuickInputButton
属性
iconPath: IconPath
按钮的图标。
鼠标悬停在按钮上时显示的可选工具提示。
QuickInputButtons
静态
Back: QuickInputButton
QuickPick<T>
一个具体的 QuickInput,允许用户从类型为 T 的项目列表中选择一个项目。
项目可以通过过滤文本字段进行过滤,并且有一个可选的 canSelectMany 选项以允许选择多个项目。
请注意,在许多情况下,更方便的 window.showQuickPick 更易于使用。window.createQuickPick 应在 window.showQuickPick 不提供所需灵活性时使用。
事件
onDidAccept: Event<void>
当用户表示接受选定的项目时触发的事件。
onDidChangeActive: Event<readonly T[]>
活动项目更改时触发的事件。
onDidChangeSelection: Event<readonly T[]>
选定项目更改时触发的事件。
onDidChangeValue: Event<string>
过滤文本的值更改时触发的事件。
onDidHide: Event<void>
onDidTriggerButton: Event<QuickInputButton>
An event signaling when a button was triggered.
此事件由 buttons 数组中存储的按钮触发。此事件不为 QuickPickItem 上的按钮触发。
onDidTriggerItemButton: Event<QuickPickItemButtonEvent<T>>
当 QuickPickItem 中某个按钮被触发时触发的事件。
此事件不为标题栏中属于 buttons 的按钮触发。
属性
活动项目。扩展可以读取和更新此属性。
Determines if the UI should show a progress indicator. Defaults to false.
Change this to true, for example, while loading more data or validating user input.
buttons: readonly QuickInputButton[]
Buttons for actions in the UI.
确定是否可以同时选择多个项目。默认为 false。
Determines if the UI should allow for user input. Defaults to true.
Change this to false, for example, while validating user input or loading data for the next step in user input.
Determines if the UI should stay open even when losing UI focus. Defaults to false. This setting is ignored on iPad and is always false.
可供选择的项目。扩展可以读取和更新此属性。
确定在快速选择项目更新时是否保留滚动位置。默认为 false。
确定在过滤项目时是否也应匹配过滤文本与项目 description。默认为 false。
确定在过滤项目时是否也应匹配过滤文本与项目 detail。默认为 false。
当没有输入值时,在过滤文本框中显示的占位符文本。
选定的项目。扩展可以读取和更新此属性。
An optional current step count for multi-step input flows.
An optional title for the input UI.
可选的多步输入流程的总步数。
过滤文本的当前值。
方法
销毁此输入 UI 和任何相关资源。
如果 UI 仍然可见,它将首先被隐藏。在此调用之后,输入 UI 将不再可用,并且不应再访问其上的任何其他方法或属性。相反,应该创建新的输入 UI。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
隐藏此输入 UI。
这将触发一个 onDidHide 事件。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
使输入 UI 以其当前配置可见。
任何其他输入 UI 将首先触发一个 onDidHide 事件。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
QuickPickItem
表示可从项目列表中选择的一个项目。
属性
确定此项目是否始终显示,即使被用户输入过滤掉。
注意:当 kind 设置为 QuickPickItemKind.Separator 时,将忽略此属性。
buttons?: readonly QuickInputButton[]
将在此特定项目上渲染的可选按钮。
当按下这些按钮时,它们将触发 QuickPickItemButtonEvent。只有在使用 createQuickPick API 创建的快速选择中才会渲染按钮。使用 showQuickPick API 时不会渲染按钮。
注意:当 kind 设置为 QuickPickItemKind.Separator 时,将忽略此属性。
人类可读的字符串,在同一行中不那么显眼地渲染。
支持通过 $(<name>) 语法渲染 主题图标。
注意:当 kind 设置为 QuickPickItemKind.Separator 时,将忽略此属性。
人类可读的字符串,在单独一行中不那么显眼地渲染。
支持通过 $(<name>) 语法渲染 主题图标。
注意:当 kind 设置为 QuickPickItemKind.Separator 时,将忽略此属性。
iconPath?: IconPath
项目的图标。
kind?: QuickPickItemKind
此项目的种类,决定了它在快速选择中的渲染方式。
如果未指定,则默认为 QuickPickItemKind.Default。
人类可读的字符串,突出显示。
支持通过 $(<name>) 语法渲染 主题图标。
注意:当 kind 设置为 QuickPickItemKind.Default(即常规项目而不是分隔符)时,它支持通过 $(<name>) 语法渲染 主题图标。
可选标志,指示此项目是否已初始选中。
仅在使用 showQuickPick API 时有效。要使用 createQuickPick API 实现相同的功能,只需将 selectedItems 设置为您希望初始选中的项目即可。
注意:这仅在选择器允许多项选择时有效。
另请参阅 QuickPickOptions.canPickMany
注意:当 kind 设置为 QuickPickItemKind.Separator 时,将忽略此属性。
QuickPickItemButtonEvent<T>
描述 QuickPickItem 上按下的按钮的事件。
属性
button: QuickInputButton
按下的按钮。
按钮所属的项目。
QuickPickItemKind
定义 快速选择项目 的种类。
枚举成员
提供视觉分组的分隔符项目。
当 QuickPickItem 的种类为 Separator 时,该项目仅为视觉分隔符,不代表可选择的项目。唯一适用的属性是 label。 QuickPickItem 上的所有其他属性都将被忽略且无效。
可在快速选择中选择的项目的默认种类。
QuickPickOptions
用于配置快速选择 UI 行为的选项。
事件
onDidSelectItem(item: string | QuickPickItem): any
选择项目时调用的可选函数。
| 参数 | 描述 |
|---|---|
| item: string | QuickPickItem | |
| 返回值 | 描述 |
| any |
属性
确定选择器是否允许多项选择。如果为 true,则结果是项目数组。
设置为 true 以在焦点移至编辑器其他部分或另一个窗口时保持选择器打开。此设置在 iPad 上被忽略,并且始终为 false。
确定在过滤项目时是否应包含 description。默认为 false。
确定在过滤项目时是否应包含 detail。默认为 false。
可选字符串,在输入框中显示为占位符以指导用户。
快速选择的可选标题。
Range
Range 表示两个位置的有序对。保证 start.isBeforeOrEqual(end)
Range 对象是不可变的。使用 with、intersection 或 union 方法从现有 Range 中派生新 Range。
构造函数
new Range(start: Position, end: Position): Range
从两个位置创建新 Range。如果 start 不在 end 之前或等于 end,则值将被交换。
new Range(startLine: number, startCharacter: number, endLine: number, endCharacter: number): Range
从数字坐标创建新 Range。这是使用 new Range(new Position(startLine, startCharacter), new Position(endLine, endCharacter)) 的更短的等效形式。
| 参数 | 描述 |
|---|---|
| startLine: number | 基于 0 的行值。 |
| startCharacter: number | 基于 0 的字符值。 |
| endLine: number | 基于 0 的行值。 |
| endCharacter: number | 基于 0 的字符值。 |
| 返回值 | 描述 |
| Range |
属性
end: Position
如果 start 和 end 相等,则为 true。
如果 start.line 和 end.line 相等,则为 true。
start: Position
方法
contains(positionOrRange: Range | Position): boolean
检查一个位置或范围是否包含在此范围内。
intersection(range: Range): Range
将 range 与此范围相交,并返回一个新范围,如果范围没有重叠则返回 undefined。
isEqual(other: Range): boolean
with(start?: Position, end?: Position): Range
从此范围派生一个新范围。
with(change: {end: Position, start: Position}): Range
从此范围派生一个新范围。
ReferenceContext
在请求引用时包含附加信息的 Value-object。
属性
包含当前符号的声明。
ReferenceProvider
ReferenceProvider 接口定义了扩展和 查找引用 功能之间的约定。
方法
provideReferences(document: TextDocument, position: Position, context: ReferenceContext, token: CancellationToken): ProviderResult<Location[]>
为给定的位置和文档提供一组项目范围内的引用。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| context: ReferenceContext | 有关引用请求的附加信息。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<Location[]> | 位置数组或可解析为此类数组的 thenable。可以通过返回 |
RelativePattern
RelativePattern 是一个辅助工具,用于构造相对于基文件路径匹配的 glob 模式。基路径可以是字符串或 URI 格式的绝对文件路径,也可以是 工作区文件夹,这是创建相对模式的首选方式。
构造函数
new RelativePattern(base: string | Uri | WorkspaceFolder, pattern: string): RelativePattern
使用基文件路径和要匹配的模式创建一个新的相对模式对象。此模式将在相对于基的路径上匹配。
示例
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 模式,例如 |
| 返回值 | 描述 |
| RelativePattern |
属性
将相对于此模式匹配的基础文件路径。
这匹配 RelativePattern.baseUri 的 fsPath 值。
注意: 更新此值将更新 RelativePattern.baseUri 以使用 file 方案的 URI。
- 已弃用 - 此属性已被弃用,请改用 RelativePattern.baseUri。
baseUri: Uri
将相对于此模式匹配的基础文件路径。文件路径必须是绝对路径,不应有任何尾部路径分隔符,也不应包含任何相对段 (. 或 ..)。
一个文件 glob 模式,例如 *.{ts,js},它将在相对于基路径的文件路径上匹配。
示例:给定基路径为 /home/work/folder,文件路径为 /home/work/folder/index.js,文件 glob 模式将匹配 index.js。
RenameProvider
RenameProvider 接口定义了扩展和 重命名 功能之间的约定。
方法
prepareRename(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Range | {placeholder: string, range: Range}>
可选函数,用于在运行重命名之前解析和验证位置。结果可以是范围,也可以是范围和占位符文本。占位符文本应为要重命名的符号的标识符 - 如果省略,则使用返回范围中的文本。
注意: 如果提供的位置不允许重命名,此函数应抛出错误或返回被拒绝的 thenable。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 将调用重命名的文档。 |
| position: Position | 将调用重命名的位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<Range | {placeholder: string, range: Range}> | 要重命名的标识符的范围或范围和占位符文本。可以通过返回 |
provideRenameEdits(document: TextDocument, position: Position, newName: string, token: CancellationToken): ProviderResult<WorkspaceEdit>
提供描述要对一个或多个资源所做的更改的编辑,以将符号重命名为其他名称。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| newName: string | 符号的新名称。如果给定的名称无效,提供者必须返回一个被拒绝的 promise。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<WorkspaceEdit> | 工作区编辑或可解析为此类编辑的 thenable。可以通过返回 |
RunOptions
任务的运行选项。
属性
控制任务变量是否在重新运行时重新评估。
SaveDialogOptions
配置文件保存对话框行为的选项。
属性
defaultUri?: Uri
对话框打开时显示的资源。
一对用于对话框的文件过滤器。每个条目是一个人类可读的标签,例如“TypeScript”,以及一个扩展名数组,例如
{
'Images': ['png', 'jpg'],
'TypeScript': ['ts', 'tsx']
}
保存按钮的可读字符串。
对话框标题。
此参数可能会被忽略,因为并非所有操作系统都会在保存对话框上显示标题(例如 macOS)。
SecretStorage
表示用于存储秘密(或任何敏感信息)的存储实用程序,这些秘密将被加密存储。秘密存储的实现将因平台而异,并且秘密不会在机器之间同步。
事件
onDidChange: Event<SecretStorageChangeEvent>
当存储或删除秘密时触发。
方法
delete(key: string): Thenable<void>
从存储中删除秘密。
| 参数 | 描述 |
|---|---|
| key: string | 存储秘密的键。 |
| 返回值 | 描述 |
| Thenable<void> |
get(key: string): Thenable<string>
检索使用密钥存储的秘密。如果不存在匹配该密钥的密码,则返回 undefined。
| 参数 | 描述 |
|---|---|
| key: string | 存储秘密的键。 |
| 返回值 | 描述 |
| Thenable<string> | 存储的值或 |
检索此扩展存储的所有秘密的键。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| Thenable<string[]> |
store(key: string, value: string): Thenable<void>
将秘密存储在给定键下。
| 参数 | 描述 |
|---|---|
| key: string | 存储秘密的键。 |
| value: string | 秘密。 |
| 返回值 | 描述 |
| Thenable<void> |
SecretStorageChangeEvent
添加或删除秘密时触发的事件数据。
属性
已更改的秘密的键。
SelectedCompletionInfo
描述当前选中的补全项。
属性
range: Range
如果接受此补全项,将被替换的范围。
如果接受此补全项,将被替换为该范围的文本。
Selection
表示编辑器中的文本选择。
构造函数
new Selection(anchor: Position, active: Position): Selection
new Selection(anchorLine: number, anchorCharacter: number, activeLine: number, activeCharacter: number): Selection
从四个坐标创建选择。
| 参数 | 描述 |
|---|---|
| anchorLine: number | 基于 0 的行值。 |
| anchorCharacter: number | 基于 0 的字符值。 |
| activeLine: number | 基于 0 的行值。 |
| activeCharacter: number | 基于 0 的字符值。 |
| 返回值 | 描述 |
| Selection |
属性
active: Position
光标的位置。此位置可能在 anchor 之前或之后。
anchor: Position
选择开始的位置。此位置可能在 active 之前或之后。
end: Position
如果 start 和 end 相等,则为 true。
如果 start.line 和 end.line 相等,则为 true。
start: Position
方法
contains(positionOrRange: Range | Position): boolean
检查一个位置或范围是否包含在此范围内。
intersection(range: Range): Range
将 range 与此范围相交,并返回一个新范围,如果范围没有重叠则返回 undefined。
isEqual(other: Range): boolean
with(start?: Position, end?: Position): Range
从此范围派生一个新范围。
with(change: {end: Position, start: Position}): Range
从此范围派生一个新范围。
SelectionRange
SelectionRange 表示选择层次结构的一部分。SelectionRange 可能有一个包含它的父 SelectionRange。
构造函数
new SelectionRange(range: Range, parent?: SelectionRange): SelectionRange
创建新的 SelectionRange。
| 参数 | 描述 |
|---|---|
| range: Range | SelectionRange 的范围。 |
| parent?: SelectionRange | SelectionRange 的父级。 |
| 返回值 | 描述 |
| SelectionRange |
属性
parent?: SelectionRange
包含此范围的父 SelectionRange。
range: Range
此 SelectionRange 的 Range。
SelectionRangeProvider
SelectionRangeProvider 接口定义了扩展和“扩展和收缩选择”功能之间的约定。
方法
provideSelectionRanges(document: TextDocument, positions: readonly Position[], token: CancellationToken): ProviderResult<SelectionRange[]>
为给定的位置提供选择范围。
应为每个位置单独计算并独立计算选择范围。编辑器将合并和去重范围,但提供者必须返回选择范围的层次结构,以便一个范围被其父级 包含。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| positions: readonly Position[] | 调用命令的位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<SelectionRange[]> | 选择范围或可解析为此类范围的 thenable。可以通过返回 |
SemanticTokens
表示语义令牌,无论是范围内的还是整个文档内的。
另请参阅
- 有关格式的说明,请参阅 provideDocumentSemanticTokens。
- 有关创建实例的帮助程序,请参阅 SemanticTokensBuilder。
构造函数
new SemanticTokens(data: Uint32Array, resultId?: string): SemanticTokens
创建新的语义令牌。
| 参数 | 描述 |
|---|---|
| data: Uint32Array | 令牌数据。 |
| resultId?: string | 结果标识符。 |
| 返回值 | 描述 |
| SemanticTokens |
属性
实际的令牌数据。
另请参阅 provideDocumentSemanticTokens 以了解格式说明。
令牌的结果 ID。
这将是传递给 DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits(如果已实现)的 ID。
SemanticTokensBuilder
SemanticTokensBuilder 可以帮助创建包含增量编码的语义令牌的 SemanticTokens 实例。
构造函数
new SemanticTokensBuilder(legend?: SemanticTokensLegend): SemanticTokensBuilder
创建语义令牌构建器。
| 参数 | 描述 |
|---|---|
| legend?: SemanticTokensLegend | 语义令牌图例。 |
| 返回值 | 描述 |
| SemanticTokensBuilder |
方法
build(resultId?: string): SemanticTokens
完成并创建 SemanticTokens 实例。
| 参数 | 描述 |
|---|---|
| resultId?: string | |
| 返回值 | 描述 |
| SemanticTokens |
push(line: number, char: number, length: number, tokenType: number, tokenModifiers?: number): void
添加另一个令牌。
| 参数 | 描述 |
|---|---|
| line: number | 令牌开始行号(绝对值)。 |
| char: number | 令牌开始字符(绝对值)。 |
| length: number | 令牌的长度(字符数)。 |
| tokenType: number | 编码的令牌类型。 |
| tokenModifiers?: number | 编码的令牌修饰符。 |
| 返回值 | 描述 |
| void |
push(range: Range, tokenType: string, tokenModifiers?: readonly string[]): void
添加另一个令牌。仅在提供图例时使用。
| 参数 | 描述 |
|---|---|
| range: Range | 令牌的范围。必须是单行。 |
| tokenType: string | 令牌类型。 |
| tokenModifiers?: readonly string[] | 令牌修饰符。 |
| 返回值 | 描述 |
| void |
SemanticTokensEdit
表示对语义令牌的编辑。
另请参阅 provideDocumentSemanticTokensEdits 以了解格式说明。
构造函数
new SemanticTokensEdit(start: number, deleteCount: number, data?: Uint32Array): SemanticTokensEdit
创建语义令牌编辑。
| 参数 | 描述 |
|---|---|
| start: number | 开始偏移量 |
| deleteCount: number | 要删除的元素数量。 |
| data?: Uint32Array | 要插入的元素 |
| 返回值 | 描述 |
| SemanticTokensEdit |
属性
要插入的元素。
要删除的元素数量。
编辑的开始偏移量。
SemanticTokensEdits
表示对语义令牌的编辑。
另请参阅 provideDocumentSemanticTokensEdits 以了解格式说明。
构造函数
new SemanticTokensEdits(edits: SemanticTokensEdit[], resultId?: string): SemanticTokensEdits
创建新的语义令牌编辑。
| 参数 | 描述 |
|---|---|
| edits: SemanticTokensEdit[] | 语义令牌编辑数组。 |
| resultId?: string | 结果标识符。 |
| 返回值 | 描述 |
| SemanticTokensEdits |
属性
edits: SemanticTokensEdit[]
令牌数据的编辑。所有编辑都引用初始数据状态。
令牌的结果 ID。
这将是传递给 DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits(如果已实现)的 ID。
SemanticTokensLegend
SemanticTokensLegend 包含解读语义令牌整数编码表示所需的必要信息。
构造函数
new SemanticTokensLegend(tokenTypes: string[], tokenModifiers?: string[]): SemanticTokensLegend
创建语义令牌图例。
| 参数 | 描述 |
|---|---|
| tokenTypes: string[] | 令牌类型数组。 |
| tokenModifiers?: string[] | 令牌修饰符数组。 |
| 返回值 | 描述 |
| SemanticTokensLegend |
属性
可能的令牌修饰符。
可能的令牌类型。
ShellExecution
表示在 shell 中执行的任务。
构造函数
new ShellExecution(commandLine: string, options?: ShellExecutionOptions): ShellExecution
使用完整的命令行创建 shell 执行。
| 参数 | 描述 |
|---|---|
| commandLine: string | 要执行的命令行。 |
| options?: ShellExecutionOptions | 启动 shell 的可选选项。 |
| 返回值 | 描述 |
| ShellExecution |
new ShellExecution(command: string | ShellQuotedString, args: Array<string | ShellQuotedString>, options?: ShellExecutionOptions): ShellExecution
创建一个带有命令和参数的 shell 执行。对于实际执行,编辑器将根据命令和参数构建命令行。这可能会被解释,尤其是在处理引用时。如果需要完全控制命令行,请使用创建带完整命令行的 ShellExecution 的构造函数。
| 参数 | 描述 |
|---|---|
| command: string | ShellQuotedString | 要执行的命令。 |
| args: Array<string | ShellQuotedString> | 命令参数。 |
| options?: ShellExecutionOptions | 启动 shell 的可选选项。 |
| 返回值 | 描述 |
| ShellExecution |
属性
args: Array<string | ShellQuotedString>
shell 参数。如果使用完整命令行创建,则为 undefined。
command: string | ShellQuotedString
shell 命令。如果使用完整命令行创建,则为 undefined。
shell 命令行。如果使用命令和参数创建,则为 undefined。
options?: ShellExecutionOptions
在 shell 中执行命令时使用的 shell 选项。默认为 undefined。
ShellExecutionOptions
shell 执行的选项
属性
执行 shell 的当前工作目录。如果省略,则使用工具的当前工作区根目录。
执行 shell 的附加环境变量。如果省略,则使用父进程的环境。如果提供,它将与父进程的环境合并。
shell 可执行文件。
要传递给 shell 可执行文件的参数,用于运行任务。大多数 shell 需要特殊参数来执行命令。例如,bash 需要 -c 参数来执行命令,PowerShell 需要 -Command,而 cmd 需要 /d 和 /c。
shellQuoting?: ShellQuotingOptions
此 shell 支持的 shell 引用。
ShellQuotedString
一个根据所用 shell 进行引用的字符串。
属性
quoting: ShellQuoting
要使用的引用样式。
实际的字符串值。
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 引用选项。
属性
escape?: string | {charsToEscape: string, escapeChar: string}
用于字符转义的字符。如果提供字符串,则仅转义空格。如果提供 { escapeChar, charsToEscape } 字面量,则使用 escapeChar 转义 charsToEscape 中的所有字符。
用于强引用的字符。字符串长度必须为 1。
用于弱引用的字符。字符串长度必须为 1。
SignatureHelp
Signature help 代表可调用项的签名。可以有多个签名,但只有一个是活动的,并且只有一个参数是活动的。
构造函数
new SignatureHelp(): SignatureHelp
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| SignatureHelp |
属性
活动签名的活动参数。
活动签名。
signatures: SignatureInformation[]
一个或多个签名。
SignatureHelpContext
有关 SignatureHelpProvider 触发上下文的其他信息。
属性
activeSignatureHelp: SignatureHelp
当前活动的 SignatureHelp。
activeSignatureHelp 的 activeSignature 字段会根据用户在可用签名之间移动光标而更新。
如果签名帮助已显示,则为 true。
重新触发发生在签名帮助已激活时,可能由键入触发字符、光标移动或文档内容更改等操作引起。
导致签名帮助触发的字符。
当签名帮助不是由键入触发时(例如,手动调用签名帮助或移动光标时),此值为 undefined。
triggerKind: SignatureHelpTriggerKind
导致签名帮助触发的操作。
SignatureHelpProvider
签名帮助提供程序接口定义了扩展与 参数提示 功能之间的合同。
方法
provideSignatureHelp(document: TextDocument, position: Position, token: CancellationToken, context: SignatureHelpContext): ProviderResult<SignatureHelp>
为给定位置和文档的签名提供帮助。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| token: CancellationToken | 取消令牌。 |
| context: SignatureHelpContext | 有关如何触发签名帮助的信息。 |
| 返回值 | 描述 |
| ProviderResult<SignatureHelp> | 签名帮助或可解析为签名的 thenable。可以通过返回 |
SignatureHelpProviderMetadata
有关已注册的 SignatureHelpProvider 的元数据。
属性
retriggerCharacters: readonly string[]
重新触发签名帮助的字符列表。
这些触发字符仅在签名帮助显示时才激活。所有触发字符也算作重新触发字符。
triggerCharacters: readonly string[]
触发签名帮助的字符列表。
SignatureHelpTriggerKind
如何触发 SignatureHelpProvider。
枚举成员
签名帮助由用户或命令手动调用。
由触发字符触发的签名帮助。
由光标移动或文档内容更改触发的签名帮助。
SignatureInformation
代表可调用项的签名。签名可以有一个标签,如函数名、文档注释以及一组参数。
构造函数
new SignatureInformation(label: string, documentation?: string | MarkdownString): SignatureInformation
创建一个新的签名信息对象。
| 参数 | 描述 |
|---|---|
| label: string | 一个标签字符串。 |
| documentation?: string | MarkdownString | 文档字符串。 |
| 返回值 | 描述 |
| SignatureInformation |
属性
活动参数的索引。
如果提供,此参数将代替 SignatureHelp.activeParameter。
documentation?: string | MarkdownString
此签名的可读文档注释。将在 UI 中显示,但可以省略。
此签名的标签。将在 UI 中显示。
parameters: ParameterInformation[]
此签名的参数。
SnippetString
Snippet string 是一个模板,允许插入文本并控制插入时的编辑器光标。
Snippet 可以定义制表符和占位符,如 $1、$2 和 ${3:foo}。$0 定义最终制表符,默认为 snippet 的末尾。变量使用 $name 和 ${name:default value} 定义。另请参阅 完整的 snippet 语法。
构造函数
new SnippetString(value?: string): SnippetString
创建新的 snippet 字符串。
| 参数 | 描述 |
|---|---|
| value?: string | Snippet 字符串。 |
| 返回值 | 描述 |
| SnippetString |
属性
Snippet 字符串。
方法
appendChoice(values: readonly string[], number?: number): SnippetString
构建函数,将选择项(${1|a,b,c|})附加到此 snippet 字符串的 value。
| 参数 | 描述 |
|---|---|
| values: readonly string[] | 选择项的值——字符串数组 |
| number?: number | 此制表符的编号,默认为从 1 开始的自动递增值。 |
| 返回值 | 描述 |
| SnippetString | 此 snippet 字符串。 |
appendPlaceholder(value: string | (snippet: SnippetString) => any, number?: number): SnippetString
构建函数,将占位符(${1:value})附加到此 snippet 字符串的 value。
| 参数 | 描述 |
|---|---|
| value: string | (snippet: SnippetString) => any | 此占位符的值——可以是字符串,也可以是用于创建嵌套 snippet 的函数。 |
| number?: number | 此制表符的编号,默认为从 1 开始的自动递增值。 |
| 返回值 | 描述 |
| SnippetString | 此 snippet 字符串。 |
appendTabstop(number?: number): SnippetString
构建函数,将制表符($1、$2 等)附加到此 snippet 字符串的 value。
| 参数 | 描述 |
|---|---|
| number?: number | 此制表符的编号,默认为从 1 开始的自动递增值。 |
| 返回值 | 描述 |
| SnippetString | 此 snippet 字符串。 |
appendText(string: string): SnippetString
构建函数,将给定字符串附加到此 snippet 字符串的 value。
| 参数 | 描述 |
|---|---|
| string: string | 要“按原样”附加的值。字符串将被转义。 |
| 返回值 | 描述 |
| SnippetString | 此 snippet 字符串。 |
appendVariable(name: string, defaultValue: string | (snippet: SnippetString) => any): SnippetString
构建函数,将变量(${VAR})附加到此 snippet 字符串的 value。
| 参数 | 描述 |
|---|---|
| name: string | 变量的名称——不包括 |
| defaultValue: string | (snippet: SnippetString) => any | 当变量名无法解析时使用的默认值——可以是字符串,也可以是用于创建嵌套 snippet 的函数。 |
| 返回值 | 描述 |
| SnippetString | 此 snippet 字符串。 |
SnippetTextEdit
Snippet edit 代表编辑器执行的交互式编辑。
注意,Snippet edit 始终可以作为常规 文本编辑 执行。当没有打开匹配的编辑器时,或者当 工作区编辑 包含多个文件的 snippet 编辑时,就会发生这种情况。在这种情况下,只有与活动编辑器匹配的才会作为 snippet 编辑执行,而其他则作为常规文本编辑执行。
静态
insert(position: Position, snippet: SnippetString): SnippetTextEdit
用于创建插入 snippet 编辑的实用函数。
| 参数 | 描述 |
|---|---|
| position: Position | 一个位置,将成为一个空范围。 |
| snippet: SnippetString | Snippet 字符串。 |
| 返回值 | 描述 |
| SnippetTextEdit | 一个新的 snippet 编辑对象。 |
replace(range: Range, snippet: SnippetString): SnippetTextEdit
用于创建替换 snippet 编辑的实用函数。
| 参数 | 描述 |
|---|---|
| range: Range | 范围。 |
| snippet: SnippetString | Snippet 字符串。 |
| 返回值 | 描述 |
| SnippetTextEdit | 一个新的 snippet 编辑对象。 |
构造函数
new SnippetTextEdit(range: Range, snippet: SnippetString): SnippetTextEdit
创建新的 snippet 编辑。
| 参数 | 描述 |
|---|---|
| range: Range | 范围。 |
| snippet: SnippetString | Snippet 字符串。 |
| 返回值 | 描述 |
| SnippetTextEdit |
属性
是否应在保留现有空格的情况下应用 snippet 编辑。
range: Range
此编辑适用的范围。
snippet: SnippetString
此编辑将执行的 snippet。
SourceBreakpoint
由源代码位置指定的断点。
构造函数
new SourceBreakpoint(location: Location, enabled?: boolean, condition?: string, hitCondition?: string, logMessage?: string): SourceBreakpoint
为源代码位置创建新的断点。
| 参数 | 描述 |
|---|---|
| location: Location | |
| enabled?: boolean | |
| condition?: string | |
| hitCondition?: string | |
| logMessage?: string | |
| 返回值 | 描述 |
| SourceBreakpoint |
属性
条件断点的可选表达式。
断点是否已启用。
可选表达式,用于控制忽略断点多少次命中。
断点的唯一 ID。
location: Location
此断点的源代码和行位置。
断点命中时要记录的可选消息。{} 中的嵌入表达式由调试适配器进行插值。
SourceControl
Source control 能够向编辑器提供 资源状态,并以多种与源代码控制相关的方式与编辑器进行交互。
属性
acceptInputCommand?: Command
可选的接受输入命令。
当用户接受源代码控制输入中的值时,将调用此命令。
可选的提交模板字符串。
源代码控制视图将使用此值填充源代码控制输入(在适当的情况下)。
此源代码控制的 id。
inputBox: SourceControlInputBox
此源代码控制的 输入框。
此源代码控制的可读标签。
quickDiffProvider?: QuickDiffProvider
可选的 快速 diff 提供程序。
rootUri: Uri
此源代码控制根目录的 (可选) Uri。
statusBarCommands?: Command[]
可选的状态栏命令。
这些命令将在编辑器的状态栏中显示。
方法
createResourceGroup(id: string, label: string): SourceControlResourceGroup
创建一个新的 资源组。
| 参数 | 描述 |
|---|---|
| id: string | |
| label: string | |
| 返回值 | 描述 |
| SourceControlResourceGroup |
销毁此源代码控制。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
SourceControlInputBox
代表源代码控制视图中的输入框。
属性
控制输入框是否启用(默认为 true)。
在输入框中显示的占位符字符串,以指导用户。
输入框内容的设置器和获取器。
控制输入框是否可见(默认为 true)。
SourceControlResourceDecorations
源代码控制资源状态 的装饰。可以独立为亮色和暗色主题指定。
属性
dark?: SourceControlResourceThemableDecorations
暗色主题的装饰。
是否应在 UI 中淡化 源代码控制资源状态。
iconPath?: string | Uri | ThemeIcon
一个特定源控制资源状态的图标路径。
light?: SourceControlResourceThemableDecorations
浅色主题的装饰。
UI中是否应删除源控制资源状态的删除线。
一个特定源控制资源状态的标题。
SourceControlResourceGroup
源控制资源组是源控制资源状态的集合。
属性
资源组的上下文值。这可用于贡献特定于资源组的操作。例如,如果一个资源组被赋予了exportable的上下文值,在使用menus扩展点向scm/resourceGroup/context贡献操作时,您可以在when表达式中为scmResourceGroupState键指定上下文值,例如scmResourceGroupState == exportable。
"contributes": {
"menus": {
"scm/resourceGroup/context": [
{
"command": "extension.export",
"when": "scmResourceGroupState == exportable"
}
]
}
}
这将仅为上下文值为exportable的资源组显示操作extension.export。
当此源控制资源组不包含任何源控制资源状态时,是否隐藏它。
此源控制资源组的ID。
此源控制资源组的标签。
resourceStates: SourceControlResourceState[]
此组的源控制资源状态集合。
方法
释放此源控制资源组。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
SourceControlResourceState
源控制资源状态代表特定源控制组中工作区底层资源的状态。
属性
command?: Command
资源状态在源控制视图中打开时应运行的命令。
资源状态的上下文值。这可用于贡献特定于资源的操作。例如,如果一个资源被赋予了diffable的上下文值。在使用menus扩展点向scm/resourceState/context贡献操作时,您可以在when表达式中为scmResourceState键指定上下文值,例如scmResourceState == diffable。
"contributes": {
"menus": {
"scm/resourceState/context": [
{
"command": "extension.diff",
"when": "scmResourceState == diffable"
}
]
}
}
这将仅为上下文值为diffable的资源显示操作extension.diff。
decorations?: SourceControlResourceDecorations
此源控制资源状态的装饰。
resourceUri: Uri
工作区内底层资源的URI。
SourceControlResourceThemableDecorations
一个源控制资源状态的主题感知装饰。
属性
iconPath?: string | Uri | ThemeIcon
一个特定源控制资源状态的图标路径。
StatementCoverage
包含单个语句或行的覆盖信息。
构造函数
new StatementCoverage(executed: number | boolean, location: Range | Position, branches?: BranchCoverage[]): StatementCoverage
| 参数 | 描述 |
|---|---|
| executed: number | boolean | 此语句执行的次数,或指示其是否已执行的布尔值(如果确切计数未知)。如果为零或 false,则语句将被标记为未覆盖。 |
| location: Range | Position | 语句位置。 |
| branches?: BranchCoverage[] | 此行分支的覆盖率。如果不是条件语句,则应省略此项。 |
| 返回值 | 描述 |
| StatementCoverage |
属性
branches: BranchCoverage[]
此行或语句分支的覆盖率。如果不是条件语句,则此数组将为空。
此语句执行的次数,或指示其是否已执行的布尔值(如果确切计数未知)。如果为零或 false,则语句将被标记为未覆盖。
语句位置。
StatusBarAlignment
表示状态栏项的对齐方式。
枚举成员
左对齐。
右对齐。
StatusBarItem
状态栏项是可以在点击时显示文本和图标并运行命令的状态栏贡献。
属性
accessibilityInformation: AccessibilityInformation
屏幕阅读器与此状态栏项交互时使用的可访问性信息
alignment: StatusBarAlignment
此项的对齐方式。
backgroundColor: ThemeColor
此条目的背景色。
注意:仅支持以下颜色
new ThemeColor('statusBarItem.errorBackground')new ThemeColor('statusBarItem.warningBackground')
将来可能会支持更多背景颜色。
注意:当设置了背景色时,状态栏可能会覆盖color选项,以确保该条目在所有主题中都可读。
color: string | ThemeColor
此条目的前景色。
command: string | Command
此项的标识符。
注意:如果window.createStatusBarItem方法未提供标识符,则标识符将与扩展标识符匹配。
条目的名称,例如“Python Language Indicator”、“Git Status”等。请尽量使名称简短,但要足够描述性,以便用户能理解状态栏项的用途。
此项的优先级。值越高表示该项应显示在越靠左的位置。
要显示在条目中的文本。您可以通过利用以下语法来嵌入图标:
我的文本 $(icon-name) 包含诸如 $(icon-name) 之类的图标。
其中 icon-name 是从 ThemeIcon 图标集 中获取的,例如 light-bulb、thumbsup、zap 等。
tooltip: string | MarkdownString
鼠标悬停在此条目上时显示的工具提示文本。
方法
释放并清理关联的资源。调用hide。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
隐藏状态栏中的条目。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
在状态栏中显示条目。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
SymbolInformation
代表有关变量、类、接口等编程构造的信息。
构造函数
new SymbolInformation(name: string, kind: SymbolKind, containerName: string, location: Location): SymbolInformation
创建一个新的符号信息对象。
| 参数 | 描述 |
|---|---|
| name: string | 符号的名称。 |
| kind: SymbolKind | 符号的类型。 |
| containerName: string | 包含该符号的符号的名称。 |
| location: Location | 符号的位置。 |
| 返回值 | 描述 |
| SymbolInformation |
new SymbolInformation(name: string, kind: SymbolKind, range: Range, uri?: Uri, containerName?: string): SymbolInformation
创建一个新的符号信息对象。
- 已弃用 - 请使用接受Location对象的构造函数。
| 参数 | 描述 |
|---|---|
| name: string | 符号的名称。 |
| kind: SymbolKind | 符号的类型。 |
| range: Range | 符号位置的范围。 |
| uri?: Uri | 符号位置的资源,默认为当前文档。 |
| containerName?: string | 包含该符号的符号的名称。 |
| 返回值 | 描述 |
| SymbolInformation |
属性
包含此符号的符号的名称。
kind: SymbolKind
此符号的类型。
location: Location
此符号的位置。
此符号的名称。
tags?: readonly SymbolTag[]
此符号的标签。
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
代表选项卡组中的一个选项卡。选项卡仅仅是编辑器区域内的图形表示。后端编辑器并非必需。
属性
group: TabGroup
该选项卡所属的组。
定义选项卡的结构,即文本、笔记本、自定义等。资源和其他有用属性定义在选项卡类型上。
该选项卡当前是否为活动选项卡。这由其在组中是否被选中来决定。
该选项卡上是否显示脏指示器。
该选项卡是否被固定(显示图钉图标)。
该选项卡是否处于预览模式。
显示在选项卡上的文本。
TabChangeEvent
描述选项卡更改的事件。
属性
changed: readonly Tab[]
已更改的选项卡,例如更改了其活动状态。
closed: readonly Tab[]
已关闭的选项卡。
opened: readonly Tab[]
已打开的选项卡。
TabGroup
表示一个选项卡组。选项卡组本身包含多个选项卡。
属性
activeTab: Tab
tabs: readonly Tab[]
组中包含的选项卡列表。如果组中没有打开的选项卡,此列表可能为空。
viewColumn: ViewColumn
组的视图列。
TabGroupChangeEvent
描述选项卡组更改的事件。
属性
changed: readonly TabGroup[]
已更改的选项卡组,例如更改了其活动状态。
closed: readonly TabGroup[]
已关闭的选项卡组。
opened: readonly TabGroup[]
已打开的选项卡组。
TabGroups
代表主编辑器区域,它由包含选项卡的多个组组成。
事件
onDidChangeTabGroups: Event<TabGroupChangeEvent>
onDidChangeTabs: Event<TabChangeEvent>
属性
activeTabGroup: TabGroup
当前活动的组。
all: readonly TabGroup[]
组容器内的所有组。
方法
close(tab: Tab | readonly Tab[], preserveFocus?: boolean): Thenable<boolean>
关闭选项卡。这将使选项卡对象失效,并且不应再使用该选项卡进行任何进一步的操作。注意:在选项卡是脏的情况下,将显示一个确认对话框,该对话框可能会被取消。如果被取消,选项卡仍然有效。
close(tabGroup: TabGroup | readonly TabGroup[], preserveFocus?: boolean): Thenable<boolean>
关闭选项卡组。这将使选项卡组对象失效,并且不应再使用该选项卡组进行任何进一步的操作。
TabInputCustom
该选项卡代表一个自定义编辑器。
构造函数
new TabInputCustom(uri: Uri, viewType: string): TabInputCustom
构造一个自定义编辑器选项卡输入。
| 参数 | 描述 |
|---|---|
| uri: Uri | 选项卡的 URI。 |
| viewType: string | 自定义编辑器的视图类型。 |
| 返回值 | 描述 |
| TabInputCustom |
属性
uri: Uri
该选项卡所代表的 URI。
自定义编辑器的类型。
TabInputNotebook
此选项卡表示一个笔记本。
构造函数
new TabInputNotebook(uri: Uri, notebookType: string): TabInputNotebook
构造一个用于笔记本的新选项卡输入。
| 参数 | 描述 |
|---|---|
| uri: Uri | 笔记本的 URI。 |
| notebookType: string | 笔记本的类型。映射到 NotebookDocument 的 notebookType |
| 返回值 | 描述 |
| TabInputNotebook |
属性
笔记本的类型。映射到 NotebookDocument 的 notebookType
uri: Uri
该选项卡所代表的 URI。
TabInputNotebookDiff
此选项卡表示处于差异配置中的两个笔记本。
构造函数
new TabInputNotebookDiff(original: Uri, modified: Uri, notebookType: string): TabInputNotebookDiff
构造一个笔记本差异选项卡输入。
| 参数 | 描述 |
|---|---|
| original: Uri | 原始未修改笔记本的 URI。 |
| modified: Uri | 已修改笔记本的 URI。 |
| notebookType: string | 笔记本的类型。映射到 NotebookDocument 的 notebookType |
| 返回值 | 描述 |
| TabInputNotebookDiff |
属性
modified: Uri
已修改笔记本的 URI。
笔记本的类型。映射到 NotebookDocument 的 notebookType
original: Uri
原始笔记本的 URI。
TabInputTerminal
此选项卡表示编辑器区域中的一个终端。
构造函数
new TabInputTerminal(): TabInputTerminal
构造一个终端选项卡输入。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| TabInputTerminal |
TabInputText
此选项卡表示一个单一的基于文本的资源。
构造函数
new TabInputText(uri: Uri): TabInputText
使用给定的 URI 构造一个文本选项卡输入。
| 参数 | 描述 |
|---|---|
| uri: Uri | 选项卡的 URI。 |
| 返回值 | 描述 |
| TabInputText |
属性
uri: Uri
选项卡表示的 URI。
TabInputTextDiff
此选项卡表示两个文本资源,并以差异形式显示。
构造函数
new TabInputTextDiff(original: Uri, modified: Uri): TabInputTextDiff
使用给定的 URI 构造一个新文本差异选项卡输入。
| 参数 | 描述 |
|---|---|
| original: Uri | 原始文本资源的 URI。 |
| modified: Uri | 修改后的文本资源的 URI。 |
| 返回值 | 描述 |
| TabInputTextDiff |
属性
modified: Uri
修改后的文本资源的 URI。
original: Uri
原始文本资源的 URI。
TabInputWebview
此选项卡表示一个 Webview。
构造函数
new TabInputWebview(viewType: string): TabInputWebview
使用给定的视图类型构造一个 Webview 选项卡输入。
| 参数 | 描述 |
|---|---|
| viewType: string | Webview 的类型。映射到 WebviewPanel 的 viewType |
| 返回值 | 描述 |
| TabInputWebview |
属性
Webview 的类型。映射到 WebviewPanel 的 viewType
Task
要执行的任务
构造函数
new Task(taskDefinition: TaskDefinition, scope: WorkspaceFolder | Global | Workspace, name: string, source: string, execution?: ProcessExecution | ShellExecution | CustomExecution, problemMatchers?: string | string[]): 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 |
new Task(taskDefinition: TaskDefinition, name: string, source: string, execution?: ProcessExecution | ShellExecution, problemMatchers?: string | string[]): Task
创建新任务。
- 已弃用 - 请使用允许指定任务范围的新构造函数。
| 参数 | 描述 |
|---|---|
| taskDefinition: TaskDefinition | 任务定义,如在 taskDefinitions 扩展点中定义的那样。 |
| name: string | 任务的名称。显示在用户界面中。 |
| source: string | 任务的来源(例如,“gulp”,“npm”...)。显示在用户界面中。 |
| execution?: ProcessExecution | ShellExecution | 进程或 Shell 执行。 |
| problemMatchers?: string | string[] | 要使用的问题匹配器的名称,如 '$tsc' 或 '$eslint'。问题匹配器可以通过 `problemMatchers` 扩展点由扩展贡献。 |
| 返回值 | 描述 |
| Task |
属性
definition: TaskDefinition
任务的定义。
一个人类可读的字符串,在显示任务名称的地方以不太显眼的方式显示在单独的行上。通过 $(<name>)-语法支持渲染 主题图标。
execution?: ProcessExecution | ShellExecution | CustomExecution
任务的执行引擎
group?: TaskGroup
此任务所属的任务组。请参阅 TaskGroup 以获取可用组的预定义集。默认为 undefined,表示任务不属于任何特殊组。
任务是否为后台任务。
任务的名称
presentationOptions: TaskPresentationOptions
显示选项。默认为空字面量。
附加到任务的问题匹配器。默认为空数组。
runOptions: RunOptions
任务的运行选项
scope: WorkspaceFolder | Global | Workspace
任务的范围。
描述此 Shell 任务来源的可读字符串,例如“gulp”或“npm”。通过 $(<name>)-语法支持渲染 主题图标。
TaskDefinition
定义系统中任务类型的结构。该值必须是 JSON 可序列化的。
属性
任务定义,描述扩展提供的任务。通常,任务提供者定义更多属性来标识任务。它们需要在扩展的 package.json 中 under 'taskDefinitions' 扩展点进行定义。例如,npm 任务定义如下:
interface NpmTaskDefinition extends TaskDefinition {
script: string;
}
请注意,以 '$' 开头的类型标识符保留供内部使用,扩展不应使用它们。
TaskEndEvent
一个事件,用于指示已执行任务的结束。
此接口不旨在实现。
属性
execution: TaskExecution
表示已完成任务的任务项。
TaskExecution
表示已执行任务的对象。可用于终止任务。
此接口不旨在实现。
属性
task: Task
已启动的任务。
方法
终止任务执行。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
TaskFilter
任务过滤器按版本和类型来标识任务。
属性
要返回的任务类型。
在 tasks.json 文件中使用的任务版本。字符串支持 package.json 的 semver 表示法。
TaskGroup
任务的 agrupamento。编辑器默认支持“Clean”、“Build”、“RebuildAll”和“Test”组。
静态
Build: TaskGroup
构建任务组;
Clean: TaskGroup
清理任务组;
Rebuild: TaskGroup
重新构建所有任务组;
Test: TaskGroup
所有测试任务组;
构造函数
new TaskGroup(id: string, label: string): TaskGroup
私有构造函数
| 参数 | 描述 |
|---|---|
| id: string | 任务组的标识符。 |
| label: string | 任务组的可读名称。 |
| 返回值 | 描述 |
| TaskGroup |
属性
任务组的 ID。它是 TaskGroup.Clean.id、TaskGroup.Build.id、TaskGroup.Rebuild.id 或 TaskGroup.Test.id 之一。
属于此组的任务是否是该组的默认任务。此属性不能通过 API 设置,由用户的任务配置控制。
TaskPanelKind
控制任务之间的任务通道如何使用。
枚举成员
与其他任务共享面板。这是默认设置。
为此任务使用专用面板。该面板不与其他任务共享。
每次执行此任务时创建一个新面板。
TaskPresentationOptions
控制任务在 UI 中如何显示。
属性
控制在执行任务之前是否清除终端。
控制在执行任务之后是否关闭终端。
控制是否在用户界面中显示与任务关联的命令。
控制显示任务输出的面板是否获得焦点。
panel?: TaskPanelKind
控制任务面板是仅用于此任务(专用)、在任务之间共享(共享)还是在每次执行任务时创建一个新面板(新)。默认为 TaskInstanceKind.Shared。
reveal?: TaskRevealKind
控制是否在用户界面中显示任务输出。默认为 RevealKind.Always。
控制是否显示“终端将被任务重用,按任意键关闭它”消息。
TaskProcessEndEvent
一个事件,用于指示通过任务触发的进程执行的结束。
属性
execution: TaskExecution
启动进程的任务执行。
进程的退出代码。当任务被终止时将为 undefined。
TaskProcessStartEvent
一个事件,用于指示通过任务触发的进程执行的开始。
属性
execution: TaskExecution
启动进程的任务执行。
底层进程 ID。
TaskProvider<T>
任务提供者允许将任务添加到任务服务。任务提供者通过 tasks.registerTaskProvider 注册。
方法
provideTasks(token: CancellationToken): ProviderResult<T[]>
提供任务。
| 参数 | 描述 |
|---|---|
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T[]> | 任务数组 |
resolveTask(task: T, token: CancellationToken): ProviderResult<T>
解析一个没有设置 execution 的任务。任务通常根据 `tasks.json` 文件中的信息创建。这些任务缺少如何执行它们的信息,任务提供者必须在 `resolveTask` 方法中填充缺失的信息。对于从上面的 `provideTasks` 方法返回的任务,将不会调用此方法,因为这些任务总是完全解析的。 `resolveTask` 方法的一个有效默认实现是返回 `undefined`。
请注意,在填充 task 的属性时,您必须确保使用完全相同的 TaskDefinition,而不是创建新的。其他属性可能会被更改。
| 参数 | 描述 |
|---|---|
| task: T | 要解析的任务。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T> | 已解析的任务 |
TaskRevealKind
控制终端可见性的行为。
枚举成员
如果执行任务,则始终将终端带到前面。
仅当执行任务时检测到问题时(例如,由于...无法启动任务),才将终端带到前面。
执行任务时,终端永远不会出现在前面。
TaskScope
任务的范围。
枚举成员
任务是全局任务。目前不支持全局任务。
任务是工作区任务
TaskStartEvent
一个事件,用于指示任务执行的开始。
此接口不旨在实现。
属性
execution: TaskExecution
表示已启动任务的任务项。
TelemetryLogger
一个遥测记录器,扩展可以使用它来记录使用情况和错误遥测。
一个包装了 sender 的记录器,但它保证
- 会遵守用户禁用或调整遥测的设置,并且
- 会移除潜在的敏感数据。
它还支持一个“回显 UI”,可以打印发送的任何数据,并允许编辑器将未处理的错误转发给相应的扩展。
要获取 TelemetryLogger 的实例,请使用 createTelemetryLogger。
事件
onDidChangeEnableStates: Event<TelemetryLogger>
当使用情况或错误遥测的启用状态发生变化时触发的 Event。
属性
此记录器是否启用了错误遥测。
此记录器是否启用了使用情况遥测。
方法
释放此对象并回收资源。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
logError(eventName: string, data?: Record<string, any>): void
记录一个错误事件。
完成清理、遥测设置检查和数据混合后,调用 TelemetrySender.sendEventData 来记录事件。与 logUsage 不同,它会在遥测设置为 Error+ 时记录事件。自动支持回显到扩展遥测输出通道。
| 参数 | 描述 |
|---|---|
| eventName: string | 要记录的事件名称 |
| data?: Record<string, any> | 要记录的数据 |
| 返回值 | 描述 |
| void |
logError(error: Error, data?: Record<string, any>): void
记录一个错误事件。
调用 TelemetrySender.sendErrorData。执行清理、遥测检查和数据混合。自动支持回显到扩展遥测输出通道。还将自动记录在扩展主机进程中抛出的任何异常。
| 参数 | 描述 |
|---|---|
| error: Error | 已清理 PII 的错误对象(包含堆栈跟踪) |
| data?: Record<string, any> | 与堆栈跟踪一起记录的其他数据 |
| 返回值 | 描述 |
| void |
logUsage(eventName: string, data?: Record<string, any>): void
记录一个使用情况事件。
完成清理、遥测设置检查和数据混合后,调用 TelemetrySender.sendEventData 来记录事件。自动支持回显到扩展遥测输出通道。
| 参数 | 描述 |
|---|---|
| eventName: string | 要记录的事件名称 |
| data?: Record<string, any> | 要记录的数据 |
| 返回值 | 描述 |
| void |
TelemetryLoggerOptions
创建 TelemetryLogger 的选项。
属性
additionalCommonProperties?: Record<string, any>
应注入到 data 对象中的任何其他通用属性。
ignoreBuiltInCommonProperties?: boolean
是否要避免将内置的通用属性(如 os、扩展名等)注入到 data 对象中。如果未定义,则默认为 false。
ignoreUnhandledErrors?: boolean
由您的扩展引起的扩展主机上的未处理错误是否应记录到您的发送者。如果未定义,则默认为 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' });
方法
flush(): void | Thenable<void>
可选的刷新函数,它将使此发送者有机会在 TelemetryLogger 被处置时发送任何剩余事件。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void | Thenable<void> |
sendErrorData(error: Error, data?: Record<string, any>): void
用于发送错误的功能。在 TelemetryLogger 中使用。
| 参数 | 描述 |
|---|---|
| error: Error | 正在记录的错误 |
| data?: Record<string, any> | 随异常收集的任何其他数据 |
| 返回值 | 描述 |
| void |
sendEventData(eventName: string, data?: Record<string, any>): void
用于发送不带堆栈跟踪的事件数据的功能。在 TelemetryLogger 中使用。
| 参数 | 描述 |
|---|---|
| eventName: string | 您正在记录的事件名称 |
| data?: Record<string, any> | 正在记录的可序列化键值对 |
| 返回值 | 描述 |
| void |
TelemetryTrustedValue<T>
一个特殊的包装器,表示一个可以安全地不进行清理的值。当您可以保证值中不包含任何可识别信息,并且清理操作会不正确地将其删除时,应使用此包装器。
构造函数
new TelemetryTrustedValue<T>(value: T): TelemetryTrustedValue<T>
创建一个新的遥测受信任值。
| 参数 | 描述 |
|---|---|
| value: T | 要信任的值 |
| 返回值 | 描述 |
| TelemetryTrustedValue<T> |
属性
受信任不包含 PII 的值。
Terminal
集成终端中的单个终端实例。
属性
creationOptions: Readonly<TerminalOptions | ExtensionTerminalOptions>
用于初始化终端的对象,例如,这对于检测未由此扩展启动的终端的 shell 类型或检测 shell 启动的文件夹很有用。
exitStatus: TerminalExitStatus
终端的退出状态,在终端处于活动状态时将未定义。
示例:当终端以非零退出代码退出时,显示带有退出代码的通知。
window.onDidCloseTerminal(t => {
if (t.exitStatus && t.exitStatus.code) {
vscode.window.showInformationMessage(`Exit code: ${t.exitStatus.code}`);
}
});
终端的名称。
shell 进程的进程 ID。
shellIntegration: TerminalShellIntegration
包含终端的 shell 集成 驱动功能的对象的属性。终端创建后,此属性将始终为 undefined。侦听 window.onDidChangeTerminalShellIntegration 以在终端的 shell 集成激活时收到通知。
请注意,如果 shell 集成从未激活,此对象可能仍然未定义。例如,命令提示符不支持 shell 集成,用户的 shell 设置可能会与自动 shell 集成激活冲突。
state: TerminalState
Terminal 的当前状态。
方法
释放并清理相关资源。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
如果终端面板当前显示,则隐藏终端面板。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
sendText(text: string, shouldExecute?: boolean): void
向终端发送文本。文本将被写入终端的底层 pty 进程(shell)的标准输入。
| 参数 | 描述 |
|---|---|
| text: string | 要发送的文本。 |
| shouldExecute?: boolean | 指示发送的文本应被执行,而不仅仅是插入到终端中。添加的字符是 |
| 返回值 | 描述 |
| void |
show(preserveFocus?: boolean): void
显示终端面板并将此终端显示在 UI 中。
| 参数 | 描述 |
|---|---|
| preserveFocus?: boolean | 当 |
| 返回值 | 描述 |
| void |
TerminalDimensions
表示终端的尺寸。
属性
终端的列数。
终端的行数。
TerminalEditorLocationOptions
假定 TerminalLocation 为 editor,并允许指定 ViewColumn 和 preserveFocus 属性。
属性
一个可选标志,当 true 时,将阻止 Terminal 获得焦点。
viewColumn: ViewColumn
应在编辑器区域显示 terminal 的视图列。默认值为 active。不存在的列将按需创建,最多为 ViewColumn.Nine。使用 ViewColumn.Beside 在当前活动编辑器旁边打开编辑器。
TerminalExitReason
终端退出原因类型。
枚举成员
未知原因。
窗口关闭/重新加载。
shell 进程已退出。
用户关闭了终端。
某个扩展已释放终端。
TerminalExitStatus
表示终端如何退出。
属性
终端退出的退出代码,它可以具有以下值
- 零:终端进程或自定义执行成功。
- 非零:终端进程或自定义执行失败。
undefined:用户强制关闭了终端,或者自定义执行在未提供退出代码的情况下退出。
reason: TerminalExitReason
触发终端退出的原因。
TerminalLink
终端行上的链接。
构造函数
new TerminalLink(startIndex: number, length: number, tooltip?: string): TerminalLink
创建一个新的终端链接。
| 参数 | 描述 |
|---|---|
| startIndex: number | 链接在 TerminalLinkContext.line 上的起始索引。 |
| length: number | 链接在 TerminalLinkContext.line 上的长度。 |
| tooltip?: string | 鼠标悬停在此链接上时显示的工具提示文本。 如果提供了工具提示,它将显示在包含触发链接说明的字符串中,例如 |
| 返回值 | 描述 |
| TerminalLink |
属性
链接在 TerminalLinkContext.line 上的长度。
链接在 TerminalLinkContext.line 上的起始索引。
鼠标悬停在此链接上时显示的工具提示文本。
如果提供了工具提示,它将显示在包含触发链接说明的字符串中,例如 {0} (ctrl + click)。具体说明因操作系统、用户设置和本地化而异。
TerminalLinkContext
提供终端行上的信息,以便为其提供链接。
属性
这是终端中未包装行的文本。
terminal: Terminal
链接所属的终端。
TerminalLinkProvider<T>
一个提供程序,用于检测和处理终端中的链接。
方法
handleTerminalLink(link: T): ProviderResult<void>
处理已激活的终端链接。
| 参数 | 描述 |
|---|---|
| link: T | 要处理的链接。 |
| 返回值 | 描述 |
| ProviderResult<void> |
provideTerminalLinks(context: TerminalLinkContext, token: CancellationToken): ProviderResult<T[]>
为给定上下文提供终端链接。请注意,即使在之前的调用解析之前,此函数也可能被多次调用,请确保不要共享可能在异步使用重叠时出现问题的全局对象(例如 RegExp)。
| 参数 | 描述 |
|---|---|
| context: TerminalLinkContext | 有关要提供链接的信息。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T[]> | 给定行的终端链接列表。 |
TerminalLocation
终端的位置。
枚举成员
在终端视图中
在编辑器区域中
TerminalOptions
描述终端应使用哪些选项的值对象。
属性
color?: ThemeColor
终端的图标 ThemeColor。建议使用 terminal.ansi* 主题键,以在不同主题之间获得最佳对比度和一致性。
cwd?: string | Uri
要用于终端的当前工作目录的路径或 URI。
将添加到编辑器进程的环境变量对象。
启用后,终端将按正常方式运行进程,但除非调用 Terminal.show,否则不会向用户显示。这通常用于需要交互但只想在需要交互时才告知用户的情况。请注意,终端仍将像往常一样向所有扩展公开。隐藏的终端在工作区下次打开时不会恢复。
iconPath?: IconPath
终端的图标路径或 ThemeIcon。
选择退出在重启和重载时自动持久化终端。只有当 terminal.integrated.enablePersistentSessions 启用时,此选项才生效。
location?: TerminalEditorLocationOptions | TerminalSplitLocationOptions | TerminalLocation
首次启动时要写入终端的消息,请注意,此消息不会发送到进程,而是直接写入终端。它支持转义序列,例如设置文本样式。
一个人类可读的字符串,将用于在 UI 中表示终端。
自定义 shell 可执行文件的参数。在 Windows 上可以使用字符串,它允许在 命令行格式 中指定 shell 参数。
shellIntegrationNonce?: string
用于验证 shell 集成序列是否来自可信源的 nonce。UX 的一个示例影响是,如果命令行报告了一个 nonce,它将无需与用户确认命令行是否正确即可通过 shell 集成命令装饰 重新运行它。
如果终端包含 自定义 shell 集成支持,则应使用此项。它应设置为一个随机 GUID,然后该 GUID 将设置 VSCODE_NONCE 环境变量。在 shell 中,应将其从环境变量中移除,以防止其被通用访问。完成此操作后,可以将其传递到相关序列中以使其受信任。
要用在终端中的自定义 shell 可执行文件的路径。
终端进程环境是否应与 TerminalOptions.env 中提供的完全一致。当此值为 false(默认值)时,环境将基于窗口的环境,并应用配置的平台设置,如 terminal.integrated.env.windows。当此值为 true 时,必须提供完整的环境,因为不会从进程或任何配置继承任何内容。
TerminalProfile
终端配置文件定义了终端将如何启动。
构造函数
new TerminalProfile(options: TerminalOptions | ExtensionTerminalOptions): TerminalProfile
创建一个新的终端配置文件。
| 参数 | 描述 |
|---|---|
| options: TerminalOptions | ExtensionTerminalOptions | 终端将使用此选项启动。 |
| 返回值 | 描述 |
| TerminalProfile |
属性
options: TerminalOptions | ExtensionTerminalOptions
终端将使用此选项启动。
TerminalProfileProvider
为通过 UI 或命令启动的贡献终端配置文件提供一个终端配置文件。
方法
provideTerminalProfile(token: CancellationToken): ProviderResult<TerminalProfile>
提供终端配置文件。
| 参数 | 描述 |
|---|---|
| token: CancellationToken | 一个取消令牌,指示结果不再需要。 |
| 返回值 | 描述 |
| ProviderResult<TerminalProfile> | 终端配置文件。 |
TerminalShellExecution
在终端中执行的命令。
属性
commandLine: TerminalShellExecutionCommandLine
执行的命令行。此值的 confidence 取决于特定 shell 的 shell 集成实现的程度。在 window.onDidEndTerminalShellExecution 触发后,此值可能会变得更准确。
示例
// Log the details of the command line on start and end
window.onDidStartTerminalShellExecution(event => {
const commandLine = event.execution.commandLine;
console.log(`Command started\n${summarizeCommandLine(commandLine)}`);
});
window.onDidEndTerminalShellExecution(event => {
const commandLine = event.execution.commandLine;
console.log(`Command ended\n${summarizeCommandLine(commandLine)}`);
});
function summarizeCommandLine(commandLine: TerminalShellExecutionCommandLine) {
return [
` Command line: ${command.commandLine.value}`,
` Confidence: ${command.commandLine.confidence}`,
` Trusted: ${command.commandLine.isTrusted}
].join('\n');
}
cwd: Uri
shell 在命令执行时报告的工作目录。此 Uri 可能表示另一台机器上的文件(例如,ssh 到另一台机器)。这需要 shell 集成支持工作目录报告。
方法
创建写入终端的原始数据流(包括转义序列)。这仅包括在首次调用 read 后写入的数据,也就是说,您必须在通过 TerminalShellIntegration.executeCommand 或 window.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
在终端中执行的命令行。
属性
confidence: TerminalShellExecutionCommandLineConfidence
命令行值的置信度,由值的获取方式决定。这取决于 shell 集成脚本的实现。
命令行值是否来自可信来源,因此可以安全地执行而无需用户额外确认,例如请求“您要执行(命令)吗?”的通知。只有当您要再次执行该命令时,才可能需要此验证。
仅当命令行由 shell 集成脚本明确报告(即 高置信度)并且使用了 nonce 进行验证时,此值为 true。
执行的完整命令行,包括命令及其参数。
TerminalShellExecutionCommandLineConfidence
枚举成员
命令行值的置信度低。这意味着该值是从终端缓冲区中读取的,使用了 shell 集成脚本报告的标记。此外,将满足以下条件之一:
- 命令从最左边的列开始,这是不寻常的,或者
- 命令是多行的,由于行继续字符和右提示符,因此更难准确检测。
- 命令行标记未被 shell 集成脚本报告。
命令行值的置信度中等。这意味着该值是从终端缓冲区中读取的,使用了 shell 集成脚本报告的标记。命令是单行的,并且不从最左边的列开始(这是不寻常的)。
命令行值的置信度高。这意味着该值是从 shell 集成脚本显式发送的,或者命令是通过 TerminalShellIntegration.executeCommand API 执行的。
TerminalShellExecutionEndEvent
一个信号,表示终端中的执行已结束。
属性
execution: TerminalShellExecution
已结束的终端 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');
}
}
});
shellIntegration: TerminalShellIntegration
shell 集成对象。
terminal: Terminal
已激活 shell 集成的终端。
TerminalShellExecutionStartEvent
一个信号,表示终端中的执行已开始。
属性
execution: TerminalShellExecution
已结束的终端 shell 执行。
shellIntegration: TerminalShellIntegration
shell 集成对象。
terminal: Terminal
已激活 shell 集成的终端。
TerminalShellIntegration
Shell 集成驱动的功能,由终端拥有。
属性
cwd: Uri
终端的当前工作目录。此 Uri 可能表示另一台机器上的文件(例如,ssh 到另一台机器)。这需要 shell 集成支持工作目录报告。
方法
executeCommand(commandLine: string): TerminalShellExecution
执行命令,必要时发送 ^C 以中断任何正在运行的命令。
- 抛出 - 在不支持此 API 的终端上运行时,例如任务终端。
示例
// Execute a command in a terminal immediately after being created
const myTerm = window.createTerminal();
window.onDidChangeTerminalShellIntegration(async ({ terminal, shellIntegration }) => {
if (terminal === myTerm) {
const execution = shellIntegration.executeCommand('echo "Hello world"');
window.onDidEndTerminalShellExecution(event => {
if (event.execution === execution) {
console.log(`Command exited with code ${event.exitCode}`);
}
});
}
}));
// Fallback to sendText if there is no shell integration within 3 seconds of launching
setTimeout(() => {
if (!myTerm.shellIntegration) {
myTerm.sendText('echo "Hello world"');
// Without shell integration, we can't know when the command has finished or what the
// exit code was.
}
}, 3000);
示例
// Send command to terminal that has been alive for a while
const commandLine = 'echo "Hello world"';
if (term.shellIntegration) {
const execution = shellIntegration.executeCommand({ commandLine });
window.onDidEndTerminalShellExecution(event => {
if (event.execution === execution) {
console.log(`Command exited with code ${event.exitCode}`);
}
});
} else {
term.sendText(commandLine);
// Without shell integration, we can't know when the command has finished or what the
// exit code was.
}
| 参数 | 描述 |
|---|---|
| commandLine: string | 要执行的命令行,这是将发送到终端的精确文本。 |
| 返回值 | 描述 |
| TerminalShellExecution |
executeCommand(executable: string, args: string[]): TerminalShellExecution
执行命令,必要时发送 ^C 以中断任何正在运行的命令。
注意:这不保证有效,因为 shell 集成 必须已激活。检查 TerminalShellExecution.exitCode 是否被拒绝,以验证其是否成功。
示例
// Execute a command in a terminal immediately after being created
const myTerm = window.createTerminal();
window.onDidChangeTerminalShellIntegration(async ({ terminal, shellIntegration }) => {
if (terminal === myTerm) {
const command = shellIntegration.executeCommand({
command: 'echo',
args: ['Hello world']
});
const code = await command.exitCode;
console.log(`Command exited with code ${code}`);
}
}));
// Fallback to sendText if there is no shell integration within 3 seconds of launching
setTimeout(() => {
if (!myTerm.shellIntegration) {
myTerm.sendText('echo "Hello world"');
// Without shell integration, we can't know when the command has finished or what the
// exit code was.
}
}, 3000);
示例
// Send command to terminal that has been alive for a while
const commandLine = 'echo "Hello world"';
if (term.shellIntegration) {
const command = term.shellIntegration.executeCommand({
command: 'echo',
args: ['Hello world']
});
const code = await command.exitCode;
console.log(`Command exited with code ${code}`);
} else {
term.sendText(commandLine);
// Without shell integration, we can't know when the command has finished or what the
// exit code was.
}
| 参数 | 描述 |
|---|---|
| executable: string | 要运行的命令。 |
| args: string[] | 启动可执行文件的参数。参数将被转义,以便当参数同时包含空格且不包含任何单引号、双引号或反引号字符时,它们被解释为单个参数。 请注意,此转义并非旨在作为安全措施,在将不受信任的数据传递给此 API 时要小心,因为诸如 |
| 返回值 | 描述 |
| TerminalShellExecution |
TerminalShellIntegrationChangeEvent
一个信号,表示终端的 shell 集成已更改。
属性
shellIntegration: TerminalShellIntegration
shell 集成对象。
terminal: Terminal
已激活 shell 集成的终端。
TerminalSplitLocationOptions
使用父 Terminal 的位置作为此终端的位置。
属性
parentTerminal: Terminal
要在此终端旁边拆分的父终端。无论父终端是在面板还是编辑器区域中,这都可以工作。
TerminalState
表示 Terminal 的状态。
属性
该 Terminal 是否已交互过。交互意味着终端已将数据发送到进程,具体取决于终端的模式。默认情况下,当按下键或命令或扩展发送文本时会发送输入,但根据终端的模式,它也可能在以下情况下发生:
- 一个指针点击事件
- 一个指针滚动事件
- 一个指针移动事件
- 终端焦点进入/退出
有关可发送数据的事件的更多信息,请参阅 https://invisible-island.net/xterm/ctlseqs/ctlseqs.html 上的“DEC Private Mode Set (DECSET)”
检测到的 Terminal 的 shell 类型。当没有明确的信号表明 shell 是什么,或者 shell 尚未支持时,此值将为 undefined。启动子 shell 时(例如,在 zsh 中运行 bash),此值应更改为子 shell 的类型。
请注意,目前可能的值定义为以下任何一种:'bash', 'cmd', 'csh', 'fish', 'gitbash', 'julia', 'ksh', 'node', 'nu', 'pwsh', 'python', 'sh', 'wsl', 'zsh'。
TestController
发现和执行测试的入口点。它包含 TestController.items,用于填充编辑器 UI,并与 运行配置文件 相关联,以便执行测试。
属性
在 tests.createTestController 中传入的控制器的 ID。此 ID 必须是全局唯一的。
items: TestItemCollection
一个“顶层” TestItem 实例的集合,这些实例本身可以有自己的 children 来形成“测试树”。
扩展控制何时添加测试。例如,扩展程序应在 workspace.onDidOpenTextDocument 触发时为文件添加测试,以便文件内的测试装饰可见。
但是,编辑器有时可能会通过 resolveHandler 显式请求子项。有关更多详细信息,请参阅该方法的文档。
测试控制器的可读标签。
refreshHandler: (token: CancellationToken) => void | Thenable<void>
如果存在此方法,UI 中将出现一个刷新按钮,点击该按钮时将调用此方法。调用时,扩展程序应扫描工作区以查找任何新添加、已更改或已删除的测试。
建议扩展程序尝试使用 FileSystemWatcher 等实时更新测试,并将此方法作为备用。
| 参数 | 描述 |
|---|---|
| token: CancellationToken | |
| 返回值 | 描述 |
| void | Thenable<void> | 一个在测试刷新完成后解析的 thenable。 |
resolveHandler?: (item: TestItem) => void | Thenable<void>
当 TestItem.canResolveChildren 为 true 时,编辑器可能会调用此函数来请求测试项的子项。调用时,应发现子项,并在发现子项时调用 TestController.createTestItem。
通常,扩展程序会管理测试项的生命周期,但在某些情况下,编辑器可能会请求加载特定项的子项。例如,如果用户在重新加载编辑器后请求重新运行测试,编辑器可能需要调用此方法来解析先前运行的测试。
在函数返回或返回的 thenable 解析之前,资源管理器中的项将自动标记为“忙碌”。
方法
createRunProfile(label: string, kind: TestRunProfileKind, runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void>, isDefault?: boolean, tag?: TestTag, supportsContinuousRun?: boolean): TestRunProfile
创建一个用于运行测试的配置文件。扩展程序必须至少创建一个配置文件,才能运行测试。
| 参数 | 描述 |
|---|---|
| label: string | 此配置文件的可读标签。 |
| kind: TestRunProfileKind | 配置此配置文件管理哪种类型的执行。 |
| runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void> | 调用以启动测试运行的函数。 |
| isDefault?: boolean | 此是否是其类型的默认操作。 |
| tag?: TestTag | 配置文件测试标签。 |
| supportsContinuousRun?: boolean | 此配置文件是否支持连续运行。 |
| 返回值 | 描述 |
| TestRunProfile | 一个 TestRunProfile 的实例,它会自动与此控制器关联。 |
createTestItem(id: string, label: string, uri?: Uri): TestItem
创建一个新的托管 TestItem 实例。它可以添加到现有项的 TestItem.children 中,或者添加到 TestController.items 中。
| 参数 | 描述 |
|---|---|
| id: string | TestItem 的标识符。TestItem 的 ID 在其添加到的 TestItemCollection 中必须是唯一的。 |
| label: string | TestItem 的可读标签。 |
| uri?: Uri | 此 TestItem 关联的 URI。可以是文件或目录。 |
| 返回值 | 描述 |
| TestItem |
createTestRun(request: TestRunRequest, name?: string, persist?: boolean): TestRun
创建一个 TestRun。当请求执行测试时,应由 TestRunProfile 调用此方法,如果外部检测到测试运行,也可能调用此方法。创建后,包含在请求中的测试将被移至排队状态。
使用同一 request 实例创建的所有运行将分组在一起。这在例如,在多个平台上运行同一套测试时很有用。
| 参数 | 描述 |
|---|---|
| request: TestRunRequest | 测试运行请求。只能修改 |
| name?: string | 运行的可读名称。这可用于区分测试运行中的多个结果集。例如,在跨多个平台运行测试时很有用。 |
| persist?: boolean | 由运行创建的结果是否应在编辑器中持久化。如果结果来自已外部保存的文件(例如,覆盖率信息文件),则此项可以为 false。 |
| 返回值 | 描述 |
| TestRun | 一个 TestRun 的实例。从调用此方法的那一刻起,它将被视为“正在运行”,直到调用 TestRun.end 为止。 |
注销测试控制器,释放其关联的测试和未持久化的结果。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
invalidateTestResults(items?: TestItem | readonly TestItem[]): void
将项的结果标记为已过时。当代码或配置更改且先前结果不再被视为相关时,通常会调用此方法。用于将结果标记为过时相同的逻辑可用于驱动 连续测试运行。
如果将项传递给此方法,则该项及其所有子项的测试结果将被标记为过时。如果未传递任何项,则控制器拥有的所有测试都将被标记为过时。
在此方法调用时刻之前开始的任何测试运行,包括可能仍在进行的运行,都将被标记为过时并在编辑器的 UI 中降低优先级。
TestCoverageCount
包含有关已覆盖资源的信息的类。可以为文件中的行、分支和声明提供计数。
构造函数
new TestCoverageCount(covered: number, total: number): TestCoverageCount
| 参数 | 描述 |
|---|---|
| covered: number | |
| total: number | |
| 返回值 | 描述 |
| TestCoverageCount |
属性
文件中覆盖的项数。
文件中覆盖的总项数。
TestItem
“测试资源管理器”视图中显示的项。
TestItem 可以代表测试套件或测试本身,因为它们都具有类似的功能。
属性
控制项在测试资源管理器视图中是否显示为“忙碌”。这在发现子项时显示状态很有用。
默认为 false。
指示此测试项是否可以通过解析来发现子项。
如果为 true,则此项在测试资源管理器视图中显示为可展开,展开该项将导致使用该项调用 TestController.resolveHandler。
默认为 false。
children: TestItemCollection
此测试项的子项。对于测试套件,这可能包含单个测试用例或嵌套套件。
可选描述,显示在标签旁边。
error: string | MarkdownString
加载测试时遇到的可选错误。
请注意,这不是测试结果,仅用于表示测试发现中的错误,例如语法错误。
TestItem 的标识符。这用于将文档中的测试结果和测试与工作区(测试资源管理器)中的测试进行关联。此 ID 在 TestItem 的生命周期内不能更改,并且在其父项的直接子项中必须是唯一的。
描述测试用例的显示名称。
parent: TestItem
此项的父项。它会自动设置,对于 TestController.items 中的顶层项以及尚未包含在其他项的 children 中的项,它将为 undefined。
range: Range
测试项在其 uri 中的位置。
仅当 uri 指向文件时,此项才有意义。
在与此项进行比较时应使用的字符串。当为 falsy 时,使用 label。
tags: readonly TestTag[]
与此测试项关联的标签。可以与 tags 结合使用,或者仅作为组织功能。
uri: Uri
此 TestItem 关联的 URI。可以是文件或目录。
TestItemCollection
测试项的集合,位于 TestItem.children 和 TestController.items 中。
属性
获取集合中项的数量。
方法
add(item: TestItem): void
将测试项添加到子项中。如果已存在 ID 相同的项,将被替换。
| 参数 | 描述 |
|---|---|
| item: TestItem | 要添加的项。 |
| 返回值 | 描述 |
| void |
从集合中删除单个测试项。
| 参数 | 描述 |
|---|---|
| itemId: string | 要删除的项 ID。 |
| 返回值 | 描述 |
| void |
forEach(callback: (item: TestItem, collection: TestItemCollection) => unknown, thisArg?: any): void
迭代此集合中的每个条目。
| 参数 | 描述 |
|---|---|
| callback: (item: TestItem, collection: TestItemCollection) => unknown | 为每个条目执行的函数。 |
| thisArg?: any | 调用处理函数时使用的 |
| 返回值 | 描述 |
| void |
get(itemId: string): TestItem
如果项存在,则高效地按 ID 获取子项中的测试项。
| 参数 | 描述 |
|---|---|
| itemId: string | 要获取的项 ID。 |
| 返回值 | 描述 |
| TestItem | 找到的项,如果不存在则为 undefined。 |
replace(items: readonly TestItem[]): void
替换集合中存储的项。
| 参数 | 描述 |
|---|---|
| items: readonly TestItem[] | 要存储的项。 |
| 返回值 | 描述 |
| void |
TestMessage
与测试状态关联的消息。可以链接到特定的源范围 — 例如,对于断言失败很有用。
静态
diff(message: string | MarkdownString, expected: string, actual: string): TestMessage
创建一个新的 TestMessage,它将在编辑器中显示为 diff。
| 参数 | 描述 |
|---|---|
| message: string | MarkdownString | 要显示给用户aneous的消息。 |
| expected: string | 预期输出。 |
| actual: string | 实际输出。 |
| 返回值 | 描述 |
| TestMessage |
构造函数
new TestMessage(message: string | MarkdownString): TestMessage
创建一个新的 TestMessage 实例。
| 参数 | 描述 |
|---|---|
| message: string | MarkdownString | 要显示给用户的消息。 |
| 返回值 | 描述 |
| TestMessage |
属性
实际测试输出。如果与 expectedOutput 一起提供,将显示 diff 视图。
测试项的上下文值。可用于向测试 peek 视图贡献消息特定的操作。此处设置的值可以在以下 menus 贡献点中找到 testMessage 属性
testing/message/context- 结果树中消息的上下文菜单testing/message/content- 覆盖消息显示所在的编辑器内容的突出按钮。
例如
"contributes": {
"menus": {
"testing/message/content": [
{
"command": "extension.deleteCommentThread",
"when": "testMessage == canApplyRichDiff"
}
]
}
}
将使用一个包含以下内容的aught调用命令
test: 消息关联的 TestItem,*如果*它仍然存在于 TestController.items 集合中。message: TestMessage 实例。
预期测试输出。如果与 actualOutput 一起提供,将显示 diff 视图。
location?: Location
关联的文件位置。
message: string | MarkdownString
要显示的文本消息。
stackTrace?: TestMessageStackFrame[]
与消息或失败关联的堆栈跟踪。
TestMessageStackFrame
在 TestMessage.stackTrace 中找到的堆栈帧。
构造函数
new TestMessageStackFrame(label: string, uri?: Uri, position?: Position): TestMessageStackFrame
| 参数 | 描述 |
|---|---|
| label: string | 堆栈帧的名称 |
| uri?: Uri | |
| position?: Position | 堆栈帧在文件中的位置 |
| 返回值 | 描述 |
| TestMessageStackFrame |
属性
堆栈帧的名称,通常是方法或函数名称。
position?: Position
堆栈帧在文件中的位置。
uri?: Uri
此堆栈帧的位置。如果编辑器可以访问调用帧的位置,则应将其提供为 URI。
TestRun
TestRun 代表一个正在进行或已完成的测试运行,并提供方法来报告运行中各个测试的状态。
事件
onDidDispose: Event<void>
当编辑器不再对与测试运行相关的数据感兴趣时触发的事件。
属性
测试运行是否会在编辑器重新加载后持久化。
运行的可读名称。这可用于区分测试运行中的多个结果集。例如,在跨多个平台运行测试时很有用。
token: CancellationToken
取消令牌,当测试运行从 UI 中取消时将被触发。
方法
addCoverage(fileCoverage: FileCoverage): void
为运行中的文件添加覆盖率。
| 参数 | 描述 |
|---|---|
| fileCoverage: FileCoverage | |
| 返回值 | 描述 |
| void |
appendOutput(output: string, location?: Location, test?: TestItem): void
附加来自测试运行程序的原始输出。应用户请求,输出将在终端中显示。ANSI 转义序列(如颜色和文本样式)受支持。必须将新行提供为 CRLF (\r\n),而不是 LF (\n)。
表示测试运行结束。运行中所有状态未更新的测试的状态将被重置。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
enqueued(test: TestItem): void
指示测试已排队等待稍后执行。
| 参数 | 描述 |
|---|---|
| test: TestItem | 要更新的测试项。 |
| 返回值 | 描述 |
| void |
errored(test: TestItem, message: TestMessage | readonly TestMessage[], duration?: number): void
指示测试已出错。您应传递一个或多个 TestMessages 来描述失败。这与“失败”状态不同,因为它表示测试根本无法执行,例如由于编译错误。
| 参数 | 描述 |
|---|---|
| test: TestItem | 要更新的测试项。 |
| message: TestMessage | readonly TestMessage[] | 与测试失败相关的消息。 |
| duration?: number | 测试执行花费的时间(以毫秒为单位)。 |
| 返回值 | 描述 |
| void |
failed(test: TestItem, message: TestMessage | readonly TestMessage[], duration?: number): void
指示测试已失败。您应传递一个或多个 TestMessages 来描述失败。
| 参数 | 描述 |
|---|---|
| test: TestItem | 要更新的测试项。 |
| message: TestMessage | readonly TestMessage[] | 与测试失败相关的消息。 |
| duration?: number | 测试执行花费的时间(以毫秒为单位)。 |
| 返回值 | 描述 |
| void |
passed(test: TestItem, duration?: number): void
指示测试已通过。
| 参数 | 描述 |
|---|---|
| test: TestItem | 要更新的测试项。 |
| duration?: number | 测试执行花费的时间(以毫秒为单位)。 |
| 返回值 | 描述 |
| void |
skipped(test: TestItem): void
指示测试已被跳过。
| 参数 | 描述 |
|---|---|
| test: TestItem | 要更新的测试项。 |
| 返回值 | 描述 |
| void |
started(test: TestItem): void
指示测试已开始运行。
| 参数 | 描述 |
|---|---|
| test: TestItem | 要更新的测试项。 |
| 返回值 | 描述 |
| void |
TestRunProfile
TestRunProfile 描述了在 TestController 中执行测试的一种方式。
事件
onDidChangeDefault: Event<boolean>
当用户更改此项是否为默认配置文件时触发。该事件包含 isDefault 的新值。
属性
如果存在此方法,则 UI 中将出现一个配置齿轮,并且在单击该齿轮时将调用此方法。调用时,您可以执行其他编辑器操作,例如显示快速选择或打开配置文件。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
控制此配置文件是否是在操作其种类时将执行的默认操作。例如,如果用户单击通用的“运行所有”按钮,则将执行 TestRunProfileKind.Run 的默认配置文件,尽管用户可以配置此项。
用户对其默认配置文件的更改将在 onDidChangeDefault 事件后反映在此属性中。
kind: TestRunProfileKind
配置此配置文件控制的执行种类。如果某种类型的配置文件不存在,则该类型在 UI 中将不可用。
在 UI 中向用户显示的标签。
请注意,当用户请求以某种方式重新运行测试时,标签具有一定意义。例如,如果测试正常运行,用户请求以调试模式重新运行它们,编辑器将尝试使用具有与 Debug 种类相同标签的配置。如果没有这样的配置,则会使用默认配置。
loadDetailedCoverage?: (testRun: TestRun, fileCoverage: FileCoverage, token: CancellationToken) => Thenable<FileCoverageDetail[]>
扩展提供的函数,用于提供文件的详细语句和函数级别的覆盖率。当需要有关文件的更多详细信息时,例如在编辑器中打开文件或在“测试覆盖率”视图中展开文件时,编辑器将调用此函数。
传递给此函数的 FileCoverage 对象是与此配置文件相关的 TestRun.addCoverage 调用上发出的相同实例。
| 参数 | 描述 |
|---|---|
| testRun: TestRun | |
| fileCoverage: FileCoverage | |
| token: CancellationToken | |
| 返回值 | 描述 |
| Thenable<FileCoverageDetail[]> |
loadDetailedCoverageForTest?: (testRun: TestRun, fileCoverage: FileCoverage, fromTestItem: TestItem, token: CancellationToken) => Thenable<FileCoverageDetail[]>
扩展提供的函数,用于提供文件中单个测试的详细语句和函数级别的覆盖率。这是 TestRunProfile.loadDetailedCoverage 的每个测试的对应项,仅在 FileCoverage.includesTests 中提供了测试项并且仅为报告了此类数据的文件调用。
通常,当用户打开文件时会首先调用 TestRunProfile.loadDetailedCoverage,然后如果他们深入研究特定的每个测试覆盖率信息,则会调用此方法。然后,此方法应仅返回该测试在运行期间执行的语句和声明的覆盖率数据。
传递给此函数的 FileCoverage 对象是与此配置文件相关的 TestRun.addCoverage 调用上发出的相同实例。
| 参数 | 描述 |
|---|---|
| testRun: TestRun | 生成覆盖率数据的测试运行。 |
| fileCoverage: FileCoverage | 要加载详细覆盖率的文件覆盖率对象。 |
| fromTestItem: TestItem | 请求覆盖率信息的测试项。 |
| token: CancellationToken | 指示操作应被取消的取消令牌。 |
| 返回值 | 描述 |
| Thenable<FileCoverageDetail[]> |
runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void>
调用此处理程序以启动测试运行。调用时,该函数应至少调用一次 TestController.createTestRun,并且与请求关联的所有测试运行都应在函数返回或返回的 Promise 解析之前创建。
如果设置了 supportsContinuousRun,则 TestRunRequest.continuous 可能为 true。在这种情况下,配置文件应监视源代码更改并调用 TestController.createTestRun 来创建新的测试运行,直到在 token 上请求取消。
| 参数 | 描述 |
|---|---|
| request: TestRunRequest | 测试运行的请求信息。 |
| token: CancellationToken | |
| 返回值 | 描述 |
| void | Thenable<void> |
supportsContinuousRun: boolean
此配置文件是否支持连续运行请求。如果是,则 TestRunRequest.continuous 可能设置为 true。默认为 false。
tag: TestTag
与配置文件关联的标签。如果设置了此项,则只有在 TestItem.tags 数组中包含相同标签的 TestItem 实例才有资格在此配置文件中执行。
方法
删除运行配置文件。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
TestRunProfileKind
TestRunProfiles 控制的执行种类。
枚举成员
Run 测试配置文件种类。
Debug 测试配置文件种类。
Coverage 测试配置文件种类。
TestRunRequest
TestRunRequest 是 TestRun 的前身,而 TestRun 是通过将请求传递给 TestController.createTestRun 来创建的。TestRunRequest 包含有关应运行哪些测试、不应运行哪些测试以及如何运行它们(通过 profile)的信息。
通常,TestRunRequests 由编辑器创建并传递给 TestRunProfile.runHandler,但您也可以在 runHandler 外部创建测试请求和运行。
构造函数
new TestRunRequest(include?: readonly TestItem[], exclude?: readonly TestItem[], profile?: TestRunProfile, continuous?: boolean, preserveFocus?: boolean): TestRunRequest
| 参数 | 描述 |
|---|---|
| include?: readonly TestItem[] | 要运行的特定测试数组,如果未定义则运行所有测试。 |
| exclude?: readonly TestItem[] | 要从运行中排除的测试数组。 |
| profile?: TestRunProfile | 为此请求使用的运行配置文件。 |
| continuous?: boolean | 是否连续运行测试。 |
| preserveFocus?: boolean | 启动运行时是否保留用户焦点。 |
| 返回值 | 描述 |
| TestRunRequest |
属性
配置文件是否应随着源代码更改而连续运行。仅对设置了 TestRunProfile.supportsContinuousRun 的配置文件有效。
exclude: readonly TestItem[]
用户标记为排除在本运行包含的测试中的测试数组;排除项应在包含项之后应用。
如果没有请求排除项,则可以省略。测试控制器不应运行已排除的测试或已排除测试的任何子项。
include: readonly TestItem[]
用于运行特定测试的过滤器。如果提供,扩展程序应运行所有包含的测试及其所有子项,排除 TestRunRequest.exclude 中出现的任何测试。如果此属性未定义,则扩展程序应仅运行所有测试。
运行测试的过程应解析尚未解析的任何测试项的子项。
控制测试结果视图的焦点。如果为 true,编辑器将保持用户焦点。如果为 false,编辑器将优先将焦点移至测试结果视图,尽管用户可以对此进行配置。
profile: TestRunProfile
为此请求使用的配置文件。对于从编辑器 UI 发出的请求,这将始终定义;但扩展程序可以以编程方式创建与任何配置文件无关的请求。
TestTag
标签可以与 TestItems 和 TestRunProfiles 相关联。具有标签的配置文件只能执行在其 TestItem.tags 数组中包含该标签的测试。
构造函数
new TestTag(id: string): TestTag
创建新的 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”。
eol: EndOfLine
此文档中主要使用的 行尾 序列。
关联资源的文件系统路径。 TextDocument.uri.fsPath 的简写表示。与 uri 方案无关。
如果文档已关闭,则为 true。已关闭的文档不再同步,并且在再次打开同一资源时不会被重复使用。
如果有未持久化的更改,则为 true。
此文档是否表示一个从未保存过的未命名文件。*注意*,这并不意味着文档将被保存到磁盘,请使用 Uri.scheme 来确定文档将 保存 到何处,例如 file、ftp 等。
与此文档关联的语言的标识符。
此文档中的行数。
uri: Uri
此文档的关联 URI。
*注意*,大多数文档使用 file 方案,这意味着它们是磁盘上的文件。但是,*并非*所有文档都保存在磁盘上,因此在尝试访问底层文件或磁盘上的同级文件之前,必须检查 scheme。
另请参阅
此文档的版本号(在每次更改后将严格递增,包括撤销/重做)。
方法
getText(range?: Range): string
getWordRangeAtPosition(position: Position, regex?: RegExp): Range
在给定位置获取一个单词范围。默认情况下,单词由常见分隔符定义,例如空格、-、_ 等。此外,还可以定义每个语言自定义的 [单词定义]。还可以提供自定义正则表达式。
- *注意 1:*自定义正则表达式不得匹配空字符串,如果匹配,则将被忽略。
- *注意 2:*自定义正则表达式将无法匹配多行字符串,为了速度,正则表达式不应匹配带空格的单词。对于更复杂的、非单词的场景,请使用 TextLine.text。
该位置将 调整。
lineAt(line: number): TextLine
返回由行号表示的文本行。请注意,返回的对象*不是*实时的,文档的更改不会反映在此对象中。
lineAt(position: Position): TextLine
offsetAt(position: Position): number
positionAt(offset: number): Position
保存底层文件。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| Thenable<boolean> | 一个 Promise,该 Promise 将解析为 |
validatePosition(position: Position): Position
validateRange(range: Range): Range
TextDocumentChangeEvent
描述事务性 文档更改的事件。
属性
contentChanges: readonly TextDocumentContentChangeEvent[]
内容更改数组。
document: TextDocument
受影响的文档。
reason: TextDocumentChangeReason
文档更改的原因。如果原因未知,则为 undefined。
TextDocumentChangeReason
文本文档发生更改的原因。
枚举成员
文本更改由撤销操作引起。
文本更改由重做操作引起。
TextDocumentContentChangeEvent
描述 文档文本中单个更改的事件。
属性
range: Range
被替换的范围。
被替换的范围的长度。
被替换的范围的偏移量。
范围的新文本。
TextDocumentContentProvider
文本文档内容提供程序允许向编辑器添加只读文档,例如来自 dll 的源或 md 生成的 html。
内容提供程序会针对 uri-scheme 进行 注册。当要 加载 具有该方案的 uri 时,会询问内容提供程序。
事件
用于指示资源已更改的事件。
方法
provideTextDocumentContent(uri: Uri, token: CancellationToken): ProviderResult<string>
提供给定 uri 的文本内容。
编辑器将使用返回的字符串内容来创建只读的 文档。已分配的资源应在相应的文档 关闭 时释放。
注意:由于行尾序列的标准化,创建的 文档 的内容可能与提供的文本不完全相同。
| 参数 | 描述 |
|---|---|
| uri: Uri | 一个 scheme 与此提供程序 注册 的 scheme 匹配的 uri。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<string> | 一个字符串或一个解析为该字符串的 thenable。 |
TextDocumentSaveReason
表示文本文档保存的原因。
枚举成员
手动触发,例如用户按下保存、开始调试或通过 API 调用。
延迟后自动保存。
编辑器失去焦点时。
TextDocumentShowOptions
属性
一个可选标志,当设置为 true 时,将阻止 编辑器 获取焦点。
一个可选标志,用于控制 编辑器 标签页是否显示为预览。预览标签页将被替换和重用,直到设置为保留 - 显式设置或通过编辑。
请注意,如果用户在设置中禁用了预览编辑器,则该标志将被忽略。
selection?: Range
一个可选的选区,用于在 编辑器 中应用于该文档。
viewColumn?: ViewColumn
一个可选的视图列,应在该列中显示 编辑器。默认是 活动 列。不存在的列将根据需要创建,最多可达 ViewColumn.Nine。使用 ViewColumn.Beside 在当前活动编辑器旁边打开编辑器。
TextDocumentWillSaveEvent
属性
document: TextDocument
将要保存的文档。
reason: TextDocumentSaveReason
触发保存的原因。
方法
waitUntil(thenable: Thenable<readonly TextEdit[]>): void
允许暂停事件循环并应用 保存前编辑。对此函数后续调用的编辑将按顺序应用。如果文档发生并发修改,则这些编辑将 *被忽略*。
注意: 此函数只能在事件分派期间调用,不能异步调用
workspace.onWillSaveTextDocument(event => {
// async, will *throw* an error
setTimeout(() => event.waitUntil(promise));
// sync, OK
event.waitUntil(promise);
});
waitUntil(thenable: Thenable<any>): void
允许暂停事件循环,直到提供的 thenable 解析。
注意: 此函数只能在事件分派期间调用。
| 参数 | 描述 |
|---|---|
| thenable: Thenable<any> | 延迟保存的 thenable。 |
| 返回值 | 描述 |
| void |
TextEdit
一个文本编辑,表示应应用于文档的编辑。
静态
delete(range: Range): TextEdit
insert(position: Position, newText: string): TextEdit
replace(range: Range, newText: string): TextEdit
setEndOfLine(eol: EndOfLine): TextEdit
构造函数
new TextEdit(range: Range, newText: string): TextEdit
属性
newEol?: EndOfLine
文档中使用的行尾序列。
请注意,行尾序列将应用于整个文档。
此编辑将插入的字符串。
range: Range
此编辑适用的范围。
TextEditor
表示已附加到 文档 的编辑器。
属性
document: TextDocument
与此文本编辑器关联的文档。在文本编辑器的整个生命周期中,该文档将保持不变。
options: TextEditorOptions
文本编辑器选项。
selection: Selection
此文本编辑器上的主要选区。是 TextEditor.selections[0] 的简写。
selections: readonly Selection[]
此文本编辑器中的选区。主要选区始终位于索引 0。
viewColumn: ViewColumn
此编辑器显示的列。如果是嵌入式编辑器,或者编辑器列大于三,则可能为 undefined。
visibleRanges: readonly Range[]
编辑器中当前可见的范围(垂直方向)。这仅考虑垂直滚动,而不考虑水平滚动。
方法
edit(callback: (editBuilder: TextEditorEdit) => void, options?: {undoStopAfter: boolean, undoStopBefore: boolean}): Thenable<boolean>
对与此文本编辑器关联的文档执行编辑。
将调用给定的回调函数,并传入一个 编辑构建器,必须使用该构建器进行编辑。请注意,编辑构建器仅在回调函数执行期间有效。
| 参数 | 描述 |
|---|---|
| callback: (editBuilder: TextEditorEdit) => void | 一个可以使用 编辑构建器 创建编辑的函数。 |
| options?: {undoStopAfter: boolean, undoStopBefore: boolean} | 此编辑的撤销/重做行为。默认情况下,将在编辑之前和之后创建撤销停止点。 |
| 返回值 | 描述 |
| Thenable<boolean> | 一个解析为布尔值的 Promise,指示编辑是否可以应用。 |
隐藏文本编辑器。
- 已弃用 - 请改用命令
workbench.action.closeActiveEditor。此方法将产生意外行为,并将在下一个主要版本中删除。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
insertSnippet(snippet: SnippetString, location?: Range | Position | readonly Range[] | readonly Position[], options?: {keepWhitespace: boolean, undoStopAfter: boolean, undoStopBefore: boolean}): Thenable<boolean>
插入一个 片段 并将编辑器置于片段模式。“片段模式”意味着编辑器会添加占位符和其他光标,以便用户可以完成或接受片段。
| 参数 | 描述 |
|---|---|
| snippet: SnippetString | 此编辑中要插入的片段。 |
| location?: Range | Position | readonly Range[] | readonly Position[] | 插入片段的位置或范围,默认为当前编辑器选区或选区。 |
| options?: {keepWhitespace: boolean, undoStopAfter: boolean, undoStopBefore: boolean} | 此编辑的撤销/重做行为。默认情况下,将在编辑之前和之后创建撤销停止点。 |
| 返回值 | 描述 |
| Thenable<boolean> | 一个 Promise,解析为布尔值,表示片段是否可以插入。请注意,此 Promise 不表示片段已完全填写或接受。 |
revealRange(range: Range, revealType?: TextEditorRevealType): void
根据 revealType 滚动以显示给定范围。
| 参数 | 描述 |
|---|---|
| range: Range | 范围。 |
| revealType?: TextEditorRevealType | 用于显示 |
| 返回值 | 描述 |
| void |
setDecorations(decorationType: TextEditorDecorationType, rangesOrOptions: readonly Range[] | readonly DecorationOptions[]): void
| 参数 | 描述 |
|---|---|
| decorationType: TextEditorDecorationType | 装饰类型。 |
| rangesOrOptions: readonly Range[] | readonly DecorationOptions[] | |
| 返回值 | 描述 |
| void |
show(column?: ViewColumn): void
显示文本编辑器。
- 已弃用 - 请改用 window.showTextDocument。
| 参数 | 描述 |
|---|---|
| column?: ViewColumn | 显示此编辑器的 列。此方法将产生意外行为,并将在下一个主要版本中删除。 |
| 返回值 | 描述 |
| void |
TextEditorCursorStyle
光标的渲染样式。
枚举成员
将光标渲染为粗竖线。
将光标渲染为填充块。
将光标渲染为粗横线。
将光标渲染为细竖线。
将光标渲染为块状轮廓。
将光标渲染为细横线。
TextEditorDecorationType
要获取 TextEditorDecorationType 的实例,请使用 createTextEditorDecorationType。
属性
句柄的内部表示。
方法
删除此装饰类型以及所有使用它的文本编辑器上的所有装饰。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| void |
TextEditorEdit
方法
delete(location: Range | Selection): void
insert(location: Position, value: string): void
在指定位置插入文本。您可以在 value 中使用 \r\n 或 \n,它们将被标准化为当前 文档 的行尾。尽管可以使用 replace 进行等效的文本编辑,但 insert 会产生不同的结果选区(它会移动)。
| 参数 | 描述 |
|---|---|
| location: Position | 应插入新文本的位置。 |
| value: string | 此操作应插入的新文本。 |
| 返回值 | 描述 |
| void |
replace(location: Range | Position | Selection, value: string): void
用新值替换特定文本区域。您可以在 value 中使用 \r\n 或 \n,它们将被标准化为当前 文档 的行尾。
setEndOfLine(endOfLine: EndOfLine): void
TextEditorLineNumbersStyle
行号的渲染样式。
枚举成员
不渲染行号。
渲染行号。
渲染相对于主光标位置的行号。
每 10 行渲染一次行号。
TextEditorOptions
属性
cursorStyle?: TextEditorCursorStyle
此编辑器中光标的渲染样式。获取文本编辑器选项时,此属性始终存在。设置文本编辑器选项时,此属性是可选的。
当 insertSpaces 为 true 时,插入的空格数。
获取文本编辑器选项时,此属性始终是一个数字(已解析)。设置文本编辑器选项时,此属性是可选的,可以是数字或 "tabSize"。
insertSpaces?: string | boolean
按下 Tab 键时插入 n 个空格。获取文本编辑器选项时,此属性始终是一个布尔值(已解析)。设置文本编辑器选项时,此属性是可选的,可以是布尔值或 "auto"。
lineNumbers?: TextEditorLineNumbersStyle
相对于当前行号渲染相对行号。获取文本编辑器选项时,此属性始终存在。设置文本编辑器选项时,此属性是可选的。
一个 Tab 所占的空格数。它有两个用途:
- Tab 字符的渲染宽度;
- 当 insertSpaces 为 true 且
indentSize设置为"tabSize"时,插入的空格数。
获取文本编辑器选项时,此属性始终是一个数字(已解析)。设置文本编辑器选项时,此属性是可选的,可以是数字或 "auto"。
TextEditorOptionsChangeEvent
表示一个事件,描述了 文本编辑器选项 的更改。
属性
options: TextEditorOptions
文本编辑器选项 的新值。
textEditor: TextEditor
选项已更改的 文本编辑器。
TextEditorRevealType
表示文本编辑器中不同的 显示 策略。
枚举成员
将以最少的滚动量显示范围。
范围将始终在视口的中心显示。
如果范围在视口之外,则将其显示在视口中心。否则,将以最少的滚动量显示范围。
范围将始终在视口的顶部显示。
TextEditorSelectionChangeEvent
表示一个事件,描述了 文本编辑器选区 的更改。
属性
kind: TextEditorSelectionChangeKind
触发此事件的 更改类型。可能为 undefined。
selections: readonly Selection[]
文本编辑器选区 的新值。
textEditor: TextEditor
选区已更改的 文本编辑器。
TextEditorSelectionChangeKind
表示可能导致 选区更改事件 的来源。
枚举成员
由于在编辑器中键入而导致选区更改。
由于在编辑器中单击而导致选区更改。
由于运行命令而导致选区更改。
TextEditorViewColumnChangeEvent
表示一个事件,描述了 文本编辑器视图列 的更改。
属性
textEditor: TextEditor
视图列已更改的 文本编辑器。
viewColumn: ViewColumn
文本编辑器视图列 的新值。
TextEditorVisibleRangesChangeEvent
表示一个事件,描述了 文本编辑器可见范围 的更改。
属性
textEditor: TextEditor
可见范围已更改的 文本编辑器。
visibleRanges: readonly Range[]
文本编辑器可见范围 的新值。
TextLine
表示一行文本,例如一行源代码。
TextLine 对象是**不可变的**。当 文档 发生更改时,先前检索到的行将不再代表最新状态。
属性
firstNonWhitespaceCharacterIndex: number
第一个非空白字符的偏移量,空白字符由 /\s/ 定义。**注意**,如果一行全为空白,则返回该行的长度。
该行是否仅包含空白字符,是 TextLine.firstNonWhitespaceCharacterIndex === TextLine.text.length 的简写。
从零开始的行号。
range: Range
该行覆盖的范围,不包括行分隔符字符。
rangeIncludingLineBreak: Range
该行覆盖的范围,包括行分隔符字符。
不包含行分隔符的行文本。
ThemableDecorationAttachmentRenderOptions
属性
backgroundColor?: string | ThemeColor
将应用于装饰附件的 CSS 样式属性。
将应用于装饰附件的 CSS 样式属性。
borderColor?: string | ThemeColor
将应用于装饰文本的 CSS 样式属性。
color?: string | ThemeColor
将应用于装饰附件的 CSS 样式属性。
contentIconPath?: string | Uri
一个用于渲染到附件中的图片的绝对路径或 URI。可以显示图标或文本,但不能同时显示两者。
定义了在附件中显示的文本内容。可以显示图标或文本,但不能同时显示两者。
将应用于装饰附件的 CSS 样式属性。
将应用于装饰附件的 CSS 样式属性。
将应用于装饰附件的 CSS 样式属性。
将应用于装饰附件的 CSS 样式属性。
将应用于装饰附件的 CSS 样式属性。
将应用于装饰附件的 CSS 样式属性。
ThemableDecorationInstanceRenderOptions
表示装饰实例的可主题化渲染选项。
属性
after?: ThemableDecorationAttachmentRenderOptions
定义插入到装饰文本之后的附件的渲染选项。
before?: ThemableDecorationAttachmentRenderOptions
定义插入到装饰文本之前的附件的渲染选项。
ThemableDecorationRenderOptions
表示文本编辑器装饰的主题特定渲染样式。
属性
after?: ThemableDecorationAttachmentRenderOptions
定义插入到装饰文本之后的附件的渲染选项。
backgroundColor?: string | ThemeColor
装饰的背景颜色。使用 rgba() 并定义透明背景颜色以与其他装饰良好兼容。或者,可以 引用 颜色注册表中的颜色。
before?: ThemableDecorationAttachmentRenderOptions
定义插入到装饰文本之前的附件的渲染选项。
将应用于装饰文本的 CSS 样式属性。
borderColor?: string | ThemeColor
将应用于装饰文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。
将应用于装饰文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。
将应用于装饰文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。
将应用于装饰文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。
将应用于装饰文本的 CSS 样式属性。最好使用“border”来设置一个或多个单独的边框属性。
color?: string | ThemeColor
将应用于装饰文本的 CSS 样式属性。
将应用于装饰文本的 CSS 样式属性。
将应用于装饰文本的 CSS 样式属性。
将应用于装饰文本的 CSS 样式属性。
gutterIconPath?: string | Uri
在装订线中渲染的图像的绝对路径或 URI。
指定装订线图标的大小。可用值为 'auto'、'contain'、'cover' 和任何百分比值。有关更多信息:https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx
将应用于装饰文本的 CSS 样式属性。
将应用于装饰文本的 CSS 样式属性。
将应用于装饰文本的 CSS 样式属性。
outlineColor?: string | ThemeColor
将应用于装饰包围的文本的 CSS 样式属性。最好使用 'outline' 来设置一个或多个单独的轮廓属性。
将应用于装饰包围的文本的 CSS 样式属性。最好使用 'outline' 来设置一个或多个单独的轮廓属性。
将应用于装饰包围的文本的 CSS 样式属性。最好使用 'outline' 来设置一个或多个单独的轮廓属性。
overviewRulerColor?: string | ThemeColor
概览标尺中装饰的颜色。使用 rgba() 并定义透明颜色以与其他装饰配合使用。
将应用于装饰文本的 CSS 样式属性。
ThemeColor
指向 [https://vscode.js.cn/api/references/theme-color](https://vscode.js.cn/api/references/theme-color) 中定义的某个工作区颜色的引用。使用主题颜色而不是自定义颜色是首选,因为它为主题作者和用户提供了更改颜色的可能性。
构造函数
new ThemeColor(id: string): ThemeColor
创建一个主题颜色的引用。
| 参数 | 描述 |
|---|---|
| id: string | 颜色的。可用颜色列于 [https://vscode.js.cn/api/references/theme-color](https://vscode.js.cn/api/references/theme-color)。 |
| 返回值 | 描述 |
| ThemeColor |
属性
此颜色的 ID。
ThemeIcon
命名图标的引用。当前支持 File、Folder 和 [https://vscode.js.cn/api/references/icons-in-labels#icon-listing](https://vscode.js.cn/api/references/icons-in-labels#icon-listing) 中的 ThemeIcon ID。使用主题图标而不是自定义图标是首选,因为它为产品主题作者提供了更改图标的可能性。
注意,主题图标也可以显示在标签和描述中。支持主题图标的地方会详细说明,它们使用 $(<name>) 语法,例如 quickPick.label = "Hello World $(globe)"。
静态
File: ThemeIcon
代表文件的图标的引用。该图标来自当前文件图标主题,或使用占位符图标。
Folder: ThemeIcon
代表文件夹的图标的引用。该图标来自当前文件图标主题,或使用占位符图标。
构造函数
new ThemeIcon(id: string, color?: ThemeColor): ThemeIcon
创建一个主题图标的引用。
| 参数 | 描述 |
|---|---|
| id: string | 图标的 ID。可用图标列于 [https://vscode.js.cn/api/references/icons-in-labels#icon-listing](https://vscode.js.cn/api/references/icons-in-labels#icon-listing)。 |
| color?: ThemeColor | 可选的图标 |
| 返回值 | 描述 |
| ThemeIcon |
属性
color?: ThemeColor
图标的可选 ThemeColor。颜色目前仅在 TreeItem 中使用。
图标的 ID。可用图标列于 [https://vscode.js.cn/api/references/icons-in-labels#icon-listing](https://vscode.js.cn/api/references/icons-in-labels#icon-listing)。
TreeCheckboxChangeEvent<T>
描述树项复选框状态变化的事件。
属性
items: ReadonlyArray<[T, TreeItemCheckboxState]>
被选中或取消选择的项。
TreeDataProvider<T>
提供树数据的提供程序。
事件
onDidChangeTreeData?: Event<void | T | T[]>
一个可选事件,用于指示元素或根已更改。这将触发视图递归地更新已更改的元素/根及其子项(如果已显示)。要指示根已更改,请不传递任何参数,或传递 undefined 或 null。
方法
getChildren(element?: T): ProviderResult<T[]>
获取 element 的子项,或者在未传递 element 时获取根的子项。
| 参数 | 描述 |
|---|---|
| element?: T | 提供程序从中获取子项的元素。可以是 |
| 返回值 | 描述 |
| ProviderResult<T[]> |
|
getParent(element: T): ProviderResult<T>
可选方法,用于返回 element 的父项。如果 element 是根的子项,则返回 null 或 undefined。
注意:必须实现此方法才能访问 reveal API。
| 参数 | 描述 |
|---|---|
| element: T | 需要返回父项的元素。 |
| 返回值 | 描述 |
| ProviderResult<T> |
|
getTreeItem(element: T): TreeItem | Thenable<TreeItem>
获取 element 的 TreeItem 表示形式。
resolveTreeItem(item: TreeItem, element: T, token: CancellationToken): ProviderResult<TreeItem>
在悬停时调用以解析 TreeItem 属性(如果未定义)。在单击/打开树项时调用以解析 TreeItem 属性(如果未定义)。在 resolveTreeItem 中只能解析未定义的属性。将来可能会扩展功能,以便在选择和/或打开时调用以解析其他缺失的属性。
每个 TreeItem 只会被调用一次。
不应从 resolveTreeItem 中触发 onDidChangeTreeData。
注意,此函数在树项已显示在 UI 中时调用。因此,不能更改任何影响呈现(标签、描述等)的属性。
| 参数 | 描述 |
|---|---|
| item: TreeItem | 应设置 |
| element: T | 与 TreeItem 关联的对象。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<TreeItem> | 已解析的 tree item 或可解析为 tree item 的 thenable。返回给定的 |
TreeDragAndDropController<T>
为 TreeView 提供拖放支持。
属性
dragMimeTypes: readonly string[]
此 TreeDragAndDropController 的 handleDrag 方法可能会添加到树数据传输中的 MIME 类型。这可以是明确定义的现有 MIME 类型,也可以是扩展定义的 MIME 类型。
将自动添加树的推荐 MIME 类型(application/vnd.code.tree.<treeidlowercase>)。
dropMimeTypes: readonly string[]
此 DragAndDropController 的 handleDrop 方法支持的 MIME 类型。这可以是明确定义的现有 MIME 类型,也可以是扩展定义的 MIME 类型。
要支持从树中进行拖放,您需要添加该树的 MIME 类型。这包括从同一树内部进行拖放。建议树的 MIME 类型格式为 application/vnd.code.tree.<treeidlowercase>。
使用特殊的 files MIME 类型来支持所有类型的拖放文件 files,无论文件的实际 MIME 类型如何。
要了解拖动项的 MIME 类型
- 设置您的
DragAndDropController - 使用命令“Developer: Set Log Level...”将级别设置为“Debug”
- 打开开发者工具,并将具有未知 MIME 类型的项拖到您的树上。MIME 类型将记录到开发者控制台中
请注意,无法发送到扩展的 MIME 类型将被省略。
方法
handleDrag(source: readonly T[], dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
当用户开始从此 DragAndDropController 拖动项时,将调用 handleDrag。扩展可以使用 handleDrag 将其 DataTransferItem 项添加到拖放操作中。
在 handleDrag 中添加的 MIME 类型在应用程序外部将不可用。
当项被拖放到同一树中的另一个树项时,您的 DataTransferItem 对象将被保留。使用树的推荐 MIME 类型(application/vnd.code.tree.<treeidlowercase>)来将树对象添加到数据传输中。有关如何充分利用此功能的详细信息,请参阅 DataTransferItem 的文档。
要添加一个可以拖入编辑器的传输数据项,请使用应用程序特定的 MIME 类型“text/uri-list”。“text/uri-list”的数据应为字符串,其中 toString() 后的 URI 以 \r\n 分隔。要指定文件中的光标位置,请将 URI 的片段设置为 L3,5,其中 3 是行号,5 是列号。
| 参数 | 描述 |
|---|---|
| source: readonly T[] | 拖放操作的源项。 |
| dataTransfer: DataTransfer | 与此拖动相关的数据传输。 |
| token: CancellationToken | 指示拖动已取消的取消标记。 |
| 返回值 | 描述 |
| void | Thenable<void> |
handleDrop(target: T, dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
当拖放操作导致在该 DragAndDropController 所属的树上发生放置时调用。
扩展应为需要刷新的任何元素触发 onDidChangeTreeData。
| 参数 | 描述 |
|---|---|
| target: T | 发生放置的目标树项。如果为 undefined,则目标是根。 |
| dataTransfer: DataTransfer | 拖动源的数据传输项。 |
| token: CancellationToken | 指示放置已取消的取消标记。 |
| 返回值 | 描述 |
| void | Thenable<void> |
TreeItem
树项是树的用户界面元素。树项由 数据提供程序创建。
构造函数
new TreeItem(label: string | TreeItemLabel, collapsibleState?: TreeItemCollapsibleState): TreeItem
| 参数 | 描述 |
|---|---|
| label: string | TreeItemLabel | 描述此项的直观字符串。 |
| collapsibleState?: TreeItemCollapsibleState | |
| 返回值 | 描述 |
| TreeItem |
new TreeItem(resourceUri: Uri, collapsibleState?: TreeItemCollapsibleState): TreeItem
| 参数 | 描述 |
|---|---|
| resourceUri: Uri | 表示此项的资源的 Uri。 |
| collapsibleState?: TreeItemCollapsibleState | |
| 返回值 | 描述 |
| TreeItem |
属性
accessibilityInformation?: AccessibilityInformation
当屏幕阅读器与此树项交互时使用的可访问性信息。通常,TreeItem 无需设置可访问性信息的 role;但是,在某些 TreeItem 未以树状显示的情况下,设置 role 可能有意义。
checkboxState?: TreeItemCheckboxState | {accessibilityInformation: AccessibilityInformation, state: TreeItemCheckboxState, tooltip: string}
树项的 TreeItemCheckboxState。当 checkboxState 更改时,应触发 onDidChangeTreeData。
collapsibleState?: TreeItemCollapsibleState
command?: Command
当选择树项时应执行的 Command。
当树项打开编辑器中的内容时,请使用 vscode.open 或 vscode.diff 作为命令 ID。使用这些命令可确保生成的编辑器外观与内置树打开编辑器的方式一致。
树项的上下文值。可用于在树中贡献特定于项的操作。例如,如果树项具有 folder 的上下文值。当使用 menus 扩展点向 view/item/context 贡献操作时,您可以在 when 表达式中为键 viewItem 指定上下文值,例如 viewItem == folder。
"contributes": {
"menus": {
"view/item/context": [
{
"command": "extension.deleteFolder",
"when": "viewItem == folder"
}
]
}
}
这将仅为上下文值为 folder 的项显示操作 extension.deleteFolder。
description?: string | boolean
不那么显眼地呈现的人类可读字符串。当为 true 时,它从 resourceUri 派生;当为假值时,它不显示。
iconPath?: string | IconPath
树项的图标路径或 ThemeIcon。当为假值时,如果项是可折叠的,则分配 Folder Theme Icon,否则分配 File Theme Icon。当指定文件或文件夹 ThemeIcon 时,图标将从当前文件图标主题使用指定的 ThemeIcon(如果提供了 resourceUri)派生。
树项的可选 ID,必须在树中唯一。ID 用于保留树项的选择和展开状态。
如果未提供 ID,则会使用树项的标签生成 ID。注意,当标签更改时,ID 也会更改,并且选择和展开状态将无法保持稳定。
label?: string | TreeItemLabel
描述此项的人类可读字符串。当为假值时,它从 resourceUri 派生。
resourceUri?: Uri
tooltip?: string | MarkdownString
The tooltip text when you hover over this item.
TreeItemCheckboxState
树项的复选框状态。
枚举成员
确定一项未被选中。
确定一项已被选中。
TreeItemCollapsibleState
树项的折叠状态。
枚举成员
确定一项既不能折叠也不能展开。暗示它没有子项。
确定项目已折叠。
确定项目已展开。
TreeItemLabel
描述 Tree item 的标签。
属性
highlights?: Array<[number, number]>
标签中要高亮的范围。范围定义为一对数字,第一个是包含的起始索引,第二个是排除的结束索引。
描述 Tree item 的人类可读字符串。
TreeView<T>
表示一个树视图。
事件
onDidChangeCheckboxState: Event<TreeCheckboxChangeEvent<T>>
一个事件,用于指示元素或根已被选中或取消选择。
onDidChangeSelection: Event<TreeViewSelectionChangeEvent<T>>
当 selection 发生变化时触发的事件。
onDidChangeVisibility: Event<TreeViewVisibilityChangeEvent>
当 visibility 发生变化时触发的事件。
onDidCollapseElement: Event<TreeViewExpansionEvent<T>>
当元素被折叠时触发的事件。
onDidExpandElement: Event<TreeViewExpansionEvent<T>>
当元素被展开时触发的事件。
属性
badge?: ViewBadge
为该 TreeView 显示的徽章。要删除徽章,请将其设置为 undefined。
在视图标题中不太显眼地呈现的可选人类可读描述。将标题描述设置为 null、undefined 或空字符串将从视图中删除描述。
一个可选的人类可读消息,将在视图中呈现。将 message 设置为 null、undefined 或空字符串将从视图中删除该消息。
当前选中的元素。
树视图的标题最初来自扩展包 package.json。对 title 属性的更改将在视图标题的用户界面中正确反映。
如果 树视图 可见,则为 true,否则为 false。
方法
处置此对象。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| any |
reveal(element: T, options?: {expand: number | boolean, focus: boolean, select: boolean}): Thenable<void>
在树视图中显示给定元素。如果树视图不可见,则显示树视图并显示元素。
默认情况下,显示的元素将被选中。为了不选中,请将选项 select 设置为 false。为了聚焦,请将选项 focus 设置为 true。为了展开显示的元素,请将选项 expand 设置为 true。要递归展开,请将 expand 设置为要展开的级别数。
| 参数 | 描述 |
|---|---|
| element: T | |
| options?: {expand: number | boolean, focus: boolean, select: boolean} | |
| 返回值 | 描述 |
| Thenable<void> |
TreeViewExpansionEvent<T>
当 树视图 中的元素被展开或折叠时触发的事件。
属性
展开或折叠的元素。
TreeViewOptions<T>
创建 TreeView 的选项。
属性
树是否支持多选。当树支持多选且从树执行命令时,命令的第一个参数是执行命令的树项,第二个参数是包含所有选定树项的数组。
dragAndDropController?: TreeDragAndDropController<T>
一个用于在树视图中实现拖放的可选接口。
manageCheckboxStateManually?: boolean
默认情况下,当树项的子项已被获取时,子复选框会根据父树项的选中状态自动管理。如果树项默认折叠(意味着子项尚未获取),则子复选框不会更新。要覆盖此行为并在扩展中管理子复选框和父复选框状态,请将其设置为 true。
TreeViewOptions.manageCheckboxStateManually 为 false 的示例,这是默认行为。
选中一个树项,然后获取其子项。子项将被选中。
选中树项的父项。该树项及其所有同级项都将被选中。
- 父级
- 子项 1
- 子项 2 用户选中“父级”时,树会显示如下
- 父级
- 子项 1
- 子项 2
- 选中树项及其所有同级项。父项将被选中。
- 父级
- 子项 1
- 子项 2 用户选中“子项 1”和“子项 2”时,树会显示如下
- 父级
- 子项 1
- 子项 2
- 取消选中一个树项。父项将被取消选中。
- 父级
- 子项 1
- 子项 2 用户取消选中“子项 1”时,树会显示如下
- 父级
- 子项 1
- 子项 2
是否显示折叠所有操作。
treeDataProvider: TreeDataProvider<T>
提供树数据的数据提供程序。
TreeViewSelectionChangeEvent<T>
当 树视图选择 发生变化时触发的事件。
属性
选中的元素。
TreeViewVisibilityChangeEvent
当 树视图可见性 发生变化时触发的事件。
属性
如果 树视图 可见,则为 true,否则为 false。
TypeDefinitionProvider
类型定义提供程序定义了扩展和转到类型定义功能之间的契约。
方法
provideTypeDefinition(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
提供文档和位置处的符号的类型定义。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<Definition | LocationLink[]> | 定义或一个可解析为该定义的 thenable。可以通过返回 |
TypeHierarchyItem
表示类型层次结构中的一个项,例如类或接口。
构造函数
new TypeHierarchyItem(kind: SymbolKind, name: string, detail: string, uri: Uri, range: Range, selectionRange: Range): TypeHierarchyItem
创建新的类型层次结构项。
| 参数 | 描述 |
|---|---|
| kind: SymbolKind | 项的种类。 |
| name: string | 项的名称。 |
| detail: string | 项的详细信息。 |
| uri: Uri | 项的 Uri。 |
| range: Range | 项的整个范围。 |
| selectionRange: Range | 项的选定范围。 |
| 返回值 | 描述 |
| TypeHierarchyItem |
属性
此项的更多详细信息,例如函数的签名。
kind: SymbolKind
此项的种类。
此项的名称。
range: Range
包含此符号的范围,不包括前导/尾随空格,但包括其他所有内容,例如注释和代码。
selectionRange: Range
选择和显示此符号时应选中的范围,例如类的名称。必须包含在 range 属性内。
tags?: readonly SymbolTag[]
此项的标签。
uri: Uri
此项的资源标识符。
TypeHierarchyProvider
类型层次结构提供程序接口描述了扩展和类型层次结构功能之间的契约。
方法
prepareTypeHierarchy(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<TypeHierarchyItem | TypeHierarchyItem[]>
通过返回由给定文档和位置表示的项来引导类型层次结构。该项将用作类型图的入口点。如果没有位于给定位置的项,提供程序应返回 undefined 或 null。
| 参数 | 描述 |
|---|---|
| document: TextDocument | 调用命令的文档。 |
| position: Position | 调用命令的位置。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<TypeHierarchyItem | TypeHierarchyItem[]> | 一个或多个类型层次结构项,或解析为这些项的 thenable。可以通过返回 |
provideTypeHierarchySubtypes(item: TypeHierarchyItem, token: CancellationToken): ProviderResult<TypeHierarchyItem[]>
为项提供所有子类型,例如所有从给定项派生/继承的类型。在图论中,这描述了类型图中的有向和带注释的边,例如,给定项是起始节点,结果是可以到达的节点。
| 参数 | 描述 |
|---|---|
| item: TypeHierarchyItem | 应为其计算子类型的层次结构项。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<TypeHierarchyItem[]> | 一组直接子类型或解析为这些子类型的 thenable。可以通过返回 |
provideTypeHierarchySupertypes(item: TypeHierarchyItem, token: CancellationToken): ProviderResult<TypeHierarchyItem[]>
为项提供所有超类型,例如所有从中派生/继承类型的类型。在图论中,这描述了类型图中的有向和带注释的边,例如,给定项是起始节点,结果是可以到达的节点。
| 参数 | 描述 |
|---|---|
| item: TypeHierarchyItem | 应为其计算超类型的层次结构项。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<TypeHierarchyItem[]> | 一组直接超类型或解析为这些超类型的 thenable。可以通过返回 |
UIKind
可以使用扩展的 UI 的可能种类。
枚举成员
从桌面应用程序访问扩展。
从 Web 浏览器访问扩展。
Uri
一个通用资源标识符,表示磁盘上的文件或其他资源,例如未命名的资源。
静态
file(path: string): Uri
从文件系统路径创建 URI。scheme 将是 file。
Uri.parse 与 Uri.file 之间的区别在于,后者将参数视为路径,而不是字符串化的 URI。例如,Uri.file(path)不等于 Uri.parse('file://' + path),因为路径可能包含被解释为特殊字符(#_ 和 ?)的字符。请参阅以下示例。
const good = URI.file('/coding/c#/project1');
good.scheme === 'file';
good.path === '/coding/c#/project1';
good.fragment === '';
const bad = URI.parse('file://' + '/coding/c#/project1');
bad.scheme === 'file';
bad.path === '/coding/c'; // path is now broken
bad.fragment === '/project1';
| 参数 | 描述 |
|---|---|
| path: string | 文件系统或 UNC 路径。 |
| 返回值 | 描述 |
| Uri | 新的 Uri 实例。 |
from(components: {authority: string, fragment: string, path: string, query: string, scheme: string}): Uri
从其组件部分创建 URI。
另请参阅 Uri.toString。
| 参数 | 描述 |
|---|---|
| components: {authority: string, fragment: string, path: string, query: string, scheme: string} | URI 的组件部分。 |
| 返回值 | 描述 |
| Uri | 新的 Uri 实例。 |
joinPath(base: Uri, ...pathSegments: string[]): Uri
创建一个新的 URI,其路径是连接基 URI 的路径与提供的路径段的结果。
- 注意 1:
joinPath仅影响路径组件,所有其他组件(scheme、authority、query 和 fragment)将保持不变。 - 注意 2:基 URI 必须具有路径;否则将引发错误。
路径段按以下方式进行规范化。
- 路径分隔符(
/或\)的序列将被替换为单个分隔符。 - 对于 Windows 上的
file-uri,反斜杠(``)被视为路径分隔符。 ..段表示父段,.表示当前段。- 路径有一个根,它始终保留,例如,在 Windows 上,驱动器号是根,因此以下表达式为真:
joinPath(Uri.file('file:///c:/root'), '../../other').fsPath === 'c:/other'。
parse(value: string, strict?: boolean): Uri
从字符串创建 URI,例如 http://www.example.com/some/path、file:///usr/home 或 scheme:with/path。
注意,在一段时间内,没有 scheme 的 URI 是被接受的。这是不正确的,因为所有 URI 都应该有一个 scheme。为了避免现有代码中断,添加了可选的 strict 参数。我们强烈建议使用它,例如 Uri.parse('my:uri', true)。
另请参阅 Uri.toString。
| 参数 | 描述 |
|---|---|
| value: string | URI 的字符串值。 |
| strict?: boolean | 当 |
| 返回值 | 描述 |
| Uri | 新的 Uri 实例。 |
构造函数
new Uri(scheme: string, authority: string, path: string, query: string, fragment: string): Uri
使用 file 和 parse 工厂函数创建新的 Uri 对象。
| 参数 | 描述 |
|---|---|
| scheme: string | |
| authority: string | |
| path: string | |
| query: string | |
| fragment: string | |
| 返回值 | 描述 |
| Uri |
属性
Authority 是 http://www.example.com/some/path?query#fragment 中的 www.example.com 部分。位于第一个双斜杠和下一个斜杠之间的部分。
Fragment 是 http://www.example.com/some/path?query#fragment 中的 fragment 部分。
表示此 URI 对应的文件系统路径的字符串。
将处理 UNC 路径并将 Windows 驱动器号规范化为小写。还将使用特定于平台的路径分隔符。
- 将不验证路径是否包含无效字符和语义。
- 将不检查此 URI 的 scheme。
- 生成的字符串不得用于显示目的,而应用于磁盘操作,例如
readFile等。
与 path 属性的区别在于使用了特定于平台的路径分隔符以及对 UNC 路径的处理。以下示例概述了区别。
const u = URI.parse('file://server/c$/folder/file.txt');
u.authority === 'server';
u.path === '/c$/folder/file.txt';
u.fsPath === '\\serverc$\folder\file.txt';
Path 是 http://www.example.com/some/path?query#fragment 中的 /some/path 部分。
Query 是 http://www.example.com/some/path?query#fragment 中的 query 部分。
Scheme 是 http://www.example.com/some/path?query#fragment 中的 http 部分。第一个冒号之前的部分。
方法
返回此 Uri 的 JSON 表示。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| any | 一个对象。 |
toString(skipEncoding?: boolean): string
返回此 Uri 的字符串表示。URI 的表示和规范化取决于 scheme。
- 生成的字符串可以安全地用于 Uri.parse。
- 生成的字符串不得用于显示目的。
注意,实现将进行激进的编码,这通常会导致意外但并非不正确的結果。例如,冒号将被编码为 %3A,这对于文件 URI 来说可能出乎意料。同样,& 和 = 也将被编码,这对于 HTTP URI 来说也可能出乎意料。出于稳定性原因,这一点无法更改。如果您遇到过于激进的编码问题,应使用 skipEncoding 参数:uri.toString(true)。
| 参数 | 描述 |
|---|---|
| skipEncoding?: boolean | 不进行百分比编码结果,默认为 |
| 返回值 | 描述 |
| 字符串 | 此 Uri 的字符串表示。 |
with(change: {authority: string, fragment: string, path: string, query: string, scheme: string}): 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 的更改的对象。要取消设置组件,请使用 |
| 返回值 | 描述 |
| Uri | 反映给定更改的新 Uri。如果更改不改变任何内容,则返回 |
UriHandler
URI 处理程序负责处理系统范围的 URI。
方法
handleUri(uri: Uri): ProviderResult<void>
处理提供的系统范围的 Uri。
| 参数 | 描述 |
|---|---|
| uri: Uri | |
| 返回值 | 描述 |
| ProviderResult<void> |
ViewBadge
为视图显示值的徽章。
属性
显示在徽章工具提示中的标签。
显示在徽章中的值。
ViewColumn
表示编辑器在窗口中的位置。编辑器可以排列成网格,每个列按其出现顺序表示网格中的一个编辑器位置。
枚举成员
一个象征性的编辑器列,表示活动列旁边的列。此值可用于打开编辑器,但编辑器的解析后的 viewColumn 值将始终为 One、Two、Three... 或 undefined,但永远不会是 Beside。
一个象征性的编辑器列,表示当前活动的列。此值可用于打开编辑器,但编辑器的解析后的 viewColumn 值将始终为 One、Two、Three... 或 undefined,但永远不会是 Active。
第一个编辑器列。
第二个编辑器列。
第三个编辑器列。
第四个编辑器列。
第五个编辑器列。
第六个编辑器列。
第七个编辑器列。
第八个编辑器列。
第九个编辑器列。
Webview
显示 HTML 内容,类似于 iframe。
事件
onDidReceiveMessage: Event<any>
当 Webview 内容发布消息时触发。
Webview 内容可以向扩展发布字符串或 JSON 可序列化对象。它们不能发布 Blob、File、ImageData 和其他 DOM 特定的对象,因为接收消息的扩展不在浏览器环境中运行。
属性
Webview 资源的内容安全策略源。
这是内容安全策略规则中应使用的 origin。
`img-src https: ${webview.cspSource} ...;`;
Webview 的 HTML 内容。
这应该是一个完整、有效的 HTML 文档。更改此属性将导致 Webview 重新加载。
Webviews 与普通扩展进程是隔离的,因此所有与 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 中。
请记住,即使 Webviews 是隔离的,它们仍然允许运行脚本和加载任意内容,因此扩展在处理 Webviews 时必须遵循所有标准的 Web 安全最佳实践。这包括正确清理所有不受信任的输入(包括来自工作区的输入)并设置内容安全策略。
options: WebviewOptions
Webview 的内容设置。
方法
asWebviewUri(localResource: Uri): Uri
将本地文件系统的 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')
)}">`;
postMessage(message: any): Thenable<boolean>
向 Webview 内容发送消息。
仅当 Webview 处于活动状态时(可见或在后台且 retainContextWhenHidden 为 true)才会传递消息。
| 参数 | 描述 |
|---|---|
| message: any | 消息体。这必须是字符串或其他 JSON 可序列化对象。 对于较旧的 VS Code 版本,如果 `message` 中包含 `ArrayBuffer`,它将无法正确序列化,并且 webview 将无法接收。同样,任何 TypedArrays(例如 `Uint8Array`)的序列化效率会非常低,并且在 webview 中也无法重新创建为 typed array。 但是,如果您的扩展在 `package.json` 的 `engines` 字段中定位的是 VS Code 1.57+,那么 `message` 中出现的任何 `ArrayBuffer` 值都将更有效地传输到 webview,并在 webview 中正确地重新创建。 |
| 返回值 | 描述 |
| Thenable<boolean> | 一个 Promise,当消息已发布到 webview 或因消息不可送达而被丢弃时解析。 如果消息已发布到 webview,则返回 `true`。消息只能发布到活动的 webview(即,可见的 webview 或设置了 `retainContextWhenHidden` 的隐藏 webview)。 返回 `true` 并不意味着消息实际上已被 webview 接收。例如,可能没有消息监听器在 webview 中被挂载,或者 webview 可能在消息发布后但在接收前已被销毁。 如果您想确认消息是否真的被接收,可以尝试让您的 webview 将确认消息发布回您的扩展。 |
WebviewOptions
Webview 的内容设置。
属性
enableCommandUris?: boolean | readonly string[]
控制是否在 webview 内容中启用命令 URI。
默认为 `false`(禁用命令 URI)。
如果传入一个数组,则只允许数组中的命令。
控制是否在 webview 内容中启用表单。
如果启用了 脚本,则默认为 true。否则默认为 false。显式将此属性设置为 true 或 false 会覆盖默认值。
控制是否在 webview 内容中启用脚本。
默认为 false(禁用脚本)。
localResourceRoots?: readonly Uri[]
webview 可以使用 `asWebviewUri` 中的 URI 从中加载本地(文件系统)资源的根路径。
默认为当前工作区的根文件夹加上扩展的安装目录。
传入一个空数组以禁止访问任何本地资源。
portMapping?: readonly WebviewPortMapping[]
webview 中使用的 localhost 端口的映射。
端口映射允许 webview 透明地定义 localhost 端口的解析方式。这可以用来允许在 webview 中使用一个静态的 localhost 端口,该端口被解析到服务正在运行的随机端口。
如果 webview 访问 localhost 内容,我们建议您指定端口映射,即使 `webviewPort` 和 `extensionHostPort` 端口相同。
注意:端口映射仅适用于 `http` 或 `https` URL。WebSocket URL(例如 `ws://:3000`)不能映射到另一个端口。
WebviewPanel
包含 webview 的面板。
事件
onDidChangeViewState: Event<WebviewPanelOnDidChangeViewStateEvent>
当面板的视图状态改变时触发。
onDidDispose: Event<void>
面板被释放时触发。
这可能是因为用户关闭了面板,或者因为对它调用了 `.dispose()`。
尝试在面板被释放后使用它将引发异常。
属性
面板是否处于活动状态(用户聚焦)。
iconPath?: Uri | {dark: Uri, light: Uri}
面板的图标,显示在 UI 中。
options: WebviewPanelOptions
webview 面板的内容设置。
面板的标题,显示在 UI 中。
viewColumn: ViewColumn
面板的编辑器位置。仅当 webview 位于编辑器视图列之一时,才会设置此属性。
标识 webview 面板的类型,例如 `'markdown.preview'`。
面板是否可见。
webview: Webview
面板所属的 Webview。
方法
释放 webview 面板。
这会关闭正在显示的面板,并释放 webview 所拥有的资源。当用户关闭 webview 面板时,webview 面板也会被释放。这两种情况都会触发 `onDispose` 事件。
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| any |
reveal(viewColumn?: ViewColumn, preserveFocus?: boolean): void
在指定列中显示 webview 面板。
webview 面板一次只能显示在一个列中。如果它已经显示,此方法将其移动到新列。
| 参数 | 描述 |
|---|---|
| viewColumn?: ViewColumn | 要显示面板的视图列。如果未定义,则显示在当前 `viewColumn` 中。 |
| preserveFocus?: boolean | 当 `true` 时,webview 将不会获得焦点。 |
| 返回值 | 描述 |
| void |
WebviewPanelOnDidChangeViewStateEvent
当 webview 面板的视图状态改变时触发的事件。
属性
webviewPanel: WebviewPanel
视图状态已更改的 webview 面板。
WebviewPanelOptions
webview 面板的内容设置。
属性
控制是否在面板中启用查找小部件。
默认为 false。
retainContextWhenHidden?: boolean
控制即使面板不再可见,是否也保留 webview 面板的内容(iframe)。
通常,webview 面板的 html 内容在面板变为可见时创建,在隐藏时销毁。具有复杂状态或 UI 的扩展可以设置 `retainContextWhenHidden`,以使编辑器即使在 webview 移动到后台选项卡时也保留 webview 上下文。当使用 `retainContextWhenHidden` 的 webview 被隐藏时,其脚本和其他动态内容将被暂停。当面板再次可见时,上下文将自动恢复到原始状态。即使启用了 `retainContextWhenHidden`,您也无法向隐藏的 webview 发送消息。
`retainContextWhenHidden` 具有很高的内存开销,仅当您的面板上下文无法快速保存和恢复时才应使用。
WebviewPanelSerializer<T>
在 VS Code 关闭时恢复已持久化的 webview 面板。
有两种类型的 webview 持久化:
- 会话内持久化。
- 跨会话持久化(跨编辑器重启)。
仅在第二种情况(跨会话持久化 webview)下才需要 `WebviewPanelSerializer`。
会话内持久化允许 webview 在隐藏时保存其状态,并在再次可见时从该状态恢复其内容。它完全由 webview 内容本身驱动。要保存持久化状态,请调用 `acquireVsCodeApi().setState()` 并传入任何可 JSON 序列化的对象。要再次恢复状态,请调用 `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`。
方法
deserializeWebviewPanel(webviewPanel: WebviewPanel, state: T): Thenable<void>
从其序列化的 `state` 恢复 webview 面板。
当序列化的 webview 首次变得可见时调用。
| 参数 | 描述 |
|---|---|
| webviewPanel: WebviewPanel | 要恢复的 webview 面板。序列化器应接管此面板的所有权。序列化器必须恢复 webview 的 `.html` 并挂载所有 webview 事件。 |
| state: T | 来自 webview 内容的持久化状态。 |
| 返回值 | 描述 |
| Thenable<void> | 一个 Thenable,表示 webview 已完全恢复。 |
WebviewPortMapping
定义 webview 中 localhost 使用的端口映射。
属性
目标端口。`webviewPort` 将被解析到此端口。
在 webview 中重新映射的 localhost 端口。
WebviewView
基于 webview 的视图。
事件
onDidChangeVisibility: Event<void>
当视图的可见性发生变化时触发的事件。
触发可见性变化的动作:
- 视图被折叠或展开。
- 用户切换到侧边栏或面板中的另一个顶级视图组。
注意,通过上下文菜单隐藏视图会将其释放并触发 `onDidDispose`。
onDidDispose: Event<void>
视图被释放时触发的事件。
视图在用户显式隐藏时(当用户右键单击视图并取消选中 webview 视图时)被释放。
尝试在视图被释放后使用它将引发异常。
属性
badge?: ViewBadge
为该 webview 视图显示的徽章。要删除徽章,请设置为 undefined。
人类可读的字符串,在标题中显示得不那么突出。
在 UI 中显示的视图标题。
视图标题最初来自扩展 `package.json` 的贡献。
标识 webview 视图的类型,例如 `'hexEditor.dataView'`。
跟踪 webview 当前是否可见。
当视图在屏幕上且展开时,它们是可见的。
webview: Webview
视图的底层 webview。
方法
show(preserveFocus?: boolean): void
在 UI 中显示视图。
如果视图已折叠,这将展开它。
| 参数 | 描述 |
|---|---|
| preserveFocus?: boolean | 当 `true` 时,视图不会获得焦点。 |
| 返回值 | 描述 |
| void |
WebviewViewProvider
用于创建 `WebviewView` 元素的提供程序。
方法
resolveWebviewView(webviewView: WebviewView, context: WebviewViewResolveContext<unknown>, token: CancellationToken): void | Thenable<void>
解析 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 中调用 `acquireVsCodeApi().setState()` 并传入任何可 JSON 序列化的对象。要再次恢复状态,请调用 `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 返回)通过以下顺序覆盖或合并计算:
defaultValue(如果已在 `package.json` 中定义,否则从值的类型派生)globalValue(如果已定义)workspaceValue(如果已定义)workspaceFolderValue(如果已定义)defaultLanguageValue(如果已定义)globalLanguageValue(如果已定义)workspaceLanguageValue(如果已定义)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 };
注意:工作区和工作区文件夹配置包含 `launch` 和 `tasks` 设置。它们的基名将是节标识符的一部分。以下代码片段展示了如何从 `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`。 |
get<T>(section: string, defaultValue: T): T
从此配置返回一个值。
| 参数 | 描述 |
|---|---|
| section: string | 配置名称,支持点分隔的名称。 |
| defaultValue: T | 当找不到值时,返回 `undefined` 或默认值。 |
| 返回值 | 描述 |
| T | `section` 指定的值或默认值。 |
检查此配置是否具有某个值。
| 参数 | 描述 |
|---|---|
| section: string | 配置名称,支持点分隔的名称。 |
| 返回值 | 描述 |
| 布尔值 | 如果节不解析为 `undefined`,则为 `true`。 |
inspect<T>(section: string): {defaultLanguageValue: T, defaultValue: T, globalLanguageValue: T, globalValue: T, key: string, languageIds: string[], workspaceFolderLanguageValue: T, workspaceFolderValue: T, workspaceLanguageValue: T, workspaceValue: T}
检索有关配置设置的所有信息。配置值通常由默认值、全局或安装范围的值、工作区特定的值、文件夹特定的值和语言特定的值(如果 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`。 |
update(section: string, value: any, configurationTarget?: boolean | ConfigurationTarget, overrideInLanguage?: boolean): Thenable<void>
更新配置值。更新后的配置值将被持久化。
值可以在以下位置更改:
注意:要删除配置值,请使用 `undefined`,例如:`config.update('somekey', undefined)`
- 抛出 - 更新时出错
- 未注册的配置。
- 将窗口配置为工作区文件夹。
- 当没有打开工作区时,将配置设置为工作区或工作区文件夹。
- 当没有工作区文件夹设置时,将配置设置为工作区文件夹。
- 当 WorkspaceConfiguration 未作用于某个资源时,将配置设置为工作区文件夹。
| 参数 | 描述 |
|---|---|
| section: string | 配置名称,支持点分隔的名称。 |
| value: any | 新值。 |
| configurationTarget?: boolean | ConfigurationTarget | |
| overrideInLanguage?: boolean | 是否在请求的语言 ID 的范围内更新值。- 如果为 `true`,则在请求的语言 ID 下更新值。- 如果为 `undefined`,仅当配置已为该语言定义时,才在请求的语言 ID 下更新值。 |
| 返回值 | 描述 |
| Thenable<void> |
WorkspaceEdit
工作区编辑是多个资源和文档的文本和文件更改的集合。
使用 `applyEdit` 函数来应用工作区编辑。
构造函数
new WorkspaceEdit(): WorkspaceEdit
| 参数 | 描述 |
|---|---|
| 返回值 | 描述 |
| WorkspaceEdit |
属性
文本或资源更改受影响的资源数量。
方法
createFile(uri: Uri, options?: {contents: Uint8Array | DataTransferFile, ignoreIfExists: boolean, overwrite: boolean}, metadata?: WorkspaceEditEntryMetadata): void
创建常规文件。
| 参数 | 描述 |
|---|---|
| uri: Uri | 新文件的 URI。 |
| options?: {contents: Uint8Array | DataTransferFile, ignoreIfExists: boolean, overwrite: boolean} | 定义是否应覆盖现有文件或忽略它。当 `overwrite` 和 `ignoreIfExists` 都设置时,`overwrite` 生效。当两者都未设置且文件已存在时,编辑将无法成功应用。`content` 属性允许设置文件创建时的初始内容。 |
| metadata?: WorkspaceEditEntryMetadata | 条目的可选元数据。 |
| 返回值 | 描述 |
| void |
delete(uri: Uri, range: Range, metadata?: WorkspaceEditEntryMetadata): void
删除给定范围的文本。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| range: Range | 范围。 |
| metadata?: WorkspaceEditEntryMetadata | 条目的可选元数据。 |
| 返回值 | 描述 |
| void |
deleteFile(uri: Uri, options?: {ignoreIfNotExists: boolean, recursive: boolean}, metadata?: WorkspaceEditEntryMetadata): void
删除文件或文件夹。
| 参数 | 描述 |
|---|---|
| uri: Uri | 要删除的文件 URI。 |
| options?: {ignoreIfNotExists: boolean, recursive: boolean} | |
| metadata?: WorkspaceEditEntryMetadata | 条目的可选元数据。 |
| 返回值 | 描述 |
| void |
entries(): Array<[Uri, TextEdit[]]>
has(uri: Uri): boolean
检查是否存在资源的文本编辑。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| 返回值 | 描述 |
| 布尔值 | 如果给定资源将受到此编辑的影响,则为 `true`。 |
insert(uri: Uri, position: Position, newText: string, metadata?: WorkspaceEditEntryMetadata): void
在给定位置插入给定文本。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| position: Position | 一个位置。 |
| newText: string | 一个字符串。 |
| metadata?: WorkspaceEditEntryMetadata | 条目的可选元数据。 |
| 返回值 | 描述 |
| void |
renameFile(oldUri: Uri, newUri: Uri, options?: {ignoreIfExists: boolean, overwrite: boolean}, metadata?: WorkspaceEditEntryMetadata): void
重命名文件或文件夹。
| 参数 | 描述 |
|---|---|
| oldUri: Uri | 现有的文件。 |
| newUri: Uri | 新的位置。 |
| options?: {ignoreIfExists: boolean, overwrite: boolean} | 定义是否应覆盖现有文件或忽略它们。当 overwrite 和 ignoreIfExists 都设置时,overwrite 生效。 |
| metadata?: WorkspaceEditEntryMetadata | 条目的可选元数据。 |
| 返回值 | 描述 |
| void |
replace(uri: Uri, range: Range, newText: string, metadata?: WorkspaceEditEntryMetadata): void
用给定文本替换给定资源的给定范围。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| range: Range | 范围。 |
| newText: string | 一个字符串。 |
| metadata?: WorkspaceEditEntryMetadata | 条目的可选元数据。 |
| 返回值 | 描述 |
| void |
set(uri: Uri, edits: ReadonlyArray<TextEdit | SnippetTextEdit>): void
为资源设置(并替换)文本编辑或片段编辑。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| edits: ReadonlyArray<TextEdit | SnippetTextEdit> | 编辑数组。 |
| 返回值 | 描述 |
| void |
set(uri: Uri, edits: ReadonlyArray<[TextEdit | SnippetTextEdit, WorkspaceEditEntryMetadata]>): void
为资源设置(并替换)带有元数据的文本编辑或片段编辑。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| edits: ReadonlyArray<[TextEdit | SnippetTextEdit, WorkspaceEditEntryMetadata]> | 编辑数组。 |
| 返回值 | 描述 |
| void |
set(uri: Uri, edits: readonly NotebookEdit[]): void
为资源设置(并替换)笔记本的编辑内容。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| edits: readonly NotebookEdit[] | 编辑数组。 |
| 返回值 | 描述 |
| void |
set(uri: Uri, edits: ReadonlyArray<[NotebookEdit, WorkspaceEditEntryMetadata]>): void
为资源设置(并替换)带有元数据的笔记本的编辑内容。
| 参数 | 描述 |
|---|---|
| uri: Uri | 资源标识符。 |
| edits: ReadonlyArray<[NotebookEdit, WorkspaceEditEntryMetadata]> | 编辑数组。 |
| 返回值 | 描述 |
| void |
WorkspaceEditEntryMetadata
工作区编辑条目的附加数据。支持为条目添加标签,并标记需要用户确认的条目。编辑器将具有相同标签的编辑内容分组到树节点中,例如所有标记为“字符串中的更改”的编辑内容将构成一个树节点。
属性
人类可读的字符串,显示在同一行上,但不太突出。
iconPath?: IconPath
编辑的图标路径或ThemeIcon。
人类可读的字符串,显示得很突出。
一个标志,指示需要用户确认。
WorkspaceEditMetadata
有关工作区编辑的附加数据。
属性
向编辑器发出信号,表明此编辑是重构。
WorkspaceFolder
工作区文件夹是编辑器打开的多个根之一。所有工作区文件夹都是平等的,这意味着没有活动或主工作区文件夹的概念。
属性
此工作区文件夹的序号。
此工作区文件夹的名称。默认为其uri路径的基本名称。
uri: Uri
此工作区文件夹的关联 URI。
注意:选择Uri类型是故意的,以便将来版本的编辑器可以支持非本地存储的工作区文件夹,例如 ftp://server/workspaces/foo。
WorkspaceFolderPickOptions
用于配置工作区文件夹选择 UI 行为的选项。
属性
设置为 true 以在焦点移至编辑器其他部分或另一个窗口时保持选择器打开。此设置在 iPad 上被忽略,并且始终为 false。
可选字符串,在输入框中显示为占位符以指导用户。
WorkspaceFoldersChangeEvent
描述工作区文件夹集更改的事件。
属性
added: readonly WorkspaceFolder[]
添加的工作区文件夹。
removed: readonly WorkspaceFolder[]
移除的工作区文件夹。
WorkspaceSymbolProvider<T>
工作区符号提供程序接口定义了扩展与按名称打开符号功能之间的约定。
方法
provideWorkspaceSymbols(query: string, token: CancellationToken): ProviderResult<T[]>
项目范围内匹配给定查询字符串的符号搜索。
query 参数应以*宽松的方式*解释,因为编辑器将自行对结果进行高亮显示和评分。一个好的经验法则是进行不区分大小写的匹配,并简单地检查 query 的字符是否按顺序出现在候选符号中。不要使用前缀、子字符串或类似的严格匹配。
为了提高性能,实现者可以实现 resolveWorkspaceSymbol,然后提供具有部分 location 对象的符号,而无需定义 range。编辑器随后将仅为选定的符号调用 resolveWorkspaceSymbol,例如在打开工作区符号时。
| 参数 | 描述 |
|---|---|
| query: string | 一个查询字符串,可以是空字符串,在这种情况下应返回所有符号。 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T[]> | 文档高亮数组或解析为这些高亮的 thenable。可以通过返回 |
resolveWorkspaceSymbol(symbol: T, token: CancellationToken): ProviderResult<T>
给定一个符号,填充其 location。每当在 UI 中选择一个符号时,都会调用此方法。提供程序可以实现此方法,并从 provideWorkspaceSymbols 返回不完整的符号,这通常有助于提高性能。
| 参数 | 描述 |
|---|---|
| symbol: T | 要解析的符号。保证是一个对象实例,该对象是从早期调用 |
| token: CancellationToken | 取消令牌。 |
| 返回值 | 描述 |
| ProviderResult<T> | 解析后的符号或解析为该符号的 thenable。如果未返回结果,则使用提供的 |
API 模式
这些是我们将在 VS Code API 中使用的一些常见模式。
Promises (承诺)
VS Code API 使用承诺来表示异步操作。从扩展中,可以返回**任何**类型的承诺,例如 ES6、WinJS、A+ 等。
API 中独立于特定承诺库的表示是通过 Thenable 类型实现的。Thenable 代表了共同点,即 then 方法。
在大多数情况下,使用承诺是可选的,当 VS Code 调用扩展时,它可以处理*结果类型*以及*结果类型*的 Thenable。当使用承诺是可选的时,API 通过返回 or 类型来指示这一点。
provideNumber(): number | Thenable<number>
Cancellation Tokens (取消令牌)
操作通常在易失性状态下启动,而状态会在操作完成之前发生变化。例如,计算 IntelliSense 会启动,而用户继续键入,使得该操作的结果变得过时。
暴露给这种行为的 API 将接收一个 CancellationToken,您可以通过它来检查取消(isCancellationRequested)或在发生取消时获得通知(onCancellationRequested)。取消令牌通常是函数调用的最后一个参数,并且是可选的。
Disposables (可处置项)
VS Code API 使用dispose 模式来处理从 VS Code 获取的资源。这适用于事件监听、命令、与 UI 的交互以及各种语言贡献。
例如,setStatusBarMessage(value: string) 函数返回一个 Disposable,调用 dispose 后会再次移除该消息。
事件
VS Code API 中的事件通过函数公开,您可以通过调用这些函数并传递一个监听器函数来订阅。调用订阅返回一个 Disposable,调用 dispose 后会移除事件监听器。
var listener = function(event) {
console.log('It happened', event);
};
// start listening
var subscription = fsWatcher.onDidDelete(listener);
// do more stuff
subscription.dispose(); // stop listening
事件的名称遵循 on[Will|Did]VerbNoun? 模式。名称指示事件是即将发生(onWill)还是已经发生(onDid),发生了什么(verb),以及上下文(noun),除非上下文明显。
VS Code API 中的一个例子是 window.onDidChangeActiveTextEditor,这是一个当活动文本编辑器(noun)已(onDid)更改(verb)时触发的事件。
Strict null (严格的 null 检查)
VS Code API 在适当的地方使用 undefined 和 null TypeScript 类型来支持严格的 null 检查。
用于身份验证的命名空间。