VS Code API
VS Code API 是一组 JavaScript API,您可以在 Visual Studio Code 扩展中调用这些 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, scopes: readonly string[], options: AuthenticationGetSessionOptions & {createIfNone: true}): Thenable<AuthenticationSession>
获取与所需范围匹配的身份验证会话。如果注册了具有 providerId 的提供程序,或者用户不同意与扩展共享身份验证信息,则会拒绝。如果有多个具有相同范围的会话,将向用户显示一个快速选择,让他们选择要使用的帐户。
目前,只有两个身份验证提供程序从内置扩展贡献到编辑器,这些扩展实现了 GitHub 和 Microsoft 身份验证:它们的 providerId 分别为 'github' 和 'microsoft'。
参数 | 描述 |
---|---|
providerId: string | 要使用的提供程序的 ID |
scopes: readonly string[] | 表示请求的权限的范围列表。这些取决于身份验证提供程序 |
options: AuthenticationGetSessionOptions & {createIfNone: true} | |
返回值 | 描述 |
Thenable<AuthenticationSession> | 一个 thenable,解析为身份验证会话 |
getSession(providerId: string, scopes: readonly string[], options: AuthenticationGetSessionOptions & {forceNewSession: true | AuthenticationForceNewSessionOptions}): Thenable<AuthenticationSession>
获取与所需范围匹配的身份验证会话。如果注册了具有 providerId 的提供程序,或者用户不同意与扩展共享身份验证信息,则会拒绝。如果有多个具有相同范围的会话,将向用户显示一个快速选择,让他们选择要使用的帐户。
目前,只有两个身份验证提供程序从内置扩展贡献到编辑器,这些扩展实现了 GitHub 和 Microsoft 身份验证:它们的 providerId 分别为 'github' 和 'microsoft'。
参数 | 描述 |
---|---|
providerId: string | 要使用的提供程序的 ID |
scopes: readonly string[] | 表示请求的权限的范围列表。这些取决于身份验证提供程序 |
options: AuthenticationGetSessionOptions & {forceNewSession: true | AuthenticationForceNewSessionOptions} | |
返回值 | 描述 |
Thenable<AuthenticationSession> | 一个 thenable,解析为身份验证会话 |
getSession(providerId: string, scopes: readonly string[], options?: AuthenticationGetSessionOptions): Thenable<AuthenticationSession | undefined>
获取与所需范围匹配的身份验证会话。如果注册了具有 providerId 的提供程序,或者用户不同意与扩展共享身份验证信息,则会拒绝。如果有多个具有相同范围的会话,将向用户显示一个快速选择,让他们选择要使用的帐户。
目前,只有两个身份验证提供程序从内置扩展贡献到编辑器,这些扩展实现了 GitHub 和 Microsoft 身份验证:它们的 providerId 分别为 'github' 和 'microsoft'。
参数 | 描述 |
---|---|
providerId: string | 要使用的提供程序的 ID |
scopes: readonly string[] | 表示请求的权限的范围列表。这些取决于身份验证提供程序 |
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,当被处置时取消注册此提供程序。 |
聊天
用于处理聊天功能的命名空间。用户通过向聊天视图中的聊天参与者发送消息来与他们交互。聊天参与者可以通过 ChatResponseStream 以 markdown 或其他类型的內容来响应。
函数
createChatParticipant(id: string, handler: ChatRequestHandler): ChatParticipant
创建一个新的 chat participant 实例。
参数 | 描述 |
---|---|
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> | 一个可解析为给定命令返回值的可解析对象。当命令处理程序函数不返回任何内容时,返回 |
getCommands(filterInternal?: boolean): Thenable<string[]>
检索所有可用命令的列表。以下划线开头的命令被视为内部命令。
参数 | 描述 |
---|---|
filterInternal?: boolean | 设置为 |
返回值 | 描述 |
Thenable<string[]> | 可解析为命令 ID 列表的可解析对象。 |
registerCommand(command: string, callback: (args: any[]) => any, thisArg?: any): Disposable
注册一个可以通过键盘快捷键、菜单项、操作或直接调用的命令。
使用现有命令标识符两次注册命令会导致错误。
参数 | 描述 |
---|---|
command: string | 命令的唯一标识符。 |
callback: (args: any[]) => any | 命令处理程序函数。 |
thisArg?: any | 调用处理程序函数时使用的 |
返回值 | 描述 |
Disposable | 在处置时注销此命令的可处置对象。 |
registerTextEditorCommand(command: string, callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void, thisArg?: any): Disposable
注册一个可以通过键盘快捷键、菜单项、操作或直接调用的文本编辑器命令。
文本编辑器命令不同于普通的 命令,因为它们只有在调用命令时存在活动编辑器时才会执行。此外,编辑器命令的命令处理程序可以访问活动编辑器和 edit 构建器。请注意,edit 构建器仅在回调执行时有效。
参数 | 描述 |
---|---|
command: string | 命令的唯一标识符。 |
callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void | |
thisArg?: any | 调用处理程序函数时使用的 |
返回值 | 描述 |
Disposable | 在处置时注销此命令的可处置对象。 |
注释
函数
createCommentController(id: string, label: string): CommentController
创建一个新的 comment controller 实例。
参数 | 描述 |
---|---|
id: string | 评论控制器的 |
label: string | 评论控制器的可读字符串。 |
返回值 | 描述 |
CommentController | comment controller 的一个实例。 |
调试
用于调试功能的命名空间。
变量
activeDebugConsole: DebugConsole
当前活动的 debug console。如果没有任何调试会话处于活动状态,则发送到调试控制台的输出将不会显示。
activeDebugSession: DebugSession | undefined
当前活动的 debug session 或 undefined
。活动调试会话是调试操作浮动窗口所代表的会话,或当前显示在调试操作浮动窗口的下拉菜单中的会话。如果没有任何调试会话处于活动状态,则该值为 undefined
。
activeStackItem: DebugThread | DebugStackFrame | undefined
当前聚焦的线程或堆栈帧,或者如果没有任何线程或堆栈处于聚焦状态,则为 undefined
。只要存在活动调试会话,就可以聚焦线程,而堆栈帧只能在会话暂停且已检索到调用堆栈时聚焦。
breakpoints: readonly Breakpoint[]
断点的列表。
事件
onDidChangeActiveDebugSession: Event<DebugSession | undefined>
一个 Event,当 active debug session 发生更改时会触发。注意,当活动调试会话更改为 undefined
时,也会触发该事件。
onDidChangeActiveStackItem: Event<DebugThread | DebugStackFrame | undefined>
当 debug.activeStackItem 发生更改时会触发的一个事件。
onDidChangeBreakpoints: Event<BreakpointsChangeEvent>
当断点集被添加、删除或更改时会发出的一个 Event。
onDidReceiveDebugSessionCustomEvent: Event<DebugSessionCustomEvent>
当从 debug session 接收自定义 DAP 事件时会触发的一个 Event。
onDidStartDebugSession: Event<DebugSession>
当启动新的 debug session 时会触发的一个 Event。
onDidTerminateDebugSession: Event<DebugSession>
当 debug session 终止时会触发的一个 Event。
函数
addBreakpoints(breakpoints: readonly Breakpoint[]): void
添加断点。
参数 | 描述 |
---|---|
breakpoints: readonly Breakpoint[] | 要添加的断点。 |
返回值 | 描述 |
void |
asDebugSourceUri(source: DebugProtocolSource, session?: DebugSession): Uri
将通过调试适配器协议接收到的“源”描述符对象转换为可用于加载其内容的 Uri。如果源描述符基于路径,则返回文件 Uri。如果源描述符使用引用号,则会构造一个特定调试 Uri(方案“debug”),它需要相应的 ContentProvider 和正在运行的调试会话
如果“源”描述符信息不足以创建 Uri,则会抛出错误。
参数 | 描述 |
---|---|
source: DebugProtocolSource | 一个符合调试适配器协议中定义的 Source 类型的对象。 |
session?: DebugSession | 一个可选的调试会话,当源描述符使用引用号从活动调试会话加载内容时会使用它。 |
返回值 | 描述 |
Uri | 一个可用于加载源内容的 uri。 |
registerDebugAdapterDescriptorFactory(debugType: string, factory: DebugAdapterDescriptorFactory): Disposable
为特定调试类型注册 debug adapter descriptor factory。扩展只能为扩展定义的调试类型注册 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
方法完全不受影响。为不同的触发类型注册具有解析方法的单个提供程序,会导致多次调用相同的解析方法。可以为同一种类型注册多个提供程序。
参数 | 描述 |
---|---|
debugType: string | 注册提供程序的调试类型。 |
provider: DebugConfigurationProvider | 要注册的 调试配置提供程序。 |
triggerKind?: DebugConfigurationProviderTriggerKind | 注册提供程序的 |
返回值 | 描述 |
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?: DebugSession | 要停止的 调试会话;如果省略,则停止所有会话。 |
返回值 | 描述 |
Thenable<void> | 一个 thenable,在会话已停止时解析。 |
环境
描述编辑器运行环境的命名空间。
变量
应用程序的托管位置在桌面上,这是 'desktop' 在网络上,这是指定的嵌入器,即 'github.dev'、'codespaces' 或 'web',如果嵌入器没有提供该信息
编辑器的应用程序名称,例如 'VS Code'。
编辑器运行的应用程序根文件夹。
注意,在没有应用程序根文件夹表示的环境中运行时,该值为一个空字符串。
clipboard: Clipboard
系统剪贴板。
表示这是应用程序的全新安装。如果在安装后的第一天内,则为 true
,否则为 false
。
表示用户是否启用了遥测。可以观察到它以确定扩展是否应该发送遥测数据。
表示首选的用户语言,例如 de-CH
、fr
或 en-US
。
logLevel: LogLevel
编辑器的当前日志级别。
计算机的唯一标识符。
remoteName: string | undefined
远程的名称。由扩展定义,流行的示例是 wsl
(用于 Windows 的 Linux 子系统)或 ssh-remote
(用于使用安全 shell 的远程)。
注意,当没有远程扩展主机时,该值为 undefined
,但如果存在远程扩展主机,则该值在所有扩展主机(本地和远程)中都有定义。使用 Extension.extensionKind 来了解特定扩展是否远程运行。
当前会话的唯一标识符。每次启动编辑器时都会改变。
检测到的扩展主机的默认 shell,这将被扩展主机的平台的 terminal.integrated.defaultProfile
设置覆盖。请注意,在不支持 shell 的环境中,该值为一个空字符串。
uiKind: UIKind
UI kind 属性指示从哪个 UI 访问扩展。例如,可以从桌面应用程序或网络浏览器访问扩展。
编辑器在操作系统中注册的自定义 uri 方案。
事件
onDidChangeLogLevel: Event<LogLevel>
一个 Event,当编辑器的日志级别改变时触发。
onDidChangeShell: Event<string>
一个 Event,当默认 shell 改变时触发。它会以新的 shell 路径触发。
onDidChangeTelemetryEnabled: Event<boolean>
一个 Event,当用户启用或禁用遥测时触发。如果用户启用了遥测,则为 true
,如果用户禁用了遥测,则为 false
。
函数
asExternalUri(target: Uri): Thenable<Uri>
将 uri 解析为外部可访问的格式。
http:
或 https:
方案
从扩展运行的位置解析一个外部 uri,例如 http:
或 https:
链接,以获得客户端机器上同一资源的 uri。
如果扩展在客户端机器上运行,则此操作为一个无操作。
如果扩展远程运行,则此函数会自动在本地机器上建立一个从本地机器到远程机器上 target
的端口转发隧道,并返回一个指向隧道的本地 uri。端口转发隧道的生命周期由编辑器管理,并且隧道可以由用户关闭。
注意,通过 openExternal
传递的 uri 会自动解析,并且您不应该对它们调用 asExternalUri
。
vscode.env.uriScheme
创建一个 uri,如果在浏览器中打开(例如,通过 openExternal
),将导致一个注册的 UriHandler 触发。
扩展不应该对生成的 uri 做任何假设,也不应该以任何方式改变它。相反,扩展可以例如在身份验证流程中使用此 uri,方法是将 uri 作为回调查询参数添加到要身份验证的服务器。
注意,如果服务器决定向 uri 添加其他查询参数(例如,令牌或密钥),它将出现在传递给 UriHandler 的 uri 中。
身份验证流程的示例
vscode.window.registerUriHandler({
handleUri(uri: vscode.Uri): vscode.ProviderResult<void> {
if (uri.path === '/did-authenticate') {
console.log(uri.toString());
}
}
});
const callableUri = await vscode.env.asExternalUri(
vscode.Uri.parse(vscode.env.uriScheme + '://my.extension/did-authenticate')
);
await vscode.env.openExternal(callableUri);
注意,扩展不应该缓存 asExternalUri
的结果,因为解析后的 uri 可能会由于系统或用户操作而失效——例如,在远程情况下,用户可能会关闭由 asExternalUri
打开的端口转发隧道。
任何其他方案
任何其他方案将被处理,就像提供的 URI 是一个工作区 URI 一样。在这种情况下,该方法将返回一个 URI,当处理时,将使编辑器打开工作区。
createTelemetryLogger(sender: TelemetrySender, options?: TelemetryLoggerOptions): TelemetryLogger
创建一个新的 遥测记录器。
参数 | 描述 |
---|---|
sender: TelemetrySender | 遥测记录器使用的遥测发送器。 |
options?: TelemetryLoggerOptions | 遥测记录器的选项。 |
返回值 | 描述 |
TelemetryLogger | 一个新的遥测记录器 |
openExternal(target: Uri): Thenable<boolean>
使用默认应用程序在外部打开链接。根据使用的方案,这可能是
- 一个浏览器 (
http:
,https:
) - 一个邮件客户端 (
mailto:
) - VSCode 本身 (
vscode:
来自vscode.env.uriScheme
)
注意,showTextDocument 是在编辑器中打开文本文档的正确方法,而不是此函数。
参数 | 描述 |
---|---|
target: Uri | 要打开的 URI。 |
返回值 | 描述 |
Thenable<boolean> | 指示打开是否成功的承诺。 |
扩展
用于处理已安装扩展的命名空间。扩展由 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>[]
系统当前已知的所有扩展。
事件
onDidChange: Event<void>
当 extensions.all
发生变化时触发的事件。这可能发生在安装、卸载、启用或禁用扩展时。
函数
getExtension<T>(extensionId: string): Extension<T> | undefined
通过其完整标识符(以 publisher.name
的形式)获取扩展。
参数 | 描述 |
---|---|
extensionId: string | 一个扩展标识符。 |
返回值 | 描述 |
Extension<T> | undefined | 一个扩展或 |
国际化
用于扩展 API 中本地化相关功能的命名空间。要正确使用此功能,您必须在扩展清单中定义 l10n
,并具有 bundle.l10n。
注意:内置扩展(例如 Git、TypeScript 语言功能、GitHub 身份验证)从 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> | 要用于本地化字符串的参数。参数的索引用于匹配本地化字符串中的模板占位符。 |
返回值 | 描述 |
string | 带有注入参数的本地化字符串。 |
t(message: string, args: Record<string, any>): string
标记字符串以进行本地化。如果 env.language 指定的语言有可用的本地化捆绑包,并且该捆绑包为此消息具有本地化值,则将返回该本地化值(使用注入的 args 值替换任何模板化的值)。
示例
l10n.t('Hello {name}', { name: 'Erich' });
参数 | 描述 |
---|---|
message: string | 要本地化的消息。支持命名模板,其中 |
args: Record<string, any> | 要用于本地化字符串的参数。Record 中键的名称用于匹配本地化字符串中的模板占位符。 |
返回值 | 描述 |
string | 带有注入参数的本地化字符串。 |
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} | 用于本地化消息的选项。 |
返回值 | 描述 |
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[]
获取给定资源的所有诊断信息。
参数 | 描述 |
---|---|
resource: Uri | 一个资源 |
返回值 | 描述 |
Diagnostic[] | 一个 诊断 对象数组或空数组。 |
getDiagnostics(): Array<[Uri, Diagnostic[]]>
获取所有诊断。
参数 | 描述 |
---|---|
返回值 | 描述 |
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 与文档进行匹配。以下规则适用
- 当 DocumentFilter 为空 (
{}
) 时,结果为0
- 当
scheme
、language
、pattern
或notebook
被定义,但其中一个不匹配时,结果为0
- 与
*
匹配得到分数5
,通过相等或 glob 模式匹配得到分数10
- 结果是每个匹配的最大值
- 当 DocumentFilter 为空 (
示例
// 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
注册一个代码操作提供者。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: CodeActionProvider<CodeAction> | 一个代码操作提供者。 |
metadata?: CodeActionProviderMetadata | 关于提供者提供的代码操作类型的元数据。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerCodeLensProvider(selector: DocumentSelector, provider: CodeLensProvider<CodeLens>): Disposable
注册一个代码透镜提供者。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: CodeLensProvider<CodeLens> | 一个代码透镜提供者。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerColorProvider(selector: DocumentSelector, provider: DocumentColorProvider): Disposable
注册一个颜色提供者。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: DocumentColorProvider | 一个颜色提供者。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerCompletionItemProvider(selector: DocumentSelector, provider: CompletionItemProvider<CompletionItem>, ...triggerCharacters: string[]): Disposable
注册一个补全提供者。
可以为一种语言注册多个提供者。在这种情况下,提供者会按它们的 分数 排序,并且相同分数的组会按顺序被询问补全项。当一个或多个组的提供者返回结果时,该过程就会停止。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
补全项提供者可以与一组 triggerCharacters
关联。当键入触发字符时,会请求补全,但只会从注册了键入字符的提供者那里请求。因此,触发字符应该与 单词字符 不同,一个常见的触发字符是 .
,用于触发成员补全。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: CompletionItemProvider<CompletionItem> | 一个补全提供者。 |
...triggerCharacters: string[] | 当用户键入其中一个字符时触发补全。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerDeclarationProvider(selector: DocumentSelector, provider: DeclarationProvider): Disposable
注册一个声明提供者。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: DeclarationProvider | 一个声明提供者。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerDefinitionProvider(selector: DocumentSelector, provider: DefinitionProvider): Disposable
注册一个定义提供者。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: DefinitionProvider | 一个定义提供者。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerDocumentDropEditProvider(selector: DocumentSelector, provider: DocumentDropEditProvider): Disposable
注册一个新的 DocumentDropEditProvider。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: DocumentDropEditProvider | 一个拖放提供者。 |
返回值 | 描述 |
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
注册一个文档链接提供者。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: DocumentLinkProvider<DocumentLink> | 一个文档链接提供者。 |
返回值 | 描述 |
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
注册文档符号提供程序。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
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
注册折叠范围提供程序。
可以为一种语言注册多个提供程序。在这种情况下,将并行询问提供程序,并将结果合并。如果多个折叠范围从同一位置开始,则仅使用第一个注册的提供程序的范围。如果折叠范围与其他具有较小位置的范围重叠,则也会被忽略。
失败的提供程序(拒绝的 promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: FoldingRangeProvider | 折叠范围提供程序。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerHoverProvider(selector: DocumentSelector, provider: HoverProvider): Disposable
注册悬停提供程序。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: HoverProvider | 悬停提供程序。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerImplementationProvider(selector: DocumentSelector, provider: ImplementationProvider): Disposable
注册实现提供程序。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: ImplementationProvider | 实现提供程序。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerInlayHintsProvider(selector: DocumentSelector, provider: InlayHintsProvider<InlayHint>): Disposable
注册内联提示提供程序。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: InlayHintsProvider<InlayHint> | 内联提示提供程序。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerInlineCompletionItemProvider(selector: DocumentSelector, provider: InlineCompletionItemProvider): Disposable
注册内联补全提供程序。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: InlineCompletionItemProvider | 内联补全提供程序。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerInlineValuesProvider(selector: DocumentSelector, provider: InlineValuesProvider): Disposable
注册一个提供程序,该提供程序为调试器的“内联值”功能返回数据。每当通用调试器在源文件中停止时,都会调用为该文件语言注册的提供程序以返回将在编辑器中显示在行末的文本数据。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
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
注册引用提供程序。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: ReferenceProvider | 引用提供程序。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerRenameProvider(selector: DocumentSelector, provider: RenameProvider): Disposable
注册重命名提供程序。
可以为一种语言注册多个提供程序。在这种情况下,提供程序按其分数排序,并按顺序询问。第一个产生结果的提供程序定义了整个操作的结果。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: RenameProvider | 重命名提供程序。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerSelectionRangeProvider(selector: DocumentSelector, provider: SelectionRangeProvider): Disposable
注册选择范围提供程序。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
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
注册类型定义提供者。
可以为一种语言注册多个提供者。在这种情况下,会并行询问提供者,并将结果合并。失败的提供者(拒绝的承诺或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: TypeDefinitionProvider | 类型定义提供者。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerTypeHierarchyProvider(selector: DocumentSelector, provider: TypeHierarchyProvider): Disposable
注册类型层次结构提供者。
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个选择器,定义此提供者适用的文档。 |
provider: TypeHierarchyProvider | 类型层次结构提供者。 |
返回值 | 描述 |
Disposable | 一个 Disposable,当被处置时取消注册此提供程序。 |
registerWorkspaceSymbolProvider(provider: WorkspaceSymbolProvider<SymbolInformation>): Disposable
注册工作区符号提供者。
可以注册多个提供者。在这种情况下,会并行询问提供者并将结果合并。失败的提供者(拒绝的 promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
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,解析为更新后的文档。 |
语言模型
语言模型相关功能的命名空间。
变量
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> | 工具调用的结果。 |
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[]> | 聊天模型数组,可以为空! |
笔记本
笔记本的命名空间。
笔记本功能由三个松散耦合的组件组成
- 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,当被处置时取消注册此提供程序。 |
源代码管理
源代码控制管理的命名空间。
变量
inputBox: SourceControlInputBox
扩展创建的最后一个源代码控制的 输入框。
- 已弃用 - 使用 SourceControl.inputBox 代替
函数
createSourceControl(id: string, label: string, rootUri?: Uri): SourceControl
创建一个新的 源代码控制 实例。
参数 | 描述 |
---|---|
id: string | 源代码控制的 |
label: string | 源代码控制的人类可读字符串。例如: |
rootUri?: Uri | 源代码控制根目录的可选 URI。例如: |
返回值 | 描述 |
SourceControl | 源代码控制 的一个实例。 |
任务
任务功能的命名空间。
变量
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,当被处置时取消注册此提供程序。 |
测试
用于测试功能的命名空间。测试通过注册 TestController 实例,然后添加 TestItems 来发布。控制器还可以通过创建一个或多个 TestRunProfile 实例来描述如何运行测试。
函数
createTestController(id: string, label: string): TestController
创建一个新的测试控制器。
参数 | 描述 |
---|---|
id: string | 控制器的标识符,必须是全局唯一的。 |
label: string | 控制器的可读标签。 |
返回值 | 描述 |
TestController | TestController 的一个实例。 |
窗口
用于处理编辑器当前窗口的命名空间。即可见和活动编辑器,以及用于显示消息、选择和要求用户输入的 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 集成激活或其属性发生变化时触发。
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 集成 激活时触发。
onDidOpenTerminal: Event<Terminal>
一个 Event,当终端创建时触发,无论是通过 createTerminal API 还是命令。
onDidStartTerminalShellExecution: Event<TerminalShellExecutionStartEvent>
当终端命令启动时触发。此事件仅在终端 shell 集成 激活时触发。
函数
createInputBox(): InputBox
创建一个 InputBox,让用户输入一些文本。
注意,在许多情况下,更方便的 window.showInputBox 更易于使用。当 window.showInputBox 不提供所需灵活性时,应使用 window.createInputBox。
createOutputChannel(name: string, languageId?: string): OutputChannel
创建一个新的 输出通道,使用给定的名称和语言 ID。如果未提供语言 ID,则默认使用 Log 作为语言 ID。
您可以从 可见编辑器 或 活动编辑器 访问可见或活动的输出通道作为 文本文档,并使用语言 ID 来贡献语言特性,例如语法着色、代码透镜等。
参数 | 描述 |
---|---|
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.showQuickPick 不提供所需灵活性时,应使用 window.createQuickPick。
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
激活事件。你的扩展必须注册一个 CustomTextEditorProvider、CustomReadonlyEditorProvider、CustomEditorProvider,用于在激活过程中为 viewType
提供服务。
参数 | 描述 |
---|---|
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 | 一个 disposable 对象,用于注销 TreeDataProvider。 |
registerUriHandler(handler: UriHandler): Disposable
注册一个能够处理系统范围内的 uris 的 uri 处理程序。如果有多个窗口打开,最顶层的窗口将处理该 uri。uri 处理程序的范围限定为它所在的扩展程序;它只能处理指向自身扩展程序的 uri。uri 必须遵守以下规则:
- uri-scheme 必须是
vscode.env.uriScheme
; - uri-authority 必须是扩展程序 ID(例如
my.extension
); - uri-path、-query 和 -fragment 部分是任意的。
例如,如果 my.extension
扩展程序注册了一个 uri 处理程序,则它只能处理以 product-name://my.extension
为前缀的 uri。
扩展程序在其整个激活生命周期内只能注册一个 uri 处理程序。
- 注意: 有一个激活事件
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
在状态栏中设置一条消息。这是对更强大的状态栏 items 的简写。
参数 | 描述 |
---|---|
text: string | 要显示的消息,支持状态栏 items 中的图标替换。 |
hideAfterTimeout: number | 消息在多长时间后自动消失,单位为毫秒。 |
返回值 | 描述 |
Disposable | 隐藏状态栏消息的 Disposable 对象。 |
setStatusBarMessage(text: string, hideWhenDone: Thenable<any>): Disposable
在状态栏中设置一条消息。这是对更强大的状态栏 items 的简写。
参数 | 描述 |
---|---|
text: string | 要显示的消息,支持状态栏 items 中的图标替换。 |
hideWhenDone: Thenable<any> | 在该 Thenable 对象完成(解析或拒绝)后,消息将消失。 |
返回值 | 描述 |
Disposable | 隐藏状态栏消息的 Disposable 对象。 |
setStatusBarMessage(text: string): Disposable
在状态栏中设置一条消息。这是对更强大的状态栏 items 的简写。
注意 状态栏消息会堆叠,并且在不再使用时必须对其进行处理。
参数 | 描述 |
---|---|
text: string | 要显示的消息,支持状态栏 items 中的图标替换。 |
返回值 | 描述 |
Disposable | 隐藏状态栏消息的 Disposable 对象。 |
showErrorMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>
显示一条错误消息。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showErrorMessage<T extends string>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
显示一条错误消息。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
options: MessageOptions | 配置消息的行为。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showErrorMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T | undefined>
显示一条错误消息。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showErrorMessage<T extends MessageItem>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
显示一条错误消息。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
options: MessageOptions | 配置消息的行为。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showInformationMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>
向用户显示一条信息消息。可以选择提供一个项目数组,这些项目将以可点击按钮的形式呈现。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showInformationMessage<T extends string>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
向用户显示一条信息消息。可以选择提供一个项目数组,这些项目将以可点击按钮的形式呈现。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
options: MessageOptions | 配置消息的行为。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showInformationMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T | undefined>
显示一条信息消息。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showInformationMessage<T extends MessageItem>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
显示一条信息消息。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
options: MessageOptions | 配置消息的行为。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showInputBox(options?: InputBoxOptions, token?: CancellationToken): Thenable<string | undefined>
打开一个输入框以询问用户输入。
如果输入框被取消(例如按 ESC),则返回值将为undefined
。否则,返回值将是用户键入的字符串,或者如果用户没有键入任何内容但使用 OK 关闭了输入框,则返回值将为空字符串。
参数 | 描述 |
---|---|
options?: InputBoxOptions | 配置输入框的行为。 |
token?: CancellationToken | 可以用来发出取消信号的标记。 |
返回值 | 描述 |
Thenable<string | undefined> | 一个承诺,它解析为用户提供的字符串或在取消的情况下解析为 |
showNotebookDocument(document: NotebookDocument, options?: NotebookDocumentShowOptions): Thenable<NotebookEditor>
在笔记本编辑器中显示给定的NotebookDocument。
参数 | 描述 |
---|---|
document: NotebookDocument | 要显示的文本文档。 |
options?: NotebookDocumentShowOptions | |
返回值 | 描述 |
Thenable<NotebookEditor> | 一个承诺,它解析为一个笔记本编辑器。 |
showOpenDialog(options?: OpenDialogOptions): Thenable<Uri[] | undefined>
向用户显示一个文件打开对话框,允许用户选择一个文件以供打开。
参数 | 描述 |
---|---|
options?: OpenDialogOptions | 控制对话框的选项。 |
返回值 | 描述 |
Thenable<Uri[] | undefined> | 一个承诺,它解析为选定的资源或 |
showQuickPick(items: readonly string[] | Thenable<readonly string[]>, options: QuickPickOptions & {canPickMany: true}, token?: CancellationToken): Thenable<string[] | undefined>
显示一个允许多选的选择列表。
参数 | 描述 |
---|---|
items: readonly string[] | Thenable<readonly string[]> | 一个字符串数组或解析为字符串数组的承诺。 |
options: QuickPickOptions & {canPickMany: true} | 配置选择列表的行为。 |
token?: CancellationToken | 可以用来发出取消信号的标记。 |
返回值 | 描述 |
Thenable<string[] | undefined> | 一个承诺,它解析为选定的项目或 |
showQuickPick(items: readonly string[] | Thenable<readonly string[]>, options?: QuickPickOptions, token?: CancellationToken): Thenable<string | undefined>
显示一个选择列表。
参数 | 描述 |
---|---|
items: readonly string[] | Thenable<readonly string[]> | 一个字符串数组或解析为字符串数组的承诺。 |
options?: QuickPickOptions | 配置选择列表的行为。 |
token?: CancellationToken | 可以用来发出取消信号的标记。 |
返回值 | 描述 |
Thenable<string | undefined> | 一个承诺,它解析为选择或 |
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[]> | 一个项目数组或解析为项目数组的承诺。 |
options: QuickPickOptions & {canPickMany: true} | 配置选择列表的行为。 |
token?: CancellationToken | 可以用来发出取消信号的标记。 |
返回值 | 描述 |
Thenable<T[] | undefined> | 一个承诺,它解析为选定的项目或 |
showQuickPick<T extends QuickPickItem>(items: readonly T[] | Thenable<readonly T[]>, options?: QuickPickOptions, token?: CancellationToken): Thenable<T | undefined>
显示一个选择列表。
参数 | 描述 |
---|---|
items: readonly T[] | Thenable<readonly T[]> | 一个项目数组或解析为项目数组的承诺。 |
options?: QuickPickOptions | 配置选择列表的行为。 |
token?: CancellationToken | 可以用来发出取消信号的标记。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个承诺,它解析为选定的项目或 |
showSaveDialog(options?: SaveDialogOptions): Thenable<Uri | undefined>
向用户显示一个文件保存对话框,允许用户选择一个文件以供保存。
参数 | 描述 |
---|---|
options?: SaveDialogOptions | 控制对话框的选项。 |
返回值 | 描述 |
Thenable<Uri | undefined> | 一个承诺,它解析为选定的资源或 |
showTextDocument(document: TextDocument, column?: ViewColumn, preserveFocus?: boolean): Thenable<TextEditor>
参数 | 描述 |
---|---|
document: TextDocument | 要显示的文本文档。 |
column?: ViewColumn | 应该显示编辑器的视图列。默认值为活动。根据需要会创建不存在的列,直到最大值为ViewColumn.Nine。使用ViewColumn.Beside在当前活动编辑器的旁边打开编辑器。 |
preserveFocus?: boolean | 如果为 |
返回值 | 描述 |
Thenable<TextEditor> | 一个承诺,它解析为一个编辑器。 |
showTextDocument(document: TextDocument, options?: TextDocumentShowOptions): Thenable<TextEditor>
参数 | 描述 |
---|---|
document: TextDocument | 要显示的文本文档。 |
options?: TextDocumentShowOptions | |
返回值 | 描述 |
Thenable<TextEditor> | 一个承诺,它解析为一个编辑器。 |
showTextDocument(uri: Uri, options?: TextDocumentShowOptions): Thenable<TextEditor>
openTextDocument(uri).then(document => showTextDocument(document, options))
的简写。
参数 | 描述 |
---|---|
uri: Uri | 资源标识符。 |
options?: TextDocumentShowOptions | |
返回值 | 描述 |
Thenable<TextEditor> | 一个承诺,它解析为一个编辑器。 |
showWarningMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>
显示警告消息。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showWarningMessage<T extends string>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
显示警告消息。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
options: MessageOptions | 配置消息的行为。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showWarningMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T | undefined>
显示警告消息。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showWarningMessage<T extends MessageItem>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
显示警告消息。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
options: MessageOptions | 配置消息的行为。 |
...items: T[] | 一组项目,将在消息中以操作形式呈现。 |
返回值 | 描述 |
Thenable<T | undefined> | 一个 Thenable 对象,它将解析为选定的项目,或者在被关闭时解析为 |
showWorkspaceFolderPick(options?: WorkspaceFolderPickOptions): Thenable<WorkspaceFolder | undefined>
显示一个工作区文件夹的选择列表以供选择。如果未打开任何文件夹,则返回undefined
。
参数 | 描述 |
---|---|
options?: WorkspaceFolderPickOptions | 配置工作区文件夹列表的行为。 |
返回值 | 描述 |
Thenable<WorkspaceFolder | undefined> | 一个承诺,解析为工作区文件夹或 |
withProgress<R>(options: ProgressOptions, task: (progress: Progress<{increment: number, message: string}>, token: CancellationToken) => Thenable<R>): Thenable<R>
在编辑器中显示进度。在运行给定的回调函数时,以及它返回的承诺没有被解析或拒绝时,都会显示进度。进度应显示的位置(以及其他细节)通过传递的ProgressOptions定义。
参数 | 描述 |
---|---|
options: ProgressOptions | 一个ProgressOptions对象,描述用于显示进度的选项,如它的位置。 |
task: (progress: Progress<{increment: number, message: string}>, token: CancellationToken) => Thenable<R> | 一个返回承诺的回调函数。可以使用提供的Progress对象报告进度状态。 要报告离散进度,请使用 要监控操作是否被用户取消,请使用提供的CancellationToken。请注意,目前只有 |
返回值 | 描述 |
Thenable<R> | 任务回调返回的承诺。 |
withScmProgress<R>(task: (progress: Progress<number>) => Thenable<R>): Thenable<R>
在运行给定的回调函数时,以及它返回的承诺没有被解析或拒绝时,在源代码管理视图中显示进度。
- 已弃用 - 请改用
withProgress
。
工作区
用于处理当前工作区的命名空间。工作区是在一个编辑器窗口(实例)中打开的一个或多个文件夹的集合。
也可以在没有工作区的情况下打开编辑器。例如,当你通过从平台的文件菜单中选择文件来打开一个新的编辑器窗口时,你将不会处于工作区内。在这种模式下,编辑器的一些功能会减弱,但你仍然可以打开文本文件并进行编辑。
有关工作区概念的更多信息,请参阅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: 只读 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 | 一个新的文件系统监视器实例。如果不再需要,则必须对其进行处置。 |
findFiles(include: GlobPattern, exclude?: GlobPattern, maxResults?: number, token?: CancellationToken): Thenable<Uri[]>
参数 | 描述 |
---|---|
include: GlobPattern | |
exclude?: GlobPattern | 一个 glob 模式,它定义要排除的文件和文件夹。glob 模式将与结果匹配项相对于其工作区的文件路径相匹配。当为 |
maxResults?: number | 结果的上限。 |
token?: CancellationToken | 一个令牌,可用于向底层搜索引擎发出取消信号。 |
返回值 | 描述 |
Thenable<Uri[]> | 一个解析为资源标识符数组的可执行对象。如果未打开任何 工作区文件夹,则将不返回任何结果。 |
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> | 一个解析为 笔记本 的承诺 |
openNotebookDocument(notebookType: string, content?: NotebookData): Thenable<NotebookDocument>
打开一个无标题笔记本。当要保存文档时,编辑器会提示用户输入文件路径。
参数 | 描述 |
---|---|
notebookType: string | 要使用的笔记本类型。 |
content?: NotebookData | 笔记本的初始内容。 |
返回值 | 描述 |
Thenable<NotebookDocument> | 一个解析为 笔记本 的承诺。 |
openTextDocument(uri: Uri): Thenable<TextDocument>
打开一个文档。如果此文档已打开,将提前返回。否则,将加载文档,并且 didOpen 事件会触发。
文档由一个 Uri 表示。根据 scheme ,将应用以下规则
file
方案:打开磁盘上的文件 (openTextDocument(Uri.file(path))
)。如果文件不存在或无法加载,将被拒绝。untitled
方案:打开一个具有关联路径的空白无标题文件 (openTextDocument(Uri.file(path).with({ scheme: 'untitled' }))
)。语言将从文件名推断。- 对于所有其他方案,将咨询已贡献的 文本文档内容提供程序 和 文件系统提供程序。
注意 返回的文档的生命周期由编辑器所有,而不是由扩展所有。这意味着 onDidClose 事件可以在打开它后的任何时间发生。
参数 | 描述 |
---|---|
uri: Uri | 标识要打开的资源。 |
返回值 | 描述 |
Thenable<TextDocument> | 一个解析为 document 的 Promise。 |
openTextDocument(path: string): Thenable<TextDocument>
openTextDocument(Uri.file(path))
的简写。
参数 | 描述 |
---|---|
path: string | 磁盘上文件的路径。 |
返回值 | 描述 |
Thenable<TextDocument> | 一个解析为 document 的 Promise。 |
openTextDocument(options?: {content: string, language: string}): Thenable<TextDocument>
打开一个无标题文本文档。当保存文档时,编辑器会提示用户输入文件路径。options
参数允许指定文档的语言和/或内容。
参数 | 描述 |
---|---|
options?: {content: string, language: string} | 控制文档创建方式的选项。 |
返回值 | 描述 |
Thenable<TextDocument> | 一个解析为 document 的 Promise。 |
registerFileSystemProvider(scheme: string, provider: FileSystemProvider, options?: {isCaseSensitive: boolean, isReadonly: boolean | MarkdownString}): Disposable
为给定的方案注册一个文件系统提供程序,例如 ftp
。
每个方案只能有一个提供程序,当某个方案已被另一个提供程序声明或被保留时,将抛出错误。
参数 | 描述 |
---|---|
scheme: string | 提供程序注册的 uri-scheme。 |
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-scheme。 |
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
此方法用 workspaceFoldersToAdd
的可选集合替换 vscode.workspace.workspaceFolders
数组中从索引 start
开始的 deleteCount
个 工作区文件夹 。此“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 时要使用的可选选项。
属性
当我们要求重新验证时,将显示给用户的可选消息。提供有关你要求用户重新验证的原因的更多上下文可以帮助提高他们接受的可能性。
AuthenticationGetSessionOptions
属性
account?: AuthenticationSessionAccountInformation
您要为其获取会话的帐户。 这将传递给身份验证提供程序,用于创建正确的会话。
clearSessionPreference?: boolean
是否应该清除现有的会话偏好。
对于支持同时登录多个帐户的身份验证提供程序,当调用 getSession 时,系统会提示用户选择要使用的帐户。 此偏好将一直保留,直到使用此标志调用 getSession 为止。
注意:偏好是特定于扩展的。 因此,如果一个扩展调用 getSession,它将不会影响另一个扩展调用 getSession 的会话偏好。 此外,该偏好是针对当前工作区和全局设置的。 这意味着新工作区将首先使用“全局”值,然后在提供此标志时,可以为该工作区设置新值。 这也意味着,如果新工作区设置了此标志,先前存在的工作区不会丢失其偏好。
默认为 false。
如果不存在匹配的会话,是否应该执行登录。
如果为 true,将显示一个模态对话框,要求用户登录。 如果为 false,帐户活动栏图标上将显示一个编号徽章。 将在菜单下添加一个扩展条目以登录。 这允许以静默方式提示用户登录。
如果存在匹配的会话,但扩展未获得对该会话的访问权限,则将此设置为 true 也会导致立即显示模态对话框,而 false 会在帐户图标上添加一个编号徽章。
默认为 false。
注意:您无法将此选项与 silent 结合使用。
forceNewSession?: boolean | AuthenticationForceNewSessionOptions
即使已经有会话可用,我们是否应该尝试重新验证。
如果为 true,将显示一个模态对话框,要求用户再次登录。 这主要用于令牌需要重新铸造的场景,因为令牌已失去某些授权。
如果不存在现有会话并且 forceNewSession 为 true,它的行为与 createIfNone 相同。
这默认为 false。
我们是否应该在帐户菜单中显示登录指示。
如果为 false,用户将在帐户菜单上看到一个徽章,其中包含一个用于扩展登录的选项。 如果为 true,将不显示任何指示。
默认为 false。
注意:您无法将此选项与任何其他提示用户的选项结合使用,例如 createIfNone。
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
一个 Event,它在添加、删除或更改 AuthenticationSession 时触发。
属性
added: readonly AuthenticationSession[]
已添加的 身份验证提供程序 的 AuthenticationSessions。
changed: readonly AuthenticationSession[]
已更改的 身份验证提供程序 的 AuthenticationSessions。 当会话数据(不包括 ID)更新时,会话会发生更改。 例如,会话刷新会导致为会话设置新的访问令牌。
removed: readonly AuthenticationSession[]
已删除的 身份验证提供程序 的 AuthenticationSessions。
AuthenticationProviderInformation
有关 身份验证提供程序 的基本信息
属性
身份验证提供程序的唯一标识符。
身份验证提供程序的可读名称。
AuthenticationProviderOptions
用于创建 AuthenticationProvider 的选项。
属性
supportsMultipleAccounts?: boolean
是否可以使用此提供程序同时登录多个帐户。 如果未指定,将默认为 false。
AuthenticationProviderSessionOptions
属性
account?: AuthenticationSessionAccountInformation
正在查询的帐户。 如果传入此参数,提供程序应尝试返回仅与该帐户相关的会话。
AuthenticationSession
表示当前登录用户的会话。
属性
访问令牌。
account: AuthenticationSessionAccountInformation
与会话关联的帐户。
身份验证会话的标识符。
会话访问令牌授予的权限。 可用范围由 AuthenticationProvider 定义。
AuthenticationSessionAccountInformation
与 AuthenticationSession 关联的帐户的信息。
属性
帐户的唯一标识符。
帐户的可读名称。
AuthenticationSessionsChangeEvent
一个 Event,它在添加、删除或更改 AuthenticationSession 时触发。
属性
provider: AuthenticationProviderInformation
已更改其会话的 AuthenticationProvider。
AutoClosingPair
描述字符串对,其中在键入起始字符串时会自动插入结束字符串。
属性
键入起始字符串时会自动插入的结束字符串。
notIn?: SyntaxTokenType[]
不应自动关闭该对的标记集。
将触发自动插入结束字符串的字符串。
BranchCoverage
包含 StatementCoverage 分支的覆盖率信息。
构造函数
new BranchCoverage(executed: number | boolean, location?: Range | Position, label?: string): BranchCoverage
参数 | 描述 |
---|---|
executed: number | boolean | 此分支执行的次数,或布尔值,指示如果确切的计数未知,它是否已执行。 如果为零或假,则该分支将被标记为未覆盖。 |
location?: Range | Position | 分支位置。 |
label?: string | |
返回值 | 描述 |
BranchCoverage |
属性
此分支执行的次数,或布尔值,指示如果确切的计数未知,它是否已执行。 如果为零或假,则该分支将被标记为未覆盖。
分支的标签,例如在“${label} 分支未被执行”的上下文中使用。
分支位置。
Breakpoint
所有断点类型的基类。
构造函数
new Breakpoint(enabled?: boolean, condition?: string, hitCondition?: string, logMessage?: string): Breakpoint
创建一个新的断点
参数 | 描述 |
---|---|
enabled?: boolean | 断点是否启用。 |
condition?: string | 条件断点的表达式 |
hitCondition?: string | 控制忽略多少次断点命中次数的表达式 |
logMessage?: string | 断点命中时显示的日志消息 |
返回值 | 描述 |
Breakpoint |
属性
条件断点的可选表达式。
断点是否启用。
控制忽略多少次断点命中次数的可选表达式。
断点的唯一 ID。
此断点命中时记录的可选消息。 {} 中的嵌入式表达式由调试适配器插值。
BreakpointsChangeEvent
描述 断点 集变化的事件。
属性
added: readonly Breakpoint[]
添加的断点。
changed: readonly Breakpoint[]
更改的断点。
removed: readonly Breakpoint[]
删除的断点。
CallHierarchyIncomingCall
表示传入调用,例如方法或构造函数的调用者。
构造函数
new CallHierarchyIncomingCall(item: CallHierarchyItem, fromRanges: Range[]): CallHierarchyIncomingCall
创建一个新的调用对象。
参数 | 描述 |
---|---|
item: CallHierarchyItem | 进行调用的项。 |
fromRanges: Range[] | 调用出现的范围。 |
返回值 | 描述 |
CallHierarchyIncomingCall |
属性
from: CallHierarchyItem
进行调用的项。
fromRanges: Range[]
调用出现的范围。 这是相对于由 this.from 表示的调用者而言的。
CallHierarchyItem
表示调用层次结构上下文中类似于函数或构造函数的编程结构。
构造函数
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 | |
返回值 | 描述 |
CallHierarchyItem |
属性
此项目的更多详细信息,例如函数的签名。
kind: SymbolKind
此项目的种类。
此项目的名称。
range: Range
包含此符号的范围,不包括前导/尾随空格,但包含其他所有内容,例如注释和代码。
selectionRange: Range
当选择此符号时应选择和显示的范围,例如函数的名称。 必须包含在 range 中。
tags?: readonly Deprecated[]
此项目的标签。
uri: Uri
此项目的资源标识符。
CallHierarchyOutgoingCall
表示传出调用,例如从方法调用 getter 或从构造函数调用方法等。
构造函数
new CallHierarchyOutgoingCall(item: CallHierarchyItem, fromRanges: Range[]): CallHierarchyOutgoingCall
创建一个新的调用对象。
参数 | 描述 |
---|---|
item: CallHierarchyItem | 被调用的项 |
fromRanges: Range[] | 调用出现的范围。 |
返回值 | 描述 |
CallHierarchyOutgoingCall |
属性
fromRanges: Range[]
此项被调用的范围。这是相对于调用者的范围,例如传递给 provideCallHierarchyOutgoingCalls 的项,而不是 this.to。
被调用的项。
CallHierarchyProvider
调用层次结构提供程序接口描述了扩展与调用层次结构功能之间的契约,该功能允许浏览函数、方法、构造函数等的调用和调用者。
方法
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。可以通过返回 |
CancellationError
一种错误类型,应该用于表示取消操作。
这种类型可以在响应 取消令牌 被取消或操作被操作执行者取消时使用。
构造函数
new CancellationError(): CancellationError
创建一个新的取消错误。
参数 | 描述 |
---|---|
返回值 | 描述 |
CancellationError |
CancellationToken
取消令牌传递给异步或长时间运行的操作,以请求取消,例如因为用户继续输入而取消对完成项的请求。
要获取CancellationToken
的实例,请使用 CancellationTokenSource。
属性
isCancellationRequested: boolean
当令牌被取消时为true
,否则为false
。
onCancellationRequested: Event<any>
一个 Event,它在取消时触发。
CancellationTokenSource
取消源创建和控制 取消令牌。
构造函数
new CancellationTokenSource(): CancellationTokenSource
参数 | 描述 |
---|---|
返回值 | 描述 |
CancellationTokenSource |
属性
token: CancellationToken
此源的取消令牌。
方法
在令牌上发出取消信号。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
释放对象并释放资源。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
CharacterPair
两个字符的元组,例如一对开括号和闭括号。
CharacterPair: [string, string]
ChatContext
传递给参与者的额外上下文。
属性
history: ReadonlyArray<ChatRequestTurn | ChatResponseTurn>
当前聊天会话中到目前为止的所有聊天消息。目前,只包含当前参与者的聊天消息。
ChatErrorDetails
表示聊天请求的错误结果。
属性
显示给用户的错误消息。
如果设置为 true,则响应将被部分模糊。
ChatFollowup
参与者建议的后续问题。
属性
默认情况下,后续操作将转到相同的参与者/命令。但是,可以将此属性设置为调用不同的命令。
显示给用户的标题。当未指定此属性时,将显示提示。
默认情况下,后续操作将转到相同的参与者/命令。但是,可以将此属性设置为通过 ID 调用不同的参与者。后续操作只能调用由同一扩展贡献的参与者。
发送到聊天的消息。
ChatFollowupProvider
将在每次请求后被调用一次,以获取建议的后续问题,以显示给用户。用户可以点击后续问题将其发送到聊天。
方法
provideFollowups(result: ChatResult, context: ChatContext, token: CancellationToken): ProviderResult<ChatFollowup[]>
提供给定结果的后续操作。
参数 | 描述 |
---|---|
result: ChatResult | 此对象具有与从参与者回调返回的结果相同的属性,包括 |
context: ChatContext | 传递给参与者的额外上下文。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<ChatFollowup[]> |
ChatLanguageModelToolReference
引用用户手动附加到其请求的工具,可以通过 `#` 语法在行内使用,也可以通过回形针按钮作为附件附加。
属性
工具名称。引用 lm.tools 中列出的工具。
range?: [start: number, end: number]
引用在 prompt 中的起始和结束索引。当未定义时,引用不是提示文本的一部分。
注意,索引考虑了前导 `#` 字符,这意味着它们可以用于按原样修改提示。
ChatParticipant
聊天参与者可以通过用户在聊天会话中使用 ` ` 前缀来调用。当调用它时,它将处理聊天请求,并独自负责向用户提供响应。聊天参与者使用 chat.createChatParticipant 创建。
事件
onDidReceiveFeedback: Event<ChatResultFeedback>
每当收到结果的反馈时都会触发的事件,例如,当用户对结果进行向上或向下投票时。
传递的 result 保证具有与先前从该聊天参与者的处理程序返回的结果相同的属性。
属性
followupProvider?: ChatFollowupProvider
此提供程序将在每次请求后被调用一次,以检索建议的后续问题。
iconPath?: Uri | ThemeIcon | {dark: Uri, light: Uri}
在 UI 中显示的参与者的图标。
此参与者的唯一 ID。
requestHandler: ChatRequestHandler
对此参与者的请求的处理程序。
方法
处置此参与者并释放资源。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
ChatParticipantToolToken
在处理聊天请求的上下文中调用工具时,可以将其传递给 lm.invokeTool 的令牌。
ChatParticipantToolToken: never
ChatPromptReference
对用户添加到其聊天请求的值的引用。
属性
此类引用的唯一标识符。
此值的描述,可用于 LLM 提示。
range?: [start: number, end: number]
引用在 prompt 中的起始和结束索引。当未定义时,引用不是提示文本的一部分。
注意,索引考虑了前导 `#` 字符,这意味着它们可以用于按原样修改提示。
此引用的值。`string | Uri | Location` 类型在今天使用,但将来可能会扩展。
ChatRequest
对聊天参与者的请求。
属性
为此请求选择的 [ChatCommand 命令](#ChatCommand 命令) 的名称。
model: LanguageModelChat
这是当前在 UI 中选择的模型。扩展可以使用它或使用 chat.selectChatModels 选择另一个模型。不要在请求的生命周期之外保留它。
用户输入的提示。
有关在此请求中使用的引用的信息存储在 ChatRequest.references 中。
注意,[ChatParticipant.name 名称](#ChatParticipant.name 名称) 和 [ChatCommand.name 命令](#ChatCommand.name 命令) 不是提示的一部分。
references: readonly ChatPromptReference[]
提示中引用的引用列表及其值。
注意,提示包含用户编写的引用,参与者有责任进一步修改提示,例如通过内联引用值或创建指向包含已解析值的标题的链接。引用按其在提示中的范围反向排序。这意味着提示中的最后一个引用是此列表中的第一个。这简化了提示的字符串操作。
在处理聊天请求的上下文中调用工具时,可以将其传递给 lm.invokeTool 的令牌。这将工具调用与聊天会话关联起来。
toolReferences: readonly ChatLanguageModelToolReference[]
用户附加到其请求的工具列表。
当工具引用存在时,聊天参与者应使用 LanguageModelChatToolMode.Required 发出聊天请求,以强制语言模型为工具生成输入。然后,参与者可以使用 lm.invokeTool 使用工具将结果附加到其对用户提示的请求中。该工具可能会为用户请求提供有用的额外上下文。
ChatRequestHandler
ChatRequestHandler: (request: ChatRequest, context: ChatContext, response: ChatResponseStream, token: CancellationToken) => ProviderResult<ChatResult | void>
ChatRequestTurn
表示聊天历史记录中的用户请求。
属性
为此请求选择的 [ChatCommand 命令](#ChatCommand 命令) 的名称。
此请求指向的聊天参与者的 id。
用户输入的提示。
有关在此请求中使用的引用的信息存储在 ChatRequestTurn.references 中。
注意,[ChatParticipant.name 名称](#ChatParticipant.name 名称) 和 [ChatCommand.name 命令](#ChatCommand.name 命令) 不是提示的一部分。
references: ChatPromptReference[]
在此消息中使用的引用。
toolReferences: readonly ChatLanguageModelToolReference[]
附加到此请求的工具列表。
ChatResponseAnchorPart
表示聊天响应的一部分,它是锚点,呈现为指向目标的链接。
构造函数
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?: Uri | ThemeIcon | {dark: Uri, light: Uri}): ChatResponseReferencePart
创建一个新的 ChatResponseReferencePart。
属性
iconPath?: Uri | ThemeIcon | {dark: Uri, light: Uri}
引用的图标。
引用目标。
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?: Uri | ThemeIcon | {dark: Uri, light: Uri}): 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> | 解析为字符串的可执行对象。 |
writeText(value: string): Thenable<void>
将文本写入剪贴板。
参数 | 描述 |
---|---|
value: string | |
返回值 | 描述 |
Thenable<void> | 写入完成后解析的可执行对象。 |
CodeAction
构造函数
new CodeAction(title: string, kind?: CodeActionKind): CodeAction
参数 | 描述 |
---|---|
title: string | 代码操作的标题。 |
kind?: CodeActionKind | 代码操作的种类。 |
返回值 | 描述 |
CodeAction |
属性
command?: Command
此代码操作执行的 Command。
如果此命令引发异常,编辑器会在当前光标位置向用户显示异常消息。
diagnostics?: Diagnostic[]
此代码操作解决的 Diagnostics。
标记代码操作当前无法应用。
禁用的代码操作不会显示在自动 lightbulb 代码操作菜单中。
当用户请求更具体的代码操作类型(例如重构)时,禁用的操作会在代码操作菜单中显示为淡出。
如果用户有一个 keybinding 自动应用代码操作,并且只返回禁用的代码操作,编辑器将向用户显示包含
reason
的错误消息。
参数 | 描述 |
---|---|
reason: string | 代码操作当前被禁用的可读描述。 这将显示在代码操作 UI 中。 |
edit?: WorkspaceEdit
此代码操作执行的 workspace edit。
将此标记为首选操作。首选操作由 auto fix
命令使用,并且可以由键绑定目标化。
如果快速修复正确地解决了潜在的错误,则应将其标记为首选。如果重构是采取的最合理的行动选择,则应将其标记为首选。
kind?: CodeActionKind
Kind of the code action.
Used to filter code actions.
此代码操作的简短、人性化的标题。
CodeActionContext
包含有关运行 code action 的上下文的其他诊断信息。
属性
diagnostics: readonly Diagnostic[]
诊断数组。
only: CodeActionKind
请求返回的操作类型。
不是这种类型的操作会在被 lightbulb 显示之前被过滤掉。
triggerKind: CodeActionTriggerKind
请求代码操作的原因。
CodeActionKind
代码操作的种类。
种类是通过 .
分隔的标识符的层次列表,例如 "refactor.extract.function"
。
代码操作种类由编辑器用于 UI 元素,例如重构上下文菜单。用户还可以使用 editor.action.codeAction
命令触发特定种类的代码操作。
静态
Empty: CodeActionKind
空的种类。
Notebook: CodeActionKind
适用于整个笔记本范围的所有代码操作的基本种类。使用此代码操作种类的代码操作种类应始终以 notebook.
开头。
这要求为它创建新的代码操作,并通过扩展进行贡献。现有的种类不能简单地添加新的 notebook.
前缀,因为该功能对整个笔记本范围是独一无二的。
笔记本代码操作种类可以初始化为以下任一(两者都导致 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 | 要检查的类型。 |
返回值 | 描述 |
boolean |
intersects(other: CodeActionKind): boolean
检查此代码操作类型是否与 other
相交。
例如,类型 "refactor.extract"
与 refactor
、"refactor.extract"
和 "refactor.extract.function"
相交,但不与 "unicorn.refactor.extract"
、"refactor.extractAll"
相交。
参数 | 描述 |
---|---|
other: CodeActionKind | 要检查的类型。 |
返回值 | 描述 |
boolean |
CodeActionProvider<T>
为代码提供上下文操作。代码操作通常用于修复问题或美化/重构代码。
代码操作以多种方式呈现给用户
方法
provideCodeActions(document: TextDocument, range: Range | Selection, context: CodeActionContext, token: CancellationToken): ProviderResult<Array<Command | T>>
获取文档中给定范围的代码操作。
只返回与用户针对请求范围相关的代码操作。还要考虑返回的代码操作如何在 UI 中显示。例如,灯泡小部件和 Refactor
命令会将返回的代码操作显示为列表,因此不要返回大量会让用户不知所措的代码操作。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令的文档。 |
range: Range | Selection | 调用命令的选择器或范围。如果在当前活动的编辑器中请求操作,则这始终是 选择。 |
context: CodeActionContext | 提供有关正在请求哪些代码操作的更多信息。您可以使用它来查看编辑器正在请求什么特定类型的代码操作,以便返回更相关的操作并避免返回编辑器会丢弃的不相关的代码操作。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<Array<Command | T>> | 代码操作数组,例如快速修复或重构。可以通过返回 出于遗留原因,我们也支持返回 |
resolveCodeAction(codeAction: T, token: CancellationToken): ProviderResult<T>
给定代码操作,填充其 edit 属性。对所有其他属性(如标题)的更改都会被忽略。具有编辑的代码操作将不会被解析。
注意,返回命令而不是代码操作的代码操作提供者无法成功实现此函数。返回命令已过时,应改为返回代码操作。
参数 | 描述 |
---|---|
codeAction: T | 代码操作。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<T> | 已解析的代码操作或解析为该操作的可执行对象。可以返回给定的 |
CodeActionProviderMetadata
有关 CodeActionProvider 提供的代码操作类型的元数据。
属性
documentation?: ReadonlyArray<{command: Command, kind: CodeActionKind}>
一类代码操作的静态文档。
如果满足以下任一条件,则提供者提供的文档将显示在代码操作菜单中
编辑器请求
kind
的代码操作。在这种情况下,编辑器将显示与请求的代码操作类型最匹配的文档。例如,如果提供者对Refactor
和RefactorExtract
都有文档,当用户请求RefactorExtract
的代码操作时,编辑器将使用RefactorExtract
的文档,而不是Refactor
的文档。提供者返回
kind
的任何代码操作。
每个提供者最多只会显示一个文档条目。
providedCodeActionKinds?: readonly CodeActionKind[]
CodeActionKinds 列表,CodeActionProvider 可能返回这些列表。
此列表用于确定是否应调用给定的 CodeActionProvider
。为了避免不必要的计算,每个 CodeActionProvider
都应该列出使用 providedCodeActionKinds
。类型的列表可以是通用的,例如 [CodeActionKind.Refactor]
,也可以列出提供的每个类型,例如 [CodeActionKind.Refactor.Extract.append('function'), CodeActionKind.Refactor.Extract.append('constant'), ...]
。
CodeActionTriggerKind
请求代码操作的原因。
枚举成员
代码操作是由用户或扩展显式请求的。
代码操作是自动请求的。
这通常发生在文件中的当前选择内容发生更改时,但也可以在文件内容发生更改时触发。
CodeLens
构造函数
new CodeLens(range: Range, command?: Command): CodeLens
属性
command?: Command
此代码透镜代表的命令。
当存在关联命令时为true
。
range: Range
此代码透镜有效的范围。应仅跨越单行。
CodeLensProvider<T>
代码透镜提供程序将命令添加到源代码文本。这些命令将显示为源代码文本之间专用的水平线。
事件
onDidChangeCodeLenses?: Event<void>
一个可选事件,用于指示此提供程序的代码透镜已更改。
方法
provideCodeLenses(document: TextDocument, token: CancellationToken): ProviderResult<T[]>
参数 | 描述 |
---|---|
document: TextDocument | 调用命令的文档。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<T[]> | 代码透镜数组或解析为该数组的 thenable。可以通过返回 |
resolveCodeLens(codeLens: T, token: CancellationToken): ProviderResult<T>
此函数将针对每个可见代码透镜调用,通常在滚动和调用compute-透镜之后。
参数 | 描述 |
---|---|
codeLens: T | 必须解析的代码透镜。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<T> | 给定的已解析代码透镜或解析为该透镜的 thenable。 |
Color
表示 RGBA 空间中的颜色。
构造函数
new Color(red: number, green: number, blue: number, alpha: number): Color
创建一个新的颜色实例。
参数 | 描述 |
---|---|
red: number | 红色分量。 |
green: number | 绿色分量。 |
blue: number | 蓝色分量。 |
alpha: number | alpha 分量。 |
返回值 | 描述 |
Color |
属性
此颜色的 alpha 分量,范围为[0-1]
。
此颜色的蓝色分量,范围为[0-1]
。
此颜色的绿色分量,范围为[0-1]
。
此颜色的红色分量,范围为[0-1]
。
ColorInformation
表示文档中的颜色范围。
构造函数
new ColorInformation(range: Range, color: Color): ColorInformation
创建一个新的颜色范围。
参数 | 描述 |
---|---|
range: Range | 颜色出现的范围。不得为空。 |
color: Color | 颜色的值。 |
返回值 | 描述 |
ColorInformation |
属性
color: Color
此颜色范围的实际颜色值。
range: Range
文档中此颜色出现的范围。
ColorPresentation
颜色表示对象描述了如何将Color表示为文本以及从源代码引用它所需的编辑操作。
对于某些语言,一种颜色可能有多种表示形式,例如,css 可以使用常量Red
、十六进制值#ff0000
或 rgba 和 hsla 形式来表示红色。在 csharp 中,其他表示形式适用,例如System.Drawing.Color.Red
。
构造函数
new ColorPresentation(label: string): ColorPresentation
创建一个新的颜色表示。
参数 | 描述 |
---|---|
label: string | 此颜色表示的标签。 |
返回值 | 描述 |
ColorPresentation |
属性
additionalTextEdits?: TextEdit[]
此颜色表示的标签。它将显示在颜色选择器标题上。默认情况下,这也是在选择此颜色表示时插入的文本。
textEdit?: TextEdit
ColorTheme
表示颜色主题。
属性
kind: ColorThemeKind
此颜色主题的种类:浅色、深色、高对比度深色和高对比度浅色。
ColorThemeKind
表示颜色主题种类。
枚举成员
浅色主题。
深色主题。
高对比度深色主题。
高对比度浅色主题。
Command
表示对命令的引用。提供将在 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"
}
]
}
}
这将只为contextValue
为editable
的评论显示操作extension.deleteComment
。
可选标签描述 Comment 标签将在作者名称旁边渲染,如果存在。
mode: CommentMode
评论的 评论模式
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
创建一个 评论线程。评论线程将在创建后显示在可见文本编辑器(如果资源匹配)和评论面板中。
参数 | 描述 |
---|---|
uri: Uri | 线程创建所在文档的 URI。 |
range: Range | 评论线程位于文档中的范围。 |
comments: readonly Comment[] | 线程的有序评论。 |
返回值 | 描述 |
CommentThread |
释放此评论控制器。
一旦释放,由此评论控制器创建的所有 评论线程 也将从编辑器和评论面板中删除。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
CommentingRangeProvider
评论控制器 的评论范围提供者。
方法
provideCommentingRanges(document: TextDocument, token: CancellationToken): ProviderResult<Range[]>
为给定文档提供允许创建新评论线程的范围列表,或者为 null。
参数 | 描述 |
---|---|
document: TextDocument | |
token: CancellationToken | |
返回值 | 描述 |
ProviderResult<Range[]> |
CommentMode
Comment 的评论模式
枚举成员
显示评论编辑器
显示评论的预览
CommentOptions
属性
一个可选的字符串,当评论输入框获得焦点时显示为占位符。
一个可选的字符串,当评论输入框折叠时显示在上面。
CommentReaction
Comment 的反应
属性
评论的 作者 是否对该反应做出了反应
对该反应做出反应的用户数量
iconPath: string | Uri
在 UI 中显示的反应图标。
反应的可读标签
CommentReply
在 comments/commentThread/context
中注册的操作的命令参数。
属性
评论编辑器中的值
thread: CommentThread
活动 评论线程
CommentRule
描述了一种语言的评论工作方式。
属性
blockComment?: CharacterPair
块注释字符对,如 /* block comment */
行注释标记,如 // this is a comment
CommentThread
一组 评论 ,代表文档中特定范围内的对话。
属性
线程是否支持回复。默认为 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"
}
]
}
}
这将只为contextValue
为editable
的评论线程显示操作extension.deleteCommentThread
。
可选的可读标签,描述 评论线程
range: Range
评论线程在文档中的范围。线程图标将显示在该范围的最后一行。
state?: CommentThreadState
评论线程的可选状态,这可能会影响评论的显示方式。
uri: Uri
线程创建所在文档的 URI。
方法
释放此评论线程。
释放后,此评论线程将从可见的编辑器和评论面板中删除(在适当的情况下)。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
CommentThreadCollapsibleState
一个评论线程的可折叠状态
枚举成员
确定一个项目是折叠的
确定一个项目是展开的
CommentThreadState
评论线程的状态。
枚举成员
未解决的线程状态
已解决的线程状态
CompletionContext
包含有关补全提供程序触发时的上下文的其他信息。
属性
触发补全项目提供程序的字符。
undefined
如果提供程序不是由字符触发的。
当触发补全提供程序时,触发字符已在文档中。
triggerKind: CompletionTriggerKind
补全是如何触发的。
CompletionItem
补全项表示一个文本片段,建议用于完成正在输入的文本。
只需使用标签就可以创建补全项。在这种情况下,补全项将用给定的标签或insertText替换光标之前的单词。否则,将使用给定的edit。
在编辑器中选择补全项时,其定义的或合成的文本编辑将应用于所有光标/选择,而additionalTextEdits 将按提供的方式应用。
另请参阅
构造函数
new CompletionItem(label: string | CompletionItemLabel, kind?: CompletionItemKind): CompletionItem
创建一个新的补全项。
补全项必须至少有一个标签,然后将其用作插入文本以及用于排序和过滤。
参数 | 描述 |
---|---|
label: string | CompletionItemLabel | 补全的标签。 |
kind?: CompletionItemKind | 补全的类型。 |
返回值 | 描述 |
CompletionItem |
属性
additionalTextEdits?: TextEdit[]
command?: Command
一个可选的Command,在插入此补全之后执行。注意,对当前文档的额外修改应该使用additionalTextEdits 属性进行描述。
一组可选字符,当此补全处于活动状态时,按这些字符将首先接受它,然后输入该字符。注意,所有提交字符都应该具有length=1
,并且多余的字符将被忽略。
一个可读的字符串,包含有关此项目的附加信息,例如类型或符号信息。
documentation?: string | MarkdownString
一个可读的字符串,表示文档注释。
insertText?: string | SnippetString
一个字符串或片段,在选择此补全时应插入到文档中。当为falsy
时,使用标签。
保持insertText 的空格原样。默认情况下,编辑器会调整新行的引导空格,使其与接受该项目的行的缩进匹配 - 将此设置为true
将阻止这种情况。
kind?: CompletionItemKind
此补全项的类型。编辑器根据类型选择一个图标。
label: string | CompletionItemLabel
此补全项的标签。默认情况下,这也是在选择此补全时插入的文本。
在显示时选择此项。注意,只能选择一个补全项,并且编辑器决定选择哪个项。规则是选择与匹配最佳的项目中的第一个项目。
range?: Range | {inserting: Range, replacing: Range}
tags?: readonly Deprecated[]
此补全项的标签。
textEdit?: TextEdit
- 已弃用 - 改用
CompletionItem.insertText
和CompletionItem.range
。
一个edit,在选择此补全时应用于文档。如果提供编辑,则忽略insertText 的值。
编辑的Range 必须是单行,并且必须在请求补全的同一行上。
CompletionItemKind
补全项类型。
枚举成员
Text
补全项类型。
Method
补全项类型。
函数
补全项目类型。
构造函数
补全项目类型。
字段
补全项目类型。
变量
补全项目类型。
类
补全项目类型。
接口
补全项目类型。
模块
补全项目类型。
属性
补全项目类型。
单元
补全项目类型。
值
补全项目类型。
枚举
补全项目类型。
关键字
补全项目类型。
代码片段
补全项目类型。
颜色
补全项目类型。
文件
补全项目类型。
引用
补全项目类型。
文件夹
补全项目类型。
枚举成员
补全项目类型。
常量
补全项目类型。
结构体
补全项目类型。
事件
补全项目类型。
运算符
补全项目类型。
类型参数
补全项目类型。
用户
补全项目类型。
问题
补全项目类型。
CompletionItemLabel
用于 补全项目 的结构化标签。
属性
一个可选字符串,在 CompletionItemLabel.detail 后面以较不突出的方式呈现。应用于完全限定名称或文件路径。
一个可选字符串,在 label 后面以较不突出的方式直接呈现,没有任何间距。应用于函数签名或类型注释。
此补全项目的标签。
默认情况下,这也是选择此补全时插入的文本。
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[]> | 补全项目的数组、补全列表,或者解析为其中之一的可等待对象。没有结果可以通过返回 |
resolveCompletionItem(item: T, token: CancellationToken): ProviderResult<T>
给定一个补全项目,填充更多数据,例如 doc-comment 或 details。
编辑器只会解析一次补全项目。
注意,此函数是在补全项目已在 UI 中显示或已选择某个项目进行插入时调用的。因此,任何更改呈现方式(标签、排序、过滤等)或(主要)插入行为 (insertText) 的属性都无法更改。
此函数可能会填充 additionalTextEdits。但是,这意味着项目可能会在解析完成之前插入,在这种情况下,编辑器将尽力仍然应用这些附加文本编辑。
参数 | 描述 |
---|---|
item: T | 目前在 UI 中活动的补全项目。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<T> | 解析后的补全项目,或者解析为这样的项目的可等待对象。返回给定的 |
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 | 要检查的范围。 |
返回值 | 描述 |
boolean | 如果给定部分已更改,则为 |
ConfigurationScope
配置范围,可以是 'resource' 或 languageId 或两者,或 'TextDocument' 或 'WorkspaceFolder'
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
。
如果提供此 id,您的扩展应该从备份恢复编辑器,而不是从用户的工作区读取文件。
untitledDocumentData: Uint8Array
如果 URI 是未命名的文件,则会使用该文件的字节数据填充它
如果提供此 id,您的扩展应该利用此字节数据,而不是对传递的 URI 执行 fs API
CustomEditorProvider<T>
使用自定义文档模型的可编辑自定义编辑器的提供者。
自定义编辑器使用 CustomDocument 作为其文档模型,而不是 TextDocument。这使扩展可以完全控制操作,例如编辑、保存和备份。
在处理二进制文件或更复杂的情况时,您应该使用这种类型的自定义编辑器。对于简单的基于文本的文档,请改用 CustomTextEditorProvider。
事件
onDidChangeCustomDocument: Event<CustomDocumentEditEvent<T>> | Event<CustomDocumentContentChangeEvent<T>>
发出信号,表明在自定义编辑器内发生了编辑。
只要在自定义编辑器中发生编辑,您的扩展就必须触发此事件。编辑可以是任何内容,从更改一些文本到裁剪图像,再到重新排序列表。您的扩展可以随意定义什么是编辑以及每个编辑上存储什么数据。
触发 onDidChange
会导致编辑器被标记为脏。当用户保存或还原文件时,此标记会被清除。
支持撤消/重做的编辑器必须在发生编辑时触发 CustomDocumentEditEvent
。这允许用户使用编辑器的标准键盘快捷键撤消和重做编辑。如果用户撤消到上次保存状态的所有编辑,编辑器也会将编辑器标记为不再脏。
支持编辑但不能使用编辑器标准撤消/重做机制的编辑器必须触发 CustomDocumentContentChangeEvent
。用户清除不支持撤消/重做的编辑器的脏状态的唯一方法是保存或还原文件。
编辑器只能触发 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 类型的 data transfer item。
参数 | 描述 |
---|---|
mimeType: string | 要获取 data transfer item 的 MIME 类型,例如 特殊 MIME 类型
|
返回值 | 描述 |
DataTransferItem |
set(mimeType: string, value: DataTransferItem): void
设置 MIME 类型到 data transfer item 映射。
参数 | 描述 |
---|---|
mimeType: string | 要设置数据的 MIME 类型。存储在小写中的 MIME 类型,不区分大小写的查找。 |
value: DataTransferItem | 给定 MIME 类型的 data transfer item。 |
返回值 | 描述 |
void |
DataTransferFile
与 DataTransferItem 关联的文件。
此类型的实例只能由编辑器创建,不能由扩展创建。
属性
文件的名称。
uri?: Uri
文件的完整文件路径。
在 web 上可能为 undefined
。
方法
文件的完整文件内容。
参数 | 描述 |
---|---|
返回值 | 描述 |
Thenable<Uint8Array> |
DataTransferItem
封装在拖放操作期间传输的数据。
构造函数
new DataTransferItem(value: any): DataTransferItem
参数 | 描述 |
---|---|
value: any | 存储在此项上的自定义数据。可以使用 DataTransferItem.value 检索。 |
返回值 | 描述 |
DataTransferItem |
属性
存储在此项上的自定义数据。
您可以使用 value
在操作之间共享数据。只要创建 DataTransferItem
的扩展在同一个扩展主机中运行,就可以检索原始对象。
方法
asFile(): DataTransferFile
尝试获取与该 data transfer item 关联的 文件。
请注意,文件对象仅在拖放操作范围内有效。
参数 | 描述 |
---|---|
返回值 | 描述 |
DataTransferFile | 数据传输的文件,或者如果该项不是文件或无法访问文件数据,则为 |
获取此项的字符串表示形式。
如果 DataTransferItem.value 是一个对象,则返回 DataTransferItem.value 值的 JSON 字符串化结果。
参数 | 描述 |
---|---|
返回值 | 描述 |
Thenable<string> |
DebugAdapter
如果实现 DebugAdapter 接口,则可以将实现 Debug Adapter 协议的调试适配器注册到编辑器。
事件
onDidSendMessage: Event<DebugProtocolMessage>
调试适配器向编辑器发送 Debug Adapter 协议消息后触发的事件。消息可以是请求、响应或事件。
方法
释放此对象。
参数 | 描述 |
---|---|
返回值 | 描述 |
any |
handleMessage(message: DebugProtocolMessage): void
处理 Debug Adapter 协议消息。消息可以是请求、响应或事件。结果或错误通过 onSendMessage 事件返回。
参数 | 描述 |
---|---|
message: DebugProtocolMessage | Debug Adapter 协议消息 |
返回值 | 描述 |
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 | 实现调试适配器的命令或可执行文件路径。 |
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> | 一个 调试适配器跟踪器 或 undefined。 |
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> | 解析的调试配置或 undefined 或 null。 |
resolveDebugConfigurationWithSubstitutedVariables(folder: WorkspaceFolder, debugConfiguration: DebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration>
此钩子直接在 'resolveDebugConfiguration' 之后调用,但使用所有已替换的变量。它可用于通过填写缺失的值或添加/更改/删除属性来解析或验证 调试配置。如果为相同类型注册了多个调试配置提供程序,则 'resolveDebugConfigurationWithSubstitutedVariables' 调用按任意顺序链接,并且初始调试配置通过链传递。返回 'undefined' 值将阻止调试会话启动。返回 'null' 值将阻止调试会话启动并打开底层调试配置。
参数 | 描述 |
---|---|
folder: WorkspaceFolder | 配置源自的工作区文件夹或 |
debugConfiguration: DebugConfiguration | 要解析的 调试配置。 |
token?: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<DebugConfiguration> | 解析的调试配置或 undefined 或 null。 |
DebugConfigurationProviderTriggerKind
DebugConfigurationProviderTriggerKind
指定了何时触发 DebugConfigurationProvider
的 provideDebugConfigurations
方法。目前有两种情况:为新创建的 launch.json 提供初始调试配置,或在用户通过 UI(例如,通过“选择并启动调试”命令)请求时提供动态生成的调试配置。在使用 debug.registerDebugConfigurationProvider 注册 DebugConfigurationProvider
时,会使用触发类型。
枚举成员
调用 DebugConfigurationProvider.provideDebugConfigurations
为新创建的 launch.json 提供初始调试配置。
当用户通过 UI(例如,通过“选择并启动调试”命令)请求时,调用 DebugConfigurationProvider.provideDebugConfigurations
提供动态生成的调试配置。
DebugConsole
表示调试控制台。
方法
将给定值追加到调试控制台。
参数 | 描述 |
---|---|
value: string | 一个字符串,虚假值不会被打印。 |
返回值 | 描述 |
void |
appendLine(value: string): void
将给定值和一个换行符追加到调试控制台。
参数 | 描述 |
---|---|
value: string | 一个字符串,虚假值会被打印。 |
返回值 | 描述 |
void |
DebugConsoleMode
调试会话使用的调试控制台模式,参见 options。
枚举成员
调试会话应该有独立的调试控制台。
调试会话应该与父会话共享调试控制台。对于没有父会话的会话,此值无效。
DebugProtocolBreakpoint
DebugProtocolBreakpoint
是 Debug Adapter Protocol 中定义的 Breakpoint 类型的透明占位符类型。
DebugProtocolMessage
DebugProtocolMessage
是 Debug Adapter Protocol 中定义的 ProtocolMessage 类型的透明占位符类型。
DebugProtocolSource
DebugProtocolSource
是 Debug Adapter Protocol 中定义的 Source 类型的透明占位符类型。
DebugSession
调试会话。
属性
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>
将编辑器中的断点映射到调试适配器管理的相应 Debug Adapter Protocol (DAP) 断点。如果不存在 DAP 断点(可能是因为编辑器断点尚未注册,或者因为调试适配器对断点不感兴趣),则返回 undefined
。
参数 | 描述 |
---|---|
breakpoint: Breakpoint | 编辑器中的 Breakpoint。 |
返回值 | 描述 |
Thenable<DebugProtocolBreakpoint> | 一个解析为 Debug Adapter Protocol 断点或 |
DebugSessionCustomEvent
从 调试会话 收到的自定义 Debug Adapter Protocol 事件。
属性
特定于事件的信息。
事件类型。
session: DebugSession
收到自定义事件的 调试会话。
DebugSessionOptions
启动调试会话 的选项。
属性
控制调试会话的父会话是否在 CALL STACK 视图中显示,即使它只有一个子会话。默认情况下,调试会话永远不会隐藏其父会话。如果 compact 为 true,则具有单个子会话的调试会话将在 CALL STACK 视图中隐藏,以使树更紧凑。
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 | 此声明执行的次数,或一个布尔值,指示如果确切的计数未知,则它是否已执行。如果为零或假,则声明将被标记为未覆盖。 |
location: Range | Position | 声明位置。 |
返回值 | 描述 |
DeclarationCoverage |
属性
此声明执行的次数,或一个布尔值,指示如果确切的计数未知,则它是否已执行。如果为零或假,则声明将被标记为未覆盖。
声明位置。
声明的名称。
DeclarationProvider
声明提供程序接口定义了扩展和转到声明功能之间的契约。
方法
provideDeclaration(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Declaration>
提供给定位置和文档中符号的声明。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令的文档。 |
position: Position | 调用命令的位置。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<Declaration> | 一个声明或一个解析为这样的 thenable。可以通过返回 |
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[]> | 一个定义或一个可解析为该定义的可等待对象。可以通过返回 |
Diagnostic
表示诊断,例如编译器错误或警告。诊断对象仅在文件的范围内有效。
构造函数
new Diagnostic(range: Range, message: string, severity?: DiagnosticSeverity): Diagnostic
创建一个新的诊断对象。
参数 | 描述 |
---|---|
range: Range | 此诊断适用的范围。 |
message: string | 人类可读的消息。 |
severity?: DiagnosticSeverity | 严重程度,默认为 error。 |
返回值 | 描述 |
Diagnostic |
属性
code?: string | number | {target: Uri, value: string | number}
此诊断的代码或标识符。应该用于以后的处理,例如在提供 代码操作 时。
人类可读的消息。
range: Range
此诊断适用的范围。
relatedInformation?: DiagnosticRelatedInformation[]
相关诊断信息的数组,例如,当范围内的符号名称发生冲突时,可以通过此属性标记所有定义。
severity: DiagnosticSeverity
严重程度,默认为 error。
描述此诊断来源的人类可读字符串,例如 '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 | 资源标识符。 |
返回值 | 描述 |
boolean | 如果此集合具有给定资源的诊断,则为 |
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
此关联诊断信息的 location。
此关联诊断信息的 message。
DiagnosticSeverity
表示诊断信息的严重程度。
枚举成员
语言或其他方法规则不允许的内容。
可疑但允许的内容。
需要告知的内容,但不是问题。
提示更好的执行方法,例如建议重构。
DiagnosticTag
有关诊断信息类型的其他元数据。
枚举成员
未使用的或不必要的代码。
具有此标签的诊断信息将以淡出方式呈现。淡出程度由 "editorUnnecessaryCode.opacity"
主题颜色控制。例如,"editorUnnecessaryCode.opacity": "#000000c0"
将以 75% 的不透明度呈现代码。对于高对比度主题,请使用 "editorUnnecessaryCode.border"
主题颜色来对不必要的代码进行下划线,而不是将其淡出。
已弃用或过时的代码。
具有此标签的诊断信息将以删除线呈现。
Disposable
表示可以释放资源的类型,例如事件监听或计时器。
静态
from(...disposableLikes: Array<{dispose: () => any}>): Disposable
将多个类似可处置的对象组合成一个。当具有具有处置函数但不是 Disposable
实例的对象时,可以使用此方法。
参数 | 描述 |
---|---|
...disposableLikes: Array<{dispose: () => any}> | 至少具有 |
返回值 | 描述 |
Disposable | 返回一个新的可处置对象,在处置时将处置所有提供的可处置对象。 |
构造函数
new Disposable(callOnDispose: () => any): Disposable
创建一个新的可处置对象,在处置时调用提供的函数。
注意,异步函数不会被等待。
参数 | 描述 |
---|---|
callOnDispose: () => any | 处置某事物的函数。 |
返回值 | 描述 |
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[]> | 颜色表示数组或解析为该数组的可执行对象。可以通过返回 |
provideDocumentColors(document: TextDocument, token: CancellationToken): ProviderResult<ColorInformation[]>
为给定的文档提供颜色。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令的文档。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<ColorInformation[]> | 颜色信息 数组或解析为该数组的可执行对象。可以通过返回 |
DocumentDropEdit
在 放下 时应用的编辑操作。
构造函数
new DocumentDropEdit(insertText: string | SnippetString): DocumentDropEdit
参数 | 描述 |
---|---|
insertText: string | SnippetString | 在放下位置插入的文本或代码段。 |
返回值 | 描述 |
DocumentDropEdit |
属性
additionalEdit?: WorkspaceEdit
放下时应用的可选附加编辑操作。
insertText: string | SnippetString
在放下位置插入的文本或代码段。
DocumentDropEditProvider
处理将资源拖放到文本编辑器中的提供程序。
这允许用户将资源(包括来自外部应用程序的资源)拖放到编辑器中。在拖放文件时,用户可以按住 shift
键将文件拖放到编辑器中,而不是将其打开。要求 editor.dropIntoEditor.enabled
处于开启状态。
方法
provideDocumentDropEdits(document: TextDocument, position: Position, dataTransfer: DataTransfer, token: CancellationToken): ProviderResult<DocumentDropEdit>
提供将拖放内容插入文档的编辑操作。
参数 | 描述 |
---|---|
document: TextDocument | 发生拖放的文档。 |
position: Position | 文档中发生拖放的位置。 |
dataTransfer: DataTransfer | 一个 DataTransfer 对象,其中包含有关正在拖放内容的信息。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<DocumentDropEdit> | 一个 DocumentDropEdit 或解析为该对象的执行对象。可以通过返回 |
DocumentFilter
文档筛选器通过不同的属性来表示文档,例如 语言、其资源的 方案 或应用于 路径 的 glob 模式。
示例 应用于磁盘上的 typescript 文件的语言筛选器
{ language: 'typescript', scheme: 'file' }
示例 应用于所有 package.json 路径的语言筛选器
{ language: 'json', pattern: '**/package.json' }
属性
语言标识符,例如 typescript
。
pattern?: GlobPattern
Uri 方案,例如 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 | 高亮显示类型,默认值为 text。 |
返回值 | 描述 |
DocumentHighlight |
属性
kind?: DocumentHighlightKind
高亮显示类型,默认值为 text。
range: Range
此高亮显示适用的范围。
DocumentHighlightKind
文档高亮显示类型。
枚举成员
文本出现。
符号的读访问,例如读取变量。
符号的写访问,例如写入变量。
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>
给定一个链接,填写其 目标。当用户在 UI 中选择不完整的链接时,会调用此方法。提供程序可以实现此方法并从 provideDocumentLinks 方法返回不完整的链接(没有目标),这通常有助于提高性能。
参数 | 描述 |
---|---|
link: T | 要解析的链接。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<T> |
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
文档范围语义标记提供程序接口定义了扩展程序和语义标记之间的契约。
方法
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
处 -deltaLine
:令牌行号,相对于前面的令牌 - 在索引
5*i+1
-deltaStart
处 -deltaStart
:令牌起始字符,相对于前面的令牌(相对于 0 或前面的令牌的起始位置,如果它们在同一行上) - 在索引
5*i+2
-length
处 -length
:令牌的长度。令牌不能跨行。 - 在索引
5*i+3
-tokenType
处 -tokenType
:将在SemanticTokensLegend.tokenTypes
中查找。我们目前要求tokenType
< 65536。 - 在索引
5*i+4
-tokenModifiers
处 -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,以获取一个将令牌编码为整数的帮助程序。注意:在进行编辑时,可能会进行多次编辑,直到编辑器决定调用语义令牌提供程序。注意:如果提供程序无法暂时计算语义令牌,它可以通过抛出消息为“繁忙”的错误来指示这一点。
参数 | 描述 |
---|---|
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 Deprecated[]
此符号的标记。
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
将值追加到环境变量。
请注意,扩展程序只能对任何一个变量进行单一更改,因此这将覆盖对替换、追加或前缀的任何先前调用。
参数 | 描述 |
---|---|
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
将值前置到环境变量。
请注意,扩展程序只能对任何一个变量进行单一更改,因此这将覆盖对替换、追加或前缀的任何先前调用。
参数 | 描述 |
---|---|
variable: string | 要前置的变量。 |
value: string | 要前置到变量的值。 |
options?: EnvironmentVariableMutatorOptions | 应用于变异器的选项,当不提供任何选项时,这将默认为 |
返回值 | 描述 |
void |
replace(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
用值替换环境变量。
请注意,扩展程序只能对任何一个变量进行单一更改,因此这将覆盖对替换、追加或前缀的任何先前调用。
参数 | 描述 |
---|---|
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 表示文档中的表达式,可以由活动的调试器或运行时评估。此评估的结果将显示在类似工具提示的小部件中。如果只指定了一个范围,则表达式将从基础文档中提取。可以使用可选表达式覆盖提取的表达式。在这种情况下,范围仍用于突出显示文档中的范围。
构造函数
new EvaluatableExpression(range: Range, expression?: string): EvaluatableExpression
创建一个新的可评估表达式对象。
参数 | 描述 |
---|---|
range: Range | 基础文档中的范围,从中提取可评估表达式。 |
expression?: string | 如果指定,将覆盖提取的表达式。 |
返回值 | 描述 |
EvaluatableExpression |
属性
range: Range
EvaluatableExpressionProvider
可评估表达式提供者接口定义了扩展程序和调试悬停之间的契约。在此契约中,提供者为文档中的给定位置返回可评估表达式,编辑器在活动调试会话中评估此表达式并在调试悬停中显示结果。
方法
provideEvaluatableExpression(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<EvaluatableExpression>
为给定的文档和位置提供可评估表达式。编辑器将在活动调试会话中评估此表达式,并将在调试悬停中显示结果。表达式可以通过基础文档中的范围隐式指定,也可以通过显式返回表达式来指定。
参数 | 描述 |
---|---|
document: TextDocument | 将要显示调试悬停的文档。 |
position: Position | 文档中调试悬停将要显示的行和字符位置。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<EvaluatableExpression> | EvaluatableExpression 或解析为这样的可执行项。缺少结果可以通过返回 |
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 | 一个可处置对象,它取消订阅事件侦听器。 |
EventEmitter<T>
事件发射器可用于创建和管理 Event,供其他人订阅。一个发射器始终拥有一个事件。
如果您想从扩展内部提供事件,例如在 TextDocumentContentProvider 中或提供 API 给其他扩展时,请使用此类。
构造函数
new EventEmitter<T>(): EventEmitter<T>
参数 | 描述 |
---|---|
返回值 | 描述 |
EventEmitter<T> |
属性
event: Event<T>
事件监听器可以订阅的事件。
方法
释放此对象并释放资源。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
通知所有订阅了 event 的订阅者。一个或多个监听器出现故障不会导致此函数调用失败。
参数 | 描述 |
---|---|
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> | 一个承诺,当此扩展激活时将解析。 |
ExtensionContext
扩展上下文是特定于扩展的实用程序集合。
ExtensionContext
的实例作为第一个参数提供给扩展的 activate
调用。
属性
environmentVariableCollection: GlobalEnvironmentVariableCollection
获取此工作区的扩展的全局环境变量集合,使更改可以应用于终端环境变量。
extension: Extension<any>
当前的 Extension
实例。
extensionMode: ExtensionMode
扩展运行的模式。有关可能的值和方案,请参见 ExtensionMode。
包含扩展的目录的绝对文件路径。ExtensionContext.extensionUri.fsPath 的简写符号(独立于 uri 方案)。
extensionUri: Uri
包含扩展的目录的 uri。
globalState: Memento & {setKeysForSync}
一个记忆对象,它存储独立于当前打开的 工作区 的状态。
扩展可以在其中存储全局状态的绝对文件路径。该目录可能不存在于磁盘上,创建由扩展决定。但是,父目录保证存在。
使用 globalState 来存储键值数据。
- 已弃用 - 请使用 globalStorageUri 代替。
globalStorageUri: Uri
扩展可以在其中存储全局状态的目录的 uri。该目录可能不存在于磁盘上,创建由扩展决定。但是,父目录保证存在。
使用 globalState 来存储键值数据。
另请参见 workspace.fs,了解如何从 uri 读取和写入文件和文件夹。
languageModelAccessInformation: LanguageModelAccessInformation
一个对象,它保存有关此扩展如何使用语言模型的信息。
扩展可以在其中创建日志文件的目录的绝对文件路径。该目录可能不存在于磁盘上,创建由扩展决定。但是,父目录保证存在。
- 已弃用 - 请使用 logUri 代替。
logUri: Uri
扩展可以在其中创建日志文件的目录的 uri。该目录可能不存在于磁盘上,创建由扩展决定。但是,父目录保证存在。
另请参见 workspace.fs,了解如何从 uri 读取和写入文件和文件夹。
secrets: SecretStorage
用于秘密的存储实用程序。秘密在重新加载时会持久化,并且独立于当前打开的 工作区。
特定于工作区的目录的绝对文件路径,扩展可以在其中存储私有状态。该目录可能不存在于磁盘上,创建由扩展决定。但是,父目录保证存在。
使用 workspaceState 或 globalState 来存储键值数据。
- 已弃用 - 请使用 storageUri 代替。
storageUri: Uri
特定于工作区的目录的 uri,扩展可以在其中存储私有状态。该目录可能不存在,创建由扩展决定。但是,父目录保证存在。当没有打开工作区或文件夹时,该值为 undefined
。
使用 workspaceState 或 globalState 来存储键值数据。
另请参见 workspace.fs,了解如何从 uri 读取和写入文件和文件夹。
subscriptions: Array<{dispose}>
一个数组,可以在其中添加可释放项。当此扩展被停用时,可释放项将被释放。
注意,不会等待异步释放函数。
workspaceState: Memento
一个记忆对象,它在当前打开的 工作区 的上下文中存储状态。
方法
asAbsolutePath(relativePath: string): string
获取扩展中包含的资源的绝对路径。
注意,可以使用 Uri.joinPath 和 extensionUri 构造绝对 uri,例如 vscode.Uri.joinPath(context.extensionUri, relativePath);
参数 | 描述 |
---|---|
relativePath: string | 扩展中包含的资源的相对路径。 |
返回值 | 描述 |
string | 资源的绝对路径。 |
ExtensionKind
在远程窗口中,扩展类型描述扩展是在 UI(窗口)运行的地方运行,还是在远程运行。
枚举成员
扩展在 UI 运行的地方运行。
扩展在远程扩展主机运行的地方运行。
ExtensionMode
ExtensionMode 在 ExtensionContext
上提供,指示特定扩展运行的模式。
枚举成员
扩展在编辑器中正常安装(例如,从市场或 VSIX 安装)。
扩展正在从启动编辑器时提供的 --extensionDevelopmentPath
运行。
扩展正在从 --extensionTestsPath
运行,扩展主机正在运行单元测试。
ExtensionTerminalOptions
描述虚拟进程终端应使用哪些选项的值对象。
属性
color?: ThemeColor
终端的图标 ThemeColor。建议使用标准的 terminal.ansi*
主题键,以便在不同主题之间获得最佳对比度和一致性。
iconPath?: Uri | ThemeIcon | {dark: Uri, light: Uri}
终端的图标路径或 ThemeIcon。
选择退出重启和重新加载时默认的终端持久性。这仅在 terminal.integrated.enablePersistentSessions
启用时生效。
location?: TerminalEditorLocationOptions | TerminalSplitLocationOptions | TerminalLocation
一个可读的字符串,用于在 UI 中表示终端。
pty: Pseudoterminal
一个 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): FileCoverage
参数 | 描述 |
---|---|
uri: Uri | 已覆盖的文件 URI |
statementCoverage: TestCoverageCount | 语句覆盖率信息。如果报告者没有提供语句覆盖率信息,则可以使用它来表示行覆盖率。 |
branchCoverage?: TestCoverageCount | 分支覆盖率信息 |
declarationCoverage?: TestCoverageCount | 声明覆盖率信息 |
返回值 | 描述 |
FileCoverage |
属性
branchCoverage?: TestCoverageCount
分支覆盖率信息。
declarationCoverage?: TestCoverageCount
声明覆盖率信息。根据报告者和语言,这可能是函数、方法或命名空间等类型。
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?: Readonly
文件的权限,例如文件是否为只读。
注意: 此值可能是一个位掩码,例如 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 | 文件系统的方案,例如 |
返回值 | 描述 |
boolean | 如果文件系统支持写入,则为 |
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>
复制文件或文件夹。实现此函数是可选的,但它会加快复制操作速度。
- throws - 当
source
不存在时,FileNotFound。
- throws - 当
destination
的父级不存在时,FileNotFound,例如不需要 mkdirp 逻辑。
- throws - 当
destination
存在且overwrite
选项不为true
时,FileExists。
- throws - 当权限不足时,NoPermissions。
createDirectory(uri: Uri): void | Thenable<void>
创建一个新目录(注意,新文件是通过 write
调用创建的)。
- throws - 当
uri
的父级不存在时,FileNotFound,例如不需要 mkdirp 逻辑。
- throws - 当
uri
已经存在时,FileExists。
- throws - 当权限不足时,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 - 当
uri
不存在时,FileNotFound。
readFile(uri: Uri): Uint8Array | Thenable<Uint8Array>
读取文件的全部内容。
- throws - 当
uri
不存在时,FileNotFound。
参数 | 描述 |
---|---|
uri: Uri | 文件的 uri。 |
返回值 | 描述 |
Uint8Array | Thenable<Uint8Array> | 字节数组或解析为该数组的 thenable。 |
rename(oldUri: Uri, newUri: Uri, options: {overwrite: boolean}): void | Thenable<void>
重命名文件或文件夹。
- throws - 当
oldUri
不存在时,FileNotFound。
- throws - 当
newUri
的父级不存在时,FileNotFound,例如不需要 mkdirp 逻辑。
- throws - 当
newUri
存在且overwrite
选项不为true
时,FileExists。
- throws - 当权限不足时,NoPermissions。
stat(uri: Uri): FileStat | Thenable<FileStat>
检索有关文件的元数据。
请注意,符号链接的元数据应为它们引用的文件的元数据。尽管如此,仍必须使用 SymbolicLink 类型,除了实际类型,例如 FileType.SymbolicLink | FileType.Directory
。
- throws - 当
uri
不存在时,FileNotFound。
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 | 一个可丢弃的对象,告诉提供程序停止监视 |
writeFile(uri: Uri, content: Uint8Array, options: {create: boolean, overwrite: boolean}): void | Thenable<void>
将数据写入文件,替换其全部内容。
- throws - 当
uri
不存在且未设置create
时,FileNotFound。
- throws - 当
uri
的父级不存在且已设置create
时,FileNotFound,例如不需要 mkdirp 逻辑。
- throws - 当
uri
已经存在、已设置create
但未设置overwrite
时,FileExists。
- throws - 当权限不足时,NoPermissions。
参数 | 描述 |
---|---|
uri: Uri | 文件的 uri。 |
content: Uint8Array | 文件的新的内容。 |
options: {create: boolean, overwrite: boolean} | 定义是否应该或必须创建缺少的文件。 |
返回值 | 描述 |
void | Thenable<void> |
FileSystemWatcher
文件系统监视器会通知磁盘或其他 FileSystemProviders 上的文件和文件夹的更改。
要获取 FileSystemWatcher
的实例,请使用 createFileSystemWatcher。
事件
在文件/文件夹更改时触发的事件。
在创建文件/文件夹时触发的事件。
在删除文件/文件夹时触发的事件。
属性
如果此文件系统监视器已创建,则忽略更改文件系统事件。
如果此文件系统监视器已创建,则忽略创建文件系统事件。
如果此文件系统监视器已创建,则忽略删除文件系统事件。
方法
释放此对象。
参数 | 描述 |
---|---|
返回值 | 描述 |
any |
FileType
文件类型的枚举。类型 `File` 和 `Directory` 也可以是符号链接,在这种情况下使用 `FileType.File | FileType.SymbolicLink` 和 `FileType.Directory | FileType.SymbolicLink`。
枚举成员
文件类型未知。
常规文件。
目录。
指向文件的符号链接。
FileWillCreateEvent
属性
files: readonly Uri[]
将要创建的文件。
token: CancellationToken
取消令牌。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允许暂停事件并应用 工作区编辑。
注意: 此函数只能在事件调度期间调用,而不能以异步方式调用
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
属性
files: readonly Uri[]
将要删除的文件。
token: CancellationToken
取消令牌。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允许暂停事件并应用 工作区编辑。
注意: 此函数只能在事件调度期间调用,而不能以异步方式调用
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
属性
files: ReadonlyArray<{newUri: Uri, oldUri: Uri}>
将要重命名的文件。
token: CancellationToken
取消令牌。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允许暂停事件并应用 工作区编辑。
注意: 此函数只能在事件调度期间调用,而不能以异步方式调用
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。该类型用于对折叠范围进行分类,并由诸如“折叠所有注释”之类的命令使用。有关所有类型的枚举,请参见 FoldingRangeKind。如果未设置,则该范围源于语法元素。
要折叠的范围的以零为基准的开始行。折叠区域从行的最后一个字符之后开始。为了有效,结束必须为零或更大,并且小于文档中的行数。
FoldingRangeKind
特定折叠范围类型的枚举。该类型是 FoldingRange 的可选字段,用于区分特定的折叠范围,例如源自注释的范围。该类型由诸如“折叠所有注释”或“折叠所有区域”之类的命令使用。如果在该范围内未设置该类型,则该范围源于除注释、导入或区域标记之外的语法元素。
枚举成员
表示注释的折叠范围类型。
表示导入的折叠范围类型。
表示源自折叠标记(如 `#region` 和 `#endregion`)的区域的折叠范围类型。
FoldingRangeProvider
折叠范围提供程序接口定义了扩展和编辑器中 折叠 之间的契约。
事件
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
将值追加到环境变量。
请注意,扩展程序只能对任何一个变量进行单一更改,因此这将覆盖对替换、追加或前缀的任何先前调用。
参数 | 描述 |
---|---|
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
将值前置到环境变量。
请注意,扩展程序只能对任何一个变量进行单一更改,因此这将覆盖对替换、追加或前缀的任何先前调用。
参数 | 描述 |
---|---|
variable: string | 要前置的变量。 |
value: string | 要前置到变量的值。 |
options?: EnvironmentVariableMutatorOptions | 应用于变异器的选项,当不提供任何选项时,这将默认为 |
返回值 | 描述 |
void |
replace(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
用值替换环境变量。
请注意,扩展程序只能对任何一个变量进行单一更改,因此这将覆盖对替换、追加或前缀的任何先前调用。
参数 | 描述 |
---|---|
variable: string | 要替换的变量。 |
value: string | 要替换变量的值。 |
options?: EnvironmentVariableMutatorOptions | 应用于变异器的选项,当不提供任何选项时,这将默认为 |
返回值 | 描述 |
void |
GlobPattern
用于将文件路径与之匹配的文件通配符模式。这可以是通配符模式字符串(如**/*.{ts,js}
或 *.{ts,js}
)或 相对模式。
通配符模式可以具有以下语法
*
匹配路径段中的零个或多个字符?
匹配路径段中的一个字符**
匹配任意数量的路径段,包括无{}
用于对条件进行分组(例如,**/*.{ts,js}
匹配所有 TypeScript 和 JavaScript 文件)[]
用于声明在路径段中匹配的一系列字符(例如,example.[0-9]
匹配example.0
、example.1
等)[!...]
用于否定路径段中匹配的一系列字符(例如,example.[!0-9]
匹配example.a
、example.b
,但不匹配example.0
)
注意:反斜杠 (``) 在通配符模式中无效。如果您有现有的文件路径要与之匹配,请考虑使用相对模式 支持,该支持会将任何反斜杠转换为斜杠。否则,请确保在创建通配符模式时将任何反斜杠转换为斜杠。
GlobPattern: string | RelativePattern
Hover
悬停表示符号或单词的其他信息。悬停在类似工具提示的小部件中呈现。
构造函数
new Hover(contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>, range?: Range): Hover
创建一个新的悬停对象。
参数 | 描述 |
---|---|
contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString> | 悬停的内容。 |
range?: Range | 悬停适用的范围。 |
返回值 | 描述 |
Hover |
属性
contents: Array<MarkdownString | MarkedString>
此悬停的内容。
range?: Range
此悬停适用的范围。如果缺失,编辑器将使用当前位置的范围或当前位置本身。
HoverProvider
悬停提供程序接口定义了扩展程序和 悬停 功能之间的契约。
方法
provideHover(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Hover>
为给定位置和文档提供悬停。编辑器会合并同一位置的多个悬停。悬停可以有一个范围,如果省略,则默认为位置处的词语范围。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令的文档。 |
position: Position | 调用命令的位置。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<Hover> | 悬停或解析为悬停的可执行对象。可以通过返回 |
ImplementationProvider
实现提供程序接口定义了扩展程序和转到实现功能之间的契约。
方法
provideImplementation(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
提供给定位置和文档中符号的实现。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令的文档。 |
position: Position | 调用命令的位置。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<Definition | LocationLink[]> | 一个定义或一个可解析为该定义的可等待对象。可以通过返回 |
IndentAction
描述按下 Enter 键时如何处理缩进。
枚举成员
插入新行并复制前一行的缩进。
插入新行并缩进一次(相对于前一行的缩进)。
插入两行新行
- 第一行缩进,将包含光标
- 第二行在相同的缩进级别
插入新行并缩进一次(相对于前一行的缩进)。
IndentationRule
描述语言的缩进规则。
属性
如果一行匹配此模式,则它之后的所有行都应该缩进一次(直到另一个规则匹配)。
如果一行匹配此模式,则它之后的所有行都应该缩进一次(直到另一个规则匹配)。
indentNextLinePattern?: RegExp
如果一行匹配此模式,则仅它后面的下一行应该缩进一次。
unIndentedLinePattern?: RegExp
如果一行匹配此模式,则其缩进不应改变,并且不应根据其他规则进行评估。
InlayHint
内联提示信息。
构造函数
new InlayHint(position: Position, label: string | InlayHintLabelPart[], kind?: InlayHintKind): InlayHint
创建一个新的内联提示。
参数 | 描述 |
---|---|
position: Position | 提示的位置。 |
label: string | InlayHintLabelPart[] | 提示的标签。 |
kind?: InlayHintKind | 提示的kind。 |
返回值 | 描述 |
InlayHint |
属性
kind?: InlayHintKind
此提示的类型。内联提示类型定义了此内联提示的外观。
label: string | InlayHintLabelPart[]
此提示的标签。一个人类可读的字符串或标签部分数组。
注意字符串和标签部分都不能为空。
在提示之前渲染填充。填充将使用编辑器的背景颜色,而不是提示本身的背景颜色。这意味着填充可用于视觉上对齐/分离内联提示。
在提示之后渲染填充。填充将使用编辑器的背景颜色,而不是提示本身的背景颜色。这意味着填充可用于视觉上对齐/分离内联提示。
position: Position
此提示的位置。
textEdits?: TextEdit[]
tooltip?: string | MarkdownString
将鼠标悬停在此项目上时的工具提示文本。
注意此属性可以在解析内联提示期间延迟设置。
InlayHintKind
内联提示类型。
内联提示的类型定义了其外观,例如使用相应的颜色和背景颜色。
枚举成员
用于类型注释的内联提示。
用于参数的内联提示。
InlayHintLabelPart
内联提示标签部分允许内联提示的交互式和复合标签。
构造函数
new InlayHintLabelPart(value: string): InlayHintLabelPart
创建一个新的内联提示标签部分。
参数 | 描述 |
---|---|
value: string | 部分的值。 |
返回值 | 描述 |
InlayHintLabelPart |
属性
command?: Command
location?: Location
tooltip?: string | MarkdownString
将鼠标悬停在此标签部分时的工具提示文本。
注意此属性可以在解析内联提示期间延迟设置。
此标签部分的值。
InlayHintsProvider<T>
内联提示提供程序接口定义了扩展和内联提示功能之间的契约。
事件
onDidChangeInlayHints?: Event<void>
一个可选的事件,用于信号来自此提供程序的内联提示已更改。
方法
provideInlayHints(document: TextDocument, range: Range, token: CancellationToken): ProviderResult<T[]>
为给定的范围和文档提供内联提示。
注意未包含在给定范围内的内联提示将被忽略。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令的文档。 |
range: Range | 应该计算内联提示的范围。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<T[]> | 内联提示数组或解析为这样的 thenable。 |
resolveInlayHint(hint: T, token: CancellationToken): ProviderResult<T>
参数 | 描述 |
---|---|
hint: T | 一个内联提示。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<T> | 解析的内联提示或解析为这样的 thenable。可以返回给定的 |
InlineCompletionContext
提供有关请求内联完成的上下文的信息。
属性
selectedCompletionInfo: SelectedCompletionInfo
如果自动完成小部件可见,则提供有关当前选定项目的信息。
如果设置,提供的内联完成必须扩展选定项目的文本并使用相同的范围,否则它们不会显示为预览。例如,如果文档文本是 console.
并且选定项目是 .log
替换文档中的 .
,则内联完成也必须替换 .
并以 .log
开头,例如 .log()
。
每当选定项目更改时,都会再次请求内联完成提供程序。
triggerKind: InlineCompletionTriggerKind
描述内联完成的触发方式。
InlineCompletionItem
内联完成项代表一个文本片段,它被提议内联以完成正在键入的文本。
另请参阅 InlineCompletionItemProvider.provideInlineCompletionItems
构造函数
new InlineCompletionItem(insertText: string | SnippetString, range?: Range, command?: Command): InlineCompletionItem
创建一个新的内联完成项。
参数 | 描述 |
---|---|
insertText: string | SnippetString | 要替换范围的文本。 |
range?: Range | 要替换的范围。如果没有设置,则将使用请求位置处的单词。 |
command?: Command | 一个可选的 Command,它在插入此完成之后执行。 |
返回值 | 描述 |
InlineCompletionItem |
属性
command?: Command
一个可选的 Command,它在插入此完成之后执行。
用于决定是否应显示此内联完成的文本。当falsy
时,使用 InlineCompletionItem.insertText。
如果要替换的文本是过滤器文本的前缀,则会显示内联完成。
insertText: string | SnippetString
要替换范围的文本。必须设置。用于预览和接受操作。
range?: Range
要替换的范围。必须在同一行上开始和结束。
优先使用替换而不是插入,以在用户删除键入的文本时提供更好的体验。
InlineCompletionItemProvider
内联完成项提供程序接口定义了扩展和内联完成功能之间的契约。
提供程序会根据用户的操作明确请求完成,或者在键入时隐式请求完成。
方法
provideInlineCompletionItems(document: TextDocument, position: Position, context: InlineCompletionContext, token: CancellationToken): ProviderResult<InlineCompletionList | InlineCompletionItem[]>
为给定的位置和文档提供内联完成项。如果启用了内联完成,则每当用户停止键入时,都会调用此方法。它还会在用户显式触发内联完成或显式请求下一个或上一个内联完成时调用。在这种情况下,应返回所有可用的内联完成。context.triggerKind
可用于区分这些情况。
参数 | 描述 |
---|---|
document: TextDocument | 请求内联完成的文档。 |
position: Position | 请求内联完成的位置。 |
context: InlineCompletionContext | 包含附加信息的上下文对象。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<InlineCompletionList | InlineCompletionItem[]> | 完成项数组或解析为完成项数组的可执行对象。 |
InlineCompletionList
表示要在编辑器中呈现的 内联完成项 集合。
构造函数
new InlineCompletionList(items: InlineCompletionItem[]): InlineCompletionList
创建一个新的内联完成项列表。
参数 | 描述 |
---|---|
items: InlineCompletionItem[] | |
返回值 | 描述 |
InlineCompletionList |
属性
items: InlineCompletionItem[]
内联完成项。
InlineCompletionTriggerKind
描述了 内联完成提供程序 的触发方式。
枚举成员
完成是通过用户的操作明确触发的。返回多个完成项以启用在它们之间循环。
完成是在编辑时自动触发的。在这种情况下,返回单个完成项就足够了。
InlineValue
内联值信息可以通过不同的方式提供
- 直接作为文本值(类 InlineValueText)。
- 作为用于变量查找的名称(类 InlineValueVariableLookup)
- 作为可评估表达式(类 InlineValueEvaluatableExpression)InlineValue 类型将所有内联值类型合并为一个类型。
InlineValue: InlineValueText | InlineValueVariableLookup | InlineValueEvaluatableExpression
InlineValueContext
一个值对象,它包含从 InlineValuesProvider 请求内联值时的上下文信息。
属性
执行停止的堆栈帧(作为 DAP Id)。
stoppedLocation: Range
执行停止的文档范围。通常,范围的结束位置表示显示内联值的所在行。
InlineValueEvaluatableExpression
通过表达式求值提供内联值。如果只指定了范围,则表达式将从基础文档中提取。可以使用可选的表达式来覆盖提取的表达式。
构造函数
new InlineValueEvaluatableExpression(range: Range, expression?: string): InlineValueEvaluatableExpression
创建一个新的 InlineValueEvaluatableExpression 对象。
参数 | 描述 |
---|---|
range: Range | 基础文档中的范围,从中提取可评估表达式。 |
expression?: string | 如果指定,将覆盖提取的表达式。 |
返回值 | 描述 |
InlineValueEvaluatableExpression |
属性
如果指定,则表达式将覆盖提取的表达式。
range: Range
内联值适用的文档范围。该范围用于从基础文档中提取可评估表达式。
InlineValuesProvider
内联值提供程序接口定义了扩展和编辑器调试器内联值功能之间的契约。在此契约中,提供程序返回给定文档范围的内联值信息,编辑器会在行尾的编辑器中显示此信息。
事件
onDidChangeInlineValues?: Event<void>
一个可选的事件,用于表示内联值已更改。
另请参见 EventEmitter
方法
provideInlineValues(document: TextDocument, viewPort: Range, context: InlineValueContext, token: CancellationToken): ProviderResult<InlineValue[]>
为给定的文档和范围提供“内联值”信息。编辑器会在调试停止在给定文档中时调用此方法。返回的内联值信息会在行尾的编辑器中呈现。
参数 | 描述 |
---|---|
document: TextDocument | 需要内联值信息的文档。 |
viewPort: Range | 应该为其计算内联值的可见文档范围。 |
context: InlineValueContext | 一个包含上下文信息(如当前位置)的包。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<InlineValue[]> | InlineValueDescriptors 数组或解析为这样的可执行对象。可以使用 |
InlineValueText
以文本形式提供内联值。
构造函数
new InlineValueText(range: Range, text: string): InlineValueText
创建一个新的 InlineValueText 对象。
参数 | 描述 |
---|---|
range: Range | 要显示内联值的文档行。 |
text: string | 要为该行显示的值。 |
返回值 | 描述 |
InlineValueText |
属性
range: Range
内联值适用的文档范围。
内联值的文本。
InlineValueVariableLookup
通过变量查找提供内联值。如果只指定一个范围,变量名将从基础文档中提取。可选的变量名可用于覆盖提取的名称。
构造函数
new InlineValueVariableLookup(range: Range, variableName?: string, caseSensitiveLookup?: boolean): InlineValueVariableLookup
创建一个新的 InlineValueVariableLookup 对象。
参数 | 描述 |
---|---|
range: Range | 要显示内联值的文档行。 |
variableName?: string | 要查找的变量的名称。 |
caseSensitiveLookup?: boolean | 如何执行查找。如果缺失查找区分大小写。 |
返回值 | 描述 |
InlineValueVariableLookup |
属性
如何执行查找。
range: Range
内联值适用的文档范围。该范围用于从基础文档中提取变量名。
如果指定要查找的变量的名称。
InputBox
一个具体的 QuickInput,用于让用户输入文本值。
注意,在许多情况下,更方便的 window.showInputBox 更易于使用。当 window.showInputBox 不提供所需灵活性时,应使用 window.createInputBox。
事件
onDidAccept: Event<void>
当用户表示接受输入值时发出的信号事件。
onDidChangeValue: Event<string>
当值发生变化时发出的信号事件。
onDidHide: Event<void>
当此输入 UI 隐藏时发出的信号事件。
此 UI 可能隐藏的原因有很多,扩展程序将通过 QuickInput.onDidHide 通知。 (例如:显式调用 QuickInput.hide,用户按下 Esc,其他一些输入 UI 打开等。)
onDidTriggerButton: Event<QuickInputButton>
当按钮被触发时发出的信号事件。
属性
如果 UI 应该显示一个进度指示器。默认为 false。
将此更改为 true,例如,在加载更多数据或验证用户输入时。
buttons: readonly QuickInputButton[]
UI 中操作的按钮。
如果 UI 应该允许用户输入。默认为 true。
将此更改为 false,例如,在验证用户输入或加载下一步骤的用户输入数据时。
如果 UI 即使在失去 UI 焦点时也应该保持打开。默认为 false。此设置在 iPad 上被忽略,并且始终为 false。
如果输入值应该隐藏。默认为 false。
当没有输入值时显示的可选占位符。
可选的提示文本,为用户提供一些询问或解释。
可选的当前步骤计数。
可选的标题。
可选的总步骤计数。
validationMessage: string | InputBoxValidationMessage
可选的验证消息,指示当前输入值存在问题。通过返回字符串,InputBox 将使用默认的 InputBoxValidationSeverity 错误。返回 undefined 将清除验证消息。
当前输入值。
valueSelection: readonly [number, number]
输入值中的选择范围。定义为两个数字的元组,其中第一个是包含的起始索引,第二个是排他的结束索引。当 undefined
时,将选择整个预填充值,当为空(开始等于结束)时,只设置光标,否则将选择定义的范围。
此属性不会在用户键入或进行选择时更新,但可以由扩展程序更新。
方法
处置此输入 UI 和任何相关资源。如果它仍然可见,则首先将其隐藏。在此调用之后,输入 UI 将不再起作用,并且不应该访问其上的任何其他方法或属性。相反,应该创建一个新的输入 UI。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
隐藏此输入 UI。这也将触发 QuickInput.onDidHide 事件。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
使输入 UI 在其当前配置中可见。任何其他输入 UI 将首先触发 QuickInput.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
对象,用于配置验证消息的行为。
属性
要显示的验证消息。
severity: InputBoxValidationSeverity
验证消息的严重程度。注意:当使用 InputBoxValidationSeverity.Error
时,用户将不允许接受(按 ENTER)输入。Info
和 Warning
仍然允许 InputBox 接受输入。
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} | 此属性已弃用,不再完全支持编辑器(范围和行开始被忽略)。请改用语言配置文件中的 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 | 一个语言模型聊天对象。 |
返回值 | 描述 |
boolean |
|
LanguageModelChat
表示用于发送聊天请求的语言模型。
另请参见 lm.selectChatModels
属性
语言模型的不透明家族名称。值可能是 gpt-3.5-turbo
、gpt4
、phi2
或 llama
,但它们由贡献语言的扩展定义,可能会发生变化。
语言模型的不透明标识符。
可以在单个请求中发送到模型的最大令牌数。
语言模型的人类可读名称。
语言模型供应商的众所周知的标识符。一个例子是 copilot
,但值由贡献聊天模型的扩展定义,需要通过它们查找。
模型的不透明版本字符串。这由贡献语言模型的扩展定义,可能会发生变化。
方法
countTokens(text: string | LanguageModelChatMessage, token?: CancellationToken): Thenable<number>
使用模型特定的分词逻辑计算消息中的令牌数。
参数 | 描述 |
---|---|
text: string | LanguageModelChatMessage | 一个字符串或一个消息实例。 |
token?: CancellationToken | 可选的取消令牌。有关如何创建令牌,请参阅 CancellationTokenSource。 |
返回值 | 描述 |
Thenable<number> | 解析为令牌数的 thenable。 |
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> | 解析为 LanguageModelChatResponse 的 thenable。如果请求无法发出,Promise 将被拒绝。 |
LanguageModelChatMessage
表示聊天中的消息。可以承担不同的角色,例如用户或助手。
静态
Assistant(content: string | Array<LanguageModelTextPart | LanguageModelToolCallPart>, name?: string): LanguageModelChatMessage
用于创建新的助手消息的实用程序。
参数 | 描述 |
---|---|
content: string | Array<LanguageModelTextPart | LanguageModelToolCallPart> | 消息的内容。 |
name?: string | 消息的可选用户名称。 |
返回值 | 描述 |
LanguageModelChatMessage |
User(content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart>, name?: string): LanguageModelChatMessage
用于创建新的用户消息的实用程序。
参数 | 描述 |
---|---|
content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart> | 消息的内容。 |
name?: string | 消息的可选用户名称。 |
返回值 | 描述 |
LanguageModelChatMessage |
构造函数
new LanguageModelChatMessage(role: LanguageModelChatMessageRole, content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelToolCallPart>, name?: string): LanguageModelChatMessage
创建一个新的用户消息。
参数 | 描述 |
---|---|
role: LanguageModelChatMessageRole | 消息的角色。 |
content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelToolCallPart> | 消息的内容。 |
name?: string | 消息的可选用户名称。 |
返回值 | 描述 |
LanguageModelChatMessage |
属性
content: Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelToolCallPart>
一个字符串或异构数组,表示消息可以包含的内容。某些部分可能是特定于某些模型的消息类型。
此消息的可选用户名称。
role: LanguageModelChatMessageRole
此消息的角色。
LanguageModelChatMessageRole
表示聊天消息的角色。这可以是用户或助手。
枚举成员
用户角色,例如与语言模型交互的人类。
助手角色,例如生成响应的语言模型。
LanguageModelChatRequestOptions
使用语言模型进行聊天请求的选项。
属性
一条人类可读的消息,解释为什么需要访问语言模型以及它启用了什么功能。
一组控制语言模型行为的选项。这些选项特定于语言模型,需要在各自的文档中查找。
toolMode?: LanguageModelChatToolMode
要使用的工具选择模式。默认情况下为 LanguageModelChatToolMode.Auto。
tools?: LanguageModelChatTool[]
语言模型可用的工具的可选列表。这些可以是通过 lm.tools 可用的注册工具,也可以是仅在调用扩展中实现的私有工具。
如果 LLM 请求调用其中一个工具,它将在 LanguageModelChatResponse.stream 中返回一个 LanguageModelToolCallPart。调用者有责任调用该工具。如果它是在 lm.tools 中注册的工具,则意味着调用 lm.invokeTool。
然后,可以通过创建一个带有 LanguageModelToolCallPart 的助手类型 LanguageModelChatMessage,后面跟着一个带有 LanguageModelToolResultPart 的用户类型消息,将工具结果提供给 LLM。
LanguageModelChatResponse
表示语言模型响应。
属性
stream: AsyncIterable<unknown>
一个异步可迭代对象,它是一个文本和工具调用部分的流,形成整体响应。一个 LanguageModelTextPart 是助手响应的一部分,应该向用户显示。一个 LanguageModelToolCallPart 是语言模型调用工具的请求。后者仅在通过 LanguageModelChatRequestOptions.tools 在请求中传递工具时才会返回。unknown
类型用作将来部分的占位符,例如图像数据部分。
注意,当在数据接收期间发生错误时,此流将出错。流的使用者应相应地处理错误。
要取消流,使用者可以 cancel 用于发出请求的令牌,或者从 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 模式。
该工具的名称。
LanguageModelChatToolMode
语言模型要使用的工具调用模式。
枚举成员
语言模型可以选择调用工具或生成消息。是默认值。
语言模型必须调用提供的工具之一。注意,某些模型在使用此模式时仅支持一个工具。
LanguageModelError
语言模型特定错误的错误类型。
语言模型的使用者应检查代码属性以确定特定故障原因,例如 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
属性将包含实际错误。
LanguageModelPromptTsxPart
包含来自 vscode/prompt-tsx
的 PromptElementJSON 的语言模型响应部分。
构造函数
new LanguageModelPromptTsxPart(value: unknown): LanguageModelPromptTsxPart
使用给定内容构造一个 prompt-tsx 部分。
参数 | 描述 |
---|---|
value: unknown | 该部分的值,即来自 |
返回值 | 描述 |
LanguageModelPromptTsxPart |
属性
部分的值。
LanguageModelTextPart
包含文本片段的语言模型响应部分,从 LanguageModelChatResponse 返回。
构造函数
new LanguageModelTextPart(value: string): LanguageModelTextPart
使用给定内容构造一个文本部分。
参数 | 描述 |
---|---|
value: string | 该部分的文本内容。 |
返回值 | 描述 |
LanguageModelTextPart |
属性
该部分的文本内容。
LanguageModelTool<T>
可以通过调用 LanguageModelChat 来调用的工具。
方法
invoke(options: LanguageModelToolInvocationOptions<T>, token: CancellationToken): ProviderResult<LanguageModelToolResult>
使用给定的输入调用工具并返回结果。
提供的 LanguageModelToolInvocationOptions.input 已针对声明的模式进行了验证。
参数 | 描述 |
---|---|
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 模式。
工具的唯一名称。
由工具声明的一组标签,粗略地描述了工具的功能。 工具用户可以使用这些标签将工具集过滤为仅与当前任务相关的工具。
LanguageModelToolInvocationOptions<T>
用于工具调用的选项。
属性
用于调用工具的输入。 输入必须与 LanguageModelToolInformation.inputSchema 中定义的模式匹配
tokenizationOptions?: LanguageModelToolTokenizationOptions
提示工具应在其响应中返回多少个令牌的选项,并使工具能够准确地计算令牌。
toolInvocationToken: undefined
一个不透明对象,将工具调用与来自 聊天参与者 的聊天请求绑定在一起。
获取有效工具调用令牌的唯一方法是使用来自聊天请求的提供的 toolInvocationToken。 在这种情况下,在聊天响应视图中会自动显示工具调用的进度条,如果工具需要用户确认,它会内联显示在聊天视图中。
如果工具是在聊天请求之外被调用的,则应改为传递 undefined
,并且除了确认之外不会显示任何特殊 UI。
注意,在调用过程中调用另一个工具的工具可以传递它收到的 toolInvocationToken
。
LanguageModelToolInvocationPrepareOptions<T>
属性
工具正在使用该输入进行调用。
LanguageModelToolResult
从工具调用返回的结果。 如果使用 vscode/prompt-tsx
,则可以使用 ToolResult
呈现此结果。
构造函数
new LanguageModelToolResult(content: Array<LanguageModelTextPart | LanguageModelPromptTsxPart>): LanguageModelToolResult
创建一个 LanguageModelToolResult
参数 | 描述 |
---|---|
content: Array<LanguageModelTextPart | LanguageModelPromptTsxPart> | 工具结果内容部分的列表 |
返回值 | 描述 |
LanguageModelToolResult |
属性
工具结果内容部分的列表。包括 unknown
,因为此列表将来可能会扩展新的内容类型。
另请参见 lm.invokeTool.
LanguageModelToolResultPart
工具调用的结果。这是 工具调用 的对应部分,它只能包含在用户消息的内容中。
构造函数
new LanguageModelToolResultPart(callId: string, content: unknown[]): LanguageModelToolResultPart
参数 | 描述 |
---|---|
callId: string | 工具调用的 ID。 |
content: unknown[] | 工具结果的内容。 |
返回值 | 描述 |
LanguageModelToolResultPart |
属性
工具调用的 ID。
注意 这应该与工具调用部分的 callId 相匹配。
工具结果的值。
LanguageModelToolTokenizationOptions
与工具调用标记相关的选项。
属性
如果已知,工具在其结果中应发出的最大令牌数。
方法
countTokens(text: string, token?: CancellationToken): Thenable<number>
使用模型特定的分词逻辑计算消息中的令牌数。
参数 | 描述 |
---|---|
text: string | 字符串。 |
token?: CancellationToken | 可选的取消令牌。有关如何创建令牌,请参阅 CancellationTokenSource。 |
返回值 | 描述 |
Thenable<number> | 解析为令牌数的 thenable。 |
LanguageStatusItem
语言状态项是为活动文本编辑器呈现语言状态报告的首选方式,例如选定的 linter 或通知配置问题。
属性
accessibilityInformation?: AccessibilityInformation
屏幕阅读器与该项交互时使用的辅助功能信息。
控制是否将该项显示为“繁忙”。默认为 false
。
command: Command
该项的 命令。
可选的,该项的人类可读详细信息。
该项的标识符。
该项的简短名称,如 'Java Language Status' 等。
selector: DocumentSelector
一个 选择器,定义该项显示的编辑器。
severity: LanguageStatusSeverity
该项的严重程度。
默认为 information。您可以使用此属性向用户发出信号,表明存在需要关注的问题,例如缺少可执行文件或配置无效。
要为条目显示的文本。您可以通过利用语法将图标嵌入文本中。
我的文本 $(icon-name) 包含像 $(icon-name) 这样的图标。
其中 icon-name 来自 ThemeIcon 图标集,例如 light-bulb
、thumbsup
、zap
等。
方法
处置并释放关联的资源。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
LanguageStatusSeverity
表示语言状态的严重程度。
枚举成员
信息严重程度级别。
警告严重程度级别。
错误严重程度级别。
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
表示两个位置的连接。提供比普通 位置 更多的元数据,包括一个源范围。
属性
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 | 可选的,指定 ThemeIcons 是否在 MarkdownString 中受支持。 |
返回值 | 描述 |
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}
Memento
Memento 表示一个存储工具。它可以存储和检索值。
方法
返回一个值。
参数 | 描述 |
---|---|
key: string | 字符串。 |
返回值 | 描述 |
T | 存储的值或 |
get<T>(key: string, defaultValue: T): T
返回一个值。
参数 | 描述 |
---|---|
key: string | 字符串。 |
defaultValue: T | 当没有给定键的值 ( |
返回值 | 描述 |
T | 存储的值或 defaultValue。 |
返回存储的键。
参数 | 描述 |
---|---|
返回值 | 描述 |
readonly string[] | 存储的键。 |
update(key: string, value: any): Thenable<void>
存储一个值。该值必须是 JSON 可序列化。
注意,使用 undefined
作为值会从底层存储中删除该键。
参数 | 描述 |
---|---|
key: string | 字符串。 |
value: any | 一个值。MUST 不包含循环引用。 |
返回值 | 描述 |
Thenable<void> |
MessageItem
属性
一个针对模式对话框的提示,表示当用户取消对话框(例如,通过按 ESC 键)时应触发该项目。
注意:此选项对非模式消息将被忽略。
一个简短的标题,例如“重试”、“打开日志”等。
MessageOptions
属性
人类可读的详细消息,以较不突出的方式呈现。注意,detail 仅对 modal 消息显示。
表示此消息应为模式。
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 正在挂起) 状态。当在执行任务上调用 start(...) 时,它进入 [NotebookCellExecutionState.Executing 正在执行](#NotebookCellExecutionState.Executing 正在执行) 状态。当调用 end(...) 时,它进入 [NotebookCellExecutionState.Idle 空闲](#NotebookCellExecutionState.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 | 如果为真,则在单元格状态栏上显示绿色复选标记。如果为假,则显示红色 X。如果未定义,则不显示复选标记或 X 图标。 |
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
笔记本单元格输出表示执行单元格的结果。它是用于多个输出项的容器类型,其中包含的项表示相同的结果,但使用不同的 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 位整数数组。
确定data 属性如何解释的 mime 类型。
笔记本内置支持某些 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
笔记本控制器表示可以执行笔记本单元格的实体。这通常称为内核。
可以有多个控制器,并且编辑器将允许用户选择要用于特定笔记本的控制器。 notebookType 属性定义了控制器适合哪种笔记本,而 updateNotebookAffinity 函数允许控制器为特定笔记本文档设置首选项。选择控制器后,其 onDidChangeSelectedNotebooks 事件将触发。
当运行单元格时,编辑器将调用 executeHandler,并且控制器应该创建并完成一个 笔记本单元格执行。但是,控制器也可以自己创建执行。
事件
onDidChangeSelectedNotebooks: Event<{notebook: NotebookDocument, selected: boolean}>
属性
以较不突出的方式呈现的人类可读描述。
以较不突出的方式呈现的人类可读详细信息。
executeHandler: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>
当 UI 中选择运行手势(例如运行单元格、运行全部、运行选择等)时,将调用执行处理程序。执行处理程序负责创建和管理 执行 对象。
参数 | 描述 |
---|---|
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
创建单元格执行任务。
注意每个单元格一次只能有一个执行,并且如果在另一个执行仍然处于活动状态时创建了单元格执行,则会抛出错误。
这应该在调用 执行处理程序 或在其他地方启动单元格执行时使用,例如当单元格已在执行时或当单元格执行从另一个来源触发时。
参数 | 描述 |
---|---|
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> | 一个 promise,当文档已保存时,它将解析为 true。如果文件不脏或保存失败,将返回 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
笔记本内容选项定义了笔记本的哪些部分将被持久化。注意
例如,笔记本序列化程序可以选择不保存输出,在这种情况下,编辑器不会将笔记本标记为脏(当其输出发生变化时)。
属性
控制单元格元数据属性更改事件是否会触发笔记本文档内容更改事件,以及它是否将在 diff 编辑器中使用,默认为 false。如果内容提供者没有在文件文档中持久化元数据属性,则应将其设置为 true。
控制文档元数据属性更改事件是否会触发笔记本文档内容更改事件,以及它是否将在 diff 编辑器中使用,默认为 false。如果内容提供者没有在文件文档中持久化元数据属性,则应将其设置为 true。
控制输出更改事件是否会触发笔记本文档内容更改事件,以及它是否将在 diff 编辑器中使用,默认为 false。如果内容提供者没有在文件文档中持久化输出,则应将其设置为 true。
NotebookDocumentShowOptions
属性
一个可选标志,当为true
时,将阻止笔记本编辑器获取焦点。
一个可选标志,控制笔记本编辑器选项卡是否显示为预览。预览选项卡将被替换并重复使用,直到设置为保留 - 或者通过显式设置,或者通过编辑。默认行为取决于workbench.editor.enablePreview
设置。
selections?: readonly NotebookRange[]
一个可选的选择,应用于笔记本编辑器中的文档。
viewColumn?: ViewColumn
一个可选的视图列,笔记本编辑器应该显示在其中。默认值为活动。将根据需要创建不存在的列,直到最大值为ViewColumn.Nine。使用ViewColumn.Beside将编辑器打开到当前活动编辑器旁边。
NotebookDocumentWillSaveEvent
属性
notebook: NotebookDocument
将要保存的笔记本文档。
reason: TextDocumentSaveReason
触发保存的原因。
token: CancellationToken
取消令牌。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允许暂停事件循环并应用工作区编辑。对该函数的后续调用的编辑将按顺序应用。如果笔记本文档发生并发修改,则编辑将被忽略。
注意: 此函数只能在事件调度期间调用,而不能以异步方式调用
workspace.onWillSaveNotebookDocument(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 |
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
表示描述笔记本编辑器 visibleRanges更改的事件。
属性
notebookEditor: NotebookEditor
visibleRanges 已更改的笔记本编辑器。
visibleRanges: readonly NotebookRange[]
NotebookRange
笔记本范围表示两个单元格索引的有序对。保证 start 小于或等于 end。
构造函数
new NotebookRange(start: number, end: number): NotebookRange
创建一个新的笔记本范围。如果start
不在end
之前或等于end
,则将交换这些值。
参数 | 描述 |
---|---|
start: number | 开始索引 |
end: number | 结束索引。 |
返回值 | 描述 |
NotebookRange |
属性
此范围的独占结束索引(从零开始)。
如果start
和end
相等,则为true
。
此范围的从零开始的起始索引。
方法
with(change: {end: number, start: number}): NotebookRange
为该范围派生一个新范围。
参数 | 描述 |
---|---|
change: {end: number, start: number} | 描述对该范围的更改的对象。 |
返回值 | 描述 |
NotebookRange | 反映给定更改的范围。如果更改未更改任何内容,将返回 |
NotebookRendererMessaging
渲染器消息传递用于与单个渲染器通信。它从 notebooks.createRendererMessaging 返回。
事件
onDidReceiveMessage: Event<{editor: NotebookEditor, message: any}>
从渲染器接收到消息时触发的事件。
方法
postMessage(message: any, editor?: NotebookEditor): Thenable<boolean>
向一个或所有渲染器发送消息。
参数 | 描述 |
---|---|
message: any | 要发送的消息 |
editor?: NotebookEditor | 要将消息目标设置为的编辑器。如果未提供,则将消息发送到所有渲染器。 |
返回值 | 描述 |
Thenable<boolean> | 一个布尔值,指示消息是否已成功传递到任何渲染器。 |
NotebookSerializer
笔记本序列化器使编辑器能够打开笔记本文件。
从根本上说,编辑器只知道 笔记本数据结构,但不了解如何将该数据结构写入文件,也不了解如何从文件中读取它。笔记本序列化器通过将字节反序列化为笔记本数据以及反之来弥合这一差距。
方法
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
表示在 概述标尺 中渲染装饰的不同位置。概述标尺支持三个车道。
枚举成员
概述标尺的左车道。
概述标尺的中心车道。
概述标尺的右车道。
概述标尺的所有车道。
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 | 基于零的行值。 |
character: number | 基于零的列值。 |
返回值 | 描述 |
Position |
属性
基于零的列值。
基于零的行值。
方法
compareTo(other: Position): number
将此位置与 other
进行比较。
参数 | 描述 |
---|---|
other: Position | 一个位置。 |
返回值 | 描述 |
number | 如果此位置在给定位置之前,则返回小于零的数字;如果此位置在给定位置之后,则返回大于零的数字;如果此位置与给定位置相等,则返回零。 |
isAfter(other: Position): boolean
检查此位置是否在 other
之后。
参数 | 描述 |
---|---|
other: Position | 一个位置。 |
返回值 | 描述 |
boolean | 如果位置在更大的行上,或者在同一行上更大列上,则返回 |
isAfterOrEqual(other: Position): boolean
检查此位置是否在 other
之后或与其相等。
参数 | 描述 |
---|---|
other: Position | 一个位置。 |
返回值 | 描述 |
boolean | 如果位置在更大的行上,或者在同一行上更大列或相等列上,则返回 |
isBefore(other: Position): boolean
检查此位置是否在 other
之前。
参数 | 描述 |
---|---|
other: Position | 一个位置。 |
返回值 | 描述 |
boolean | 如果位置在更小的行上,或者在同一行上更小的列上,则返回 |
isBeforeOrEqual(other: Position): boolean
检查此位置是否在 other
之前或与其相等。
参数 | 描述 |
---|---|
other: Position | 一个位置。 |
返回值 | 描述 |
boolean | 如果位置在更小的行上,或者在同一行上更小的列或相等列上,则返回 |
isEqual(other: Position): boolean
检查此位置是否与 other
相等。
参数 | 描述 |
---|---|
other: Position | 一个位置。 |
返回值 | 描述 |
boolean | 如果给定位置的行和列与此位置的行和列相等,则返回 |
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
此属性的存在表示应在运行工具之前询问用户确认。 对于具有副作用或可能存在危险的任何工具,都应询问用户确认。
在工具运行时显示的自定义进度消息。
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}
应显示进度的位置。
一个人类可读的字符串,将用于描述操作。
ProviderResult<T>
提供者结果表示提供者(如 HoverProvider)可能返回的值。一次是实际结果类型 T
(如 Hover
),或解析为该类型 T
的 thenable。此外,可以返回 null
和 undefined
- 直接或从 thenable 返回。
下面的代码片段都是 HoverProvider 的有效实现。
let a: HoverProvider = {
provideHover(doc, pos, token): ProviderResult<Hover> {
return new Hover('Hello World');
}
};
let b: HoverProvider = {
provideHover(doc, pos, token): ProviderResult<Hover> {
return new Promise(resolve => {
resolve(new Hover('Hello World'));
});
}
};
let c: HoverProvider = {
provideHover(doc, pos, token): ProviderResult<Hover> {
return; // undefined
}
};
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
将只将光标向下移动 1 行,您需要也写入 \r
才能将光标移动到最左侧的单元格。
在调用 Pseudoterminal.open 之前触发的事件将被忽略。
示例:向终端写入红色文本
const writeEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
onDidWrite: writeEmitter.event,
open: () => writeEmitter.fire('\x1b[31mHello world\x1b[0m'),
close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });
示例:将光标移动到第 10 行第 20 列并写入星号
writeEmitter.fire('\x1b[10;20H*');
方法
实现以处理用户操作关闭终端的情况。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
handleInput(data: string): void
实现以处理终端中传入的按键或扩展调用 Terminal.sendText 的情况。data
包含按键/文本序列化为其对应的 VT 序列表示形式。
参数 | 描述 |
---|---|
data: string | 传入的数据。 示例:在终端中回显输入。回车(
|
返回值 | 描述 |
void |
open(initialDimensions: TerminalDimensions): void
实现以处理 pty 打开并准备好开始触发事件的情况。
参数 | 描述 |
---|---|
initialDimensions: TerminalDimensions | 终端的尺寸,如果终端面板在此之前未打开,则它将为 undefined。 |
返回值 | 描述 |
void |
setDimensions(dimensions: TerminalDimensions): void
实现以处理适合终端面板的行数和列数发生变化的情况,例如字体大小发生变化或面板大小发生变化时。终端尺寸的初始状态应视为 undefined
,直到触发此事件,因为终端的大小在显示在用户界面中之前是未知的。
当 onDidOverrideDimensions 覆盖尺寸时,setDimensions
将继续使用常规面板尺寸调用,允许扩展继续对尺寸变化做出反应。
参数 | 描述 |
---|---|
dimensions: TerminalDimensions | 新的尺寸。 |
返回值 | 描述 |
void |
QuickDiffProvider
快速差异提供者提供一个 uri,用于指向已修改资源的原始状态。编辑器将使用此信息在文本中呈现临时差异。
方法
provideOriginalResource(uri: Uri, token: CancellationToken): ProviderResult<Uri>
为任何给定资源 uri 提供一个 Uri,指向该资源的原始资源。
参数 | 描述 |
---|---|
uri: Uri | 在文本编辑器中打开的资源的 uri。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<Uri> | 一个 thenable,它解析为匹配的原始资源的 uri。 |
QuickInput
一个轻量级用户输入 UI,最初不可见。在通过其属性配置之后,扩展可以通过调用 QuickInput.show 使其可见。
此 UI 可能隐藏的原因有很多,扩展程序将通过 QuickInput.onDidHide 通知。 (例如:显式调用 QuickInput.hide,用户按下 Esc,其他一些输入 UI 打开等。)
用户按下 Enter 或一些其他暗示接受当前状态的手势不会自动隐藏此 UI 组件。由扩展来决定是否接受用户的输入以及 UI 是否应通过调用 QuickInput.hide 隐藏。
当扩展不再需要此输入 UI 时,它应该 QuickInput.dispose 它以允许释放与其关联的任何资源。
事件
onDidHide: Event<void>
当此输入 UI 隐藏时发出的信号事件。
此 UI 可能隐藏的原因有很多,扩展程序将通过 QuickInput.onDidHide 通知。 (例如:显式调用 QuickInput.hide,用户按下 Esc,其他一些输入 UI 打开等。)
属性
如果 UI 应该显示一个进度指示器。默认为 false。
将此更改为 true,例如,在加载更多数据或验证用户输入时。
如果 UI 应该允许用户输入。默认为 true。
将此更改为 false,例如,在验证用户输入或加载下一步骤的用户输入数据时。
如果 UI 即使在失去 UI 焦点时也应该保持打开。默认为 false。此设置在 iPad 上被忽略,并且始终为 false。
可选的当前步骤计数。
可选的标题。
可选的总步骤计数。
方法
处置此输入 UI 和任何相关资源。如果它仍然可见,则首先将其隐藏。在此调用之后,输入 UI 将不再起作用,并且不应该访问其上的任何其他方法或属性。相反,应该创建一个新的输入 UI。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
隐藏此输入 UI。这也将触发 QuickInput.onDidHide 事件。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
使输入 UI 在其当前配置中可见。任何其他输入 UI 将首先触发 QuickInput.onDidHide 事件。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
QuickInputButton
属性
iconPath: Uri | ThemeIcon | {dark: Uri, light: Uri}
按钮的图标。
可选的工具提示。
QuickInputButtons
静态
Back: QuickInputButton
QuickPick<T>
一个具体的 QuickInput,允许用户从类型为 T 的项目列表中选择一个项目。项目可以通过过滤器文本字段进行筛选,并且有一个选项 canSelectMany 允许选择多个项目。
注意,在许多情况下,更方便的 window.showQuickPick 更易于使用。当 window.showQuickPick 不提供所需灵活性时,应使用 window.createQuickPick。
事件
onDidAccept: Event<void>
用户指示接受所选项目时的信号事件。
onDidChangeActive: Event<readonly T[]>
活动项目发生变化时的信号事件。
onDidChangeSelection: Event<readonly T[]>
所选项目发生变化时的信号事件。
onDidChangeValue: Event<string>
过滤器文本的值发生变化时的信号事件。
onDidHide: Event<void>
当此输入 UI 隐藏时发出的信号事件。
此 UI 可能隐藏的原因有很多,扩展程序将通过 QuickInput.onDidHide 通知。 (例如:显式调用 QuickInput.hide,用户按下 Esc,其他一些输入 UI 打开等。)
onDidTriggerButton: Event<QuickInputButton>
顶层按钮(存储在 buttons 中的按钮)被触发时的信号事件。此事件不会为 QuickPickItem 上的按钮触发。
onDidTriggerItemButton: Event<QuickPickItemButtonEvent<T>>
特定 QuickPickItem 中的按钮被触发时的信号事件。此事件不会为标题栏中的按钮触发。
属性
活动项目。扩展程序可以读取和更新此属性。
如果 UI 应该显示一个进度指示器。默认为 false。
将此更改为 true,例如,在加载更多数据或验证用户输入时。
buttons: readonly QuickInputButton[]
UI 中操作的按钮。
是否可以同时选择多个项目。默认值为 false。
如果 UI 应该允许用户输入。默认为 true。
将此更改为 false,例如,在验证用户输入或加载下一步骤的用户输入数据时。
如果 UI 即使在失去 UI 焦点时也应该保持打开。默认为 false。此设置在 iPad 上被忽略,并且始终为 false。
可供选择的项目。扩展程序可以读取和更新此属性。
可选标志,用于在更新快速选择项目时保持快速选择的滚动位置。默认值为 false。
过滤器文本是否也应与项目的描述匹配。默认值为 false。
过滤器文本是否也应与项目的详细信息匹配。默认值为 false。
未输入任何过滤器时,在过滤器文本框中显示的可选占位符。
所选项目。扩展程序可以读取和更新此属性。
可选的当前步骤计数。
可选的标题。
可选的总步骤计数。
过滤器文本的当前值。
方法
处置此输入 UI 和任何相关资源。如果它仍然可见,则首先将其隐藏。在此调用之后,输入 UI 将不再起作用,并且不应该访问其上的任何其他方法或属性。相反,应该创建一个新的输入 UI。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
隐藏此输入 UI。这也将触发 QuickInput.onDidHide 事件。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
使输入 UI 在其当前配置中可见。任何其他输入 UI 将首先触发 QuickInput.onDidHide 事件。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
QuickPickItem
表示可以从项目列表中选择的项目。
属性
始终显示此项目。
注意:当 kind 设置为 QuickPickItemKind.Separator 时,此属性将被忽略。
buttons?: readonly QuickInputButton[]
可选按钮,将在该特定项目上呈现。单击这些按钮将触发 QuickPickItemButtonEvent。仅当使用由 createQuickPick() API 创建的快速选择时,才会呈现按钮。使用 showQuickPick() API 时,不会呈现按钮。
注意:当 kind 设置为 QuickPickItemKind.Separator 时,此属性将被忽略。
一个易于理解的字符串,在同一行中以不太突出的方式呈现。支持通过 $(<name>)
语法呈现 主题图标。
注意:当 kind 设置为 QuickPickItemKind.Separator 时,此属性将被忽略。
一个易于理解的字符串,在单独的行中以不太突出的方式呈现。支持通过 $(<name>)
语法呈现 主题图标。
注意:当 kind 设置为 QuickPickItemKind.Separator 时,此属性将被忽略。
iconPath?: Uri | ThemeIcon | {dark: Uri, light: Uri}
QuickPickItem 的图标路径或 ThemeIcon。
kind?: QuickPickItemKind
QuickPickItem 的类型,将决定如何在快速选择中呈现此项目。未指定时,默认为 QuickPickItemKind.Default。
一个易于理解的字符串,以突出的方式呈现。支持通过 $(<name>)
语法呈现 主题图标。
可选标志,指示此项目是否最初被选中。这仅在使用 showQuickPick() API 时适用。要使用 createQuickPick() API 执行相同操作,只需将 QuickPick.selectedItems 设置为您想要最初选中的项目。(注意:这仅在选择器允许多个选择时适用。)
另请参阅 QuickPickOptions.canPickMany
注意:当 kind 设置为 QuickPickItemKind.Separator 时,此属性将被忽略。
QuickPickItemButtonEvent<T>
特定 QuickPickItem 中的按钮被触发时的信号事件。此事件不会为标题栏中的按钮触发。
属性
button: QuickInputButton
被单击的按钮。
按钮所属的项目。
QuickPickItemKind
这是一种 快速选择项。
枚举成员
当 QuickPickItem 具有 Separator 类型时,该项目只是一个视觉分隔符,并不代表一个真正的项目。唯一适用的属性是 label。QuickPickItem 上的所有其他属性将被忽略,不会产生任何影响。
默认的 QuickPickItem.kind 是一个可以在快速选择中选择的项目。
QuickPickOptions
配置快速选择 UI 行为的选项。
事件
onDidSelectItem(item: string | QuickPickItem): any
一个可选函数,每当选择一个项目时就会调用。
参数 | 描述 |
---|---|
item: string | QuickPickItem | |
返回值 | 描述 |
any |
属性
一个可选标志,用于使选择器接受多个选择,如果为 true,则结果是一个选择数组。
设置为 true
以在焦点移到编辑器或另一个窗口的另一个部分时使选择器保持打开状态。此设置在 iPad 上被忽略,始终为 false。
一个可选标志,用于在过滤选择时包含描述。
一个可选标志,用于在过滤选择时包含详细信息。
一个可选字符串,在输入框中显示为占位符,以指导用户选择什么。
一个可选字符串,表示快速选择的标题。
Range
一个范围表示一对有序的位置。保证 start.isBeforeOrEqual(end)
Range 对象是 **不可变的**。使用 with、intersection 或 union 方法从现有范围推导出新范围。
构造函数
new Range(start: Position, end: Position): Range
从两个位置创建一个新的范围。如果 start
不在 end
之前或等于 end
,则值将被交换。
new Range(startLine: number, startCharacter: number, endLine: number, endCharacter: number): Range
从数字坐标创建一个新的范围。它是使用 new Range(new Position(startLine, startCharacter), new Position(endLine, endCharacter))
的简短等价物
参数 | 描述 |
---|---|
startLine: number | 基于零的行值。 |
startCharacter: number | 基于零的列值。 |
endLine: number | 基于零的行值。 |
endCharacter: number | 基于零的列值。 |
返回值 | 描述 |
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
值对象,包含请求引用时的附加信息。
属性
包含当前符号的声明。
ReferenceProvider
引用提供程序接口定义了扩展与 查找引用 功能之间的契约。
方法
provideReferences(document: TextDocument, position: Position, context: ReferenceContext, token: CancellationToken): ProviderResult<Location[]>
为给定的位置和文档提供一组项目范围的引用。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令的文档。 |
position: Position | 调用命令的位置。 |
context: ReferenceContext | 有关引用请求的附加信息。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<Location[]> | 一个位置数组或一个解析为这样的可实现的数组。缺少结果可以通过返回 |
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 | 一个文件通配符模式,例如 |
返回值 | 描述 |
RelativePattern |
属性
一个基本文件路径,此模式将与之进行相对匹配。
这与 RelativePattern.baseUri 的 fsPath
值匹配。
注意:更新此值将更新 RelativePattern.baseUri,使其成为一个使用 file
方案的 uri。
- 已弃用 - 此属性已弃用,请使用 RelativePattern.baseUri 替代。
baseUri: Uri
一个基本文件路径,此模式将与之进行相对匹配。文件路径必须是绝对的,不应包含任何尾部路径分隔符,也不应包含任何相对段(.
或 ..
)。
一个文件通配符模式,例如 *.{ts,js}
,它将与相对于基本路径的文件路径匹配。
例如:给定一个基本路径 /home/work/folder
和一个文件路径 /home/work/folder/index.js
,文件通配符模式将与 index.js
匹配。
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> | 存储的值或 |
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 | 基于零的行值。 |
anchorCharacter: number | 基于零的列值。 |
activeLine: number | 基于零的行值。 |
activeCharacter: number | 基于零的列值。 |
返回值 | 描述 |
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
选择范围代表选择层次结构的一部分。选择范围可能有一个包含它的父选择范围。
构造函数
new SelectionRange(range: Range, parent?: SelectionRange): SelectionRange
创建一个新的选择范围。
参数 | 描述 |
---|---|
range: Range | 选择范围的范围。 |
parent?: SelectionRange | 选择范围的父级。 |
返回值 | 描述 |
SelectionRange |
属性
parent?: SelectionRange
包含此范围的父选择范围。
range: Range
此选择范围的 Range。
SelectionRangeProvider
选择范围提供程序接口定义了扩展与“扩展和缩小选择”功能之间的契约。
方法
provideSelectionRanges(document: TextDocument, positions: readonly Position[], token: CancellationToken): ProviderResult<SelectionRange[]>
为给定位置提供选择范围。
选择范围应为每个位置单独计算,并且相互独立。编辑器将合并和消除重复范围,但提供程序必须返回选择范围层次结构,以便一个范围 包含在其父级中。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令的文档。 |
positions: readonly Position[] | 命令被调用的位置。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<SelectionRange[]> | 选择范围或解析为这种范围的可执行对象。缺少结果可以通过返回 |
SemanticTokens
表示语义标记,无论是在范围内还是在整个文档中。
另请参阅
- 有关格式的解释,请参阅 provideDocumentSemanticTokens。
- 有关创建实例的辅助工具,请参阅 SemanticTokensBuilder。
构造函数
new SemanticTokens(data: Uint32Array, resultId?: string): SemanticTokens
创建新的语义标记。
参数 | 描述 |
---|---|
data: Uint32Array | 标记数据。 |
resultId?: string | 结果标识符。 |
返回值 | 描述 |
SemanticTokens |
属性
实际的标记数据。
另请参阅 provideDocumentSemanticTokens 以了解格式的说明。
标记的结果 ID。
这是将传递给 DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits
(如果已实现)的 ID。
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
语义标记图例包含了解密语义标记的整数编码表示所需的信息。
构造函数
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
签名帮助表示可调用对象的签名。可以有多个签名,但只有一个活动签名,只有一个活动参数。
构造函数
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
片段字符串是一个模板,允许插入文本并在插入发生时控制编辑器光标。
片段可以使用 $1
、$2
和 ${3:foo}
定义制表位和占位符。 $0
定义最终制表位,它默认为片段的末尾。 变量使用 $name
和 ${name:default value}
定义。 另请参阅 完整的片段语法。
构造函数
new SnippetString(value?: string): SnippetString
创建一个新的片段字符串。
参数 | 描述 |
---|---|
value?: string | 片段字符串。 |
返回值 | 描述 |
SnippetString |
属性
片段字符串。
方法
appendChoice(values: readonly string[], number?: number): SnippetString
构建函数,将选项 (${1|a,b,c|}
) 附加到此片段字符串的 value。
参数 | 描述 |
---|---|
values: readonly string[] | 选项的值 - 字符串数组 |
number?: number | 此制表位的数字,默认为从 1 开始的自动递增值。 |
返回值 | 描述 |
SnippetString | 此片段字符串。 |
appendPlaceholder(value: string | (snippet: SnippetString) => any, number?: number): SnippetString
构建函数,将占位符 (${1:value}
) 附加到此片段字符串的 value。
参数 | 描述 |
---|---|
value: string | (snippet: SnippetString) => any | 此占位符的值 - 字符串或用于创建嵌套片段的函数。 |
number?: number | 此制表位的数字,默认为从 1 开始的自动递增值。 |
返回值 | 描述 |
SnippetString | 此片段字符串。 |
appendTabstop(number?: number): SnippetString
构建函数,将制表位 ($1
、$2
等) 附加到此片段字符串的 value。
参数 | 描述 |
---|---|
number?: number | 此制表位的数字,默认为从 1 开始的自动递增值。 |
返回值 | 描述 |
SnippetString | 此片段字符串。 |
appendText(string: string): SnippetString
构建函数,将给定字符串附加到此片段字符串的 value。
参数 | 描述 |
---|---|
string: string | 要附加的值 '按原样'。 该字符串将被转义。 |
返回值 | 描述 |
SnippetString | 此片段字符串。 |
appendVariable(name: string, defaultValue: string | (snippet: SnippetString) => any): SnippetString
构建函数,将变量 (${VAR}
) 附加到此片段字符串的 value。
参数 | 描述 |
---|---|
name: string | 变量的名称 - 不包括 |
defaultValue: string | (snippet: SnippetString) => any | 无法解析变量名时使用的默认值 - 字符串或用于创建嵌套片段的函数。 |
返回值 | 描述 |
SnippetString | 此片段字符串。 |
SnippetTextEdit
片段编辑表示由编辑器执行的交互式编辑。
注意片段编辑始终可以作为正常的 文本编辑 执行。 这将发生在没有匹配的编辑器打开或 工作区编辑 包含多个文件的片段编辑时。 在这种情况下,只有那些与活动编辑器匹配的才会作为片段编辑执行,而其他则作为正常的文本编辑执行。
静态
insert(position: Position, snippet: SnippetString): SnippetTextEdit
用于创建插入片段编辑的实用程序。
参数 | 描述 |
---|---|
position: Position | 位置,将变为空范围。 |
snippet: SnippetString | 片段字符串。 |
返回值 | 描述 |
SnippetTextEdit | 新的片段编辑对象。 |
replace(range: Range, snippet: SnippetString): SnippetTextEdit
用于创建替换片段编辑的实用程序。
参数 | 描述 |
---|---|
range: Range | 一个范围。 |
snippet: SnippetString | 片段字符串。 |
返回值 | 描述 |
SnippetTextEdit | 新的片段编辑对象。 |
构造函数
new SnippetTextEdit(range: Range, snippet: SnippetString): SnippetTextEdit
创建一个新的片段编辑。
参数 | 描述 |
---|---|
range: Range | 一个范围。 |
snippet: SnippetString | 片段字符串。 |
返回值 | 描述 |
SnippetTextEdit |
属性
range: Range
此编辑应用的范围。
snippet: SnippetString
此编辑将执行的 片段。
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
源代码管理可以为编辑器提供 资源状态,并以多种与源代码管理相关的方式与编辑器交互。
属性
acceptInputCommand?: Command
可选的接受输入命令。
当用户接受源代码管理输入中的值时,将调用此命令。
可选的提交模板字符串。
源代码管理视图将根据需要使用此值填充源代码管理输入框。
此源代码管理的 ID。
inputBox: SourceControlInputBox
此源代码管理的 输入框。
此源代码管理的人类可读标签。
quickDiffProvider?: QuickDiffProvider
可选的 快速差异提供程序。
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
源代码管理资源组是 源代码管理资源状态 的集合。
属性
当此源代码管理资源组不包含任何 源代码管理资源状态 时,是否隐藏此组。
此源代码管理资源组的 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"
}
]
}
}
这将仅对 contextValue
为 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[] | 此行分支的覆盖率。如果它不是条件语句,则应省略。 |
返回值 | 描述 |
语句覆盖率 |
属性
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 语言指示器”、“Git 状态”等。尝试保持名称长度简短,但要足够描述性,以便用户可以理解状态栏项目是什么。
该项目的优先级。值越高,表示该项目应该更靠左显示。
要为条目显示的文本。您可以通过利用语法将图标嵌入文本中。
我的文本 $(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 Deprecated[]
此符号的标记。
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 | 笔记本类型。映射到 NotebookDocuments 的 notebookType |
返回值 | 描述 |
TabInputNotebook |
属性
笔记本类型。映射到 NotebookDocuments 的 notebookType
uri: Uri
标签所代表的 URI。
TabInputNotebookDiff
该标签表示两个笔记本在一个差异配置中的两个笔记本。
构造函数
new TabInputNotebookDiff(original: Uri, modified: Uri, notebookType: string): TabInputNotebookDiff
构造一个笔记本差异标签输入。
参数 | 描述 |
---|---|
original: Uri | 原始未修改笔记本的 URI。 |
modified: Uri | 已修改笔记本的 URI。 |
notebookType: string | 笔记本类型。映射到 NotebookDocuments 的 notebookType |
返回值 | 描述 |
TabInputNotebookDiff |
属性
modified: Uri
已修改笔记本的 URI。
笔记本类型。映射到 NotebookDocuments 的 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'。问题匹配器可以通过扩展使用 |
返回值 | 描述 |
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'。问题匹配器可以通过扩展使用 |
返回值 | 描述 |
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 中定义在 'taskDefinitions' 扩展点下。例如,npm 任务定义看起来像这样。
interface NpmTaskDefinition extends TaskDefinition {
script: string;
}
请注意,以 '$' 开头的类型标识符保留用于内部使用,不应由扩展使用。
TaskEndEvent
一个表示已执行任务结束的事件。
此接口不打算实现。
属性
execution: TaskExecution
表示已完成任务的任务项。
TaskExecution
表示已执行的任务的对象。它可以用来终止任务。
此接口不打算实现。
属性
task: Task
已启动的任务。
方法
终止任务执行。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
TaskFilter
任务筛选器通过任务的版本和类型来标识任务。
属性
要返回的任务类型;
任务在 tasks.json 文件中使用的版本。该字符串支持 package.json semver 符号。
TaskGroup
任务分组。编辑器默认支持“清理”、“构建”、“全部重建”和“测试”组。
静态
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
,而不是创建一个新的 TaskDefinition
。其他属性可能会更改。
参数 | 描述 |
---|---|
task: T | 要解析的任务。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<T> | 已解析的任务 |
TaskRevealKind
控制终端可见性的行为。
枚举成员
如果执行任务,始终将终端置于最前面。
仅在执行任务时检测到问题(例如,任务由于某些原因无法启动)时,才将终端置于最前面。
执行任务时,终端永远不会置于最前面。
TaskScope
任务的范围。
枚举成员
该任务是全局任务。当前不支持全局任务。
该任务是工作区任务
TaskStartEvent
一个事件,它发出任务执行开始的信号。
此接口不打算实现。
属性
execution: TaskExecution
表示已启动的任务的任务项。
TelemetryLogger
一个遥测记录器,扩展可以使用它来记录使用情况和错误遥测数据。
记录器围绕一个 sender 进行包装,但它保证
- 禁用或调整遥测数据的用户设置得到尊重,并且
- 潜在的敏感数据被删除
它还启用了“回显 UI”,它会打印发送的所有数据,并允许编辑器将未处理的错误转发到相应的扩展。
若要获取 TelemetryLogger
的实例,请使用 createTelemetryLogger
。
事件
onDidChangeEnableStates: Event<TelemetryLogger>
当使用或错误遥测的启用状态发生变化时触发的 事件。
属性
此日志记录器是否启用了错误遥测。
此日志记录器是否启用了使用情况遥测。
方法
释放此对象并释放资源。
参数 | 描述 |
---|---|
返回值 | 描述 |
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>
任何应注入数据对象的附加通用属性。
ignoreBuiltInCommonProperties?: boolean
是否要避免将内置通用属性(如操作系统、扩展名称等)注入数据对象。如果未定义,则默认为 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 集成从未激活,此对象可能仍然为 undefined。例如,命令提示符不支持 shell 集成,用户的 shell 设置可能会与自动 shell 集成激活发生冲突。
state: TerminalState
终端 的当前状态。
方法
处置并释放关联的资源。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
如果此终端当前正在显示,则隐藏终端面板。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
sendText(text: string, shouldExecute?: boolean): void
向终端发送文本。文本将写入终端的底层 pty 进程(shell)的 stdin。
参数 | 描述 |
---|---|
text: string | 要发送的文本。 |
shouldExecute?: boolean | 指示要发送的文本应执行,而不是仅插入到终端中。添加的字符是 |
返回值 | 描述 |
void |
show(preserveFocus?: boolean): void
显示终端面板并在 UI 中显示此终端。
参数 | 描述 |
---|---|
preserveFocus?: boolean | 当为 |
返回值 | 描述 |
void |
TerminalDimensions
表示终端的尺寸。
属性
终端中的列数。
终端中的行数。
TerminalEditorLocationOptions
假设 TerminalLocation 为编辑器,并允许指定 ViewColumn 和 preserveFocus 属性
属性
当设置为 true
时,该可选标志将阻止 终端 获取焦点。
viewColumn: ViewColumn
在编辑器区域中显示 终端 的视图列。默认值为 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?: Uri | ThemeIcon | {dark: Uri, light: Uri}
终端的图标路径或 ThemeIcon。
选择退出重启和重新加载时默认的终端持久性。这仅在 terminal.integrated.enablePersistentSessions
启用时生效。
location?: TerminalEditorLocationOptions | TerminalSplitLocationOptions | TerminalLocation
首次启动时写入终端的消息,请注意,这不是发送到进程的,而是直接写入终端的。这支持诸如设置文本样式之类的转义序列。
一个可读的字符串,用于在 UI 中表示终端。
自定义 shell 可执行文件的参数。仅在 Windows 上可以使用字符串,它允许使用 命令行格式 指定 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)。通常情况下,这种情况不会发生,具体取决于用例,最好将其视为失败。
示例
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 以中断任何正在运行的命令。
示例
// 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[] | 用于启动可执行文件的参数,这些参数将根据可执行文件类型自动进行转义。 |
返回值 | 描述 |
TerminalShellExecution |
TerminalShellIntegrationChangeEvent
一个事件,表示终端的 shell 集成已更改。
属性
shellIntegration: TerminalShellIntegration
shell 集成对象。
terminal: Terminal
已激活 shell 集成的终端。
TerminalSplitLocationOptions
使用父 Terminal 的位置作为终端位置
属性
parentTerminal: Terminal
要将此终端与其并排拆分的父终端。无论父终端是在面板中还是在编辑器区域中,这都有效。
TerminalState
表示 Terminal 的状态。
属性
终端是否已交互。交互意味着终端已向进程发送数据,具体取决于终端的*模式*。默认情况下,当按下键或命令或扩展发送文本时,将发送输入,但根据终端的模式,它也可能在以下情况发生
- 指针点击事件
- 指针滚动事件
- 指针移动事件
- 终端焦点进入/离开
有关可能发送数据的事件的更多信息,请参阅 https://invisible-island.net/xterm/ctlseqs/ctlseqs.html 上的“DEC 私有模式设置 (DECSET)”
TestController
用于发现和执行测试的入口点。它包含 TestController.items,用于填充编辑器 UI,并与 运行配置文件 相关联,以允许执行测试。
属性
在 tests.createTestController 中传递的控制器的 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 的标识符。测试项的 ID 必须在其添加到的 TestItemCollection 中是唯一的。 |
label: string | 测试项的用户可读标签。 |
uri?: Uri | 此 TestItem 关联的 URI。可以是文件或目录。 |
返回值 | 描述 |
TestItem |
createTestRun(request: TestRunRequest, name?: string, persist?: boolean): TestRun
创建一个 TestRun。这应该由 TestRunProfile 在发出执行测试的请求时调用,如果外部检测到测试运行,也可以调用它。创建后,包含在请求中的测试将移至排队状态。
使用相同 request
实例创建的所有运行将分组在一起。这很有用,例如,如果在多个平台上运行单个测试套件。
参数 | 描述 |
---|---|
request: TestRunRequest | 测试运行请求。只能修改 |
name?: string | 运行的用户可读名称。这可以用于区分测试运行中的多个结果集。例如,如果测试在多个平台上运行,这将非常有用。 |
persist?: boolean | 运行创建的结果是否应保留在编辑器中。如果结果来自已在外部保存的文件(例如,覆盖信息文件),则这可能是错误的。 |
返回值 | 描述 |
TestRun | 一个 TestRun 实例。从调用此方法的时刻到调用 TestRun.end 时,它将被视为“正在运行”。 |
取消注册测试控制器,处置其关联的测试和未持久化的结果。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
invalidateTestResults(items?: TestItem | readonly TestItem[]): void
将项的结果标记为已过期。这通常在代码或配置更改并且不再应考虑以前的结果时调用。用于将结果标记为过期的相同逻辑可用于驱动 连续测试运行。
如果向此方法传递了一个项,则该项及其所有子项的测试结果将被标记为已过期。如果未传递任何项,则 TestController 拥有的所有测试都将被标记为已过期。
在此方法调用之前启动的任何测试运行(包括可能仍在进行的运行)都将被标记为已过期,并且在编辑器的 UI 中的优先级将降低。
TestCoverageCount
一个包含有关已覆盖资源信息的类。可以为文件中的行、分支和声明提供计数。
构造函数
new TestCoverageCount(covered: number, total: number): TestCoverageCount
参数 | 描述 |
---|---|
covered: number | |
total: number | |
返回值 | 描述 |
TestCoverageCount |
属性
文件中覆盖的项目数量。
文件中覆盖的项目的总数。
TestItem
在“测试资源管理器”视图中显示的项。
TestItem
可以表示测试套件或测试本身,因为它们都具有类似的功能。
属性
控制测试资源管理器视图中是否将项目显示为“繁忙”。这在发现子项时显示状态很有用。
默认值为 false
。
指示此测试项目是否可以通过解析发现子项。
如果为真,则此项目在测试资源管理器视图中显示为可展开的,展开该项目将导致 TestController.resolveHandler 使用该项目被调用。
默认值为 false
。
children: TestItemCollection
此测试项目的子项。对于测试套件,这可能包含单独的测试用例或嵌套套件。
显示在标签旁边的可选描述。
error: string | MarkdownString
加载测试时遇到的可选错误。
请注意,这不是测试结果,仅应用于表示测试发现中的错误,例如语法错误。
TestItem
的标识符。这用于将文档中的测试结果和测试与工作区(测试资源管理器)中的测试结果和测试相关联。在 TestItem
的整个生命周期内,这不能更改,并且必须在其父项的直接子项中是唯一的。
描述测试用例的显示名称。
parent: TestItem
此项目的父项。它会自动设置,对于 TestController.items 中的顶级项目以及尚未包含在另一个项目的 children 中的项目来说是未定义的。
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 | 要显示给用户的消息。 |
expected: string | 预期输出。 |
actual: string | 实际输出。 |
返回值 | 描述 |
TestMessage |
构造函数
new TestMessage(message: string | MarkdownString): TestMessage
创建一个新的 TestMessage 实例。
参数 | 描述 |
---|---|
message: string | MarkdownString | 要向用户显示的消息。 |
返回值 | 描述 |
TestMessage |
属性
实际测试输出。如果与 expectedOutput 一起给出,将显示 diff 视图。
测试项目的上下文值。这可用于为测试窥视视图贡献特定于消息的操作。此处设置的值可以在以下 menus
贡献点的 testMessage
属性中找到
testing/message/context
- 结果树中消息的上下文菜单testing/message/content
- 在显示消息的编辑器内容上覆盖的突出按钮。
例如
"contributes": {
"menus": {
"testing/message/content": [
{
"command": "extension.deleteCommentThread",
"when": "testMessage == canApplyRichDiff"
}
]
}
}
该命令将使用包含以下内容的对象调用
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[]> |
runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void>
用于启动测试运行的处理程序。当调用时,函数应至少调用一次 TestController.createTestRun,并且与请求关联的所有测试运行应在函数返回或返回的 promise 解决之前创建。
如果 supportsContinuousRun 设置为 true,则 TestRunRequest.continuous 可能为 true
。在这种情况下,配置文件应观察源代码的更改并通过调用 TestController.createTestRun 创建新的测试运行,直到在 token
上请求取消。
参数 | 描述 |
---|---|
request: TestRunRequest | 测试运行的请求信息。 |
token: CancellationToken | |
返回值 | 描述 |
void | Thenable<void> |
supportsContinuousRun: boolean
此配置文件是否支持请求的连续运行。如果是,则 TestRunRequest.continuous 可以设置为 true
。默认为 false。
tag: TestTag
与配置文件关联的标签。如果设置了此标签,则只有具有相同标签的 TestItem 实例才有资格在此配置文件中执行。
方法
删除运行配置文件。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
TestRunProfileKind
TestRunProfiles 控制的执行类型。
枚举成员
Run
测试配置文件类型。
Debug
测试配置文件类型。
Coverage
测试配置文件类型。
TestRunRequest
TestRunRequest 是 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
表示文本文档,例如源文件。文本文档具有 行 和关于底层资源(如文件)的知识。
属性
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> | 一个承诺,将在文件保存后解析为 |
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 | 一个 uri,其方案与该提供程序 注册 的方案匹配。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<string> | 一个字符串或一个 thenable,它解析为一个字符串。 |
TextDocumentSaveReason
表示保存文本文档的原因。
枚举成员
手动触发,例如用户按保存键、启动调试或 API 调用。
延迟后自动。
当编辑器失去焦点时。
TextDocumentShowOptions
属性
一个可选标志,当为 true
时,将阻止 编辑器 获得焦点。
一个可选标志,控制 编辑器-tab 是否显示为预览。预览选项卡将被替换和重复使用,直到设置为保持 - 明确地或通过编辑。
注意,如果用户已在设置中禁用了预览编辑器,则该标志将被忽略。
selection?: Range
一个可选选择,用于在 编辑器 中为文档应用。
viewColumn?: ViewColumn
一个可选的视图列,其中应显示 编辑器。默认值为 active。按需创建不存在的列,直到达到 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
文档中使用的 eol 序列。
注意,eol 序列将应用于整个文档。
此编辑将插入的字符串。
range: Range
此编辑应用的范围。
TextEditor
表示附加到 文档 的编辑器。
属性
document: TextDocument
与该文本编辑器关联的文档。在该文本编辑器的整个生命周期中,文档将保持相同。
options: TextEditorOptions
文本编辑器选项。
selection: Selection
该文本编辑器上的主要选择。TextEditor.selections[0]
的简写。
selections: readonly Selection[]
此文本编辑器中的选择。主选择始终位于索引 0。
viewColumn: ViewColumn
此编辑器显示的列。如果这不是主要编辑器之一(例如嵌入式编辑器),或者编辑器列大于 3,则为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> | 一个承诺,它将使用一个值解析,该值指示是否可以应用编辑。 |
隐藏文本编辑器。
- 已弃用 - 改用命令
workbench.action.closeActiveEditor
。此方法显示意外行为,将在下一个主要更新中删除。
参数 | 描述 |
---|---|
返回值 | 描述 |
void |
insertSnippet(snippet: SnippetString, location?: Range | Position | readonly Range[] | readonly Position[], options?: {undoStopAfter: boolean, undoStopBefore: boolean}): Thenable<boolean>
插入一个代码片段并将编辑器置于代码片段模式。“代码片段模式”意味着编辑器添加占位符和额外的光标,以便用户可以完成或接受代码片段。
参数 | 描述 |
---|---|
snippet: SnippetString | 在此编辑中插入的代码片段。 |
location?: Range | Position | readonly Range[] | readonly Position[] | 插入代码片段的位置或范围,默认为当前编辑器选择或选择。 |
options?: {undoStopAfter: boolean, undoStopBefore: boolean} | 此编辑周围的撤销/重做行为。默认情况下,撤销停止将在此编辑之前和之后创建。 |
返回值 | 描述 |
Thenable<boolean> | 一个承诺,它将使用一个值解析,该值指示是否可以插入代码片段。请注意,该承诺并不表示代码片段已完全填写或接受。 |
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
参数 | 描述 |
---|---|
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 中定义的工作台颜色之一的引用。与自定义颜色相比,使用主题颜色更可取,因为它使主题作者和用户可以更改颜色。
构造函数
new ThemeColor(id: string): ThemeColor
创建对主题颜色的引用。
参数 | 描述 |
---|---|
id: string | 颜色的。可用的颜色列在 https://vscode.js.cn/api/references/theme-color 中。 |
返回值 | 描述 |
ThemeColor |
属性
此颜色的 id。
ThemeIcon
对命名图标的引用。目前,支持 File、Folder 和 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 中。 |
color?: ThemeColor | 图标的可选 |
返回值 | 描述 |
ThemeIcon |
属性
color?: ThemeColor
图标的可选 ThemeColor。该颜色当前仅在 TreeItem 中使用。
图标的 id。可用的图标列在 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?: 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 只会调用一次。
onDidChangeTreeData 不应在 resolveTreeItem 中触发。
注意,此函数在树项已显示在 UI 中时被调用。因此,无法更改任何更改显示方式的属性(标签、描述等)。
参数 | 描述 |
---|---|
item: TreeItem | 应设置 |
element: T | 与 TreeItem 关联的对象。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<TreeItem> | 已解析的树项,或解析为已解析树项的 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 类型来支持所有类型的已拖放 文件,无论文件的实际 MIME 类型是什么。
要了解已拖放项的 MIME 类型
- 设置你的
DragAndDropController
- 使用“开发者:设置日志级别...”命令将级别设置为“调试”。
- 打开开发者工具并将未知 MIME 类型的项拖放到树上。MIME 类型将记录到开发者控制台中。
注意,无法发送到扩展的 MIME 类型将被省略。
方法
handleDrag(source: readonly T[], dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
当用户开始从此 DragAndDropController
拖放项时,将调用 handleDrag
。扩展程序可以使用 handleDrag
将其 DataTransferItem
项添加到拖放操作中。
当项被拖放到同一树中的另一个树项上时,将保留你的 DataTransferItem
对象。使用树的推荐 MIME 类型(application/vnd.code.tree.<treeidlowercase>
)在数据传输中添加树对象。有关如何充分利用此功能,请参阅 DataTransferItem
的文档。
要添加可以拖放到编辑器中的数据传输项,请使用应用程序特定的 MIME 类型“text/uri-list”。“text/uri-list” 的数据应该是以 \r\n
分隔的 toString()
ed Uris 字符串。要指定文件中的光标位置,请将 Uri 的片段设置为 L3,5
,其中 3 是行号,5 是列号。
参数 | 描述 |
---|---|
source: readonly T[] | 拖放操作的源项。 |
dataTransfer: DataTransfer | 与此拖放操作相关联的数据传输。 |
token: CancellationToken | 取消标记,表明拖放操作已被取消。 |
返回值 | 描述 |
void | Thenable<void> |
handleDrop(target: T, dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
当拖放操作导致拖放到此 DragAndDropController
所属的树上时调用。
扩展程序应为需要刷新的任何元素触发 onDidChangeTreeData。
参数 | 描述 |
---|---|
target: T | 拖放操作发生的树目标元素。如果未定义,则目标为根元素。 |
dataTransfer: DataTransfer | 拖放源的数据传输项。 |
token: CancellationToken | 取消标记,表明拖放操作已被取消。 |
返回值 | 描述 |
void | Thenable<void> |
TreeItem
树项是树的 UI 元素。树项由 数据提供者 创建。
构造函数
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 不需要设置 accessibilityInformation
的 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"
}
]
}
}
这将仅对具有contextValue
为folder
的项显示动作extension.deleteFolder
。
description?: string | boolean
一个易于理解的字符串,显示的优先级较低。当为true
时,它将从resourceUri中推断出来,当为falsy
时,它将不会显示。
iconPath?: string | Uri | ThemeIcon | {dark: string | Uri, light: string | Uri}
树项的图标路径或ThemeIcon。当为falsy
时,如果项是可折叠的,则分配文件夹主题图标,否则分配文件主题图标。当指定文件或文件夹ThemeIcon时,将使用当前文件图标主题从指定的主题图标推断出图标,并使用resourceUri(如果提供)。
树项的可选 ID,必须在整个树中是唯一的。该 ID 用于保留树项的选择和展开状态。
如果没有提供,则使用树项的标签生成一个 ID。**注意**,当标签发生变化时,ID 也会发生变化,选择和展开状态将无法保持稳定。
label?: string | TreeItemLabel
一个易于理解的字符串,描述了该项。当为falsy
时,它将从resourceUri中推断出来。
resourceUri?: Uri
tooltip?: string | MarkdownString
将鼠标悬停在此项目上时的工具提示文本。
TreeItemCheckboxState
树项的复选框状态
枚举成员
确定一项是否未选中
确定一项是否已选中
TreeItemCollapsibleState
树项的可折叠状态
枚举成员
确定一项既不能折叠也不能展开。意味着它没有子项。
确定一个项目是折叠的
确定一个项目是展开的
TreeItemLabel
描述树项的标签
属性
highlights?: Array<[number, number]>
要在标签中突出显示的范围。范围定义为两个数字的元组,其中第一个是包含的起始索引,第二个是独占的结束索引
一个易于理解的字符串,描述了树项.
TreeView<T>
表示一个树视图
事件
onDidChangeCheckboxState: Event<TreeCheckboxChangeEvent<T>>
一个事件,用于发出信号,指示元素或根已选中或未选中。
onDidChangeSelection: Event<TreeViewSelectionChangeEvent<T>>
当选择发生变化时触发的事件
onDidChangeVisibility: Event<TreeViewVisibilityChangeEvent>
当可见性发生变化时触发的事件
onDidCollapseElement: Event<TreeViewExpansionEvent<T>>
当元素折叠时触发的事件
onDidExpandElement: Event<TreeViewExpansionEvent<T>>
当元素展开时触发的事件
属性
badge?: ViewBadge
要为此 TreeView 显示的徽章。要删除徽章,请将其设置为 undefined。
一个可选的易于理解的描述,它将以较低的优先级显示在视图标题中。将标题描述设置为 null、undefined 或空字符串将从视图中删除描述。
一个可选的易于理解的消息,它将在视图中呈现。将消息设置为 null、undefined 或空字符串将从视图中删除消息。
当前选中的元素。
树视图标题最初取自扩展程序 package.json。对 title 属性的更改将正确反映在 UI 中的视图标题中。
如果树视图可见,则为true
,否则为false
。
方法
释放此对象。
参数 | 描述 |
---|---|
返回值 | 描述 |
any |
reveal(element: T, options?: {expand: number | boolean, focus: boolean, select: boolean}): Thenable<void>
在树视图中显示给定的元素。如果树视图不可见,则显示树视图并显示元素。
默认情况下,显示的元素将被选中。为了不选中,请将选项select
设置为false
。为了聚焦,请将选项focus
设置为true
。为了展开显示的元素,请将选项expand
设置为true
。要递归展开,请将expand
设置为要展开的级别数。
- 注意:你最多只能展开 3 级。
- 注意:
TreeView
注册的 TreeDataProvider 必须实现 getParent 方法才能访问此 API。
参数 | 描述 |
---|---|
element: T | |
options?: {expand: number | boolean, focus: boolean, select: boolean} | |
返回值 | 描述 |
Thenable<void> |
TreeViewExpansionEvent<T>
当TreeView中的元素展开或折叠时触发的事件
属性
展开或折叠的元素。
TreeViewOptions<T>
用于创建TreeView的选项
属性
树是否支持多选。当树支持多选,并且从树中执行命令时,命令的第一个参数是执行命令的树项,第二个参数是包含所有选中树项的数组。
dragAndDropController?: TreeDragAndDropController<T>
一个可选的接口,用于在树视图中实现拖放。
manageCheckboxStateManually?: boolean
默认情况下,当树项的子项已获取时,子项复选框将根据父树项的选中状态自动管理。如果树项默认情况下是折叠的(意味着子项尚未获取),则子项复选框将不会更新。要覆盖此行为并在扩展程序中管理子项和父项复选框状态,请将其设置为true
。
当 TreeViewOptions.manageCheckboxStateManually 为假(默认行为)时的示例
树项被选中,然后获取其子项。子项将被选中。
树项的父项被选中。该树项及其所有兄弟节点将被选中。
- 父节点
- 子节点 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[]> | 一个定义或一个可解析为该定义的可等待对象。可以通过返回 |
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 Deprecated[]
此项目的标签。
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
另见 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
只影响路径组件,所有其他组件(方案、授权、查询和片段)保持不变。 - 注意 2:基本 uri 必须有路径;否则会抛出错误。
路径段以以下方式规范化
- 路径分隔符(
/
或\
)的序列被替换为单个分隔符 - 对于 windows 上的
file
-uris,反斜杠字符 (``) 被视为路径分隔符 ..
段表示父段,.
表示当前段- 路径有一个始终保持的根目录,例如,在 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 | 不百分比编码结果,默认为 |
返回值 | 描述 |
string | 此 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 资源的 Content Security Policy 源。
这是内容安全策略规则中应使用的来源
`img-src https: ${webview.cspSource} ...;`;
Webview 的 HTML 内容。
这应该是一个完整有效的 HTML 文档。更改此属性会导致 Webview 重新加载。
Webview 与普通扩展进程是沙盒隔离的,因此与 Webview 的所有通信都必须使用消息传递。要从扩展程序向 Webview 发送消息,请使用 postMessage。要从 Webview 向扩展程序发送消息,请在 Webview 中使用 acquireVsCodeApi
函数获取编辑器 API 的句柄,然后调用 .postMessage()
。
<script>
const vscode = acquireVsCodeApi(); // acquireVsCodeApi can only be invoked once
vscode.postMessage({ message: 'hello!' });
</script>
要从工作区内加载资源到 Webview 中,请使用 asWebviewUri 方法,并确保资源的目录列在 WebviewOptions.localResourceRoots 中。
请记住,即使 Webview 是沙盒隔离的,它们仍然允许运行脚本并加载任意内容,因此扩展程序在处理 Webview 时必须遵循所有标准的 Web 安全最佳实践。这包括正确地对所有不受信任的输入进行清理(包括来自工作区的内容)并设置 内容安全策略。
options: WebviewOptions
Webview 的内容设置。
方法
asWebviewUri(localResource: Uri): Uri
将本地文件系统 URI 转换为可以在 Webview 中使用的 URI。
Webview 不能直接使用 file:
URI 从工作区或本地文件系统加载资源。asWebviewUri
函数接收一个本地 file:
URI 并将其转换为可以在 Webview 中使用的 URI,从而加载相同的资源。
webview.html = `<img src="${webview.asWebviewUri(
vscode.Uri.file('/Users/codey/workspace/cat.gif')
)}">`;
postMessage(message: any): Thenable<boolean>
向 Webview 内容发送消息。
只有在 Webview 处于活动状态(可见或处于后台,并设置了 retainContextWhenHidden
)时才会传递消息。
参数 | 描述 |
---|---|
message: any | 消息正文。它必须是字符串或其他 JSON 可序列化对象。 对于旧版本的 vscode,如果 但是,如果你的扩展程序在 |
返回值 | 描述 |
Thenable<boolean> | 一个承诺,在消息被发送到 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
从中加载本地(文件系统)资源的根路径。
默认情况下为当前工作区的根文件夹加上扩展程序的安装目录。
传入一个空数组以禁止访问任何本地资源。
portMapping?: readonly WebviewPortMapping[]
Webview 中使用的 localhost 端口的映射。
端口映射允许 Webview 透明地定义如何解析 localhost 端口。这可以用于允许在 Webview 中使用静态 localhost 端口,该端口解析为服务正在运行的随机端口。
如果 Webview 访问 localhost 内容,我们建议你指定端口映射,即使 webviewPort
和 extensionHostPort
端口相同。
注意,端口映射仅适用于 http
或 https
URL。Websocket URL(例如 ws://127.0.0.1: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 | 要显示面板的视图列。如果未定义,则显示在当前 |
preserveFocus?: boolean | 当为 |
返回值 | 描述 |
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>
恢复在 vscode 关闭时已持久化的 webview 面板。
有两种类型的 webview 持久化。
- 会话内持久化。
- 跨会话持久化(跨编辑器重启)。
WebviewPanelSerializer
仅在第二种情况下需要:跨会话持久化 webview。
会话内持久化允许 webview 在隐藏时保存其状态,并在再次变为可见时从该状态恢复其内容。它完全由 webview 内容本身驱动。要保存持久化状态,请使用任何可序列化为 json 的对象调用 acquireVsCodeApi().setState()
。要再次恢复状态,请调用 getState()
。
// Within the webview
const vscode = acquireVsCodeApi();
// Get existing state
const oldState = vscode.getState() || { value: 0 };
// Update state
setState({ value: oldState.value + 1 });
WebviewPanelSerializer
将此持久化扩展到编辑器重启。当编辑器关闭时,它将保存所有具有序列化器的 webview 的 setState
中的状态。当 webview 在重启后第一次变为可见时,此状态将传递给 deserializeWebviewPanel
。然后,扩展程序可以从该状态恢复旧的 WebviewPanel
。
方法
deserializeWebviewPanel(webviewPanel: WebviewPanel, state: T): Thenable<void>
从其序列化 state
中恢复 webview 面板。
当序列化后的 webview 第一次变为可见时调用。
参数 | 描述 |
---|---|
webviewPanel: WebviewPanel | 要恢复的 webview 面板。序列化器应获取此面板的所有权。序列化器必须恢复 webview 的 |
state: T | 来自 webview 内容的持久化状态。 |
返回值 | 描述 |
Thenable<void> | 指示 webview 已完全恢复的 Thenable。 |
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 | 当 |
返回值 | 描述 |
void |
WebviewViewProvider
用于创建 WebviewView
元素的提供程序。
方法
resolveWebviewView(webviewView: WebviewView, context: WebviewViewResolveContext<unknown>, token: CancellationToken): void | Thenable<void>
解析 webview 视图。
当视图第一次变为可见时,会调用 resolveWebviewView
。这可能发生在视图首次加载时或用户隐藏然后再次显示视图时。
参数 | 描述 |
---|---|
webviewView: WebviewView | 要恢复的 webview 视图。提供程序应获取此视图的所有权。提供程序必须设置 webview 的 |
context: WebviewViewResolveContext<unknown> | 有关正在解析的视图的附加元数据。 |
token: CancellationToken | 取消令牌,指示不再需要提供的视图。 |
返回值 | 描述 |
void | Thenable<void> | 指示视图已完全解析的可选 Thenable。 |
WebviewViewResolveContext<T>
正在解析的 webview 视图的附加信息。
属性
来自 webview 内容的持久化状态。
为了节省资源,编辑器通常会释放不可见的 webview 文档(iframe 内容)。例如,当用户折叠视图或切换到侧边栏中的其他顶级活动时,WebviewView
本身将保持活动状态,但 webview 的基础文档将被释放。它将在视图再次变为可见时重新创建。
您可以在 WebviewOptions
中设置 retainContextWhenHidden
来阻止此行为。但是,这会增加资源使用,应尽可能避免。相反,您可以使用持久化状态保存 webview 的状态,以便可以根据需要快速重新创建它。
要保存持久化状态,请在 webview 内使用任何可序列化为 json 的对象调用 acquireVsCodeApi().setState()
。要再次恢复状态,请调用 getState()
。例如
// Within the webview
const vscode = acquireVsCodeApi();
// Get existing state
const oldState = vscode.getState() || { value: 0 };
// Update state
setState({ value: oldState.value + 1 });
编辑器确保当 webview 隐藏以及跨编辑器重启时,持久化状态被正确保存。
WindowState
表示窗口的状态。
属性
窗口是否最近被交互过。这会在活动时立即更改,或者在用户不活动一段时间后更改。
当前窗口是否处于焦点状态。
WorkspaceConfiguration
表示配置。它是以下内容的合并视图
- 默认设置
- 全局(用户)设置
- 工作区设置
- 工作区文件夹设置 - 来自请求的资源所属的 工作区文件夹 之一。
- 语言设置 - 在请求的语言下定义的设置。
有效值(由 get 返回)是通过按以下顺序覆盖或合并值计算得出的
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 | 值 |
get<T>(section: string, defaultValue: T): T
从该配置中返回一个值。
参数 | 描述 |
---|---|
section: string | 配置名称,支持 *带点* 名称。 |
defaultValue: T | 当找不到值或值为 |
返回值 | 描述 |
T | 值 |
检查该配置是否具有某个值。
参数 | 描述 |
---|---|
section: string | 配置名称,支持 *带点* 名称。 |
返回值 | 描述 |
boolean | 如果该节不解析为 |
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} | 有关配置设置的信息或 |
update(section: string, value: any, configurationTarget?: boolean | ConfigurationTarget, overrideInLanguage?: boolean): Thenable<void>
更新配置值。更新的配置值将被持久化。
可以在以下位置更改值
- 全局设置:更改编辑器所有实例的值。
- 工作区设置:更改当前工作区的值(如果可用)。
- 工作区文件夹设置:更改从请求资源所属的工作区文件夹之一获取的设置值。
- 语言设置:更改请求的 languageId 的值。
注意: 要删除配置值,请使用undefined
,例如:config.update('somekey', undefined)
- 抛出 - 更新时出错
- 未注册的配置。
- 窗口配置到工作区文件夹
- 未打开工作区时,将配置更改为工作区或工作区文件夹。
- 没有工作区文件夹设置时,将配置更改为工作区文件夹。
- 当WorkspaceConfiguration未限定于资源范围时,将配置更改为工作区文件夹。
参数 | 描述 |
---|---|
section: string | 配置名称,支持 *带点* 名称。 |
value: any | 新值。 |
configurationTarget?: boolean | ConfigurationTarget | |
overrideInLanguage?: boolean | 是否在请求的 languageId 范围内更新值。 - 如果为 |
返回值 | 描述 |
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} | 定义是否应覆盖或忽略现有文件。如果 |
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 | 资源标识符。 |
返回值 | 描述 |
boolean | 如果给定资源将被此编辑修改,则为 |
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?: Uri | ThemeIcon | {dark: Uri, light: Uri}
编辑的图标路径或ThemeIcon。
一个更显眼的,人类可读字符串。
一个标志,指示需要用户确认。
WorkspaceEditMetadata
有关工作区编辑的附加数据。
属性
向编辑器发出信号,表明此编辑是重构。
WorkspaceFolder
工作区文件夹是编辑器打开的多个根目录之一。 所有工作区文件夹都是平等的,这意味着没有活动或主要工作区文件夹的概念。
属性
此工作区文件夹的序号。
此工作区文件夹的名称。 默认值为其uri-path的基名
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
,然后提供带有部分位置 对象的符号,而没有定义 range
。 然后,编辑器将仅对选定符号调用 resolveWorkspaceSymbol
,例如在打开工作区符号时。
参数 | 描述 |
---|---|
query: string | 查询字符串可以是空字符串,在这种情况下应该返回所有符号。 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<T[]> | 文档高亮显示数组或解析为文档高亮显示的 thenable。可以通过返回 |
resolveWorkspaceSymbol(symbol: T, token: CancellationToken): ProviderResult<T>
给定一个符号,填写其位置。 每当在 UI 中选择符号时,都会调用此方法。 提供程序可以实现此方法并从provideWorkspaceSymbols 返回不完整的符号,这通常有助于提高性能。
参数 | 描述 |
---|---|
symbol: T | 要解析的符号。 保证它是从先前对 |
token: CancellationToken | 取消令牌。 |
返回值 | 描述 |
ProviderResult<T> | 已解析的符号或解析为该符号的可执行对象。 当没有返回结果时,将使用给定的 |
API 模式
以下是一些我们在 VS Code API 中使用的常见模式。
承诺
VS Code API 使用承诺 表示异步操作。 从扩展中,可以返回任何类型的承诺,例如 ES6、WinJS、A+ 等。
API 通过 Thenable
类型来表达独立于特定承诺库。 Thenable
代表共同点,即then 方法。
在大多数情况下,使用承诺是可选的,当 VS Code 调用扩展时,它可以处理结果类型以及结果类型的 Thenable
。 当使用承诺是可选时,API 会通过返回 or
类型来指示这一点。
provideNumber(): number | Thenable<number>
取消令牌
通常,操作是在易变状态上启动的,该状态会在操作完成之前发生变化。 例如,计算 IntelliSense 开始,用户继续输入,使该操作的结果过时。
暴露给这种行为的 API 将获得一个 CancellationToken
,您可以在其中检查取消(isCancellationRequested
)或在发生取消时收到通知(onCancellationRequested
)。 取消令牌通常是函数调用的最后一个参数,并且是可选的。
一次性对象
VS Code API 使用一次性模式 用于从 VS Code 获取的资源。 这适用于事件监听、命令、与 UI 交互以及各种语言贡献。
例如,setStatusBarMessage(value: string)
函数返回一个 Disposable
,调用 dispose
后将再次删除该消息。
事件
VS Code API 中的事件被公开为函数,您可以在其中调用带有监听器函数的函数来订阅。 订阅调用会返回一个 Disposable
,在处置时会删除事件监听器。
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),发生了什么(动词),以及上下文(名词)(除非从上下文中显而易见)。
VS Code API 中的一个例子是 window.onDidChangeActiveTextEditor
,这是一个在活动文本编辑器(名词)已(onDid)更改(动词)时触发的事件。
严格的空值
VS Code API 在适当的情况下使用 undefined
和 null
TypeScript 类型来支持严格的空值检查。
身份验证命名空间。