VS Code API
VS Code API 是一组可以在 Visual Studio Code 扩展中调用的 JavaScript API。本页列出了所有可供扩展作者使用的 VS Code API。
API 命名空间和类
此列表编译自 VS Code 仓库中的 vscode.d.ts 文件。
authentication
事件
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 | AuthenticationGetSessionPresentationOptions}): Thenable<AuthenticationSession>
获取匹配所需范围的身份验证会话。如果未注册具有 providerId 的提供程序,或者用户不同意与扩展共享身份验证信息,则拒绝。如果存在多个具有相同范围的会话,将向用户显示快速选择以选择要使用的帐户。
目前,编辑器中有两个内置扩展贡献的身份验证提供程序,分别实现了 GitHub 和 Microsoft 身份验证:它们的 providerId 分别是 'github' 和 'microsoft'。
参数 | 描述 |
---|---|
providerId: string | 要使用的提供程序的 id |
scopes: readonly string[] | 表示请求权限的范围列表。这些取决于身份验证提供程序 |
options: AuthenticationGetSessionOptions & {createIfNone: true | AuthenticationGetSessionPresentationOptions} | |
返回 | 描述 |
Thenable<AuthenticationSession> | 解析为身份验证会话的 Thenable。 |
getSession(providerId: string, scopes: readonly string[], options: AuthenticationGetSessionOptions & {forceNewSession: true | AuthenticationGetSessionPresentationOptions}): Thenable<AuthenticationSession>
获取匹配所需范围的身份验证会话。如果未注册具有 providerId 的提供程序,或者用户不同意与扩展共享身份验证信息,则拒绝。如果存在多个具有相同范围的会话,将向用户显示快速选择以选择要使用的帐户。
目前,编辑器中有两个内置扩展贡献的身份验证提供程序,分别实现了 GitHub 和 Microsoft 身份验证:它们的 providerId 分别是 'github' 和 'microsoft'。
参数 | 描述 |
---|---|
providerId: string | 要使用的提供程序的 id |
scopes: readonly string[] | 表示请求权限的范围列表。这些取决于身份验证提供程序 |
options: AuthenticationGetSessionOptions & {forceNewSession: true | AuthenticationGetSessionPresentationOptions} | |
返回 | 描述 |
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,释放时将注销此提供程序。 |
chat
用于聊天功能的命名空间。用户通过在聊天视图中向聊天参与者发送消息与其互动。聊天参与者可以通过 ChatResponseStream 使用 markdown 或其他类型的内容进行响应。
函数
createChatParticipant(id: string, handler: ChatRequestHandler): ChatParticipant
创建新的 聊天参与者 实例。
参数 | 描述 |
---|---|
id: string | 参与者的唯一标识符。 |
handler: ChatRequestHandler | 参与者的请求处理程序。 |
返回 | 描述 |
ChatParticipant | 新的聊天参与者。 |
commands
用于处理命令的命名空间。简而言之,命令是具有唯一标识符的函数。该函数有时也称为命令处理程序。
可以使用 registerCommand 和 registerTextEditorCommand 函数将命令添加到编辑器。命令可以手动执行或通过 UI 手势执行。这些包括:
- 面板 - 在
package.json
的commands
部分中使用命令使其显示在命令面板中。 - 键绑定 - 在
package.json
的keybindings
部分中使用命令为您的扩展启用键绑定。
其他扩展和编辑器本身的命令对扩展都是可访问的。但是,调用编辑器命令时并非所有参数类型都受支持。
这是一个示例,注册命令处理程序并将该命令的条目添加到面板中。首先使用标识符 extension.sayHello
注册命令处理程序。
commands.registerCommand('extension.sayHello', () => {
window.showInformationMessage('Hello World!');
});
其次,将命令标识符绑定到它将在面板中显示的标题(package.json
)。
{
"contributes": {
"commands": [
{
"command": "extension.sayHello",
"title": "Hello World"
}
]
}
}
函数
executeCommand<T>(command: string, ...rest: any[]): Thenable<T>
执行由给定命令标识符表示的命令。
参数 | 描述 |
---|---|
command: string | 要执行的命令的标识符。 |
...rest: any[] | 传递给命令函数的参数。 |
返回 | 描述 |
Thenable<T> | 一个 Thenable,解析为给定命令的返回值。当命令处理程序函数不返回任何内容时,返回 |
getCommands(filterInternal?: boolean): Thenable<string[]>
检索所有可用命令的列表。以下划线开头的命令被视为内部命令。
参数 | 描述 |
---|---|
filterInternal?: boolean | 设置为 |
返回 | 描述 |
Thenable<string[]> | 解析为命令 ID 列表的 Thenable。 |
registerCommand(command: string, callback: (args: any[]) => any, thisArg?: any): Disposable
注册一个命令,该命令可以通过键盘快捷方式、菜单项、操作或直接调用。
使用已存在的命令标识符两次注册命令将导致错误。
参数 | 描述 |
---|---|
command: string | 命令的唯一标识符。 |
callback: (args: any[]) => any | 命令处理程序函数。 |
thisArg?: any | 调用处理程序函数时使用的 |
返回 | 描述 |
Disposable | 释放时注销此命令的 Disposable。 |
registerTextEditorCommand(command: string, callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void, thisArg?: any): Disposable
注册一个文本编辑器命令,该命令可以通过键盘快捷方式、菜单项、操作或直接调用。
文本编辑器命令与普通命令不同,它们只有在调用命令时有活动编辑器时才会执行。此外,编辑器命令的命令处理程序可以访问活动编辑器和 edit 构建器。请注意,编辑构建器仅在回调执行期间有效。
参数 | 描述 |
---|---|
command: string | 命令的唯一标识符。 |
callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void | |
thisArg?: any | 调用处理程序函数时使用的 |
返回 | 描述 |
Disposable | 释放时注销此命令的 Disposable。 |
comments
函数
createCommentController(id: string, label: string): CommentController
创建新的 注释控制器 实例。
参数 | 描述 |
---|---|
id: string | 注释控制器的 |
label: string | 注释控制器的人类可读字符串。 |
返回 | 描述 |
CommentController | 一个 注释控制器 实例。 |
debug
用于调试功能的命名空间。
变量
activeDebugConsole: DebugConsole
当前活动的 调试控制台。如果没有活动调试会话,发送到调试控制台的输出不会显示。
activeDebugSession: DebugSession | undefined
当前活动的 调试会话 或 undefined
。活动调试会话是指调试操作浮动窗口所代表的会话,或当前显示在调试操作浮动窗口下拉菜单中的会话。如果没有活动调试会话,则值为 undefined
。
activeStackItem: DebugThread | DebugStackFrame | undefined
当前聚焦的线程或堆栈帧,如果没有聚焦的线程或堆栈,则为 undefined
。只要有活动调试会话,就可以聚焦线程;而堆栈帧只能在会话暂停且已检索到调用堆栈时聚焦。
breakpoints: readonly Breakpoint[]
断点列表。
事件
onDidChangeActiveDebugSession: Event<DebugSession | undefined>
onDidChangeActiveStackItem: Event<DebugThread | DebugStackFrame | undefined>
当 debug.activeStackItem 发生更改时触发的事件。
onDidChangeBreakpoints: Event<BreakpointsChangeEvent>
当断点集被添加、移除或更改时发出的 Event。
onDidReceiveDebugSessionCustomEvent: Event<DebugSessionCustomEvent>
onDidStartDebugSession: Event<DebugSession>
onDidTerminateDebugSession: Event<DebugSession>
函数
addBreakpoints(breakpoints: readonly Breakpoint[]): void
添加断点。
参数 | 描述 |
---|---|
breakpoints: readonly Breakpoint[] | 要添加的断点。 |
返回 | 描述 |
void |
asDebugSourceUri(source: DebugProtocolSource, session?: DebugSession): Uri
将通过调试适配器协议接收的“Source”描述符对象转换为可用于加载其内容的 Uri。如果源描述符基于路径,则返回文件 Uri。如果源描述符使用引用号,则会构建一个需要相应 ContentProvider 和正在运行的调试会话的特定调试 Uri(方案 'debug')。
如果“Source”描述符没有足够的信息来创建 Uri,则会抛出错误。
参数 | 描述 |
---|---|
source: DebugProtocolSource | 符合调试适配器协议中定义的 Source 类型的对象。 |
session?: DebugSession | 可选的调试会话,当源描述符使用引用号从活动调试会话加载内容时将使用此会话。 |
返回 | 描述 |
Uri | 可用于加载源内容的 uri。 |
registerDebugAdapterDescriptorFactory(debugType: string, factory: DebugAdapterDescriptorFactory): Disposable
为特定的调试类型注册 调试适配器描述符工厂。扩展只能为其定义的调试类型注册 DebugAdapterDescriptorFactory。否则将抛出错误。为一个调试类型注册多个 DebugAdapterDescriptorFactory 将导致错误。
参数 | 描述 |
---|---|
debugType: string | 注册工厂的调试类型。 |
factory: DebugAdapterDescriptorFactory | 要注册的 调试适配器描述符工厂。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此工厂。 |
registerDebugAdapterTrackerFactory(debugType: string, factory: DebugAdapterTrackerFactory): Disposable
为给定的调试类型注册调试适配器跟踪器工厂。
参数 | 描述 |
---|---|
debugType: string | 注册工厂的调试类型,或 '*' 以匹配所有调试类型。 |
factory: DebugAdapterTrackerFactory | 要注册的 调试适配器跟踪器工厂。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此工厂。 |
registerDebugConfigurationProvider(debugType: string, provider: DebugConfigurationProvider, triggerKind?: DebugConfigurationProviderTriggerKind): Disposable
为特定的调试类型注册 调试配置提供程序。可选的 triggerKind 可用于指定何时触发提供程序的 provideDebugConfigurations
方法。目前有两种触发类型:值为 Initial
(或未提供触发类型参数)时,provideDebugConfigurations
方法用于提供要复制到新创建的 launch.json 中的初始调试配置。触发类型为 Dynamic
时,provideDebugConfigurations
方法用于动态确定要呈现给用户的调试配置(除了 launch.json 中的静态配置之外)。请注意,triggerKind
参数仅适用于 provideDebugConfigurations
方法:因此 resolveDebugConfiguration
方法完全不受影响。为不同触发类型注册具有解析方法的单个提供程序会导致多次调用相同的解析方法。同一种类型可以注册多个提供程序。
参数 | 描述 |
---|---|
debugType: string | 注册提供程序的调试类型。 |
provider: DebugConfigurationProvider | 要注册的 调试配置提供程序。 |
triggerKind?: DebugConfigurationProviderTriggerKind | 注册提供程序的 'provideDebugConfiguration' 方法的触发器。如果缺少 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
removeBreakpoints(breakpoints: readonly Breakpoint[]): void
移除断点。
参数 | 描述 |
---|---|
breakpoints: readonly Breakpoint[] | 要移除的断点。 |
返回 | 描述 |
void |
startDebugging(folder: WorkspaceFolder, nameOrConfiguration: string | DebugConfiguration, parentSessionOrOptions?: DebugSession | DebugSessionOptions): Thenable<boolean>
通过使用命名启动或命名复合配置,或直接传递 DebugConfiguration 来开始调试。命名配置在给定文件夹中的 '.vscode/launch.json' 中查找。调试开始前,所有未保存的文件都会保存,并且启动配置会更新到最新。配置中使用的文件夹特定变量(例如 '${workspaceFolder}')会根据给定文件夹解析。
参数 | 描述 |
---|---|
folder: WorkspaceFolder | 用于查找命名配置和解析变量的 工作区文件夹,对于非文件夹设置,则为 |
nameOrConfiguration: string | DebugConfiguration | 调试或复合配置的名称或 DebugConfiguration 对象。 |
parentSessionOrOptions?: DebugSession | DebugSessionOptions | 调试会话选项。当传递父 调试会话 时,假定选项仅包含此父会话。 |
返回 | 描述 |
Thenable<boolean> | 当调试成功启动时解析的 Thenable。 |
stopDebugging(session?: DebugSession): Thenable<void>
停止给定的调试会话,如果省略 session,则停止所有调试会话。
参数 | 描述 |
---|---|
session?: DebugSession | 要停止的 调试会话;如果省略,则停止所有会话。 |
返回 | 描述 |
Thenable<void> | 会话停止时解析的 Thenable。 |
env
描述编辑器运行环境的命名空间。
变量
应用程序的托管位置。在桌面上是 'desktop',在 web 上是指定的嵌入者,即 'github.dev'、'codespaces',如果嵌入者未提供该信息,则为 'web'。
编辑器的应用程序名称,例如 'VS Code'。
编辑器运行的应用程序根文件夹。
注意,当在没有应用程序根文件夹表示的环境中运行时,该值为空字符串。
clipboard: Clipboard
系统剪贴板。
指示这是应用程序的新安装。如果在安装的第一天内,则为 true
,否则为 false
。
指示用户是否已启用遥测。可以观察此值以确定扩展是否应发送遥测数据。
表示用户首选语言,例如 de-CH
、fr
或 en-US
。
logLevel: LogLevel
编辑器当前的日志级别。
计算机的唯一标识符。
remoteName: string | undefined
远程的名称。由扩展定义,常见的示例是用于适用于 Linux 的 Windows 子系统的 wsl
或用于使用安全 shell 的远程的 ssh-remote
。
注意,当没有远程扩展宿主时,该值为 undefined
,但如果存在远程扩展宿主,则该值在所有扩展宿主(本地和远程)中都会定义。使用 Extension.extensionKind 来判断特定扩展是否在远程运行。
当前会话的唯一标识符。每次启动编辑器时都会更改。
检测到的扩展宿主的默认 shell,此值会被扩展宿主平台的 terminal.integrated.defaultProfile
设置覆盖。请注意,在不支持 shell 的环境中,该值为空字符串。
uiKind: UIKind
UI 类型属性指示从哪个 UI 访问扩展。例如,可以从桌面应用程序或 Web 浏览器访问扩展。
编辑器在操作系统中注册的自定义 uri scheme。
事件
onDidChangeLogLevel: Event<LogLevel>
当编辑器日志级别更改时触发的 Event。
onDidChangeShell: Event<string>
当默认 shell 更改时触发的 Event。此事件会带上新的 shell 路径。
onDidChangeTelemetryEnabled: Event<boolean>
当用户启用或禁用遥测时触发的 Event。如果用户已启用遥测,则为 true
;如果用户已禁用遥测,则为 false
。
函数
asExternalUri(target: Uri): Thenable<Uri>
将 uri 解析为可在外部访问的形式。
http:
或 https:
scheme
将扩展运行位置的外部 uri(例如 http:
或 https:
链接)解析为客户端计算机上同一资源的 uri。
如果扩展在客户端计算机上运行,则此操作是空操作。
如果扩展在远程运行,此函数会自动在本地计算机和远程的 target
之间建立端口转发隧道,并返回指向隧道的本地 uri。端口转发隧道的生命周期由编辑器管理,用户可以关闭隧道。
注意,通过 openExternal
传递的 uri 会自动解析,因此你不应在其上调用 asExternalUri
。
vscode.env.uriScheme
创建一个 uri,如果在浏览器中打开(例如通过 openExternal
),将触发已注册的 UriHandler。
扩展不应对生成的 uri 做任何假设,也不应以任何方式对其进行更改。相反,扩展可以例如在身份验证流程中使用此 uri,通过将 uri 作为回调查询参数添加到要进行身份验证的服务器。
注意,如果服务器决定向 uri 添加额外的查询参数(例如 token 或 secret),这些参数将出现在传递给 UriHandler 的 uri 中。
示例身份验证流程
vscode.window.registerUriHandler({
handleUri(uri: vscode.Uri): vscode.ProviderResult<void> {
if (uri.path === '/did-authenticate') {
console.log(uri.toString());
}
}
});
const callableUri = await vscode.env.asExternalUri(
vscode.Uri.parse(vscode.env.uriScheme + '://my.extension/did-authenticate')
);
await vscode.env.openExternal(callableUri);
注意,扩展不应缓存 asExternalUri
的结果,因为解析后的 uri 可能会由于系统或用户操作而失效——例如,在远程情况下,用户可能会关闭由 asExternalUri
打开的端口转发隧道。
任何其他 scheme
任何其他 scheme 都将像提供的 URI 是工作区 URI 一样处理。在这种情况下,该方法将返回一个 URI,处理该 URI 将使编辑器打开工作区。
createTelemetryLogger(sender: TelemetrySender, options?: TelemetryLoggerOptions): TelemetryLogger
创建新的 遥测记录器。
参数 | 描述 |
---|---|
sender: TelemetrySender | 遥测记录器使用的遥测发送器。 |
options?: TelemetryLoggerOptions | 遥测记录器的选项。 |
返回 | 描述 |
TelemetryLogger | 新的遥测记录器。 |
openExternal(target: Uri): Thenable<boolean>
使用默认应用程序外部打开链接。根据使用的 scheme,这可以是:
- 浏览器(
http:
,https:
) - 邮件客户端(
mailto:
) - VS Code 本身(来自
vscode.env.uriScheme
的vscode:
)
注意,在编辑器内部打开文本文档的正确方法是 showTextDocument,而不是此函数。
参数 | 描述 |
---|---|
target: Uri | 应打开的 uri。 |
返回 | 描述 |
Thenable<boolean> | 指示打开是否成功的 Promise。 |
extensions
用于处理已安装扩展的命名空间。扩展由 Extension 接口表示,该接口支持对其进行反射。
扩展开发者可以通过从 activate
调用返回其 API 公共界面来向其他扩展提供 API。
export function activate(context: vscode.ExtensionContext) {
let api = {
sum(a, b) {
return a + b;
},
mul(a, b) {
return a * b;
}
};
// 'export' public api-surface
return api;
}
依赖于另一个扩展的 API 时,在 package.json
中添加 extensionDependencies
条目,并使用 getExtension 函数和 exports 属性,如下所示:
let mathExt = extensions.getExtension('genius.math');
let importedApi = mathExt.exports;
console.log(importedApi.mul(42, 1));
变量
all: readonly Extension<any>[]
系统当前已知的所有扩展。
事件
onDidChange: Event<void>
当 extensions.all
更改时触发的事件。这可能发生在安装、卸载、启用或禁用扩展时。
函数
getExtension<T>(extensionId: string): Extension<T> | undefined
通过其完整标识符(格式为:publisher.name
)获取扩展。
参数 | 描述 |
---|---|
extensionId: string | 扩展标识符。 |
返回 | 描述 |
Extension<T> | undefined | 扩展或 |
l10n
扩展 API 中用于本地化相关功能的命名空间。要正确使用此功能,必须在扩展清单中定义 l10n
,并拥有 bundle.l10n。
注意:内置扩展(例如 Git、TypeScript 语言特性、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 | 注入参数的本地化字符串。 |
languages
用于参与特定语言的编辑器功能的命名空间,例如 IntelliSense、代码操作、诊断等。
存在许多编程语言,它们在语法、语义和范式上差异巨大。尽管如此,自动单词补全、代码导航或代码检查等功能已在针对不同编程语言的不同工具中普及。
编辑器提供了一个 API,通过预先设置所有 UI 和操作,并允许你仅通过提供数据来参与,从而简化了此类常见功能的提供。例如,要贡献一个悬停(hover)功能,你只需提供一个函数,该函数可以使用 TextDocument 和 Position 调用并返回悬停信息。其余部分,例如跟踪鼠标、定位悬停、保持悬停稳定等,都由编辑器负责处理。
languages.registerHoverProvider('javascript', {
provideHover(document, position, token) {
return new Hover('I am a hover!');
}
});
注册通过一个文档选择器完成,文档选择器可以是一个语言 ID,例如 javascript
,也可以是一个更复杂的筛选器,例如 { language: 'typescript', scheme: 'file' }
。根据此类选择器匹配文档会得到一个分数,用于确定是否使用以及如何使用提供程序。如果分数相等,则最后注册的提供程序获胜。对于支持完整参数的功能,例如hover,仅检查分数是否 >0
;对于其他功能,例如IntelliSense,分数用于确定提供程序参与的顺序。
事件
onDidChangeDiagnostics: Event<DiagnosticChangeEvent>
当全局诊断集发生变化时触发的 Event。这包括新添加和移除的诊断。
函数
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的语言部分,因此
"fooLang"
类似于{ language: "fooLang" }
。 - DocumentFilter 将通过将其各部分与文档进行比较来匹配文档。遵循以下规则:
- 当
DocumentFilter
为空 ({}
) 时,结果为0
- 当
scheme
、language
、pattern
或notebook
已定义但其中之一不匹配时,结果为0
- 与
*
匹配的分数为5
,通过相等或 glob 模式匹配的分数为10
- 结果为各项匹配的最大值
- 当
示例
// default document from disk (file-scheme)
doc.uri; //'file:///my/file.js'
doc.languageId; // 'javascript'
match('javascript', doc); // 10;
match({ language: 'javascript' }, doc); // 10;
match({ language: 'javascript', scheme: 'file' }, doc); // 10;
match('*', doc); // 5
match('fooLang', doc); // 0
match(['fooLang', '*'], doc); // 5
// virtual document, e.g. from git-index
doc.uri; // 'git:/my/file.js'
doc.languageId; // 'javascript'
match('javascript', doc); // 10;
match({ language: 'javascript', scheme: 'git' }, doc); // 10;
match('*', doc); // 5
// notebook cell document
doc.uri; // `vscode-notebook-cell:///my/notebook.ipynb#gl65s2pmha`;
doc.languageId; // 'python'
match({ notebookType: 'jupyter-notebook' }, doc); // 10
match({ notebookType: 'fooNotebook', language: 'python' }, doc); // 0
match({ language: 'python' }, doc); // 10
match({ notebookType: '*' }, doc); // 5
参数 | 描述 |
---|---|
selector: DocumentSelector | 一个文档选择器。 |
document: TextDocument | 一个文本文档。 |
返回 | 描述 |
number | 如果选择器匹配则为大于 |
registerCallHierarchyProvider(selector: DocumentSelector, provider: CallHierarchyProvider): Disposable
注册一个调用层次结构提供程序。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: CallHierarchyProvider | 一个调用层次结构提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
registerCodeActionsProvider(selector: DocumentSelector, provider: CodeActionProvider<CodeAction>, metadata?: CodeActionProviderMetadata): Disposable
注册一个代码操作提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: CodeActionProvider<CodeAction> | 一个代码操作提供程序。 |
metadata?: CodeActionProviderMetadata | 关于提供程序提供的代码操作类型的元数据。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
registerCodeLensProvider(selector: DocumentSelector, provider: CodeLensProvider<CodeLens>): Disposable
注册一个代码镜头提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: CodeLensProvider<CodeLens> | 一个代码镜头提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
registerColorProvider(selector: DocumentSelector, provider: DocumentColorProvider): Disposable
注册一个颜色提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: DocumentColorProvider | 一个颜色提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
registerCompletionItemProvider(selector: DocumentSelector, provider: CompletionItemProvider<CompletionItem>, ...triggerCharacters: string[]): Disposable
注册一个补全提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序按其分数排序,并按顺序请求分数相同的提供程序组提供补全项。当一个组中的一个或多个提供程序返回结果时,该过程停止。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
补全项提供程序可以关联一组 triggerCharacters
。当输入触发字符时,会请求补全,但只从注册了输入字符的提供程序请求。因此,触发字符应与词字符不同,常见的触发字符是 .
,用于触发成员补全。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: CompletionItemProvider<CompletionItem> | 一个补全提供程序。 |
...triggerCharacters: string[] | 当用户键入其中一个字符时触发补全。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
registerDeclarationProvider(selector: DocumentSelector, provider: DeclarationProvider): Disposable
注册一个声明提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: DeclarationProvider | 一个声明提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
registerDefinitionProvider(selector: DocumentSelector, provider: DefinitionProvider): Disposable
注册一个定义提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: DefinitionProvider | 一个定义提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
registerDocumentDropEditProvider(selector: DocumentSelector, provider: DocumentDropEditProvider<DocumentDropEdit>, metadata?: DocumentDropEditProviderMetadata): Disposable
注册一个新的DocumentDropEditProvider。
可以为一个语言注册多个拖放提供程序。将内容拖放到编辑器中时,将根据其DocumentDropEditProviderMetadata中指定的处理的 MIME 类型调用该编辑器语言的所有注册提供程序。
每个提供程序可以返回一个或多个DocumentDropEdits。编辑使用DocumentDropEdit.yieldTo属性进行排序。默认情况下将应用第一个编辑。如果有其他编辑,这些编辑将作为可选择的拖放选项显示在拖放小部件中。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: DocumentDropEditProvider<DocumentDropEdit> | 一个拖放提供程序。 |
metadata?: DocumentDropEditProviderMetadata | 关于提供程序的附加元数据。 |
返回 | 描述 |
Disposable | 一个释放时注销此提供程序的Disposable。 |
registerDocumentFormattingEditProvider(selector: DocumentSelector, provider: DocumentFormattingEditProvider): Disposable
注册一个文档格式化提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序按其分数排序,并使用最佳匹配的提供程序。选定提供程序的失败将导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: DocumentFormattingEditProvider | 一个文档格式化编辑提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
registerDocumentHighlightProvider(selector: DocumentSelector, provider: DocumentHighlightProvider): Disposable
注册一个文档高亮提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序按其分数排序,并按顺序请求组提供文档高亮。当提供程序返回非假值或非失败结果时,该过程停止。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: DocumentHighlightProvider | 一个文档高亮提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
registerDocumentLinkProvider(selector: DocumentSelector, provider: DocumentLinkProvider<DocumentLink>): Disposable
注册一个文档链接提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: DocumentLinkProvider<DocumentLink> | 一个文档链接提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
registerDocumentPasteEditProvider(selector: DocumentSelector, provider: DocumentPasteEditProvider<DocumentPasteEdit>, metadata: DocumentPasteProviderMetadata): Disposable
注册一个新的DocumentPasteEditProvider。
可以为一个语言注册多个提供程序。对于复制和粘贴操作,将根据DocumentPasteProviderMetadata中指定的处理的 MIME 类型调用该语言的所有注册提供程序。
对于复制操作,每个提供程序对DataTransfer所做的更改将合并到一个用于填充剪贴板的单一DataTransfer中。
对于[DocumentPasteEditProvider.providerDocumentPasteEdits 粘贴操作](#DocumentPasteEditProvider.providerDocumentPasteEdits paste operations),将调用每个提供程序,并且每个提供程序可以返回一个或多个DocumentPasteEdits。编辑使用DocumentPasteEdit.yieldTo属性进行排序。默认情况下将应用第一个编辑,其余编辑将作为可选择的粘贴选项显示在粘贴小部件中。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
provider: DocumentPasteEditProvider<DocumentPasteEdit> | 一个粘贴编辑器提供程序。 |
metadata: DocumentPasteProviderMetadata | 关于提供程序的附加元数据。 |
返回 | 描述 |
Disposable | 一个释放时注销此提供程序的Disposable。 |
registerDocumentRangeFormattingEditProvider(selector: DocumentSelector, provider: DocumentRangeFormattingEditProvider): Disposable
registerDocumentRangeFormattingEditProvider(selector: DocumentSelector, provider: DocumentRangeFormattingEditProvider): Disposable
注册一个文档范围格式化提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序按其分数排序,并使用最佳匹配的提供程序。选定提供程序的失败将导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
*注意*:文档范围提供程序也是一个文档格式化程序,这意味着在也注册范围提供程序时无需注册文档格式化程序。 | provider: DocumentRangeFormattingEditProvider |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
一个文档范围格式化编辑提供程序。
registerDocumentRangeSemanticTokensProvider(selector: DocumentSelector, provider: DocumentRangeSemanticTokensProvider, legend: SemanticTokensLegend): Disposable
注册一个文档范围的语义标记提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序按其分数排序,并使用最佳匹配的提供程序。选定提供程序的失败将导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
*注意*:如果文档同时具有 DocumentSemanticTokensProvider 和 DocumentRangeSemanticTokensProvider ,则范围提供程序仅在初始阶段被调用,即完整文档提供程序解析第一个请求所需的时间。一旦完整文档提供程序解析了第一个请求,通过范围提供程序提供的语义标记将被丢弃,并且从那时起,将仅使用文档提供程序。 | provider: DocumentRangeSemanticTokensProvider |
一个文档范围语义标记提供程序。 | |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
legend: SemanticTokensLegend
为整个文档注册一个语义令牌提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序按其分数排序,并使用最佳匹配的提供程序。选定提供程序的失败将导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerDocumentSemanticTokensProvider(selector: DocumentSelector, provider: DocumentSemanticTokensProvider, legend: SemanticTokensLegend): Disposable | 注册一个完整文档的语义标记提供程序。 |
一个文档范围语义标记提供程序。 | |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: DocumentSemanticTokensProvider
一个文档语义标记提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerDocumentSymbolProvider(selector: DocumentSelector, provider: DocumentSymbolProvider, metaData?: DocumentSymbolProviderMetadata): Disposable | 注册一个文档符号提供程序。 |
provider: DocumentSymbolProvider | 一个文档符号提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
metaData?: DocumentSymbolProviderMetadata
关于提供程序的元数据
registerEvaluatableExpressionProvider(selector: DocumentSelector, provider: EvaluatableExpressionProvider): Disposable
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
注册一个用于定位文本文档中可求值表达式的提供程序。编辑器将在活动的调试会话中计算表达式,并在调试 hover 中显示结果。 | 如果为一个语言注册了多个提供程序,将使用任意一个提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: EvaluatableExpressionProvider
一个可求值表达式提供程序。
registerFoldingRangeProvider(selector: DocumentSelector, provider: FoldingRangeProvider): Disposable
注册一个折叠范围提供程序。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。如果多个折叠范围从相同位置开始,则只使用第一个注册提供程序的范围。如果折叠范围与具有较小位置的另一范围重叠,则也会被忽略。 | 失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: FoldingRangeProvider
一个折叠范围提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerHoverProvider(selector: DocumentSelector, provider: HoverProvider): Disposable | 注册一个 hover 提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: HoverProvider
一个 hover 提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerImplementationProvider(selector: DocumentSelector, provider: ImplementationProvider): Disposable | 注册一个实现提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: ImplementationProvider
一个实现提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerInlayHintsProvider(selector: DocumentSelector, provider: InlayHintsProvider<InlayHint>): Disposable | 注册一个内嵌提示提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: InlayHintsProvider<InlayHint>
一个内嵌提示提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerInlineCompletionItemProvider(selector: DocumentSelector, provider: InlineCompletionItemProvider): Disposable | 注册一个行内补全提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: InlineCompletionItemProvider
一个行内补全提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerInlineValuesProvider(selector: DocumentSelector, provider: InlineValuesProvider): Disposable | 注册一个为调试器的“行内值”功能提供数据的提供程序。每当通用调试器在源文件中停止时,就会调用为该文件语言注册的提供程序,以返回将在编辑器行尾显示文本数据。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: InlineValuesProvider
一个行内值提供程序。
registerLinkedEditingRangeProvider(selector: DocumentSelector, provider: LinkedEditingRangeProvider): Disposable
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
注册一个链接编辑范围提供程序。 | 可以为一个语言注册多个提供程序。在这种情况下,提供程序按其分数排序,并使用具有结果的最佳匹配提供程序。选定提供程序的失败将导致整个操作失败。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: LinkedEditingRangeProvider
一个链接编辑范围提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序按其分数排序,并使用最佳匹配的提供程序。选定提供程序的失败将导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerOnTypeFormattingEditProvider(selector: DocumentSelector, provider: OnTypeFormattingEditProvider, firstTriggerCharacter: string, ...moreTriggerCharacter: string[]): Disposable | 注册一个在键入时工作的格式化提供程序。当用户启用设置 |
provider: OnTypeFormattingEditProvider | 一个键入时格式化编辑提供程序。 |
firstTriggerCharacter: string | 应触发格式化的字符,例如 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
...moreTriggerCharacter: string[]
更多触发字符。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerReferenceProvider(selector: DocumentSelector, provider: ReferenceProvider): Disposable | 注册一个引用提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: ReferenceProvider
一个引用提供程序。
registerRenameProvider(selector: DocumentSelector, provider: RenameProvider): Disposable
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
注册一个重命名提供程序。 | 可以为一个语言注册多个提供程序。在这种情况下,提供程序按其分数排序并按顺序请求。第一个产生结果的提供程序定义了整个操作的结果。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: RenameProvider
一个重命名提供程序。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerSelectionRangeProvider(selector: DocumentSelector, provider: SelectionRangeProvider): Disposable | 注册一个选择范围提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: SelectionRangeProvider
一个选择范围提供程序。
registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, ...triggerCharacters: string[]): Disposable
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
注册一个签名帮助提供程序。 | 可以为一个语言注册多个提供程序。在这种情况下,提供程序按其分数排序,并按顺序调用,直到提供程序返回有效结果。 |
...triggerCharacters: string[] | provider: SignatureHelpProvider |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
一个签名帮助提供程序。
当用户键入其中一个字符(例如 ,
或 (
)时触发签名帮助。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
注册一个签名帮助提供程序。 | 可以为一个语言注册多个提供程序。在这种情况下,提供程序按其分数排序,并按顺序调用,直到提供程序返回有效结果。 |
registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, metadata: SignatureHelpProviderMetadata): Disposable | |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
metadata: SignatureHelpProviderMetadata
关于提供程序的信息。
可以为一个语言注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerTypeDefinitionProvider(selector: DocumentSelector, provider: TypeDefinitionProvider): Disposable | 注册一个类型定义提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: TypeDefinitionProvider
一个类型定义提供程序。
参数 | 描述 |
---|---|
selector: DocumentSelector | 定义此提供程序适用文档的选择器。 |
registerTypeHierarchyProvider(selector: DocumentSelector, provider: TypeHierarchyProvider): Disposable | 注册一个类型层次结构提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: TypeHierarchyProvider
一个类型层次结构提供程序。
registerWorkspaceSymbolProvider(provider: WorkspaceSymbolProvider<SymbolInformation>): Disposable
参数 | 描述 |
---|---|
注册一个工作区符号提供程序。 | 可以注册多个提供程序。在这种情况下,提供程序并行请求,结果合并。失败的提供程序(被拒绝的 Promise 或异常)不会导致整个操作失败。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
provider: WorkspaceSymbolProvider<SymbolInformation>
一个工作区符号提供程序。
参数 | 描述 |
---|---|
setLanguageConfiguration(language: string, configuration: LanguageConfiguration): Disposable | 为一个语言设置语言配置。 |
language: string | 一个语言标识符,例如 |
返回 | 描述 |
Disposable | configuration: LanguageConfiguration |
语言配置。
一个释放时取消此配置的Disposable。
setTextDocumentLanguage(document: TextDocument, languageId: string): Thenable<TextDocument>
参数 | 描述 |
---|---|
document: TextDocument | 设置(并更改)与给定文档关联的语言。 |
*注意*,调用此函数将触发onDidCloseTextDocument事件,后跟onDidOpenTextDocument事件。 | 要更改语言的文档 |
返回 | 描述 |
languageId: string | 新的语言标识符。 |
lm
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中列出的工具,并提供给定输入。输入将根据工具声明的 schema 进行验证。
工具可以由聊天参与者在处理聊天请求的上下文中调用,也可以由任何扩展在全球范围内以任何自定义流程调用。
在前一种情况下,调用者应传递toolInvocationToken,该 token 随聊天请求一起提供。这确保聊天 UI 为正确的会话显示工具调用。
参数 | 描述 |
---|---|
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | 如果聊天参与者希望保留跨多个回合的请求的工具结果,它可以将工具结果存储在处理程序返回的ChatResult.metadata中,并在下一个回合中从ChatResponseTurn.result中检索它们。 |
name: string | 要调用的工具的名称。 |
options: LanguageModelToolInvocationOptions<object> | 调用工具时使用的选项。 |
返回 | 描述 |
token?: CancellationToken | 一个取消 token。请参阅CancellationTokenSource了解如何创建一个。 |
Thenable<LanguageModelToolResult>
工具调用的结果。
registerMcpServerDefinitionProvider(id: string, provider: McpServerDefinitionProvider<McpServerDefinition>): Disposable
"contributes": {
"mcpServerDefinitionProviders": [
{
"id": "cool-cloud-registry.mcp-servers",
"label": "Cool Cloud Registry",
}
]
}
注册一个提供程序,用于发布供编辑器使用的 Model Context Protocol 服务器。这使得 MCP 服务器可以除了用户在其配置文件中创建的服务器外,还可以动态地提供给编辑器。
参数 | 描述 |
---|---|
id: string | 在调用此方法之前,扩展必须使用相应的lm.registerMcpServerDefinitionProvider.id注册 |
当一个新的 McpServerDefinitionProvider 可用时,编辑器会向用户显示“刷新”操作以发现新的服务器。为了启用此流程,扩展应在激活期间调用 registerMcpServerDefinitionProvider 。 | 提供程序的 ID,对于扩展是唯一的。 |
返回 | 描述 |
Disposable | provider: McpServerDefinitionProvider<McpServerDefinition> |
要注册的提供程序
释放时注销提供程序的 disposable。
参数 | 描述 |
---|---|
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | |
registerTool<T>(name: string, tool: LanguageModelTool<T>): Disposable | |
返回 | 描述 |
Disposable | 注册一个 |
tool: LanguageModelTool<T>
通过一个 selector 选择聊天模型。这可能会产生多个或零个聊天模型,扩展必须妥善处理这些情况,尤其是在不存在聊天模型时。
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
}
释放时注销工具的Disposable。
selectChatModels(selector?: LanguageModelChatSelector): Thenable<LanguageModelChat[]>
参数 | 描述 |
---|---|
通过选择器选择聊天模型。这可能产生多个或零个聊天模型,扩展必须优雅地处理这些情况,尤其是在不存在聊天模型时。 | 选择器可以编写为广泛匹配特定供应商或系列的所有模型,也可以通过 ID 精确选择一个模型。请记住,可用模型集合会随时间变化,并且 prompt 在不同模型中的表现也可能不同。 |
返回 | 描述 |
*注意*,扩展可以持有此函数返回的结果并在以后使用。但是,当onDidChangeChatModels事件触发时,聊天模型列表可能已更改,扩展应重新查询。 | selector?: LanguageModelChatSelector |
notebooks
聊天模型选择器。省略时返回所有聊天模型。
Thenable<LanguageModelChat[]>
- 聊天模型数组,可以为空!
- Notebook 命名空间。
- Notebook 功能由三个松散耦合的组件组成:
函数
NotebookSerializer 使编辑器能够打开、显示和保存 Notebook。
NotebookController 管理 Notebook 的执行,例如它们从代码单元格生成输出。
参数 | 描述 |
---|---|
id: string | NotebookRenderer 在编辑器中呈现 Notebook 输出。它们在单独的上下文中运行。 |
createNotebookController(id: string, notebookType: string, label: string, handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>): NotebookController | 创建一个新的 Notebook 控制器。 |
label: string | 控制器的标识符。每个扩展必须是唯一的。 |
notebookType: string | 此控制器适用的 Notebook 类型。 |
返回 | 描述 |
label: string | 控制器的标签。 |
handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>
控制器的执行处理程序。
- NotebookController
- 一个新的 Notebook 控制器。
参数 | 描述 |
---|---|
createRendererMessaging(rendererId: string): NotebookRendererMessaging | 创建一个新的消息实例,用于与特定渲染器通信。 |
返回 | 描述 |
*注意 1*:扩展只能创建其在 package.json 文件中定义的渲染器。 | *注意 2*:只有当渲染器的 |
rendererId: string
要与之通信的渲染器 ID
参数 | 描述 |
---|---|
createNotebookController(id: string, notebookType: string, label: string, handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>): NotebookController | NotebookRendererMessaging |
一个新的 Notebook 渲染器消息对象。 | registerNotebookCellStatusBarItemProvider(notebookType: string, provider: NotebookCellStatusBarItemProvider): Disposable |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
scm
为给定 Notebook 类型注册一个单元格状态栏项提供程序。
变量
要注册的 Notebook 类型。
provider: NotebookCellStatusBarItemProvider
- 一个单元格状态栏提供程序。
函数
源代码管理功能的命名空间。
inputBox: SourceControlInputBox
参数 | 描述 |
---|---|
id: string | 扩展创建的最后一个源代码控制的输入框。 |
label: string | *已弃用* - 请改用 |
createSourceControl(id: string, label: string, rootUri?: Uri): SourceControl | 创建一个新的源代码控制实例。 |
返回 | 描述 |
源代码控制的 id 。应简短,例如:git 。 | 源代码控制的人类可读字符串。例如: |
tasks
rootUri?: Uri
变量
源代码控制根的可选 Uri。例如:Uri.parse(workspaceRoot)
。
SourceControl
事件
一个源代码控制实例。
Task 功能的命名空间。
taskExecutions: readonly TaskExecution[]
当前活动的任务执行或一个空数组。
onDidEndTask: Event<TaskEndEvent>
当任务结束时触发。
onDidEndTaskProcess: Event<TaskProcessEndEvent>
当底层进程结束时触发。对于不执行底层进程的任务,此事件不会触发。
函数
onDidStartTask: Event<TaskStartEvent>
当任务开始时触发。
- onDidStartTaskProcess: Event<TaskProcessStartEvent>
参数 | 描述 |
---|---|
当底层进程已启动时触发。对于不执行底层进程的任务,此事件不会触发。 | executeTask(task: Task): Thenable<TaskExecution> |
返回 | 描述 |
执行由编辑器管理的任务。返回的任务执行可用于终止任务。 | *抛出* - 在无法启动新进程的环境中运行 |
task: Task
要执行的任务
参数 | 描述 |
---|---|
Thenable<TaskExecution> | 一个解析为任务执行的 thenable。 |
返回 | 描述 |
fetchTasks(filter?: TaskFilter): Thenable<Task[]> | 获取系统中所有可用的任务。这包括来自 |
filter?: TaskFilter
可选的筛选器,用于选择特定类型或版本的任务。
参数 | 描述 |
---|---|
Thenable<Task[]> | 一个解析为任务数组的 thenable。 |
registerTaskProvider(type: string, provider: TaskProvider<Task>): Disposable | 注册一个任务提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
tests
type: string
函数
此提供程序注册的任务种类类型。
provider: TaskProvider<Task>
参数 | 描述 |
---|---|
id: string | 一个任务提供程序。 |
label: string | 测试功能的命名空间。通过注册TestController实例然后添加TestItems来发布测试。控制器还可以通过创建一个或多个TestRunProfile实例来描述如何运行测试。 |
返回 | 描述 |
createTestController(id: string, label: string): TestController | 创建一个新的测试控制器。 |
window
控制器的标识符,必须全局唯一。
变量
控制器的人类可读标签。
TestController
一个TestController实例。
用于处理编辑器当前窗口的命名空间。即可见的和活动的编辑器,以及用于显示消息、选区和请求用户输入的 UI 元素。
activeColorTheme: ColorTheme
设置中配置的当前活动颜色主题。活动主题可以通过 workbench.colorTheme
设置进行更改。
activeNotebookEditor: NotebookEditor | undefined
当前活动的Notebook 编辑器或 undefined
。活动编辑器是当前具有焦点或在没有焦点时最近更改输入的编辑器。
activeTerminal: Terminal | undefined
当前活动的终端或 undefined
。活动终端是当前具有焦点或最近具有焦点的终端。
activeTextEditor: TextEditor | undefined
当前活动的编辑器或 undefined
。活动编辑器是当前具有焦点或在没有焦点时最近更改输入的编辑器。
state: WindowState
表示当前窗口的状态。
tabGroups: TabGroups
表示主编辑器区域内的网格小部件。
terminals: readonly Terminal[]
当前打开的终端或一个空数组。
事件
visibleNotebookEditors: readonly NotebookEditor[]
当前可见的Notebook 编辑器或一个空数组。
visibleTextEditors: readonly TextEditor[]
当前可见的编辑器或一个空数组。
onDidChangeActiveColorTheme: Event<ColorTheme>
当活动颜色主题更改或发生更改时触发的Event。
onDidChangeActiveNotebookEditor: Event<NotebookEditor | undefined>
当活动 Notebook 编辑器更改时触发的Event。*注意*,当活动编辑器更改为 undefined
时,此事件也会触发。
onDidChangeActiveTerminal: Event<Terminal | undefined>
onDidChangeActiveTextEditor: Event<TextEditor | undefined>
onDidChangeNotebookEditorSelection: Event<NotebookEditorSelectionChangeEvent>
当Notebook 编辑器选区更改时触发的Event。
onDidChangeNotebookEditorVisibleRanges: Event<NotebookEditorVisibleRangesChangeEvent>
当Notebook 编辑器可见范围更改时触发的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[]>
当可见 Notebook 编辑器更改时触发的Event。
onDidCloseTerminal: Event<Terminal>
当终端被释放时触发的 Event。
onDidEndTerminalShellExecution: Event<TerminalShellExecutionEndEvent>
当终端命令结束时将触发此事件。仅当终端的 shell 集成被激活时才会触发此事件。
onDidOpenTerminal: Event<Terminal>
当通过 createTerminal API 或命令创建终端时触发的 Event。
onDidStartTerminalShellExecution: Event<TerminalShellExecutionStartEvent>
当终端命令开始时将触发此事件。仅当终端的 shell 集成被激活时才会触发此事件。
函数
createInputBox(): InputBox
创建一个 InputBox,用于让用户输入一些文本。
请注意,在许多情况下,更便捷的 window.showInputBox 更易于使用。window.createInputBox 应在 window.showInputBox 无法提供所需灵活性时使用。
createOutputChannel(name: string, languageId?: string): OutputChannel
创建一个新的输出通道,具有给定的名称和语言 ID。如果未提供语言 ID,则默认使用 Log 作为语言 ID。
您可以从可见编辑器或活动编辑器中将可见或活动的输出通道作为文本文档进行访问,并使用语言 ID 来贡献语法高亮、Code Lens 等语言特性。
参数 | 描述 |
---|---|
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | name: string |
languageId?: string | 与通道关联的语言标识符。 |
返回 | 描述 |
OutputChannel | 一个新的输出通道。 |
createOutputChannel(name: string, options: {log: true}): LogOutputChannel
创建一个新的日志输出通道,具有给定的名称。
参数 | 描述 |
---|---|
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | name: string |
options: {log: true} | 日志输出通道的选项。 |
返回 | 描述 |
LogOutputChannel | 一个新的日志输出通道。 |
createQuickPick<T extends QuickPickItem>(): QuickPick<T>
创建一个 QuickPick,用于让用户从 T 类型列表中选取一项。
请注意,在许多情况下,更便捷的 window.showQuickPick 更易于使用。window.createQuickPick 应在 window.showQuickPick 无法提供所需灵活性时使用。
createStatusBarItem(id: string, alignment?: StatusBarAlignment, priority?: number): StatusBarItem
创建状态栏项。
参数 | 描述 |
---|---|
id: string | 项的标识符。在扩展中必须唯一。 |
alignment?: StatusBarAlignment | 项的对齐方式。 |
priority?: number | 项的优先级。值越高意味着项应显示在越左侧。 |
返回 | 描述 |
StatusBarItem | 一个新的状态栏项。 |
createStatusBarItem(alignment?: StatusBarAlignment, priority?: number): StatusBarItem
创建状态栏项。
另请参见 createStatusBarItem,用于创建带有标识符的状态栏项。
参数 | 描述 |
---|---|
alignment?: StatusBarAlignment | 项的对齐方式。 |
priority?: number | 项的优先级。值越高意味着项应显示在越左侧。 |
返回 | 描述 |
StatusBarItem | 一个新的状态栏项。 |
createTerminal(name?: string, shellPath?: string, shellArgs?: string | readonly string[]): Terminal
创建一个具有支持 shell 进程的 Terminal。如果存在,终端的当前工作目录将是工作区目录。
- 抛出 - 在无法启动新进程的环境中运行时。
createTerminal(options: TerminalOptions): Terminal
创建一个具有支持 shell 进程的 Terminal。
- 抛出 - 在无法启动新进程的环境中运行时。
参数 | 描述 |
---|---|
options: TerminalOptions | 描述新终端特性的 TerminalOptions 对象。 |
返回 | 描述 |
Terminal | 一个新的 Terminal。 |
createTerminal(options: ExtensionTerminalOptions): Terminal
创建一个 Terminal,其输入和输出由扩展控制。
参数 | 描述 |
---|---|
options: ExtensionTerminalOptions | 描述新终端特性的 ExtensionTerminalOptions 对象。 |
返回 | 描述 |
Terminal | 一个新的 Terminal。 |
createTextEditorDecorationType(options: DecorationRenderOptions): TextEditorDecorationType
创建可用于向文本编辑器添加装饰的 TextEditorDecorationType。
参数 | 描述 |
---|---|
options: DecorationRenderOptions | 装饰类型的渲染选项。 |
返回 | 描述 |
TextEditorDecorationType | 一个新的装饰类型实例。 |
createTreeView<T>(viewId: string, options: TreeViewOptions<T>): TreeView<T>
使用扩展点 views
创建一个贡献视图的 TreeView。
参数 | 描述 |
---|---|
viewId: string | 使用扩展点 |
options: TreeViewOptions<T> | 创建 TreeView 的选项。 |
返回 | 描述 |
TreeView<T> | 一个 TreeView。 |
createWebviewPanel(viewType: string, title: string, showOptions: ViewColumn | {preserveFocus: boolean, viewColumn: ViewColumn}, options?: WebviewPanelOptions & WebviewOptions): WebviewPanel
创建并显示一个新的 webview 面板。
参数 | 描述 |
---|---|
viewType: string | 标识 webview 面板的类型。 |
title: string | 面板的标题。 |
showOptions: ViewColumn | {preserveFocus: boolean, viewColumn: ViewColumn} | 在编辑器中显示 webview 的位置。如果设置了 preserveFocus,则新的 webview 将不会获取焦点。 |
options?: WebviewPanelOptions & WebviewOptions | 新面板的设置。 |
返回 | 描述 |
WebviewPanel | 新的 webview 面板。 |
registerCustomEditorProvider(viewType: string, provider: CustomTextEditorProvider | CustomReadonlyEditorProvider<CustomDocument> | CustomEditorProvider<CustomDocument>, options?: {supportsMultipleEditorsPerDocument: boolean, webviewOptions: WebviewPanelOptions}): Disposable
为由 customEditors
扩展点贡献的 viewType
注册自定义编辑器提供程序。
打开自定义编辑器时,将触发 onCustomEditor:viewType
激活事件。您的扩展必须在激活过程中为 viewType
注册一个 CustomTextEditorProvider、CustomReadonlyEditorProvider、CustomEditorProvider。
参数 | 描述 |
---|---|
viewType: string | 自定义编辑器提供程序的唯一标识符。这应与 |
provider: CustomTextEditorProvider | CustomReadonlyEditorProvider<CustomDocument> | CustomEditorProvider<CustomDocument> | 解析自定义编辑器的提供程序。 |
options?: {supportsMultipleEditorsPerDocument: boolean, webviewOptions: WebviewPanelOptions} | 提供程序的选项。 |
返回 | 描述 |
Disposable | 用于注销提供程序的 Disposable。 |
registerFileDecorationProvider(provider: FileDecorationProvider): Disposable
注册文件装饰提供程序。
参数 | 描述 |
---|---|
provider: FileDecorationProvider | |
返回 | 描述 |
Disposable | 一个用于注销提供程序的 Disposable。 |
registerTerminalLinkProvider(provider: TerminalLinkProvider<TerminalLink>): Disposable
注册一个提供程序,用于在终端内启用链接检测和处理。
参数 | 描述 |
---|---|
provider: TerminalLinkProvider<TerminalLink> | 提供终端链接的提供程序。 |
返回 | 描述 |
Disposable | 用于注销提供程序的 Disposable。 |
registerTerminalProfileProvider(id: string, provider: TerminalProfileProvider): Disposable
注册一个贡献终端配置文件的提供程序。
参数 | 描述 |
---|---|
id: string | 贡献终端配置文件的 ID。 |
provider: TerminalProfileProvider | 终端配置文件提供程序。 |
返回 | 描述 |
Disposable | 一个用于注销提供程序的 disposable。 |
registerTreeDataProvider<T>(viewId: string, treeDataProvider: TreeDataProvider<T>): Disposable
为使用扩展点 views
贡献的视图注册一个 TreeDataProvider。这将允许您向 TreeView 贡献数据并在数据更改时更新。
注意: 要访问 TreeView 并对其执行操作,请使用 createTreeView。
参数 | 描述 |
---|---|
viewId: string | 使用扩展点 |
treeDataProvider: TreeDataProvider<T> | 一个 TreeDataProvider,为视图提供树形数据。 |
返回 | 描述 |
Disposable | 一个用于注销 TreeDataProvider 的 disposable。 |
registerUriHandler(handler: UriHandler): Disposable
注册一个能够处理系统级 uri 的 uri 处理程序。如果打开了多个窗口,最顶层的窗口将处理 uri。uri 处理程序的作用范围限定在其贡献扩展内;它只能处理指向扩展自身的 uri。uri 必须遵守以下规则:
- uri 方案必须是
vscode.env.uriScheme
; - uri 授权必须是扩展 ID(例如
my.extension
); - uri 路径、查询和片段部分是任意的。
例如,如果 my.extension
扩展注册了 uri 处理程序,它将只被允许处理前缀为 product-name://my.extension
的 uri。
扩展在其整个激活生命周期内只能注册一个 uri 处理程序。
- 注意:当指向当前扩展的 uri 即将被处理时,会触发一个激活事件
onUri
。
参数 | 描述 |
---|---|
handler: UriHandler | 要为该扩展注册的 uri 处理程序。 |
返回 | 描述 |
Disposable | 一个用于注销处理程序的 disposable。 |
registerWebviewPanelSerializer(viewType: string, serializer: WebviewPanelSerializer<unknown>): Disposable
注册 webview 面板序列化程序。
支持恢复的扩展应具有 "onWebviewPanel:viewType"
激活事件,并确保在激活期间调用 registerWebviewPanelSerializer
。
对于给定的 viewType
,一次只能注册一个序列化程序。
参数 | 描述 |
---|---|
viewType: string | 可序列化的 webview 面板类型。 |
serializer: WebviewPanelSerializer<unknown> | Webview 序列化程序。 |
返回 | 描述 |
Disposable | 一个用于注销序列化程序的 disposable。 |
registerWebviewViewProvider(viewId: string, provider: WebviewViewProvider, options?: {webviewOptions: {retainContextWhenHidden: boolean}}): Disposable
注册一个新的 webview 视图提供程序。
参数 | 描述 |
---|---|
viewId: string | 视图的唯一 ID。这应与 package.json 中 |
provider: WebviewViewProvider | webview 视图的提供程序。 |
options?: {webviewOptions: {retainContextWhenHidden: boolean}} | |
返回 | 描述 |
Disposable | 用于注销提供程序的 Disposable。 |
setStatusBarMessage(text: string, hideAfterTimeout: number): Disposable
在状态栏设置一条消息。这是功能更强大的状态栏项的简写形式。
参数 | 描述 |
---|---|
text: string | 要显示的消息,支持图标替换,如状态栏项所示。 |
hideAfterTimeout: number | 消息将在指定的毫秒数后被释放的超时时间。 |
返回 | 描述 |
Disposable | 一个隐藏状态栏消息的 disposable。 |
setStatusBarMessage(text: string, hideWhenDone: Thenable<any>): Disposable
在状态栏设置一条消息。这是功能更强大的状态栏项的简写形式。
参数 | 描述 |
---|---|
text: string | 要显示的消息,支持图标替换,如状态栏项所示。 |
hideWhenDone: Thenable<any> | 在完成(resolve 或 reject)时消息将被释放的 Thenable。 |
返回 | 描述 |
Disposable | 一个隐藏状态栏消息的 disposable。 |
setStatusBarMessage(text: string): Disposable
在状态栏设置一条消息。这是功能更强大的状态栏项的简写形式。
注意,状态栏消息会堆叠,并且在使用完毕后必须释放。
参数 | 描述 |
---|---|
text: string | 要显示的消息,支持图标替换,如状态栏项所示。 |
返回 | 描述 |
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 | 配置输入框的行为。 |
options: LanguageModelToolInvocationOptions<object> | 可用于指示取消的令牌。 |
返回 | 描述 |
Thenable<string | undefined> | 一个 Promise,解析为用户提供的字符串或在关闭时解析为 |
showNotebookDocument(document: NotebookDocument, options?: NotebookDocumentShowOptions): Thenable<NotebookEditor>
在笔记本编辑器中显示给定的NotebookDocument。
参数 | 描述 |
---|---|
document: NotebookDocument | 要显示的文本文档。 |
options?: NotebookDocumentShowOptions | |
返回 | 描述 |
Thenable<NotebookEditor> | 一个 Promise,解析为一个笔记本编辑器。 |
showOpenDialog(options?: OpenDialogOptions): Thenable<Uri[] | undefined>
向用户显示一个文件打开对话框,允许选择要打开的文件。
参数 | 描述 |
---|---|
options?: OpenDialogOptions | 控制对话框的选项。 |
返回 | 描述 |
Thenable<Uri[] | undefined> | 一个 Promise,解析为选定的资源或 |
showQuickPick(items: readonly string[] | Thenable<readonly string[]>, options: QuickPickOptions & {canPickMany: true}, token?: CancellationToken): Thenable<string[] | undefined>
显示一个允许多选的选取列表。
参数 | 描述 |
---|---|
items: readonly string[] | Thenable<readonly string[]> | 字符串数组,或解析为字符串数组的 Promise。 |
options: QuickPickOptions & {canPickMany: true} | 配置选取列表的行为。 |
options: LanguageModelToolInvocationOptions<object> | 可用于指示取消的令牌。 |
返回 | 描述 |
Thenable<string[] | undefined> | 一个 Promise,解析为选定的项或 |
showQuickPick(items: readonly string[] | Thenable<readonly string[]>, options?: QuickPickOptions, token?: CancellationToken): Thenable<string | undefined>
显示一个选取列表。
参数 | 描述 |
---|---|
items: readonly string[] | Thenable<readonly string[]> | 字符串数组,或解析为字符串数组的 Promise。 |
options?: QuickPickOptions | 配置选取列表的行为。 |
options: LanguageModelToolInvocationOptions<object> | 可用于指示取消的令牌。 |
返回 | 描述 |
Thenable<string | undefined> | 一个 Promise,解析为选定的内容或 |
showQuickPick<T extends QuickPickItem>(items: readonly T[] | Thenable<readonly T[]>, options: QuickPickOptions & {canPickMany: true}, token?: CancellationToken): Thenable<T[] | undefined>
显示一个允许多选的选取列表。
参数 | 描述 |
---|---|
items: readonly T[] | Thenable<readonly T[]> | 一个项数组,或解析为项数组的 Promise。 |
options: QuickPickOptions & {canPickMany: true} | 配置选取列表的行为。 |
options: LanguageModelToolInvocationOptions<object> | 可用于指示取消的令牌。 |
返回 | 描述 |
Thenable<T[] | undefined> | 一个 Promise,解析为选定的项或 |
showQuickPick<T extends QuickPickItem>(items: readonly T[] | Thenable<readonly T[]>, options?: QuickPickOptions, token?: CancellationToken): Thenable<T | undefined>
显示一个选取列表。
参数 | 描述 |
---|---|
items: readonly T[] | Thenable<readonly T[]> | 一个项数组,或解析为项数组的 Promise。 |
options?: QuickPickOptions | 配置选取列表的行为。 |
options: LanguageModelToolInvocationOptions<object> | 可用于指示取消的令牌。 |
返回 | 描述 |
Thenable<T | undefined> | 一个 Promise,解析为选定的项或 |
showSaveDialog(options?: SaveDialogOptions): Thenable<Uri | undefined>
向用户显示一个文件保存对话框,允许选择要保存的文件。
参数 | 描述 |
---|---|
options?: SaveDialogOptions | 控制对话框的选项。 |
返回 | 描述 |
Thenable<Uri | undefined> | 一个 Promise,解析为选定的资源或 |
showTextDocument(document: TextDocument, column?: ViewColumn, preserveFocus?: boolean): Thenable<TextEditor>
参数 | 描述 |
---|---|
document: TextDocument | 要显示的文本文档。 |
column?: ViewColumn | 应显示编辑器的视图列。默认是活动的。不存在的列将根据需要创建,最多到ViewColumn.Nine。使用ViewColumn.Beside在当前活动编辑器旁边打开编辑器。 |
preserveFocus?: boolean | 当为 |
返回 | 描述 |
Thenable<TextEditor> | 一个 Promise,解析为一个编辑器。 |
showTextDocument(document: TextDocument, options?: TextDocumentShowOptions): Thenable<TextEditor>
参数 | 描述 |
---|---|
document: TextDocument | 要显示的文本文档。 |
options?: TextDocumentShowOptions | |
返回 | 描述 |
Thenable<TextEditor> | 一个 Promise,解析为一个编辑器。 |
showTextDocument(uri: Uri, options?: TextDocumentShowOptions): Thenable<TextEditor>
openTextDocument(uri).then(document => showTextDocument(document, options))
的简写形式。
参数 | 描述 |
---|---|
uri: Uri | 资源标识符。 |
options?: TextDocumentShowOptions | |
返回 | 描述 |
Thenable<TextEditor> | 一个 Promise,解析为一个编辑器。 |
showWarningMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>
显示一条警告消息。
参数 | 描述 |
---|---|
message: string | 要显示的消息。 |
...items: T[] | 一组将作为消息中的操作渲染的项。 |
返回 | 描述 |
Thenable<T | undefined> | 一个 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> | 一个 Promise,解析为工作区文件夹或 |
withProgress<R>(options: ProgressOptions, task: (progress: Progress<{increment: number, message: string}>, token: CancellationToken) => Thenable<R>): Thenable<R>
在编辑器中显示进度。在运行给定的回调函数以及其返回的 Promise 未解析或拒绝期间显示进度。进度显示的位置(及其他详细信息)通过传入的 ProgressOptions 定义。
参数 | 描述 |
---|---|
options: ProgressOptions | 一个 ProgressOptions 对象,描述用于显示进度的选项,例如其位置。 |
task: (progress: Progress<{increment: number, message: string}>, token: CancellationToken) => Thenable<R> | 返回 Promise 的回调函数。可以使用提供的 Progress 对象报告进度状态。 要报告离散进度,请使用 要监控操作是否已被用户取消,请使用提供的 CancellationToken。请注意,目前只有 |
返回 | 描述 |
Thenable<R> | 任务回调函数返回的 thenable。 |
withScmProgress<R>(task: (progress: Progress<number>) => Thenable<R>): Thenable<R>
在源代码管理视图中显示进度,同时运行给定的回调函数以及其返回的 Promise 未解析或拒绝期间。
- 已弃用 - 请改用
withProgress
。
workspace
用于处理当前工作区的命名空间。工作区是在编辑器窗口(实例)中打开的一个或多个文件夹的集合。
也可以在没有工作区的情况下打开编辑器。例如,当您从平台的“文件”菜单中选择一个文件来打开新的编辑器窗口时,您将不在工作区内。在此模式下,编辑器的某些功能会受到限制,但您仍然可以打开和编辑文本文件。
有关工作区概念的更多信息,请参阅 https://vscode.js.cn/docs/editor/workspaces。
工作区支持监听文件系统事件和查找文件。两者性能良好且运行在编辑器进程外部,因此应始终使用它们而不是等效的 Node.js 方法。
变量
fs: FileSystem
一个文件系统实例,允许与本地和远程文件交互,例如 vscode.workspace.fs.readDirectory(someUri)
允许检索目录的所有条目,或 vscode.workspace.fs.stat(anotherUri)
返回文件的元数据。
当为 true 时,表示用户已明确信任工作区的内容。
工作区的名称。未打开工作区时为 undefined
。
有关工作区概念的更多信息,请参阅 https://vscode.js.cn/docs/editor/workspaces。
notebookDocuments: readonly NotebookDocument[]
编辑器当前知晓的所有笔记本文档。
作为 string
的 workspaceFolders 第一个条目的 URI。如果没有第一个条目,则为 undefined
。
有关工作区的更多信息,请参阅 https://vscode.js.cn/docs/editor/workspaces。
- 已弃用 - 请改用 workspaceFolders。
textDocuments: readonly TextDocument[]
编辑器当前知晓的所有文本文档。
workspaceFile: Uri | undefined
工作区文件的位置,例如
file:///Users/name/Development/myProject.code-workspace
或
untitled:1555503116870
对于一个未命名且尚未保存的工作区。
根据打开的工作区,该值将是:
- 未打开工作区时为
undefined
- 否则为工作区文件路径作为
Uri
。如果工作区未命名,返回的 URI 将使用untitled:
方案。
例如,该位置可以与 vscode.openFolder
命令一起使用,以便在工作区关闭后再次打开它。
示例
vscode.commands.executeCommand('vscode.openFolder', uriOfWorkspace);
有关工作区概念的更多信息,请参阅 https://vscode.js.cn/docs/editor/workspaces。
注意:不建议使用 workspace.workspaceFile
将配置数据写入文件。为此,您可以使用 workspace.getConfiguration().update()
,这在打开单个文件夹以及未命名或已保存的工作区时均可正常工作。
workspaceFolders: readonly WorkspaceFolder[] | undefined
在编辑器中打开的工作区文件夹列表(0-N)。未打开工作区时为 undefined
。
有关工作区的更多信息,请参阅 https://vscode.js.cn/docs/editor/workspaces。
事件
onDidChangeConfiguration: Event<ConfigurationChangeEvent>
当配置更改时触发的事件。
onDidChangeNotebookDocument: Event<NotebookDocumentChangeEvent>
当笔记本发生更改时触发的事件。
onDidChangeTextDocument: Event<TextDocumentChangeEvent>
onDidChangeWorkspaceFolders: Event<WorkspaceFoldersChangeEvent>
添加或移除工作区文件夹时触发的事件。
注意: 如果添加、移除或更改了第一个工作区文件夹,则不会触发此事件,因为在这种情况下,当前正在执行的扩展(包括监听此事件的扩展)将被终止并重启,以便更新(已弃用的)rootPath
属性指向第一个工作区文件夹。
onDidCloseNotebookDocument: Event<NotebookDocument>
onDidCloseTextDocument: Event<TextDocument>
当文本文档被释放或文本文档的语言 ID 已更改时触发的事件。
注意 1: 不能保证编辑器选项卡关闭时触发此事件,请使用 onDidChangeVisibleTextEditors 事件了解编辑器何时更改。
注意 2: 文档可以打开但未在编辑器中显示,这意味着此事件可以为未在编辑器中显示的文档触发。
onDidCreateFiles: Event<FileCreateEvent>
创建文件时触发的事件。
注意: 此事件由用户手势触发,例如从资源管理器创建文件,或通过 workspace.applyEdit API 触发,但当文件在磁盘上更改时(例如由另一个应用程序触发,或使用 workspace.fs API 时)不会触发此事件。
onDidDeleteFiles: Event<FileDeleteEvent>
删除文件时触发的事件。
注意 1: 此事件由用户手势触发,例如从资源管理器删除文件,或通过 workspace.applyEdit API 触发,但当文件在磁盘上更改时(例如由另一个应用程序触发,或使用 workspace.fs API 时)不会触发此事件。
注意 2: 当删除包含子文件的文件夹时,只会触发一个事件。
onDidGrantWorkspaceTrust: Event<void>
当前工作区被信任时触发的事件。
onDidOpenNotebookDocument: Event<NotebookDocument>
当笔记本打开时触发的事件。
onDidOpenTextDocument: Event<TextDocument>
onDidRenameFiles: Event<FileRenameEvent>
文件已重命名时触发的事件。
注意 1: 此事件由用户手势触发,例如从资源管理器重命名文件,或通过 workspace.applyEdit API 触发,但当文件在磁盘上更改时(例如由另一个应用程序触发,或使用 workspace.fs API 时)不会触发此事件。
注意 2: 当重命名包含子文件的文件夹时,只会触发一个事件。
onDidSaveNotebookDocument: Event<NotebookDocument>
当笔记本保存时触发的事件。
onDidSaveTextDocument: Event<TextDocument>
当文本文档保存到磁盘时触发的事件。
onWillCreateFiles: Event<FileWillCreateEvent>
正在创建文件时触发的事件。
注意 1: 此事件由用户手势触发,例如从资源管理器创建文件,或通过 workspace.applyEdit API 触发。当文件在磁盘上更改时(例如由另一个应用程序触发,或使用 workspace.fs API 时)不会触发此事件。
注意 2: 触发此事件时,无法应用于正在创建的文件中的编辑。
onWillDeleteFiles: Event<FileWillDeleteEvent>
正在删除文件时触发的事件。
注意 1: 此事件由用户手势触发,例如从资源管理器删除文件,或通过 workspace.applyEdit API 触发,但当文件在磁盘上更改时(例如由另一个应用程序触发,或使用 workspace.fs API 时)不会触发此事件。
注意 2: 当删除包含子文件的文件夹时,只会触发一个事件。
onWillRenameFiles: Event<FileWillRenameEvent>
正在重命名文件时触发的事件。
注意 1: 此事件由用户手势触发,例如从资源管理器重命名文件,或通过 workspace.applyEdit API 触发,但当文件在磁盘上更改时(例如由另一个应用程序触发,或使用 workspace.fs API 时)不会触发此事件。
注意 2: 当重命名包含子文件的文件夹时,只会触发一个事件。
onWillSaveNotebookDocument: Event<NotebookDocumentWillSaveEvent>
onWillSaveTextDocument: Event<TextDocumentWillSaveEvent>
函数
applyEdit(edit: WorkspaceEdit, metadata?: WorkspaceEditMetadata): Thenable<boolean>
根据给定的工作区编辑,更改一个或多个资源,或创建、删除和重命名资源。
工作区编辑的所有更改都按添加的顺序应用。如果在同一位置进行多次文本插入,这些字符串将在结果文本中按“插入”发生的顺序出现,除非与资源编辑交错。无效的序列,例如“删除文件 a” -> “在文件 a 中插入文本”,将导致操作失败。
应用仅包含文本编辑的工作区编辑时,采用“全有或全无”策略。包含资源创建或删除的工作区编辑会在单个编辑失败时中止操作,例如不会尝试连续的编辑。
参数 | 描述 |
---|---|
edit: WorkspaceEdit | 一个工作区编辑。 |
metadata?: WorkspaceEditMetadata | 可选的编辑元数据。 |
返回 | 描述 |
Thenable<boolean> | 在编辑可以应用时解析的 thenable。 |
asRelativePath(pathOrUri: string | Uri, includeWorkspaceFolder?: boolean): string
返回相对于工作区文件夹的路径。
如果没有工作区文件夹或路径不包含在其中时,返回输入。
createFileSystemWatcher(globPattern: GlobPattern, ignoreCreateEvents?: boolean, ignoreChangeEvents?: boolean, ignoreDeleteEvents?: boolean): FileSystemWatcher
创建一个文件系统观察器,根据提供的参数,该观察器会在文件事件(创建、更改、删除)时收到通知。
默认情况下,将递归地观察所有打开的工作区文件夹的文件更改。
可以通过提供一个 RelativePattern 并指定要监视的 base
路径来添加额外的文件监视路径。如果该路径是文件夹且 pattern
复杂(例如包含 **
或路径段),则将递归监视;否则将非递归监视(即仅报告路径第一级的更改)。
注意,文件系统中不存在的路径将延迟监视,直到创建后才开始根据提供的参数进行监视。如果被监视的路径被删除,观察器将暂停并不会报告任何事件,直到该路径再次被创建。
如果可能,请尽量减少递归观察器的使用,因为递归文件监视会消耗大量资源。
将 string
作为 globPattern
提供,是方便地监视所有打开的工作区文件夹中的文件事件的方法。它不能用于添加更多文件夹进行文件监视,也不会报告不在打开工作区文件夹中的文件夹的文件事件。
可选地,可以提供标志来忽略某些类型的事件。
要停止监听事件,必须释放观察器。
注意,来自递归文件观察器的文件事件可能会根据用户配置被排除。设置 files.watcherExclude
有助于减少已知会一次产生大量文件更改的文件夹(例如 .git
文件夹)的文件事件开销。因此,强烈建议使用不需要递归观察器(其中忽略了排除设置且您完全控制事件)的简单模式进行监视。
注意,除非要监视的路径本身是符号链接,否则文件监视不会自动跟随符号链接。
注意,报告的文件更改路径可能与不区分大小写的平台(通常是 macOS 和 Windows,而非 Linux)上磁盘的实际大小写不同。我们允许用户以任何期望的路径大小写打开工作区文件夹并尝试保留该大小写。这意味着
- 如果路径位于任何工作区文件夹内,则路径将与工作区文件夹的该部分的大小写匹配,子文件则与磁盘上的大小写匹配。
- 如果路径在任何工作区文件夹外部,则大小写将与提供的监视路径的大小写匹配。同样地,符号链接也被保留,即文件事件将报告符号链接的路径(按监视时提供的路径),而不是目标路径。
示例
文件观察器的基本结构如下:
const watcher = vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(<folder>, <pattern>));
watcher.onDidChange(uri => { ... }); // listen to files being changed
watcher.onDidCreate(uri => { ... }); // listen to files/folders being created
watcher.onDidDelete(uri => { ... }); // listen to files/folders getting deleted
watcher.dispose(); // dispose after usage
工作区文件监视
如果您只关心特定工作区文件夹中的文件事件
vscode.workspace.createFileSystemWatcher(
new vscode.RelativePattern(vscode.workspace.workspaceFolders[0], '**/*.js')
);
如果您想监视所有打开的工作区文件夹中的文件事件
vscode.workspace.createFileSystemWatcher('**/*.js');
注意: 如果没有打开工作区(空窗口),工作区文件夹数组可能为空。
工作区外部文件监视
要在工作区外部(非递归)监视文件夹中对 *.js 文件的更改,请传入此类文件夹的 Uri
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '*.js'));
并使用复杂的 glob 模式进行递归监视
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '**/*.js'));
这是一个监视活动编辑器文件更改的示例
vscode.workspace.createFileSystemWatcher(
new vscode.RelativePattern(vscode.window.activeTextEditor.document.uri, '*')
);
参数 | 描述 |
---|---|
globPattern: GlobPattern | 控制监视器应报告哪些文件事件的 glob 模式。 |
ignoreCreateEvents?: boolean | 忽略文件已创建事件。 |
ignoreChangeEvents?: boolean | 忽略文件已更改事件。 |
ignoreDeleteEvents?: boolean | 忽略文件已删除事件。 |
返回 | 描述 |
FileSystemWatcher | 一个新的文件系统监视器实例。不再需要时必须将其释放。 |
decode(content: Uint8Array): Thenable<string>
将 Uint8Array
的内容解码为 string
。必须一次提供完整内容以确保编码正确应用。请勿使用此方法分块解码内容,因为这可能导致不正确的结果。
将根据设置和缓冲区内容(例如字节顺序标记)选择编码。
注意:如果解码的内容不受编码支持,结果可能包含适当的替换字符。
- 抛出 - 当内容为二进制时,此方法将抛出错误。
参数 | 描述 |
---|---|
content: Uint8Array | 要解码为 |
返回 | 描述 |
Thenable<string> | 一个解析为已解码 |
decode(content: Uint8Array, options: {encoding: string}): Thenable<string>
使用提供的编码将 Uint8Array
的内容解码为 string
。必须一次提供完整内容以确保编码正确应用。请勿使用此方法分块解码内容,因为这可能导致不正确的结果。
注意:如果解码的内容不受编码支持,结果可能包含适当的替换字符。
- 抛出 - 当内容为二进制时,此方法将抛出错误。
参数 | 描述 |
---|---|
content: Uint8Array | 要解码为 |
options: {encoding: string} | 选择编码的其他上下文。 |
返回 | 描述 |
Thenable<string> | 一个解析为已解码 |
decode(content: Uint8Array, options: {uri: Uri}): Thenable<string>
将 Uint8Array
的内容解码为 string
。必须一次提供完整内容以确保编码正确应用。请勿使用此方法分块解码内容,因为这可能导致不正确的结果。
编码根据设置和缓冲区内容(例如字节顺序标记)选择。
注意:如果解码的内容不受编码支持,结果可能包含适当的替换字符。
- 抛出 - 当内容为二进制时,此方法将抛出错误。
参数 | 描述 |
---|---|
content: Uint8Array | 要解码为 |
options: {uri: Uri} | 选择编码的其他上下文。 |
返回 | 描述 |
Thenable<string> | 一个解析为已解码 |
encode(content: string): Thenable<Uint8Array>
将 string
的内容编码为 Uint8Array
。
将根据设置选择编码。
参数 | 描述 |
---|---|
content: string | 要编码为 |
返回 | 描述 |
Thenable<Uint8Array> | 一个解析为已编码 |
encode(content: string, options: {encoding: string}): Thenable<Uint8Array>
使用提供的编码将 string
的内容编码为 Uint8Array
。
参数 | 描述 |
---|---|
content: string | 要编码为 |
options: {encoding: string} | 选择编码的其他上下文。 |
返回 | 描述 |
Thenable<Uint8Array> | 一个解析为已编码 |
encode(content: string, options: {uri: Uri}): Thenable<Uint8Array>
将 string
的内容编码为 Uint8Array
。
编码根据设置选择。
参数 | 描述 |
---|---|
content: string | 要编码为 |
options: {uri: Uri} | 选择编码的其他上下文。 |
返回 | 描述 |
Thenable<Uint8Array> | 一个解析为已编码 |
findFiles(include: GlobPattern, exclude?: GlobPattern, maxResults?: number, token?: CancellationToken): Thenable<Uri[]>
参数 | 描述 |
---|---|
include: GlobPattern | |
exclude?: GlobPattern | 定义要排除的文件和文件夹的 glob 模式。glob 模式将与结果匹配项相对于其工作区的文件路径进行匹配。当为 |
maxResults?: number | 结果的上限。 |
options: LanguageModelToolInvocationOptions<object> | 一个可用于向底层搜索引擎发送取消信号的令牌。 |
返回 | 描述 |
Thenable<Uri[]> | 一个解析为资源标识符数组的 Thenable。如果没有打开 工作区文件夹,将不返回任何结果。 |
getConfiguration(section?: string, scope?: ConfigurationScope): WorkspaceConfiguration
获取工作区配置对象。
提供节标识符时,仅返回配置的该部分。节标识符中的点被解释为子访问,例如 { myExt: { setting: { doIt: true }}}
,并且 getConfiguration('myExt.setting').get('doIt') === true
。
提供作用域时,返回限制在该作用域的配置。作用域可以是资源,也可以是语言标识符,或者两者兼有。
参数 | 描述 |
---|---|
section?: string | 点分隔的标识符。 |
scope?: ConfigurationScope | 请求配置的作用域。 |
返回 | 描述 |
WorkspaceConfiguration | 完整配置或子集。 |
getWorkspaceFolder(uri: Uri): WorkspaceFolder | undefined
返回包含给定 uri 的 工作区文件夹。
- 当给定 uri 与任何工作区文件夹不匹配时返回
undefined
- 当给定 uri 本身就是一个工作区文件夹时返回 输入
参数 | 描述 |
---|---|
uri: Uri | 一个 uri。 |
返回 | 描述 |
WorkspaceFolder | undefined | 一个工作区文件夹或 |
openNotebookDocument(uri: Uri): Thenable<NotebookDocument>
打开笔记本。如果此笔记本已加载,则提前返回。否则,加载该笔记本并触发 onDidOpenNotebookDocument 事件。
注意:返回的笔记本的生命周期由编辑器而非扩展拥有。这意味着 onDidCloseNotebookDocument 事件随时可能发生。
注意:打开笔记本不会显示笔记本编辑器。此函数仅返回一个可在笔记本编辑器中显示的笔记本文档,但也可用于其他用途。
参数 | 描述 |
---|---|
uri: Uri | 要打开的资源。 |
返回 | 描述 |
Thenable<NotebookDocument> | 一个解析为 笔记本 的 Promise。 |
openNotebookDocument(notebookType: string, content?: NotebookData): Thenable<NotebookDocument>
打开一个无标题的笔记本。当文档需要保存时,编辑器将提示用户输入文件路径。
参数 | 描述 |
---|---|
createNotebookController(id: string, notebookType: string, label: string, handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>): NotebookController | 应使用的笔记本类型。 |
content?: NotebookData | 笔记本的初始内容。 |
返回 | 描述 |
Thenable<NotebookDocument> | 一个解析为 笔记本 的 Promise。 |
openTextDocument(uri: Uri, options?: {encoding: string}): Thenable<TextDocument>
打开文档。如果此文档已打开,则提前返回。否则,加载文档并触发 didOpen 事件。
文档由 Uri 表示。根据 scheme 的不同,适用以下规则:
file
scheme:打开磁盘上的文件 (openTextDocument(Uri.file(path))
)。如果文件不存在或无法加载,将被拒绝。untitled
scheme:打开一个关联路径的空白无标题文件 (openTextDocument(Uri.file(path).with({ scheme: 'untitled' }))
)。语言将从文件名派生。- 对于所有其他 scheme,将咨询贡献的 文本文档内容提供程序 和 文件系统提供程序。
注意:返回文档的生命周期由编辑器而非扩展拥有。这意味着 onDidClose 事件在打开后随时可能发生。
openTextDocument(path: string, options?: {encoding: string}): Thenable<TextDocument>
openTextDocument(Uri.file(path))
的简写形式。
参数 | 描述 |
---|---|
path: string | 磁盘上文件的路径。 |
options?: {encoding: string} | |
返回 | 描述 |
languageId: string | 一个解析为 文档 的 Promise。 |
openTextDocument(options?: {content: string, encoding: string, language: string}): Thenable<TextDocument>
打开一个无标题的文本文档。当文档需要保存时,编辑器将提示用户输入文件路径。options
参数允许指定文档的 语言 和/或 内容。
参数 | 描述 |
---|---|
options?: {content: string, encoding: string, language: string} | 控制文档创建方式的选项。 |
返回 | 描述 |
languageId: string | 一个解析为 文档 的 Promise。 |
registerFileSystemProvider(scheme: string, provider: FileSystemProvider, options?: {isCaseSensitive: boolean, isReadonly: boolean | MarkdownString}): Disposable
注册给定 scheme(例如 ftp
)的文件系统提供程序。
每个 scheme 只能有一个提供程序。当 scheme 已被其他提供程序占用或被保留时,将抛出错误。
参数 | 描述 |
---|---|
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>
激活事件,扩展必须注册其序列化程序作为响应。
参数 | 描述 |
---|---|
createNotebookController(id: string, notebookType: string, label: string, handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>): NotebookController | 一个笔记本类型。 |
serializer: NotebookSerializer | 一个笔记本序列化程序。 |
options?: NotebookDocumentContentOptions | 定义笔记本哪些部分应持久化的可选上下文选项。 |
返回 | 描述 |
Disposable | 释放时注销此序列化程序的 Disposable。 |
registerTaskProvider(type: string, provider: TaskProvider<Task>): Disposable
可选的筛选器,用于选择特定类型或版本的任务。
- 已弃用 - 请改用
tasks
命名空间中的相应函数。
参数 | 描述 |
---|---|
Thenable<Task[]> | 一个解析为任务数组的 thenable。 |
registerTaskProvider(type: string, provider: TaskProvider<Task>): Disposable | 注册一个任务提供程序。 |
返回 | 描述 |
Disposable | 一个 Disposable,释放时将注销此提供程序。 |
registerTextDocumentContentProvider(scheme: string, provider: TextDocumentContentProvider): Disposable
注册文本文档内容提供程序。
每个 scheme 只能注册一个提供程序。
参数 | 描述 |
---|---|
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
此方法替换 vscode.workspace.workspaceFolders
数组中从索引 start
开始的 deleteCount
个 工作区文件夹,替换为可选的 workspaceFoldersToAdd
集。这种“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
在调用 authentication.getSession 并带有 forceNewSession
标志时使用的可选选项。
- 已弃用 - 请改用 AuthenticationGetSessionPresentationOptions。
AuthenticationForceNewSessionOptions: AuthenticationGetSessionPresentationOptions
AuthenticationGetSessionOptions
从 AuthenticationProvider 获取 AuthenticationSession 时使用的选项。
属性
account?: AuthenticationSessionAccountInformation
您想要为其获取会话的帐户。这将传递给身份验证提供程序,用于创建正确的会话。
clearSessionPreference?: boolean
是否应清除现有会话偏好设置。
对于支持同时登录多个帐户的身份验证提供程序,当调用 getSession 时,将提示用户选择要使用的帐户。此偏好设置将被记住,直到使用此标志再次调用 getSession。
注意:此偏好设置特定于扩展。因此,如果一个扩展调用 getSession,它不会影响调用 getSession 的其他扩展的会话偏好设置。此外,此偏好设置是为当前工作区设置的,也是全局设置的。这意味着新工作区最初将使用“全局”值,然后当提供此标志时,可以为该工作区设置一个新值。这也意味着即使新工作区设置了此标志,预先存在的工作区也不会丢失其偏好设置。
默认为 false。
createIfNone?: boolean | AuthenticationGetSessionPresentationOptions
如果没有匹配的会话,是否应执行登录。
如果为 true,将显示一个模态对话框,要求用户登录。如果为 false,帐户活动栏图标上将显示一个带数字的徽章。菜单下将添加一个扩展条目,用于登录。这允许安静地提示用户登录。
如果您提供选项,您也将看到对话框,但带有提供的附加上下文。
如果存在匹配的会话,但扩展未被授予访问权限,将其设置为 true 也将立即显示模态对话框,而 false 将在帐户图标上添加一个带数字的徽章。
默认为 false。
注意:不能将此选项与 silent 一起使用。
forceNewSession?: boolean | AuthenticationGetSessionPresentationOptions
即使已有可用会话,是否应尝试重新进行身份验证。
如果为 true,将显示一个模态对话框,要求用户再次登录。这主要用于令牌需要重新生成(因为它失去了一些授权)的场景。
如果您提供选项,您也将看到对话框,但带有提供的附加上下文。
如果没有现有会话且 forceNewSession 为 true,其行为将与 createIfNone 完全相同。
默认为 false。
是否应在帐户菜单中显示登录提示。
如果为 false,帐户菜单上将显示一个徽章,并提供一个扩展登录选项。如果为 true,则不显示任何提示。
默认为 false。
注意:不能将此选项与任何其他提示用户的选项(如 createIfNone)一起使用。
AuthenticationGetSessionPresentationOptions
在调用 authentication.getSession 并带有交互式选项 forceNewSession
和 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
当 AuthenticationSession 被添加、移除或更改时触发的 Event。
属性
added: readonly AuthenticationSession[]
changed: readonly AuthenticationSession[]
已更改的 AuthenticationProvider 的 AuthenticationSessions。会话在其数据(不包括 ID)更新时发生更改。例如,会话刷新导致为会话设置新的访问令牌。
removed: readonly AuthenticationSession[]
AuthenticationProviderInformation
关于 AuthenticationProvider 的基本信息。
属性
身份验证提供程序的唯一标识符。
身份验证提供程序的人类可读名称。
AuthenticationProviderOptions
创建 AuthenticationProvider 的选项。
属性
supportsMultipleAccounts?: boolean
是否可以使用此提供程序同时登录多个帐户。如果未指定,默认为 false。
AuthenticationProviderSessionOptions
属性
account?: AuthenticationSessionAccountInformation
正在查询的帐户。如果传入此参数,提供程序应尝试仅返回与此帐户相关的会话。
AuthenticationSession
表示当前登录用户的会话。
属性
访问令牌。
account: AuthenticationSessionAccountInformation
与会话关联的帐户。
身份验证会话的标识符。
会话访问令牌授予的权限。AuthenticationProvider 定义了可用的作用域。
AuthenticationSessionAccountInformation
与 AuthenticationSession 关联的帐户信息。
属性
帐户的唯一标识符。
帐户的人类可读名称。
AuthenticationSessionsChangeEvent
当 AuthenticationSession 被添加、移除或更改时触发的 Event。
属性
provider: AuthenticationProviderInformation
其会话已更改的 AuthenticationProvider。
AutoClosingPair
描述字符串对,其中键入开始字符串时将自动插入结束字符串。
属性
键入开始字符串时将自动插入的结束字符串。
notIn?: SyntaxTokenType[]
不应自动关闭该对的令牌集。
触发自动插入结束字符串的字符串。
BranchCoverage
包含 StatementCoverage 分支的覆盖率信息。
构造函数
new BranchCoverage(executed: number | boolean, location?: Range | Position, label?: string): BranchCoverage
参数 | 描述 |
---|---|
executed: number | boolean | 此分支执行的次数,如果未知确切计数,则为一个布尔值指示其是否已执行。如果为零或 false,则将此分支标记为未覆盖。 |
location?: Range | Position | 分支位置。 |
label?: string | |
返回 | 描述 |
BranchCoverage |
属性
此分支执行的次数,如果未知确切计数,则为一个布尔值指示其是否已执行。如果为零或 false,则将此分支标记为未覆盖。
分支的标签,例如在“未采取 ${label} 分支”的上下文中使 用。
分支位置。
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 | |
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | |
detail: string | |
uri: Uri | |
range: Range | |
selectionRange: Range | |
返回 | 描述 |
CallHierarchyItem |
属性
此项的更多详细信息,例如函数的签名。
kind: SymbolKind
此项的类型。
此项的名称。
range: Range
包含此符号的范围,不包括前导/尾随空白,但包括所有其他内容,例如注释和代码。
selectionRange: Range
选择和显示此符号时应选定和显示的范围,例如函数的名称。必须包含在 range 中。
tags?: readonly SymbolTag[]
此项的标签。
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
聊天参与者可以在聊天会话中通过用户使用 前缀调用。被调用时,它会处理聊天请求并完全负责向用户提供响应。ChatParticipant 使用 chat.createChatParticipant 创建。
事件
onDidReceiveFeedback: Event<ChatResultFeedback>
当收到对结果的反馈时(例如,用户对结果进行了赞或踩操作)触发的事件。
传递的 result 保证具有与此聊天参与者处理程序先前返回的结果相同的属性,包括 metadata
,但不是同一个实例。
属性
followupProvider?: ChatFollowupProvider
此提供程序将在每次请求后被调用一次,以检索建议的后续问题。
iconPath?: IconPath
参与者在 UI 中显示的图标。
此参与者的唯一 ID。
requestHandler: ChatRequestHandler
处理此参与者请求的处理程序。
方法
释放此参与者并释放资源。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
ChatParticipantToolToken
在处理聊天请求的上下文中调用工具时,可以传递给 lm.invokeTool 的令牌。
ChatParticipantToolToken: never
ChatPromptReference
对用户添加到其聊天请求中的值的引用。
属性
此类引用的唯一标识符。
此值的描述,可用于 LLM 提示。
range?: [start: number, end: number]
引用在 prompt 中的开始和结束索引。如果未定义,则引用不是提示文本的一部分。
注意,这些索引考虑了开头的 #
字符,这意味着它们可以用于直接修改提示。
此引用的值。目前使用 string | Uri | Location
类型,但未来可能会扩展。
ChatRequest
发送给聊天参与者的请求。
属性
为此请求选择的 [ChatCommand command](#ChatCommand command) 的名称。
model: LanguageModelChat
这是当前在 UI 中选中的模型。扩展程序可以使用此模型,或使用 lm.selectChatModels 选择另一个模型。请求生命周期结束后不要保留此模型。
用户输入的提示。
关于此请求中使用的引用的信息存储在 ChatRequest.references 中。
注意,参与者的 [ChatParticipant.name name](#ChatParticipant.name name) 和 [ChatCommand.name command](#ChatCommand.name command) 不属于提示的一部分。
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 command](#ChatCommand command) 的名称。
此请求所指向的聊天参与者的 ID。
用户输入的提示。
关于此请求中使用的引用的信息存储在 ChatRequestTurn.references 中。
注意,参与者的 [ChatParticipant.name name](#ChatParticipant.name name) 和 [ChatCommand.name command](#ChatCommand.name command) 不属于提示的一部分。
references: ChatPromptReference[]
此消息中使用的引用。
toolReferences: readonly ChatLanguageModelToolReference[]
附加到此请求的工具列表。
ChatResponseAnchorPart
表示聊天响应中作为锚点(呈现为指向目标的链接)的一部分。
构造函数
new ChatResponseAnchorPart(value: Uri | Location, title?: string): ChatResponseAnchorPart
创建一个新的 ChatResponseAnchorPart。
参数 | 描述 |
---|---|
value: Uri | Location | 一个 uri 或位置。 |
title?: string | 与值一起呈现的可选标题。 |
返回 | 描述 |
ChatResponseAnchorPart |
属性
与值一起呈现的可选标题。
此锚点的目标。
ChatResponseCommandButtonPart
表示聊天响应中一个执行命令的按钮部分。
构造函数
new ChatResponseCommandButtonPart(value: Command): ChatResponseCommandButtonPart
创建一个新的 ChatResponseCommandButtonPart。
参数 | 描述 |
---|---|
value: Command | 点击按钮时将执行的命令。 |
返回 | 描述 |
ChatResponseCommandButtonPart |
属性
value: Command
点击按钮时将执行的命令。
ChatResponseFileTree
表示聊天响应中的文件树结构。
属性
children?: ChatResponseFileTree[]
子文件树数组,如果当前文件树是目录。
文件或目录的名称。
ChatResponseFileTreePart
表示聊天响应中的文件树部分。
构造函数
new ChatResponseFileTreePart(value: ChatResponseFileTree[], baseUri: Uri): ChatResponseFileTreePart
创建一个新的 ChatResponseFileTreePart。
参数 | 描述 |
---|---|
value: ChatResponseFileTree[] | 文件树数据。 |
baseUri: Uri | 此文件树的相对基本 uri。 |
返回 | 描述 |
ChatResponseFileTreePart |
属性
baseUri: Uri
此文件树的相对基本 uri。
value: ChatResponseFileTree[]
文件树数据。
ChatResponseMarkdownPart
表示聊天响应中格式化为 Markdown 的部分。
构造函数
new ChatResponseMarkdownPart(value: string | MarkdownString): ChatResponseMarkdownPart
创建一个新的 ChatResponseMarkdownPart。
参数 | 描述 |
---|---|
value: string | MarkdownString | 一个 markdown 字符串或应解释为 markdown 的字符串。MarkdownString.isTrusted 的布尔形式不受支持。 |
返回 | 描述 |
ChatResponseMarkdownPart |
属性
value: MarkdownString
一个 markdown 字符串或应解释为 markdown 的字符串。
ChatResponsePart
表示不同的聊天响应类型。
ChatResponsePart: ChatResponseMarkdownPart | ChatResponseFileTreePart | ChatResponseAnchorPart | ChatResponseProgressPart | ChatResponseReferencePart | ChatResponseCommandButtonPart
ChatResponseProgressPart
表示聊天响应中的进度消息部分。
构造函数
new ChatResponseProgressPart(value: string): ChatResponseProgressPart
创建一个新的 ChatResponseProgressPart。
参数 | 描述 |
---|---|
value: string | 进度消息。 |
返回 | 描述 |
ChatResponseProgressPart |
属性
进度消息。
ChatResponseReferencePart
表示聊天响应中与内容分开呈现的引用部分。
构造函数
new ChatResponseReferencePart(value: Uri | Location, iconPath?: IconPath): ChatResponseReferencePart
创建一个新的 ChatResponseReferencePart。
参数 | 描述 |
---|---|
value: Uri | Location | 一个 uri 或位置 |
iconPath?: IconPath | 在 UI 中显示的引用图标。 |
返回 | 描述 |
ChatResponseReferencePart |
属性
iconPath?: IconPath
引用的图标。
引用的目标。
ChatResponseStream
ChatResponseStream 是参与者能够向聊天视图返回内容的方式。它提供了几种方法,用于流式传输不同类型的内容,这些内容将在聊天视图中以适当的方式呈现。参与者可以使用相应内容类型的辅助方法,或者实例化一个 ChatResponsePart 并使用通用方法 ChatResponseStream.push 返回它。
方法
anchor(value: Uri | Location, title?: string): void
将锚点部分推送到此流中。它是 push(new ChatResponseAnchorPart(value, title))
的简写。锚点是对此类型资源内联引用。
button(command: Command): void
将命令按钮部分推送到此流中。它是 push(new ChatResponseCommandButtonPart(value, title))
的简写。
参数 | 描述 |
---|---|
command: Command | 点击按钮时将执行的命令。 |
返回 | 描述 |
void |
filetree(value: ChatResponseFileTree[], baseUri: Uri): void
将文件树部分推送到此流中。它是 push(new ChatResponseFileTreePart(value))
的简写。
参数 | 描述 |
---|---|
value: ChatResponseFileTree[] | 文件树数据。 |
baseUri: Uri | 此文件树的相对基本 uri。 |
返回 | 描述 |
void |
markdown(value: string | MarkdownString): void
将 markdown 部分推送到此流中。它是 push(new ChatResponseMarkdownPart(value))
的简写。
参数 | 描述 |
---|---|
value: string | MarkdownString | 一个 markdown 字符串或应解释为 markdown 的字符串。MarkdownString.isTrusted 的布尔形式不受支持。 |
返回 | 描述 |
void |
将进度部分推送到此流中。它是 push(new ChatResponseProgressPart(value))
的简写。
参数 | 描述 |
---|---|
value: string | 进度消息。 |
返回 | 描述 |
void |
push(part: ChatResponsePart): void
将部分推送到此流。
参数 | 描述 |
---|---|
part: ChatResponsePart | 一个响应部分,可以是渲染内容或元数据。 |
返回 | 描述 |
void |
reference(value: Uri | Location, iconPath?: IconPath): void
将引用推送到此流中。它是 push(new ChatResponseReferencePart(value))
的简写。
注意,引用不会与响应内联渲染。
ChatResponseTurn
表示聊天历史中的聊天参与者响应。
属性
此响应来自的命令名称。
此响应来自的聊天参与者的 ID。
response: ReadonlyArray<ChatResponseMarkdownPart | ChatResponseFileTreePart | ChatResponseAnchorPart | ChatResponseCommandButtonPart>
从聊天参与者接收到的内容。只表示表示实际内容(非元数据)的流部分。
result: ChatResult
从聊天参与者接收到的结果。
ChatResult
聊天请求的结果。
属性
errorDetails?: ChatErrorDetails
如果请求导致错误,此属性定义错误详情。
此结果的任意元数据。可以是任何内容,但必须是可 JSON 字符串化的。
ChatResultFeedback
表示用户对结果的反馈。
属性
kind: ChatResultFeedbackKind
收到的反馈类型。
result: ChatResult
用户为其提供反馈的 ChatResult。此对象具有与参与者回调返回的结果相同的属性,包括 metadata
,但不是同一个实例。
ChatResultFeedbackKind
表示收到的用户反馈类型。
枚举成员
用户将结果标记为无用。
用户将结果标记为有用。
Clipboard
剪贴板提供对系统剪贴板的读写访问。
方法
将当前剪贴板内容读取为文本。
参数 | 描述 |
---|---|
返回 | 描述 |
Thenable<string> | 一个解析为字符串的 Thenable。 |
writeText(value: string): Thenable<void>
将文本写入剪贴板。
参数 | 描述 |
---|---|
value: string | |
返回 | 描述 |
Thenable<void> | 一个在写入发生时解析的 Thenable。 |
CodeAction
构造函数
new CodeAction(title: string, kind?: CodeActionKind): CodeAction
参数 | 描述 |
---|---|
title: string | 代码操作的标题。 |
kind?: CodeActionKind | 代码操作的类型。 |
返回 | 描述 |
CodeAction |
属性
command?: Command
此代码操作执行的 Command。
如果此命令抛出异常,编辑器会在当前光标位置向用户显示异常消息。
diagnostics?: Diagnostic[]
此代码操作解决的 Diagnostics。
标记当前无法应用代码操作。
禁用的代码操作不会显示在自动 lightbulb 代码操作菜单中。
当用户请求更特定类型的代码操作(例如重构)时,禁用操作在代码操作菜单中显示为灰色。
如果用户具有自动应用代码操作的 keybinding,并且仅返回禁用代码操作,则编辑器会在编辑器中向用户显示带有
reason
的错误消息。
参数 | 描述 |
---|---|
reason: string | 人类可读的描述,说明为什么代码操作当前被禁用。 这显示在代码操作 UI 中。 |
edit?: WorkspaceEdit
此代码操作执行的 workspace edit。
标记此操作为首选操作。首选操作用于 auto fix
命令,并且可以通过键绑定定位。
如果快速修复正确解决了潜在错误,则应将其标记为首选。如果重构是可采取的最合理的选择,则应将其标记为首选。
kind?: CodeActionKind
代码操作的 Kind。
用于过滤代码操作。
此代码操作的简短、人类可读的标题。
CodeActionContext
包含关于运行 code action 的上下文的附加诊断信息。
属性
diagnostics: readonly Diagnostic[]
诊断数组。
only: CodeActionKind
请求返回的操作类型。
不属于此类型的操作在由 lightbulb 显示之前会被过滤掉。
triggerKind: CodeActionTriggerKind
请求代码操作的原因。
CodeActionKind
代码操作的类型。
类型是以 .
分隔的标识符的层次结构列表,例如 "refactor.extract.function"
。
代码操作类型被编辑器用于 UI 元素,例如重构上下文菜单。用户还可以使用 editor.action.codeAction
命令触发特定类型的代码操作。
Static
Empty: CodeActionKind
空类型。
Notebook: CodeActionKind
适用于整个笔记本范围的所有代码操作的基础类型。使用此类型的 CodeActionKinds 始终应以 notebook.
开头。
这要求为其创建新的 CodeActions 并通过扩展进行贡献。已存在的类型不能简单地添加新的 notebook.
前缀,因为此功能是全笔记本范围所独有的。
Notebook CodeActionKinds 可以通过以下任一方式初始化(两者都将导致 notebook.source.xyz
)
const newKind = CodeActionKind.Notebook.append(CodeActionKind.Source.append('xyz').value)
const newKind = CodeActionKind.Notebook.append('source.xyz')
示例类型/操作
notebook.source.organizeImports
(可能会将所有导入移动到新的顶部单元格)notebook.source.normalizeVariableNames
(可能会将所有变量重命名为标准化大小写格式)
QuickFix: 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
源代码操作适用于整个文件。必须明确请求它们,并且它们不会显示在常规 lightbulb 菜单中。源代码操作可以使用 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>
为代码提供上下文操作。代码操作通常用于修复问题或美化/重构代码。
代码操作通过几种不同的方式向用户显示:
- lightbulb 功能,它在当前光标位置显示代码操作列表。lightbulb 的操作列表包括快速修复和重构。
- 作为用户可以运行的命令,例如
Refactor
。用户可以从命令面板或通过键绑定运行这些命令。 - 作为源代码操作,例如
Organize Imports
。 - Quick fixes 显示在问题视图中。
- 由
editor.codeActionsOnSave
设置在保存时应用的更改。
方法
provideCodeActions(document: TextDocument, range: Range | Selection, context: CodeActionContext, token: CancellationToken): ProviderResult<Array<Command | T>>
获取文档中给定范围的代码操作。
只返回与用户请求范围相关的代码操作。还要考虑返回的代码操作在 UI 中的显示方式。例如,lightbulb 小部件和 Refactor
命令将返回的代码操作显示为列表,因此不要返回大量代码操作,以免使用户不知所措。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
range: Range | Selection | 调用命令的选择器或范围。如果在当前活动编辑器中请求操作,此值将始终是 selection。 |
context: CodeActionContext | 提供有关正在请求哪些代码操作的附加信息。可以使用此信息查看编辑器正在请求哪种特定类型的代码操作,以便返回更相关的操作,并避免返回编辑器将丢弃的不相关代码操作。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<Array<Command | T>> | 代码操作数组,例如快速修复或重构。可以通过返回 出于历史原因,我们也支持返回 |
resolveCodeAction(codeAction: T, token: CancellationToken): ProviderResult<T>
给定代码操作,填充其 edit 属性。对所有其他属性(如标题)的更改将被忽略。具有 edit 的代码操作将不会被解析。
注意,返回命令而不是代码操作的代码操作提供程序无法成功实现此函数。返回命令已被弃用,应改为返回代码操作。
参数 | 描述 |
---|---|
codeAction: T | 代码操作。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T> | 已解析的代码操作或解析为该对象的 Thenable。返回给定的 |
CodeActionProviderMetadata
关于 CodeActionProvider 提供代码操作类型的元数据。
属性
documentation?: ReadonlyArray<{command: Command, kind: CodeActionKind}>
一类代码操作的静态文档。
如果满足以下任一条件,提供程序提供的文档将显示在代码操作菜单中:
编辑器请求了
kind
类型的代码操作。在这种情况下,编辑器将显示与所请求代码操作类型最接近的文档。例如,如果一个提供程序同时具有Refactor
和RefactorExtract
的文档,当用户请求RefactorExtract
的代码操作时,编辑器将使用RefactorExtract
的文档而不是Refactor
的文档。提供程序返回了任何
kind
类型的代码操作。
每个提供程序最多显示一个文档条目。
providedCodeActionKinds?: readonly CodeActionKind[]
CodeActionProvider 可能返回的 CodeActionKinds 列表。
此列表用于确定是否应调用给定的 CodeActionProvider
。为了避免不必要的计算,每个 CodeActionProvider
都应列出并使用 providedCodeActionKinds
。类型列表可以是通用的,例如 [CodeActionKind.Refactor]
,也可以列出提供的每种类型,例如 [CodeActionKind.Refactor.Extract.append('function'), CodeActionKind.Refactor.Extract.append('constant'), ...]
。
CodeActionTriggerKind
请求代码操作的原因。
枚举成员
代码操作由用户或扩展程序明确请求。
代码操作自动请求。
这通常发生在文件中的当前选择更改时,但也可能在文件内容更改时触发。
CodeLens
CodeLens 表示一个 Command,应与源代码一起显示,例如引用数量、运行测试的方法等。
当 CodeLens 未关联任何命令时,它处于未解析状态。为了性能考虑,CodeLens 的创建和解析应分两个阶段完成。
另请参阅
构造函数
new CodeLens(range: Range, command?: Command): CodeLens
属性
command?: Command
此代码镜头表示的命令。
当有关联的命令时为 true
。
range: Range
此代码镜头有效的范围。应该只跨越一行。
CodeLensProvider<T>
CodeLens 提供程序将 命令 添加到源代码。这些命令将作为专用的水平线显示在源代码之间。
事件
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-lenses 后调用。
参数 | 描述 |
---|---|
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[]
选择此颜色表示形式时应用的附加 text edits 的可选数组。编辑不能与主要 edit 重叠,也不能与自身重叠。
此颜色表示形式的标签。它将显示在颜色选择器头部。默认情况下,这也是选择此颜色表示形式时插入的文本。
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
操作。
描述 注释 的可选标签。如果存在,标签将显示在 authorName 旁边。
mode: CommentMode
注释的 注释模式
reactions?: CommentReaction[]
注释 的可选回应。
将在注释中显示的 Optional timestamp。日期将根据用户区域设置和设置进行格式化。
CommentAuthorInformation
注释 的作者信息
属性
iconPath?: Uri
作者的可选图标路径
注释作者的显示名称
CommentController
注释控制器能够为编辑器提供注释支持,并为用户提供与注释交互的各种方式。
属性
commentingRangeProvider?: CommentingRangeProvider
可选的注释范围提供程序。为任何给定资源 uri 提供支持注释的 范围 列表。
如果未提供,用户将无法留下任何注释。
此注释控制器的 ID。
此注释控制器的可读标签。
options?: CommentOptions
注释控制器选项
reactionHandler?: (comment: Comment, reaction: CommentReaction) => Thenable<void>
用于创建和删除 注释 上的回应的可选回应处理程序。
参数 | 描述 |
---|---|
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[] | CommentingRanges>
为给定文档提供允许创建新注释线程的范围列表,或者为 null。
参数 | 描述 |
---|---|
document: TextDocument | |
token: CancellationToken | |
返回 | 描述 |
ProviderResult<Range[] | CommentingRanges> |
CommentingRanges
CommentingRangeProvider 启用注释的范围。
属性
允许在不指定特定范围的情况下向文件添加注释。
ranges?: Range[]
允许创建新注释线程的范围。
CommentMode
注释 的注释模式
枚举成员
显示注释编辑器
显示注释的预览
CommentOptions
属性
当注释输入框获得焦点时显示为占位符的可选字符串。
当注释输入框折叠时显示的可选字符串。
CommentReaction
注释 的回应
属性
注释的 作者 是否已对此回应做出回应
对此回应做出回应的用户数量
iconPath: string | Uri
在 UI 中显示的回应图标。
回应的可读标签
CommentReply
在 comments/commentThread/context
中注册的操作的命令参数。
属性
注释编辑器中的值
thread: CommentThread
活动的 注释线程
CommentRule
描述语言的注释工作方式。
属性
blockComment?: CharacterPair
块注释字符对,例如 /* 块注释 */
行注释标记,例如 // 这是注释
CommentThread
表示文档中特定范围内对话的 注释 集合。
属性
canReply: boolean | CommentAuthorInformation
线程是否支持回复。默认为 true。
collapsibleState: CommentThreadCollapsibleState
打开文档时线程应折叠还是展开。默认为 Collapsed。
comments: readonly Comment[]
线程的有序注释。
注释线程的上下文值。这可用于添加线程特定的操作。例如,注释线程的上下文值为 editable
。在使用 menus
扩展点为 comments/commentThread/title
添加操作时,可以在 when
表达式中为键 commentThread
指定上下文值,例如 commentThread == editable
。
"contributes": {
"menus": {
"comments/commentThread/title": [
{
"command": "extension.deleteCommentThread",
"when": "commentThread == editable"
}
]
}
}
这将只显示 contextValue
为 editable
的注释线程的 extension.deleteCommentThread
操作。
描述 注释线程 的可选可读标签
range: Range
注释线程位于文档内的范围。线程图标将显示在范围的最后一行。设置为 undefined 时,注释将与文件关联,而不是特定范围。
state?: CommentThreadState
注释线程的可选状态,可能会影响注释的显示方式。
uri: Uri
创建线程的文档的 uri。
方法
释放此注释线程。
释放后,此注释线程将适时从可见编辑器和“注释”面板中移除。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
CommentThreadCollapsibleState
注释线程 的可折叠状态
枚举成员
确定项是否折叠
确定项是否展开
CommentThreadState
注释线程的状态。
枚举成员
未解决的线程状态
已解决的线程状态
CompletionContext
包含关于触发 completion provider 的上下文的附加信息。
属性
触发补全项提供程序的字符。
如果提供程序未由字符触发,则为 undefined
。
触发补全提供程序时,触发字符已存在于文档中。
triggerKind: CompletionTriggerKind
补全是如何触发的。
CompletionItem
补全项表示建议完成正在键入的文本的文本片段。
仅从 label 创建一个补全项就足够了。在这种情况下,补全项将用给定的 label 或 insertText 替换光标前的 词。否则,将使用给定的 edit。
在编辑器中选择一个补全项时,其定义或合成的文本编辑将应用于所有光标/选择,而 additionalTextEdits 将按提供方式应用。
另请参阅
构造函数
new CompletionItem(label: string | CompletionItemLabel, kind?: CompletionItemKind): CompletionItem
创建一个新的补全项。
补全项必须至少有一个 label,该 label 将用作插入文本以及用于排序和过滤。
参数 | 描述 |
---|---|
label: string | CompletionItemLabel | 补全的标签。 |
kind?: CompletionItemKind | 补全的 kind。 |
返回 | 描述 |
CompletionItem |
属性
additionalTextEdits?: TextEdit[]
command?: Command
插入此补全后执行的可选 命令。*注意*,对当前文档的额外修改应使用 additionalTextEdits 属性描述。
在此补全处于活动状态时按下时,将首先接受它然后键入该字符的可选字符集。*注意*,所有 commit characters 的长度应为 length=1
,并且多余的字符将被忽略。
包含此项附加信息(如类型或符号信息)的可读字符串。
documentation?: string | MarkdownString
表示文档注释的可读字符串。
insertText?: string | SnippetString
选择此补全时应插入文档的字符串或片段。当值为 falsy
时,使用 label。
保持 insertText 的空白原样。默认情况下,编辑器会调整新行的前导空白,使其与接受此项的行的缩进匹配 - 将此设置为 true
将阻止这种情况。
kind?: CompletionItemKind
此补全项的类型。编辑器根据类型选择一个图标。
label: string | CompletionItemLabel
此补全项的标签。默认情况下,这也是选择此补全时插入的文本。
显示时选择此项。注意,只能选择一个补全项,并且编辑器决定选择哪个项。规则是选择最匹配项中的*第一个*项。
range?: Range | {inserting: Range, replacing: Range}
tags?: readonly CompletionItemTag[]
此补全项的标签。
textEdit?: TextEdit
- 已弃用 - 请改用
CompletionItem.insertText
和CompletionItem.range
。
选择此补全时应用于文档的 edit。提供 edit 时,将忽略 insertText 的值。
edit 的 Range 必须是单行,并且与请求补全的行相同。
CompletionItemKind
补全项类型。
枚举成员
Text
补全项类型。
Method
补全项类型。
Function
补全项类型。
Constructor
补全项类型。
Field
补全项类型。
Variable
补全项类型。
Class
补全项类型。
Interface
补全项类型。
Module
补全项类型。
Property
补全项类型。
Unit
补全项类型。
Value
补全项类型。
Enum
补全项类型。
Keyword
补全项类型。
Snippet
补全项类型。
Color
补全项类型。
File
补全项类型。
Reference
补全项类型。
Folder
补全项类型。
EnumMember
补全项类型。
Constant
补全项类型。
Struct
补全项类型。
Event
补全项类型。
Operator
补全项类型。
TypeParameter
补全项类型。
User
补全项类型。
Issue
补全项类型。
CompletionItemLabel
补全项 的结构化标签。
属性
在 CompletionItemLabel.detail 之后渲染的可选字符串,不那么醒目。应用于完全限定名称或文件路径。
紧随 label 后渲染的可选字符串,不那么醒目,没有任何间距。应用于函数签名或类型注解。
此补全项的标签。
默认情况下,这也是选择此补全时插入的文本。
CompletionItemProvider<T>
补全项提供程序接口定义了扩展和 智能感知 之间的契约。
提供程序可以通过实现 resolveCompletionItem 函数来延迟计算 detail 和 documentation 属性。但是,在解析期间不得更改初始排序和过滤所需的属性,例如 sortText
、filterText
、insertText
和 range
。
提供程序可以通过用户手势显式请求补全,或者(取决于配置)在键入单词或触发字符时隐式请求补全。
方法
provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken, context: CompletionContext): ProviderResult<CompletionList<T> | T[]>
为给定的位置和文档提供补全项。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
position: Position | 调用命令的位置。 |
token: CancellationToken | 取消令牌。 |
context: CompletionContext | 补全是如何触发的。 |
返回 | 描述 |
ProviderResult<CompletionList<T> | T[]> | 补全数组、补全列表 或解析为其中之一的 thenable。可以通过返回 |
resolveCompletionItem(item: T, token: CancellationToken): ProviderResult<T>
给定一个补全项,填充更多数据,例如 doc-comment 或 details。
编辑器只会解析一个补全项一次。
注意,此函数在补全项已在 UI 中显示或选择某个项进行插入时调用。因此,不得更改任何会改变呈现(标签、排序、过滤等)或(主要)插入行为(insertText)的属性。
此函数可以填充 additionalTextEdits。但是,这意味着项可能在解析完成之前插入,在这种情况下,编辑器将尽力仍然应用这些额外的文本编辑。
参数 | 描述 |
---|---|
item: T | 当前在 UI 中处于活动状态的补全项。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T> | 解析的补全项或解析为该项的 thenable。可以返回给定的 |
CompletionItemTag
补全项标签是额外注解,用于调整补全项的渲染。
枚举成员
将补全渲染为已过时,通常使用删除线。
CompletionList<T>
表示要在编辑器中呈现的 补全项 集合。
构造函数
new CompletionList<T extends CompletionItem>(items?: T[], isIncomplete?: boolean): CompletionList<T>
创建一个新的补全列表。
参数 | 描述 |
---|---|
items?: T[] | 补全项。 |
isIncomplete?: boolean | 列表不完整。 |
返回 | 描述 |
CompletionList<T> |
属性
此列表不完整。进一步键入应重新计算此列表。
补全项。
CompletionTriggerKind
枚举成员
补全提供程序 的触发方式
补全正常触发。
补全由触发字符触发。
当前补全列表不完整,重新触发了补全
方法
描述配置变化的事件
affectsConfiguration(section: string, scope?: ConfigurationScope): boolean
参数 | 描述 |
---|---|
检查给定的 section 是否已更改。如果提供了 scope,则检查给定 scope 下资源的 section 是否已更改。 | section: string |
scope?: ConfigurationScope | 配置名称,支持点名称。 |
返回 | 描述 |
boolean | 要检查的作用域。 |
如果给定的 section 已更改,则为 true
。
- 配置作用域可以是
- 表示资源的 Uri
- 表示打开的文本文档的 TextDocument
- 表示工作区文件夹的 WorkspaceFolder
- 包含以下内容的对象
uri
:文本文档的可选 Uri
languageId
:文本文档的语言标识符
ConfigurationScope: Uri | TextDocument | WorkspaceFolder | {languageId: string, uri: Uri}
枚举成员
配置目标
全局配置
工作区配置
工作区文件夹配置
表示 CustomEditorProvider 使用的自定义文档。
属性
自定义文档仅在给定的 CustomEditorProvider
中使用。CustomDocument
的生命周期由编辑器管理。当没有更多对 CustomDocument
的引用时,它将被释放。
uri: Uri
方法
此文档关联的 uri。
当不再有对给定 CustomDocument
的引用时(例如,当与文档关联的所有编辑器都已关闭时),编辑器会调用此方法。
属性
CustomDocument 的备份。
方法
从备份打开自定义编辑器时,此 ID 将在 openCustomDocument
中传回给您的扩展。
当明确不再需要当前备份时,编辑器会调用此方法,例如创建新备份或保存文件时。
属性
用于实现 CustomDocumentBackup 的附加信息。
如果编辑器是当前工作区中的资源,则 destination
将指向 ExtensionContext.storagePath
中的文件。destination
的父文件夹可能不存在,因此请确保在将备份写入此位置之前创建它。
CustomDocumentContentChangeEvent<T>
由扩展触发的事件,用于向编辑器发出信号,表明 CustomDocument 的内容已更改。
属性
另请参阅 CustomEditorProvider.onDidChangeCustomDocument。
发生更改的文档。
由扩展触发的事件,用于向编辑器发出信号,表明 CustomDocument 的内容已更改。
属性
由扩展触发的事件,用于向编辑器发出信号,表明 CustomDocument 上发生了编辑。
发生编辑的文档。
方法
这将显示在 UI 中供用户进行撤销/重做操作。
参数 | 描述 |
---|---|
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
void | Thenable<void>
参数 | 描述 |
---|---|
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
当用户撤销此编辑时,编辑器会调用此方法。要实现 undo
,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument
添加到编辑器的内部编辑堆栈之前的状态。
属性
关于打开的自定义文档的附加信息。
如果提供了此 ID,您的扩展应从备份恢复编辑器,而不是从用户的工作区读取文件。
如果提供了此字段,您的扩展应利用此字节数据,而不是对传入的 URI 执行文件系统 API。
使用自定义文档模型的可编辑自定义编辑器提供程序。
自定义编辑器使用 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
,以便将编辑器显示给用户。
参数 | 描述 |
---|---|
uri: Uri | 如果用户打开额外的编辑器,已打开的 |
要打开的文档的 Uri。 | |
token: CancellationToken | openContext: CustomDocumentOpenContext |
返回 | 描述 |
表示不再需要结果的取消令牌。 | T | Thenable<T> |
自定义文档。
resolveCustomEditor(document: T, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
解析给定资源的自定义编辑器。
参数 | 描述 |
---|---|
启用自动保存时不会调用 backup (因为自动保存已经持久化了资源)。 | 每当用户为这个 |
正在解析的资源的文档。 | webviewPanel: WebviewPanel 用于显示此资源编辑器 UI 的 webview 面板。 |
token: CancellationToken | openContext: CustomDocumentOpenContext |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 | 在解析期间,提供程序必须填充内容 webview 面板的初始 html,并连接所有它感兴趣的事件侦听器。提供程序还可以保留 |
表示自定义编辑器已解析的可选 thenable。
revertCustomDocument(document: T, cancellation: CancellationToken): Thenable<void>
将自定义文档还原到其上次保存的状态。
当用户在自定义编辑器中触发“文件: 还原文件”时,编辑器会调用此方法。(请注意,此方法仅用于编辑器的“文件: 还原文件”命令,而不用于文件的 git 还原)。
参数 | 描述 |
---|---|
启用自动保存时不会调用 backup (因为自动保存已经持久化了资源)。 | 要实现 |
可用于备份文档的信息。 | 要还原的文档。 |
返回 | 描述 |
Thenable<void> | 表示不再需要还原的令牌。 |
表示更改已完成的 Thenable。
saveCustomDocument(document: T, cancellation: CancellationToken): Thenable<void>
保存自定义文档。
当用户保存自定义编辑器时,编辑器会调用此方法。这可能发生在用户在自定义编辑器处于活动状态时触发保存,例如通过“全部保存”等命令,或者在启用自动保存时发生。
参数 | 描述 |
---|---|
启用自动保存时不会调用 backup (因为自动保存已经持久化了资源)。 | 要实现 |
可用于备份文档的信息。 | 要保存的文档。 |
返回 | 描述 |
Thenable<void> | 表示不再需要保存的令牌(例如,如果触发了另一个保存)。 |
表示保存已完成的 Thenable。
saveCustomDocumentAs(document: T, destination: Uri, cancellation: CancellationToken): Thenable<void>
将自定义文档保存到其他位置。
当用户在自定义编辑器上触发“另存为”时,编辑器会调用此方法。实现者必须将自定义编辑器持久化到 destination
。
参数 | 描述 |
---|---|
启用自动保存时不会调用 backup (因为自动保存已经持久化了资源)。 | 要实现 |
当用户接受另存为时,当前编辑器将被替换为新保存文件的非脏编辑器。 | destination: Uri |
可用于备份文档的信息。 | 保存位置。 |
返回 | 描述 |
Thenable<void> | 表示不再需要保存的令牌(例如,如果触发了另一个保存)。 |
表示不再需要保存的令牌。
构造函数
用于将扩展回调作为任务执行的类。
new CustomExecution(callback: (resolvedDefinition: TaskDefinition) => Thenable<Pseudoterminal>): CustomExecution
参数 | 描述 |
---|---|
callback: (resolvedDefinition: TaskDefinition) => Thenable<Pseudoterminal> | 当任务由用户启动时将调用的回调。任务定义中的所有 ${} 风格变量都将被解析并作为 |
返回 | 描述 |
CustomExecution |
CustomReadonlyEditorProvider<T>
使用自定义文档模型的只读自定义编辑器的提供程序。
自定义编辑器使用 CustomDocument 作为其文档模型,而不是 TextDocument。
自定义编辑器使用 CustomDocument 作为其文档模型,而不是 TextDocument。这使得扩展可以完全控制编辑、保存和备份等操作。
方法
openCustomDocument(uri: Uri, openContext: CustomDocumentOpenContext, token: CancellationToken): T | Thenable<T>
openCustomDocument(uri: Uri, openContext: CustomDocumentOpenContext, token: CancellationToken): T | Thenable<T>
为给定资源创建一个新文档。
当第一次为给定资源打开编辑器时调用 openCustomDocument
。然后将打开的文档传递给 resolveCustomEditor
,以便将编辑器显示给用户。
参数 | 描述 |
---|---|
uri: Uri | 如果用户打开额外的编辑器,已打开的 |
要打开的文档的 Uri。 | |
token: CancellationToken | openContext: CustomDocumentOpenContext |
返回 | 描述 |
表示不再需要结果的取消令牌。 | T | Thenable<T> |
resolveCustomEditor(document: T, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
resolveCustomEditor(document: T, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
解析给定资源的自定义编辑器。
参数 | 描述 |
---|---|
启用自动保存时不会调用 backup (因为自动保存已经持久化了资源)。 | 每当用户为这个 |
正在解析的资源的文档。 | webviewPanel: WebviewPanel 用于显示此资源编辑器 UI 的 webview 面板。 |
token: CancellationToken | openContext: CustomDocumentOpenContext |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 | 在解析期间,提供程序必须填充内容 webview 面板的初始 html,并连接所有它感兴趣的事件侦听器。提供程序还可以保留 |
CustomTextEditorProvider
基于文本的自定义编辑器的提供程序。
基于文本的自定义编辑器使用 TextDocument 作为其数据模型。这极大地简化了自定义编辑器的实现,因为它允许编辑器处理许多常见操作,例如撤消和备份。提供程序负责同步 webview 和 TextDocument
之间的文本更改。
方法
resolveCustomTextEditor(document: TextDocument, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
为给定的文本资源解析自定义编辑器。
当用户首次为 CustomTextEditorProvider
打开资源时,或者当他们使用此 CustomTextEditorProvider
重新打开现有编辑器时,会调用此方法。
参数 | 描述 |
---|---|
document: TextDocument | 要解析资源的文档。 |
正在解析的资源的文档。 | webviewPanel: WebviewPanel 用于显示此资源编辑器 UI 的 webview 面板。 |
token: CancellationToken | openContext: CustomDocumentOpenContext |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 | 表示自定义编辑器已解析的 Thenable。 |
DataTransfer
包含相应传输数据的 MIME 类型映射的映射。
实现 handleDrag
的拖放控制器可以将额外的 MIME 类型添加到数据传输中。这些额外的 MIME 类型只有在拖动源自同一拖放控制器中的元素时才会被包含在 handleDrop
中。
构造函数
new DataTransfer(): DataTransfer
参数 | 描述 |
---|---|
返回 | 描述 |
DataTransfer |
方法
[iterator](): IterableIterator<[mimeType: string, item: DataTransferItem]>
获取此数据传输中每个元素的 [mime, item]
对的新迭代器。
参数 | 描述 |
---|---|
返回 | 描述 |
IterableIterator<[mimeType: string, item: DataTransferItem]> |
forEach(callbackfn: (item: DataTransferItem, mimeType: string, dataTransfer: DataTransfer) => void, thisArg?: any): void
允许迭代数据传输项。
参数 | 描述 |
---|---|
callbackfn: (item: DataTransferItem, mimeType: string, dataTransfer: DataTransfer) => void | 用于迭代数据传输项的回调。 |
thisArg?: any | 调用处理程序函数时使用的 |
返回 | 描述 |
void |
get(mimeType: string): DataTransferItem
根据给定的 MIME 类型检索数据传输项。
参数 | 描述 |
---|---|
mimeType: string | 要获取数据传输项的 MIME 类型,例如 特殊的 MIME 类型
|
返回 | 描述 |
DataTransferItem |
set(mimeType: string, value: DataTransferItem): void
设置 MIME 类型到数据传输项的映射。
参数 | 描述 |
---|---|
mimeType: string | 要设置数据的 MIME 类型。MIME 类型存储为小写,查找不区分大小写。 |
value: DataTransferItem | 给定 MIME 类型的数据传输项。 |
返回 | 描述 |
void |
DataTransferFile
与 DataTransferItem 相关的文件。
此类型的实例只能由编辑器创建,不能由扩展程序创建。
属性
文件的名称。
uri?: Uri
文件的完整文件路径。
在 web 上可能为 undefined
。
方法
文件的完整文件内容。
参数 | 描述 |
---|---|
返回 | 描述 |
Thenable<Uint8Array> |
DataTransferItem
封装拖放操作期间传输的数据。
构造函数
new DataTransferItem(value: any): DataTransferItem
参数 | 描述 |
---|---|
value: any | 存储在此项上的自定义数据。可以使用 DataTransferItem.value 检索。 |
返回 | 描述 |
DataTransferItem |
属性
存储在此项上的自定义数据。
您可以使用 value
在操作之间共享数据。只要创建 DataTransferItem
的扩展程序在同一扩展宿主中运行,就可以检索原始对象。
方法
asFile(): DataTransferFile
尝试获取与此数据传输项关联的 file。
请注意,文件对象仅在拖放操作的范围内有效。
参数 | 描述 |
---|---|
返回 | 描述 |
DataTransferFile | 数据传输的文件,如果该项不是文件或者无法访问文件数据,则为 |
获取此项的字符串表示形式。
如果 DataTransferItem.value 是一个对象,则返回 json 字符串化 DataTransferItem.value 值的结果。
参数 | 描述 |
---|---|
返回 | 描述 |
Thenable<string> |
DebugAdapter
实现 Debug Adapter Protocol 的调试适配器,如果它实现了 DebugAdapter 接口,则可以在编辑器中注册。
事件
onDidSendMessage: Event<DebugProtocolMessage>
调试适配器向编辑器发送 Debug Adapter Protocol 消息后触发的事件。消息可以是请求、响应或事件。
方法
释放此对象。
参数 | 描述 |
---|---|
返回 | 描述 |
任意类型 |
handleMessage(message: DebugProtocolMessage): void
处理 Debug Adapter Protocol 消息。消息可以是请求、响应或事件。结果或错误通过 onSendMessage 事件返回。
参数 | 描述 |
---|---|
message: DebugProtocolMessage | Debug Adapter Protocol 消息 |
返回 | 描述 |
void |
DebugAdapterDescriptor
表示不同类型的调试适配器
DebugAdapterDescriptor: DebugAdapterExecutable | DebugAdapterServer | DebugAdapterNamedPipeServer | DebugAdapterInlineImplementation
DebugAdapterDescriptorFactory
一个创建 调试适配器描述符 的调试适配器工厂。
方法
createDebugAdapterDescriptor(session: DebugSession, executable: DebugAdapterExecutable): ProviderResult<DebugAdapterDescriptor>
'createDebugAdapterDescriptor' 在调试会话开始时调用,以提供要使用的调试适配器的详细信息。这些详细信息必须作为 DebugAdapterDescriptor 类型的对象返回。当前支持两种类型的调试适配器:
- 调试适配器可执行文件指定为命令路径和参数(参见 DebugAdapterExecutable),
- 可通过通信端口访问的调试适配器服务器(参见 DebugAdapterServer)。如果未实现此方法,则默认行为如下:createDebugAdapter(session: DebugSession, executable: DebugAdapterExecutable) { if (typeof session.configuration.debugServer === 'number') { return new DebugAdapterServer(session.configuration.debugServer); } return executable; }
参数 | 描述 |
---|---|
session: DebugSession | 将使用调试适配器的 调试会话。 |
executable: DebugAdapterExecutable | package.json 中指定的调试适配器可执行文件信息(如果不存在此类信息,则为 undefined)。 |
返回 | 描述 |
ProviderResult<DebugAdapterDescriptor> | 一个 调试适配器描述符 或 undefined。 |
DebugAdapterExecutable
表示一个调试适配器可执行文件以及传递给它的可选参数和运行时选项。
构造函数
new DebugAdapterExecutable(command: string, args?: string[], options?: DebugAdapterExecutableOptions): DebugAdapterExecutable
创建一个基于可执行程序的调试适配器描述。
参数 | 描述 |
---|---|
command: string | 实现调试适配器的命令或可执行文件路径。 |
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
调试适配器已向编辑器发送 Debug Adapter Protocol 消息。
参数 | 描述 |
---|---|
message: any | |
返回 | 描述 |
void |
onWillReceiveMessage(message: any): void
调试适配器即将接收来自编辑器的 Debug Adapter Protocol 消息。
参数 | 描述 |
---|---|
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 | 配置使用的工作区文件夹,或者对于无文件夹设置,为 |
options: LanguageModelToolInvocationOptions<object> | 取消令牌。 |
返回 | 描述 |
ProviderResult<DebugConfiguration[]> | 调试配置 数组。 |
resolveDebugConfiguration(folder: WorkspaceFolder, debugConfiguration: DebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration>
通过填充缺失值或添加/更改/删除属性来解析 调试配置。如果针对同一类型注册了多个调试配置提供程序,则 resolveDebugConfiguration 调用会以任意顺序链接,并且初始调试配置会通过链传输。返回 undefined
值会阻止调试会话启动。返回 null
值会阻止调试会话启动并改为打开底层调试配置。
参数 | 描述 |
---|---|
folder: WorkspaceFolder | 配置源自的工作区文件夹,或者对于无文件夹设置,为 |
debugConfiguration: DebugConfiguration | 要解析的 调试配置。 |
options: LanguageModelToolInvocationOptions<object> | 取消令牌。 |
返回 | 描述 |
ProviderResult<DebugConfiguration> | 解析后的调试配置,或 undefined 或 null。 |
resolveDebugConfigurationWithSubstitutedVariables(folder: WorkspaceFolder, debugConfiguration: DebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration>
此钩子在 'resolveDebugConfiguration' 之后直接调用,但所有变量已替换。它可以用于通过填充缺失值或添加/更改/删除属性来解析或验证 调试配置。如果针对同一类型注册了多个调试配置提供程序,则 'resolveDebugConfigurationWithSubstitutedVariables' 调用会以任意顺序链接,并且初始调试配置会通过链传输。返回 undefined
值会阻止调试会话启动。返回 null
值会阻止调试会话启动并改为打开底层调试配置。
参数 | 描述 |
---|---|
folder: WorkspaceFolder | 配置源自的工作区文件夹,或者对于无文件夹设置,为 |
debugConfiguration: DebugConfiguration | 要解析的 调试配置。 |
options: LanguageModelToolInvocationOptions<object> | 取消令牌。 |
返回 | 描述 |
ProviderResult<DebugConfiguration> | 解析后的调试配置,或 undefined 或 null。 |
DebugConfigurationProviderTriggerKind
DebugConfigurationProviderTriggerKind 指定何时触发 DebugConfigurationProvider
的 provideDebugConfigurations
方法。当前有两种情况:为新创建的 launch.json 提供初始调试配置,或者当用户通过 UI(例如,通过“选择并开始调试”命令)请求动态生成的调试配置时提供。注册 DebugConfigurationProvider
时,通过 debug.registerDebugConfigurationProvider 使用触发类型。
枚举成员
调用 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 | 编辑器中的 断点。 |
返回 | 描述 |
Thenable<DebugProtocolBreakpoint> | 解析为 Debug Adapter Protocol 断点或 |
DebugSessionCustomEvent
从 调试会话 收到的自定义 Debug Adapter Protocol 事件。
属性
事件特定信息。
事件类型。
session: DebugSession
收到自定义事件的 调试会话。
DebugSessionOptions
启动调试会话 的选项。
属性
控制调试会话的父会话是否显示在 CALL STACK 视图中,即使它只有一个子会话。默认情况下,调试会话永远不会隐藏其父会话。如果 compact 为 true,则在 CALL STACK 视图中隐藏只有一个子会话的调试会话,以使树更紧凑。
consoleMode?: DebugConsoleMode
控制此会话应拥有单独的调试控制台还是与父会话共享。对于没有父会话的会话无效。默认为 Separate。
lifecycleManagedByParent?: boolean
控制“restart”等生命周期请求是发送到新创建的会话还是其父会话。默认情况下(如果此属性为 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
参数 | 描述 |
---|---|
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | |
executed: number | boolean | 此声明执行的次数,或者如果未知确切计数,则为指示是否已执行的布尔值。如果为零或 false,则声明将标记为未覆盖。 |
location: Range | Position | 声明位置。 |
返回 | 描述 |
DeclarationCoverage |
属性
此声明执行的次数,或者如果未知确切计数,则为指示是否已执行的布尔值。如果为零或 false,则声明将标记为未覆盖。
声明位置。
声明名称。
DeclarationProvider
声明提供程序接口定义了扩展程序和转到声明功能之间的契约。
方法
provideDeclaration(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Declaration>
提供给定位置和文档处符号的声明。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
position: Position | 调用命令的位置。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<Declaration> | 一个声明或解析为该声明的 thenable。可以通过返回 |
DecorationInstanceRenderOptions
表示装饰实例的渲染选项。参见 DecorationOptions.renderOptions。
属性
after?: ThemableDecorationAttachmentRenderOptions
定义插入在装饰文本后的附件的渲染选项。
before?: ThemableDecorationAttachmentRenderOptions
定义插入在装饰文本前的附件的渲染选项。
dark?: ThemableDecorationInstanceRenderOptions
暗色主题的覆盖选项。
light?: ThemableDecorationInstanceRenderOptions
亮色主题的覆盖选项。
DecorationOptions
表示 装饰集 中特定装饰的选项。
属性
hoverMessage?: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>
当悬停在装饰上时应渲染的消息。
range: Range
此装饰应用的范围。范围不得为空。
renderOptions?: DecorationInstanceRenderOptions
应用于当前装饰的渲染选项。出于性能原因,请保持装饰特定选项数量较少,并尽可能使用装饰类型。
DecorationRangeBehavior
描述在装饰边缘键入/编辑时的行为。
枚举成员
装饰的范围在开始或结束处发生编辑时会加宽。
装饰的范围在开始或结束处发生编辑时不会加宽。
装饰的范围在开始处发生编辑时会加宽,但在结束处不会。
装饰的范围在结束处发生编辑时会加宽,但在开始处不会。
DecorationRenderOptions
表示 文本编辑器装饰 的渲染样式。
属性
after?: ThemableDecorationAttachmentRenderOptions
定义插入在装饰文本后的附件的渲染选项。
backgroundColor?: string | ThemeColor
装饰的背景颜色。使用 rgba() 并定义透明背景色以与其他装饰良好配合。或者可以 引用 颜色注册表中的颜色。
before?: ThemableDecorationAttachmentRenderOptions
定义插入在装饰文本前的附件的渲染选项。
应用于由装饰包围的文本的 CSS 样式属性。
borderColor?: string | ThemeColor
应用于由装饰包围的文本的 CSS 样式属性。最好使用 'border' 设置一个或多个单独的边框属性。
应用于由装饰包围的文本的 CSS 样式属性。最好使用 'border' 设置一个或多个单独的边框属性。
应用于由装饰包围的文本的 CSS 样式属性。最好使用 'border' 设置一个或多个单独的边框属性。
应用于由装饰包围的文本的 CSS 样式属性。最好使用 'border' 设置一个或多个单独的边框属性。
应用于由装饰包围的文本的 CSS 样式属性。最好使用 'border' 设置一个或多个单独的边框属性。
color?: string | ThemeColor
应用于由装饰包围的文本的 CSS 样式属性。
应用于由装饰包围的文本的 CSS 样式属性。
dark?: ThemableDecorationRenderOptions
暗色主题的覆盖选项。
应用于由装饰包围的文本的 CSS 样式属性。
应用于由装饰包围的文本的 CSS 样式属性。
gutterIconPath?: string | Uri
一个 绝对路径 或 URI,指向要在边槽中渲染的图像。
指定边槽图标的大小。可用值包括 'auto', 'contain', 'cover' 以及任何百分比值。更多信息请参见:https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx
装饰是否也应渲染在行文本后的空白处。默认为 false
。
应用于由装饰包围的文本的 CSS 样式属性。
light?: ThemableDecorationRenderOptions
亮色主题的覆盖选项。
应用于由装饰包围的文本的 CSS 样式属性。
应用于由装饰包围的文本的 CSS 样式属性。
outlineColor?: string | ThemeColor
应用于由装饰包围的文本的 CSS 样式属性。最好使用 'outline' 设置一个或多个单独的轮廓属性。
应用于由装饰包围的文本的 CSS 样式属性。最好使用 'outline' 设置一个或多个单独的轮廓属性。
应用于由装饰包围的文本的 CSS 样式属性。最好使用 'outline' 设置一个或多个单独的轮廓属性。
overviewRulerColor?: string | ThemeColor
总览标尺中装饰的颜色。使用 rgba() 并定义透明颜色以与其他装饰良好配合。
overviewRulerLane?: OverviewRulerLane
应在总览标尺中渲染装饰的位置。
rangeBehavior?: DecorationRangeBehavior
当装饰范围的边缘发生编辑时,自定义装饰的增长行为。默认为 DecorationRangeBehavior.OpenOpen
。
应用于由装饰包围的文本的 CSS 样式属性。
Definition
符号表示为一个或多个 位置 的定义。对于大多数编程语言,符号只在一个位置定义。
Definition: Location | Location[]
DefinitionLink
关于符号定义位置的信息。
提供比正常 Location 定义更多的元数据,包括定义符号的范围
DefinitionLink: LocationLink
DefinitionProvider
定义提供程序接口定义了扩展程序和 转到定义 和查看定义功能之间的契约。
方法
provideDefinition(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
提供给定位置和文档处符号的定义。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
position: Position | 调用命令的位置。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<Definition | LocationLink[]> | 一个定义或解析为该定义的 thenable。可以通过返回 |
Diagnostic
表示一个诊断信息,例如编译器错误或警告。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[]
获取给定资源的诊断。注意,你不能修改从此调用返回的 diagnostics 数组。
参数 | 描述 |
---|---|
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]]]
。如果 diagnostics 项是 undefined
,例如 [file1, undefined]
,则所有之前(而非后续)的诊断都将被移除。
参数 | 描述 |
---|---|
entries: ReadonlyArray<[Uri, readonly Diagnostic[]]> | 元组数组,例如 |
返回 | 描述 |
void |
DiagnosticRelatedInformation
表示诊断的关联消息和源代码位置。这应用于指向导致或与诊断相关的代码位置,例如在某个作用域中复制符号时。
构造函数
new DiagnosticRelatedInformation(location: Location, message: string): DiagnosticRelatedInformation
创建一个新的关联诊断信息对象。
参数 | 描述 |
---|---|
location: Location | 位置。 |
message: string | 消息。 |
返回 | 描述 |
DiagnosticRelatedInformation |
属性
location: Location
此关联诊断信息的位置。
此关联诊断信息的消息。
DiagnosticSeverity
表示诊断的严重性。
枚举成员
语言规则或其他方式不允许的内容。
可疑但允许的内容。
需要通知的内容,但不是问题。
提示一种更好的做法,例如建议重构。
DiagnosticTag
关于诊断类型的附加元数据。
枚举成员
未使用或不必要的代码。
带有此标签的诊断会淡化显示。淡化程度由 "editorUnnecessaryCode.opacity"
主题颜色控制。例如,"editorUnnecessaryCode.opacity": "#000000c0"
会使代码以 75% 不透明度呈现。对于高对比度主题,请使用 "editorUnnecessaryCode.border"
主题颜色来标记不必要的代码,而不是将其淡化。
已废弃或过时的代码。
带有此标签的诊断会显示删除线。
Disposable
表示可以释放资源的类型,例如事件监听器或计时器。
Static
from(...disposableLikes: Array<{dispose: () => any}>): Disposable
将多个 disposable-like 合并为一个。当您拥有具有 dispose 函数但不是 Disposable
实例的对象时,可以使用此方法。
参数 | 描述 |
---|---|
...disposableLikes: Array<{dispose: () => any}> | 具有至少一个 |
返回 | 描述 |
Disposable | 返回一个新的 disposable,该 disposable 在 dispose 时将释放所有提供的 disposables。 |
构造函数
new Disposable(callOnDispose: () => any): Disposable
创建一个新的 disposable,在 dispose 时调用提供的函数。
注意:异步函数不会被等待。
参数 | 描述 |
---|---|
callOnDispose: () => any | 释放资源的函数。 |
返回 | 描述 |
Disposable |
方法
释放此对象。
参数 | 描述 |
---|---|
返回 | 描述 |
任意类型 |
DocumentColorProvider
文档颜色提供程序定义了扩展和在编辑器中选择和修改颜色功能之间的契约。
方法
provideColorPresentations(color: Color, context: {document: TextDocument, range: Range}, token: CancellationToken): ProviderResult<ColorPresentation[]>
为颜色提供表示。
参数 | 描述 |
---|---|
color: Color | 要显示和插入的颜色。 |
context: {document: TextDocument, range: Range} | 包含附加信息的上下文对象 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<ColorPresentation[]> | 颜色表示数组或解析为该数组的 thenable。可以通过返回 |
provideDocumentColors(document: TextDocument, token: CancellationToken): ProviderResult<ColorInformation[]>
为给定文档提供颜色。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<ColorInformation[]> | 颜色信息数组或解析为该数组的 thenable。可以通过返回 |
DocumentDropEdit
拖放时应用的编辑操作。
构造函数
new DocumentDropEdit(insertText: string | SnippetString, title?: string, kind?: DocumentDropOrPasteEditKind): DocumentDropEdit
参数 | 描述 |
---|---|
insertText: string | SnippetString | 要在拖放位置插入的文本或片段。 |
title?: string | 描述编辑的人类可读标签。 |
kind?: DocumentDropOrPasteEditKind | 编辑的种类。 |
返回 | 描述 |
DocumentDropEdit |
属性
additionalEdit?: WorkspaceEdit
拖放时要应用的可选附加编辑。
insertText: string | SnippetString
要在拖放位置插入的文本或片段。
kind?: DocumentDropOrPasteEditKind
编辑的种类。
描述编辑的人类可读标签。
yieldTo?: readonly DocumentDropOrPasteEditKind[]
控制多个编辑的排序。如果此提供程序让位于其他编辑,它将在列表中显示得更靠下。
DocumentDropEditProvider<T>
处理将资源拖放到文本编辑器中的提供程序。
这允许用户将资源(包括来自外部应用程序的资源)拖放到编辑器中。在拖放文件时,用户可以按住 shift
将文件拖放到编辑器中而不是打开它。需要启用 editor.dropIntoEditor.enabled
。
方法
provideDocumentDropEdits(document: TextDocument, position: Position, dataTransfer: DataTransfer, token: CancellationToken): ProviderResult<T | T[]>
提供将拖放的内容插入到文档中的编辑。
参数 | 描述 |
---|---|
document: TextDocument | 发生拖放的文档。 |
position: Position | 文档中发生拖放的位置。 |
dataTransfer: DataTransfer | 包含有关正在拖放的数据的 DataTransfer 对象。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T | T[]> | 一个 DocumentDropEdit 或解析为该类型的 thenable。可以通过返回 |
resolveDocumentDropEdit(edit: T, token: CancellationToken): ProviderResult<T>
在应用编辑之前填充 DocumentDropEdit.additionalEdit 的可选方法。
此方法每个编辑调用一次,如果生成完整编辑可能需要很长时间,则应使用此方法。Resolve 只能用于更改 DocumentDropEdit.additionalEdit。
参数 | 描述 |
---|---|
edit: T | 要解析的 DocumentDropEdit。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T> | 已解析的编辑或解析为该类型的 thenable。返回给定的 |
DocumentDropEditProviderMetadata
提供有关 DocumentDropEditProvider 工作方式的附加元数据。
属性
dropMimeTypes: readonly string[]
提供程序可以处理的 DataTransfer mime 类型列表。
这可以是精确的 mime 类型,例如 image/png
,或通配符模式,例如 image/*
。
对于从资源管理器或工作台中的其他树视图拖放的资源,请使用 text/uri-list
。
使用 files
表示如果 DataTransfer 中存在任何文件,则应调用提供程序。请注意,只有从编辑器外部(例如操作系统)拖放内容时才会创建 DataTransferFile 条目。
providedDropEditKinds?: readonly DocumentDropOrPasteEditKind[]
提供程序可能在 provideDocumentDropEdits 中返回的种类列表。
当请求特定种类的编辑时,这用于筛选提供程序。
DocumentDropOrPasteEditKind
Static
Empty: DocumentDropOrPasteEditKind
Text: DocumentDropOrPasteEditKind
基本文本编辑的根种类。
此种类应用于在文档中插入基本文本的编辑。一个很好的例子是粘贴剪贴板文本同时根据粘贴文本更新文件中导入的编辑。为此,我们可以使用 text.updateImports.someLanguageId
这样的种类。
尽管大多数拖放/粘贴编辑最终都会插入文本,但不应将 Text 用作每个编辑的基础种类,因为这很冗余。相反,应该使用更具体的种类来描述正在插入的内容类型。例如,如果编辑添加了 Markdown 链接,请使用 markdown.link
,因为即使插入的内容是文本,更重要的是知道该编辑插入的是 Markdown 语法。
TextUpdateImports: DocumentDropOrPasteEditKind
除了插入文本外,还更新文档中导入的编辑的根种类。
构造函数
new DocumentDropOrPasteEditKind(value: string): DocumentDropOrPasteEditKind
参数 | 描述 |
---|---|
value: string | |
返回 | 描述 |
DocumentDropOrPasteEditKind |
属性
种类的原始字符串值。
方法
append(...parts: string[]): DocumentDropOrPasteEditKind
通过向当前种类附加附加作用域来创建新种类。
不修改当前类型。
参数 | 描述 |
---|---|
...parts: string[] | |
返回 | 描述 |
DocumentDropOrPasteEditKind |
contains(other: DocumentDropOrPasteEditKind): boolean
检查 other
是否为此 DocumentDropOrPasteEditKind
的子种类。
例如,种类 "text.plain"
包含 "text.plain"
和 "text.plain.list"
,但不包含 "text"
或 "unicorn.text.plain"
。
参数 | 描述 |
---|---|
other: DocumentDropOrPasteEditKind | 要检查的类型。 |
返回 | 描述 |
boolean |
intersects(other: DocumentDropOrPasteEditKind): boolean
检查此种类是否与 other
相交。
例如,种类 "text.plain"
与 text
、"text.plain"
和 "text.plain.list"
相交,但不与 "unicorn"
或 "textUnicorn.plain"
相交。
参数 | 描述 |
---|---|
other: DocumentDropOrPasteEditKind | 要检查的类型。 |
返回 | 描述 |
boolean |
DocumentFilter
文档过滤器通过不同的属性(如语言、资源方案或应用于路径的 glob 模式)来指定文档。
示例:一个适用于磁盘上 typescript 文件的语言过滤器
{ language: 'typescript', scheme: 'file' }
示例:一个适用于所有 package.json 路径的语言过滤器
{ language: 'json', pattern: '**/package.json' }
属性
语言 ID,例如 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 | 高亮类型,默认为文本。 |
返回 | 描述 |
DocumentHighlight |
属性
kind?: DocumentHighlightKind
高亮类型,默认为文本。
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>
给定一个链接,填充其 target。当在 UI 中选择不完整的链接时会调用此方法。提供程序可以实现此方法并从 provideDocumentLinks 方法返回不完整的链接(没有 target),这通常有助于提高性能。
参数 | 描述 |
---|---|
link: T | 要解析的链接。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T> |
DocumentPasteEdit
应用粘贴操作的编辑。
构造函数
new DocumentPasteEdit(insertText: string | SnippetString, title: string, kind: DocumentDropOrPasteEditKind): DocumentPasteEdit
创建一个新的粘贴编辑。
参数 | 描述 |
---|---|
insertText: string | SnippetString | 要在粘贴位置插入的文本或片段。 |
title: string | 描述编辑的人类可读标签。 |
kind: DocumentDropOrPasteEditKind | 编辑的种类。 |
返回 | 描述 |
DocumentPasteEdit |
属性
additionalEdit?: WorkspaceEdit
粘贴时要应用的附加可选编辑。
insertText: string | SnippetString
要在粘贴位置插入的文本或片段。
如果您的编辑需要更高级的插入逻辑,请将其设置为空字符串并提供附加编辑。
kind: DocumentDropOrPasteEditKind
编辑的种类。
描述编辑的人类可读标签。
yieldTo?: readonly DocumentDropOrPasteEditKind[]
控制多个粘贴编辑可能应用时的顺序。
如果此编辑让位于其他编辑,它将在向用户显示的可能粘贴编辑列表中显示得更靠下。
DocumentPasteEditContext
关于粘贴操作的附加信息。
属性
only: DocumentDropOrPasteEditKind
请求返回的粘贴编辑种类。
当由 PasteAs 请求显式种类时,提供程序在生成请求种类的编辑时,应鼓励其更灵活。
triggerKind: DocumentPasteTriggerKind
请求粘贴编辑的原因。
DocumentPasteEditProvider<T>
当用户在 TextDocument 中复制或粘贴时调用的提供程序。
方法
prepareDocumentPaste(document: TextDocument, ranges: readonly Range[], dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
用户从文本编辑器复制后调用的可选方法。
这允许提供程序将有关复制文本的元数据附加到 DataTransfer。然后将此 data transfer 传递回 provideDocumentPasteEdits 中的提供程序。
请注意,当前对 DataTransfer 的任何更改仅限于当前编辑器窗口。这意味着任何添加的元数据都无法被其他编辑器窗口或其他应用程序看到。
参数 | 描述 |
---|---|
document: TextDocument | 发生复制的文本文档。 |
ranges: readonly Range[] | 在文档中复制的范围。 |
dataTransfer: DataTransfer | 与复制关联的 data transfer。您可以在其中存储附加值,以便稍后在 provideDocumentPasteEdits 中使用。此对象仅在此方法执行期间有效。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 | 可选的 thenable,在所有对 |
provideDocumentPasteEdits(document: TextDocument, ranges: readonly Range[], dataTransfer: DataTransfer, context: DocumentPasteEditContext, token: CancellationToken): ProviderResult<T[]>
用户粘贴到文本编辑器之前调用。
返回的编辑可以替换标准的粘贴行为。
参数 | 描述 |
---|---|
document: TextDocument | 正在粘贴到的文档 |
ranges: readonly Range[] | 在文档中粘贴的范围。 |
dataTransfer: DataTransfer | 与粘贴相关的 data transfer。此对象仅在粘贴操作期间有效。 |
context: DocumentPasteEditContext | 粘贴的附加上下文。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T[]> | 可以应用粘贴的潜在编辑集。一次仅应用一个返回的 DocumentPasteEdit。如果所有提供程序返回多个编辑,则自动应用第一个,并显示一个小部件,允许用户切换到其他编辑。 |
resolveDocumentPasteEdit(pasteEdit: T, token: CancellationToken): ProviderResult<T>
在应用编辑之前填充 DocumentPasteEdit.additionalEdit 的可选方法。
此方法每个编辑调用一次,如果生成完整编辑可能需要很长时间,则应使用此方法。Resolve 只能用于更改 DocumentPasteEdit.insertText 或 DocumentPasteEdit.additionalEdit。
参数 | 描述 |
---|---|
pasteEdit: T | 要解析的 DocumentPasteEdit。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T> | 已解析的粘贴编辑或解析为该类型的 thenable。返回给定的 |
DocumentPasteProviderMetadata
提供有关 DocumentPasteEditProvider 工作方式的附加元数据。
属性
copyMimeTypes?: readonly string[]
prepareDocumentPaste 在复制时可能添加的 mime 类型。
pasteMimeTypes?: readonly string[]
应为其调用 provideDocumentPasteEdits 的 mime 类型。
这可以是精确的 mime 类型,例如 image/png
,或通配符模式,例如 image/*
。
对于从资源管理器或工作台中的其他树视图拖放的资源,请使用 text/uri-list
。
使用 files
表示如果 DataTransfer 中存在任何文件,则应调用提供程序。请注意,只有从编辑器外部(例如操作系统)粘贴内容时才会创建 DataTransferFile 条目。
providedPasteEditKinds: readonly DocumentDropOrPasteEditKind[]
提供程序可能在 provideDocumentPasteEdits 中返回的种类列表。
当请求特定种类的编辑时,这用于筛选提供程序。
DocumentPasteTriggerKind
请求粘贴编辑的原因。
枚举成员
作为正常粘贴操作的一部分请求粘贴。
用户使用 paste as
命令请求粘贴。
DocumentRangeFormattingEditProvider
文档格式化提供程序接口定义了扩展和格式化功能之间的契约。
方法
provideDocumentRangeFormattingEdits(document: TextDocument, range: Range, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>
为文档中的范围提供格式化编辑。
给定的范围只是一个提示,提供程序可以决定格式化一个更小或更大的范围。通常,这是通过将范围的开始和结束调整到完整的语法节点来完成的。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
range: Range | 应格式化的范围。 |
options: FormattingOptions | 控制格式化的选项。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<TextEdit[]> | 文本编辑集或解析为该集合的 thenable。可以通过返回 |
provideDocumentRangesFormattingEdits(document: TextDocument, ranges: Range[], options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>
为文档中的多个范围提供格式化编辑。
此函数是可选的,但允许格式化程序在仅格式化修改过的范围或格式化大量选区时执行得更快。
给定的范围是提示,提供程序可以决定格式化一个更小或更大的范围。通常,这是通过将范围的开始和结束调整到完整的语法节点来完成的。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
ranges: Range[] | 应格式化的范围。 |
options: FormattingOptions | 控制格式化的选项。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<TextEdit[]> | 文本编辑集或解析为该集合的 thenable。可以通过返回 |
DocumentRangeSemanticTokensProvider
文档范围语义标记提供程序接口定义了扩展和语义标记之间的契约。
方法
provideDocumentRangeSemanticTokens(document: TextDocument, range: Range, token: CancellationToken): ProviderResult<SemanticTokens>
参数 | 描述 |
---|---|
document: TextDocument | |
range: Range | |
token: CancellationToken | |
返回 | 描述 |
ProviderResult<SemanticTokens> |
DocumentSelector
语言选择器是一个或多个语言标识符和语言过滤器的组合。
注意:仅仅是语言标识符的文档选择器会选择 所有 文档,即使是那些没有保存到磁盘的文档。仅当功能不需要进一步上下文(例如,无需解析相关“文件”)时才使用此类选择器。
示例
let sel: DocumentSelector = { scheme: 'file', language: 'typescript' };
DocumentSelector: DocumentFilter | string | ReadonlyArray<DocumentFilter | string>
DocumentSemanticTokensProvider
文档语义标记提供程序接口定义了扩展和语义标记之间的契约。
事件
onDidChangeSemanticTokens?: Event<void>
指示此提供程序的语义标记已更改的可选事件。
方法
provideDocumentSemanticTokens(document: TextDocument, token: CancellationToken): ProviderResult<SemanticTokens>
文件中的标记表示为整数数组。每个标记的位置相对于其前一个标记表示,因为在文件中进行编辑时,大多数标记相对于彼此保持稳定。
简而言之,每个标记需要 5 个整数来表示,因此文件中的特定标记 i
由以下数组索引组成
- 在索引
5*i
处 -deltaLine
:标记行号,相对于前一个标记 - 在索引
5*i+1
处 -deltaStart
:标记开始字符,相对于前一个标记(如果它们在同一行,则相对于 0 或前一个标记的开始) - 在索引
5*i+2
处 -length
:标记的长度。标记不能跨越多行。 - 在索引
5*i+3
处 -tokenType
:将在SemanticTokensLegend.tokenTypes
中查找。我们目前要求tokenType
< 65536。 - 在索引
5*i+4
处 -tokenModifiers
:每个设置的位将在SemanticTokensLegend.tokenModifiers
中查找
如何编码标记
以下是将包含 3 个标记的文件编码为 uint32 数组的示例
{ line: 2, startChar: 5, length: 3, tokenType: "property", tokenModifiers: ["private", "static"] },
{ line: 2, startChar: 10, length: 4, tokenType: "type", tokenModifiers: [] },
{ line: 5, startChar: 2, length: 7, tokenType: "class", tokenModifiers: [] }
- 首先,必须设计一个图例。此图例必须预先提供,并捕获所有可能的标记类型。对于此示例,我们将选择以下图例,在注册提供程序时必须传入该图例
tokenTypes: ['property', 'type', 'class'],
tokenModifiers: ['private', 'static']
- 第一个转换步骤是使用图例将
tokenType
和tokenModifiers
编码为整数。标记类型按索引查找,因此tokenType
的值为1
表示tokenTypes[1]
。可以通过使用位标志设置多个标记修饰符,因此tokenModifier
的值为3
首先被视为二进制0b00000011
,这意味着[tokenModifiers[0], tokenModifiers[1]]
,因为位 0 和 1 已设置。使用此图例,标记现在为
{ line: 2, startChar: 5, length: 3, tokenType: 0, tokenModifiers: 3 },
{ line: 2, startChar: 10, length: 4, tokenType: 1, tokenModifiers: 0 },
{ line: 5, startChar: 2, length: 7, tokenType: 2, tokenModifiers: 0 }
- 下一步是相对于文件中的前一个标记表示每个标记。在此情况下,第二个标记与第一个标记在同一行,因此第二个标记的
startChar
相对于第一个标记的startChar
,因此为10 - 5
。第三个标记与第二个标记在不同的行,因此第三个标记的startChar
不会更改
{ deltaLine: 2, deltaStartChar: 5, length: 3, tokenType: 0, tokenModifiers: 3 },
{ deltaLine: 0, deltaStartChar: 5, length: 4, tokenType: 1, tokenModifiers: 0 },
{ deltaLine: 3, deltaStartChar: 2, length: 7, tokenType: 2, tokenModifiers: 0 }
- 最后一步是将标记的 5 个字段内联到一个数组中,这是一种内存友好的表示。
// 1st token, 2nd token, 3rd token
[ 2,5,3,0,3, 0,5,4,1,0, 3,2,7,2,0 ]
另请参阅 SemanticTokensBuilder,这是一个将标记编码为整数的帮助程序。注意:进行编辑时,编辑器可能会多次编辑后才调用语义标记提供程序。注意:如果提供程序暂时无法计算语义标记,它可以通过抛出消息为“Busy”的错误来指示。
参数 | 描述 |
---|---|
document: TextDocument | |
token: CancellationToken | |
返回 | 描述 |
ProviderResult<SemanticTokens> |
provideDocumentSemanticTokensEdits(document: TextDocument, previousResultId: string, token: CancellationToken): ProviderResult<SemanticTokens | SemanticTokensEdits>
除了始终返回文件中的所有标记外,DocumentSemanticTokensProvider
还可以实现此方法(provideDocumentSemanticTokensEdits
),然后返回先前提供的语义标记的增量更新。
当文档更改时标记如何更改
假设 provideDocumentSemanticTokens
先前返回了以下语义标记
// 1st token, 2nd token, 3rd token
[ 2,5,3,0,3, 0,5,4,1,0, 3,2,7,2,0 ]
还假设在一些编辑后,文件中的新语义标记为
// 1st token, 2nd token, 3rd token
[ 3,5,3,0,3, 0,5,4,1,0, 3,2,7,2,0 ]
可以通过应用于先前标记的编辑来表示这些新标记。
[ 2,5,3,0,3, 0,5,4,1,0, 3,2,7,2,0 ] // old tokens
[ 3,5,3,0,3, 0,5,4,1,0, 3,2,7,2,0 ] // new tokens
edit: { start: 0, deleteCount: 1, data: [3] } // replace integer at offset 0 with 3
注意:如果提供程序无法计算 SemanticTokensEdits
,它可以“放弃”并再次返回文档中的所有标记。注意:SemanticTokensEdits
中的所有编辑都包含旧整数数组中的索引,因此它们都指向先前的结果状态。
参数 | 描述 |
---|---|
document: TextDocument | |
previousResultId: string | |
token: CancellationToken | |
返回 | 描述 |
ProviderResult<SemanticTokens | SemanticTokensEdits> |
DocumentSymbol
表示出现在文档中的编程构造,如变量、类、接口等。文档符号可以是分层的,它们有两个范围:一个包含其定义,另一个指向其最有趣的范围,例如标识符的范围。
构造函数
new DocumentSymbol(name: string, detail: string, kind: SymbolKind, range: Range, selectionRange: Range): DocumentSymbol
创建一个新的文档符号。
参数 | 描述 |
---|---|
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | 符号的名称。 |
detail: string | 符号的详细信息。 |
kind: SymbolKind | 符号的种类。 |
range: Range | 符号的完整范围。 |
selectionRange: Range | 应该显示的范围。 |
返回 | 描述 |
DocumentSymbol |
属性
children: DocumentSymbol[]
此符号的子元素,例如类的属性。
此符号的更多详细信息,例如函数的签名。
kind: SymbolKind
此符号的种类。
此符号的名称。
range: Range
包含此符号的范围,不包括前导/尾随空白,但包括所有其他内容,例如注释和代码。
selectionRange: Range
选择并显示此符号时应显示的范围,例如函数的名称。必须包含在范围内。
tags?: readonly SymbolTag[]
此符号的标签。
DocumentSymbolProvider
文档符号提供程序接口定义了扩展和转到符号功能之间的契约。
方法
provideDocumentSymbols(document: TextDocument, token: CancellationToken): ProviderResult<DocumentSymbol[] | SymbolInformation[]>
为给定文档提供符号信息。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<DocumentSymbol[] | SymbolInformation[]> | 文档高亮数组或解析为该数组的 thenable。可以通过返回 |
DocumentSymbolProviderMetadata
关于文档符号提供程序的元数据。
属性
当一个文档显示多个大纲树时显示的人类可读字符串。
EndOfLine
表示文档中的行尾字符序列。
枚举成员
换行符 \n
。
回车换行符序列 \r\n
。
EnterAction
描述按 Enter 键时要做什么。
属性
描述在新行之后和缩进之后要附加的文本。
indentAction: IndentAction
描述如何处理缩进。
描述要从新行的缩进中删除的字符数。
EnvironmentVariableCollection
扩展可以应用于进程环境的突变集合。
属性
description: string | MarkdownString
环境变量集合的描述,用于在 UI 中描述更改。
集合是否应为工作区缓存并应用于跨窗口重载的终端。当为 true 时,例如在窗口重载时,集合将立即激活。此外,如果存在缓存版本,此 API 将返回该版本。当扩展被卸载或集合被清除时,集合将失效。默认为 true。
方法
append(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
将值附加到环境变量。
请注意,一个扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的任何调用。
参数 | 描述 |
---|---|
variable: string | 要附加到的变量。 |
value: string | 要附加到变量的值。 |
options?: EnvironmentVariableMutatorOptions | 应用于突变器的选项,如果未提供选项,则默认为 |
返回 | 描述 |
void |
清除此集合中的所有突变器。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
delete(variable: string): void
删除此集合中变量的突变器。
参数 | 描述 |
---|---|
variable: string | 要删除其突变器的变量。 |
返回 | 描述 |
void |
forEach(callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any, thisArg?: any): void
遍历此集合中的每个突变器。
参数 | 描述 |
---|---|
callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any | 对每个条目执行的函数。 |
thisArg?: any | 调用处理程序函数时使用的 |
返回 | 描述 |
void |
get(variable: string): EnvironmentVariableMutator
获取此集合应用于变量的突变器(如果有)。
参数 | 描述 |
---|---|
variable: string | 要获取其突变器的变量。 |
返回 | 描述 |
EnvironmentVariableMutator |
prepend(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
将值前置到环境变量。
请注意,一个扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的任何调用。
参数 | 描述 |
---|---|
variable: string | 要前置到的变量。 |
value: string | 要前置到变量的值。 |
options?: EnvironmentVariableMutatorOptions | 应用于突变器的选项,如果未提供选项,则默认为 |
返回 | 描述 |
void |
replace(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
用值替换环境变量。
请注意,一个扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的任何调用。
参数 | 描述 |
---|---|
variable: string | 要替换的变量。 |
value: string | 替换变量的值。 |
options?: EnvironmentVariableMutatorOptions | 应用于突变器的选项,如果未提供选项,则默认为 |
返回 | 描述 |
void |
EnvironmentVariableMutator
要应用于环境变量的突变类型及其值。
属性
options: EnvironmentVariableMutatorOptions
应用于突变器的选项。
type: EnvironmentVariableMutatorType
将对变量发生的突变类型。
用于变量的值。
EnvironmentVariableMutatorOptions
应用于突变器的选项。
属性
applyAtProcessCreation?: boolean
在进程创建之前应用于环境。默认为 false。
applyAtShellIntegration?: boolean
应用于 shell 集成脚本中的环境。请注意,如果 shell 集成被禁用或由于某些原因不起作用,则此操作不会应用该 Mutator。默认为 false。
EnvironmentVariableMutatorType
可应用于环境变量的变异类型。
枚举成员
替换变量的现有值。
追加到变量现有值的末尾。
前置到变量现有值的开头。
EnvironmentVariableScope
环境变量集合适用的作用域对象。
属性
workspaceFolder?: WorkspaceFolder
获取集合的特定工作区文件夹。
EvaluatableExpression
一个 EvaluatableExpression 表示文档中可以由活动调试器或运行时计算的表达式。计算结果会显示在类似工具提示的 widget 中。如果仅指定了范围,则表达式将从底层文档中提取。可选表达式可用于覆盖提取的表达式。在这种情况下,范围仍用于突出显示文档中的范围。
构造函数
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> | 一个可计算表达式或解析为该表达式的 thenable。可以通过返回 |
Event<T>
表示一个类型化的事件。
一个函数,表示你可以通过以监听器函数作为参数调用它来订阅的事件。
示例
item.onDidChange(function(event) {
console.log('Event happened: ' + event);
});
(listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]): Disposable
一个函数,表示你可以通过以监听器函数作为参数调用它来订阅的事件。
参数 | 描述 |
---|---|
listener: (e: T) => any | 事件发生时将调用监听器函数。 |
thisArgs?: any | 调用事件监听器时将使用的 |
disposables?: Disposable[] | 将 Disposable 添加到的数组。 |
返回 | 描述 |
Disposable | 用于取消订阅事件监听器的可释放对象。 |
EventEmitter<T>
事件发射器可用于创建和管理供他人订阅的 事件。一个发射器总是拥有一个事件。
如果你想从扩展内部提供事件,例如在 TextDocumentContentProvider 中或向其他扩展提供 API 时,可以使用此类。
构造函数
new EventEmitter<T>(): EventEmitter<T>
参数 | 描述 |
---|---|
返回 | 描述 |
EventEmitter<T> |
属性
event: Event<T>
监听器可以订阅的事件。
方法
释放此对象并释放资源。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
通知 事件 的所有订阅者。一个或多个监听器的失败不会导致此函数调用失败。
参数 | 描述 |
---|---|
data: T | 事件对象。 |
返回 | 描述 |
void |
Extension<T>
表示一个扩展。
要获取 Extension
的实例,请使用 getExtension。
属性
此扩展导出的公共 API(activate
的返回值)。在此扩展被激活之前访问此字段是无效操作。
extensionKind: ExtensionKind
扩展种类描述了扩展是在 UI (窗口) 运行的位置运行,还是在远程扩展主机运行的位置运行。扩展种类在扩展的 package.json
文件中定义,但也可以通过 remote.extensionKind
设置进行细化。当不存在远程扩展主机时,值为 ExtensionKind.UI。
包含此扩展的目录的绝对文件路径。Extension.extensionUri.fsPath 的缩写符号(与 uri 方案无关)。
extensionUri: Uri
包含此扩展的目录的 uri。
标准扩展标识符,格式为:publisher.name
。
如果扩展已激活,则为 true
。
扩展 package.json 的解析内容。
方法
激活此扩展并返回其公共 API。
参数 | 描述 |
---|---|
返回 | 描述 |
Thenable<T> | 此扩展激活后将解析的 promise。 |
ExtensionContext
扩展上下文是扩展私有的实用工具集合。
ExtensionContext
的实例作为扩展的 activate
调用的第一个参数提供。
属性
environmentVariableCollection: GlobalEnvironmentVariableCollection
获取此工作区的扩展的全局环境变量集合,从而能够将更改应用于终端环境变量。
extension: Extension<any>
当前的 Extension
实例。
extensionMode: ExtensionMode
扩展正在运行的模式。有关可能的值和场景,请参阅 ExtensionMode。
包含扩展的目录的绝对文件路径。ExtensionContext.extensionUri.fsPath 的缩写符号(与 uri 方案无关)。
extensionUri: Uri
包含此扩展的目录的 uri。
globalState: Memento & {setKeysForSync}
一个 Memento 对象,用于存储独立于当前打开的 工作区 的状态。
扩展可以在其中存储全局状态的绝对文件路径。该目录可能在磁盘上不存在,由扩展负责创建。但其父目录保证存在。
使用 globalState 存储键值数据。
- 已弃用 - 请改用 globalStorageUri。
globalStorageUri: Uri
扩展可以在其中存储全局状态的目录的 uri。该目录可能在磁盘上不存在,由扩展负责创建。但其父目录保证存在。
使用 globalState 存储键值数据。
另请参阅 workspace.fs,了解如何从 uri 读取和写入文件及文件夹。
languageModelAccessInformation: LanguageModelAccessInformation
一个对象,其中包含此扩展如何使用语言模型的信息。
扩展可以在其中创建日志文件的目录的绝对文件路径。该目录可能在磁盘上不存在,由扩展负责创建。但其父目录保证存在。
- 已弃用 - 请改用 logUri。
logUri: Uri
扩展可以在其中创建日志文件的目录的 uri。该目录可能在磁盘上不存在,由扩展负责创建。但其父目录保证存在。
另请参阅 workspace.fs,了解如何从 uri 读取和写入文件及文件夹。
secrets: SecretStorage
一个 Secret Storage 对象,用于存储独立于当前打开的 工作区 的状态。
扩展可以在其中存储私有状态的工作区特定目录的绝对文件路径。该目录可能在磁盘上不存在,由扩展负责创建。但其父目录保证存在。
使用 workspaceState 或 globalState 存储键值数据。
- 已弃用 - 请改用 storageUri。
storageUri: Uri
扩展可以在其中存储私有状态的工作区特定目录的 uri。该目录可能不存在,由扩展负责创建。但其父目录保证存在。当没有打开工作区或文件夹时,此值为 undefined
。
使用 workspaceState 或 globalState 存储键值数据。
另请参阅 workspace.fs,了解如何从 uri 读取和写入文件及文件夹。
subscriptions: Array<{dispose}>
可以向其中添加可释放对象的数组。当此扩展被停用时,这些可释放对象将被释放。
注意,异步释放函数不会被等待。
workspaceState: Memento
一个 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
描述虚拟进程终端应使用哪些选项的 Value-object。
属性
color?: ThemeColor
终端的图标 ThemeColor。建议使用标准 terminal.ansi*
主题键,以在不同主题中实现最佳对比度和一致性。
iconPath?: IconPath
终端的图标路径或 ThemeIcon。
选择退出重启和重新加载时的默认终端持久性。这仅在启用 terminal.integrated.enablePersistentSessions
时生效。
location?: TerminalEditorLocationOptions | TerminalSplitLocationOptions | TerminalLocation
一个人类可读的字符串,将用于在 UI 中表示终端。
pty: Pseudoterminal
Pseudoterminal 的一个实现,允许扩展控制终端。
FileChangeEvent
文件系统提供者必须用于发出文件更改信号的事件。
属性
type: FileChangeType
更改的类型。
uri: Uri
已更改文件的 uri。
FileChangeType
文件更改类型的枚举。
枚举成员
文件的内容或元数据已更改。
已创建一个文件。
已删除一个文件。
FileCoverage
包含文件的覆盖率元数据。
Static
fromDetails(uri: Uri, details: readonly FileCoverageDetail[]): FileCoverage
创建一个 FileCoverage 实例,其计数从覆盖率详细信息中填充。
参数 | 描述 |
---|---|
uri: Uri | 覆盖文件的 URI。 |
details: readonly FileCoverageDetail[] | |
返回 | 描述 |
FileCoverage |
构造函数
new FileCoverage(uri: Uri, statementCoverage: TestCoverageCount, branchCoverage?: TestCoverageCount, declarationCoverage?: TestCoverageCount, includesTests?: TestItem[]): FileCoverage
参数 | 描述 |
---|---|
uri: Uri | 覆盖文件的 URI。 |
statementCoverage: TestCoverageCount | 语句覆盖率信息。如果报告器不提供语句覆盖率信息,则可以改为用它来表示行覆盖率。 |
branchCoverage?: TestCoverageCount | 分支覆盖率信息 |
declarationCoverage?: TestCoverageCount | 声明覆盖率信息 |
includesTests?: TestItem[] | 此覆盖率报告中包含的测试用例,请参阅 FileCoverage.includesTests |
返回 | 描述 |
FileCoverage |
属性
branchCoverage?: TestCoverageCount
分支覆盖率信息。
declarationCoverage?: TestCoverageCount
声明覆盖率信息。根据报告器和语言的不同,这可能是函数、方法或命名空间等类型。
includesTests?: TestItem[]
在此文件中生成覆盖率的 测试用例 列表。如果已设置,则还应定义 TestRunProfile.loadDetailedCoverageForTest 以检索详细的覆盖率信息。
statementCoverage: TestCoverageCount
语句覆盖率信息。如果报告器不提供语句覆盖率信息,则可以改为用它来表示行覆盖率。
语句覆盖率信息。
uri: Uri
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 起经过的创建时间戳(毫秒)。
自世界协调时间 1970 年 1 月 1 日 00:00:00 起经过的修改时间戳(毫秒)。
注意:如果文件已更改,重要的是提供一个比先前值更新的 mtime
。否则,可能存在优化措施,例如不会在编辑器中显示更新的文件内容。
permissions?: FilePermission
文件的权限,例如文件是否只读。
注意:此值可能是一个位掩码,例如 FilePermission.Readonly | FilePermission.Other
。
大小(字节)。
注意:如果文件已更改,重要的是提供一个更新的 size
。否则,可能存在优化措施,例如不会在编辑器中显示更新的文件内容。
type: FileType
文件的类型,例如是常规文件、目录还是文件的符号链接。
注意:此值可能是一个位掩码,例如 FileType.File | FileType.SymbolicLink
。
FileSystem
文件系统接口公开了编辑器的内置和贡献的 文件系统提供者。它允许扩展使用本地磁盘上的文件以及来自远程位置的文件,例如远程扩展主机或 ftp 服务器。
注意,此接口的实例可作为 workspace.fs 使用。
方法
copy(source: Uri, target: Uri, options?: {overwrite: boolean}): Thenable<void>
复制文件或文件夹。
createDirectory(uri: Uri): Thenable<void>
创建一个新目录(请注意,新文件是通过 write
调用创建的)。
注意,缺少的目录会自动创建,例如此调用具有 mkdirp
语义。
参数 | 描述 |
---|---|
uri: Uri | 新文件夹的 uri。 |
返回 | 描述 |
Thenable<void> |
delete(uri: Uri, options?: {recursive: boolean, useTrash: boolean}): Thenable<void>
删除一个文件。
参数 | 描述 |
---|---|
uri: Uri | 要删除的资源。 |
options?: {recursive: boolean, useTrash: boolean} | 定义是否应使用回收站以及文件夹删除是否是递归的 |
返回 | 描述 |
Thenable<void> |
isWritableFileSystem(scheme: string): boolean
检查给定文件系统是否支持写入文件。
请记住,文件系统支持写入并不意味着写入总能成功。可能存在权限问题或其他阻止写入文件的错误。
参数 | 描述 |
---|---|
scheme: string | 文件系统的方案,例如 |
返回 | 描述 |
boolean | 如果文件系统支持写入,则为 |
readDirectory(uri: Uri): Thenable<Array<[string, FileType]>>
检索 目录 的所有条目。
readFile(uri: Uri): Uint8Array | Thenable<Uint8Array>
读取文件的全部内容。
参数 | 描述 |
---|---|
uri: Uri | 文件的 uri。 |
返回 | 描述 |
Thenable<Uint8Array> | 字节数组或解析为此类数组的 thenable。 |
rename(source: Uri, target: Uri, options?: {overwrite: boolean}): Thenable<void>
重命名文件或文件夹。
stat(uri: Uri): FileStat | Thenable<FileStat>
writeFile(uri: Uri, content: Uint8Array): Thenable<void>
将数据写入文件,替换其全部内容。
参数 | 描述 |
---|---|
uri: Uri | 文件的 uri。 |
content: Uint8Array | 文件的新内容。 |
返回 | 描述 |
Thenable<void> |
FileSystemError
文件系统提供者应使用此类型来发出错误信号。
此类包含用于常见错误情况的工厂方法,例如文件或文件夹不存在时的 FileNotFound
,使用示例如下:throw vscode.FileSystemError.FileNotFound(someUri);
Static
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>
复制文件或文件夹。实现此函数是可选的,但这会加快复制操作。
- 抛出 - 当
source
不存在时,抛出 FileNotFound。
- 抛出 - 当
destination
的父级不存在时,抛出 FileNotFound,例如不需要 mkdirp 逻辑。
- 抛出 - 当
destination
已存在且overwrite
选项不为true
时,抛出 FileExists。
- 抛出 - 当权限不足时,抛出 NoPermissions。
参数 | 描述 |
---|---|
source: Uri | 现有文件。 |
当用户接受另存为时,当前编辑器将被替换为新保存文件的非脏编辑器。 | 目标位置。 |
options: {overwrite: boolean} | 定义是否应覆盖现有文件。 |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
定义文件夹删除是否是递归的。
创建一个新目录(请注意,新文件是通过 write
调用创建的)。
- 抛出 - 当
uri
的父级不存在时,抛出 FileNotFound,例如不需要 mkdirp 逻辑。
- 抛出 - 当
uri
已存在时,抛出 FileExists。
- 抛出 - 当权限不足时,抛出 NoPermissions。
参数 | 描述 |
---|---|
uri: Uri | 新文件夹的 uri。 |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
delete(uri: Uri, options: {recursive: boolean}): void | Thenable<void>
参数 | 描述 |
---|---|
uri: Uri | 要删除的资源。 |
options: {recursive: boolean} | 定义文件夹删除是否是递归的。 |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
readDirectory(uri: Uri): Array<[string, FileType]> | Thenable<Array<[string, FileType]>>
检索 目录 的所有条目。
- 抛出 - 当
uri
不存在时,抛出 FileNotFound。
readFile(uri: Uri): Uint8Array | Thenable<Uint8Array>
读取文件的全部内容。
- 抛出 - 当
uri
不存在时,抛出 FileNotFound。
参数 | 描述 |
---|---|
uri: Uri | 文件的 uri。 |
返回 | 描述 |
Uint8Array | Thenable<Uint8Array> | 字节数组或解析为此类数组的 thenable。 |
rename(oldUri: Uri, newUri: Uri, options: {overwrite: boolean}): void | Thenable<void>
重命名文件或文件夹。
- 抛出 - 当
oldUri
不存在时,抛出 FileNotFound。
- 抛出 - 当
newUri
的父级不存在时,抛出 FileNotFound,例如不需要 mkdirp 逻辑。
- 抛出 - 当
newUri
已存在且overwrite
选项不为true
时,抛出 FileExists。
- 抛出 - 当权限不足时,抛出 NoPermissions。
stat(uri: Uri): FileStat | Thenable<FileStat>
检索文件的元数据。
请注意,符号链接的元数据应是它们引用的文件的元数据。但是,除了实际类型之外,还必须使用 SymbolicLink 类型,例如 FileType.SymbolicLink | FileType.Directory
。
- 抛出 - 当
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>
将数据写入文件,替换其全部内容。
- 抛出 - 当
uri
不存在且未设置create
时,抛出 FileNotFound。
- 抛出 - 当
uri
的父级不存在且已设置create
时,抛出 FileNotFound,例如不需要 mkdirp 逻辑。
- 抛出 - 当
uri
已存在、已设置create
但未设置overwrite
时,抛出 FileExists。
- 抛出 - 当权限不足时,抛出 NoPermissions。
参数 | 描述 |
---|---|
uri: Uri | 文件的 uri。 |
content: Uint8Array | 文件的新内容。 |
options: {create: boolean, overwrite: boolean} | 定义是否应或必须创建丢失的文件。 |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
FileSystemWatcher
文件系统监视器通知磁盘上或来自其他 FileSystemProviders 的文件和文件夹的更改。
要获取 FileSystemWatcher
的实例,请使用 createFileSystemWatcher。
事件
文件/文件夹更改时触发的事件。
文件/文件夹创建时触发的事件。
文件/文件夹删除时触发的事件。
属性
如果创建此文件系统监视器时使其忽略更改文件系统事件,则为 true。
如果创建此文件系统监视器时使其忽略创建文件系统事件,则为 true。
如果创建此文件系统监视器时使其忽略删除文件系统事件,则为 true。
方法
释放此对象。
参数 | 描述 |
---|---|
返回 | 描述 |
任意类型 |
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
描述折叠范围的 种类,例如 注释 或 区域。该种类用于对折叠范围进行分类,并被诸如“折叠所有注释”之类的命令使用。有关所有种类的枚举,请参阅 FoldingRangeKind。如果未设置,则该范围源自语法元素。
要折叠的范围的基于零的起始行。折叠区域在该行的最后一个字符之后开始。要有效,结束行必须大于等于零且小于文档中的行数。
FoldingRangeKind
特定折叠范围种类的枚举。该种类是 FoldingRange 的一个可选字段,用于区分特定的折叠范围,例如源自注释的范围。该种类被诸如 Fold all comments
或 Fold all regions
的命令使用。如果范围上未设置种类,则该范围源自注释、导入或区域标记以外的语法元素。
枚举成员
表示注释的折叠范围种类。
表示导入的折叠范围种类。
表示源自折叠标记(如 #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
将值附加到环境变量。
请注意,一个扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的任何调用。
参数 | 描述 |
---|---|
variable: string | 要附加到的变量。 |
value: string | 要附加到变量的值。 |
options?: EnvironmentVariableMutatorOptions | 应用于突变器的选项,如果未提供选项,则默认为 |
返回 | 描述 |
void |
清除此集合中的所有突变器。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
delete(variable: string): void
删除此集合中变量的突变器。
参数 | 描述 |
---|---|
variable: string | 要删除其突变器的变量。 |
返回 | 描述 |
void |
forEach(callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any, thisArg?: any): void
遍历此集合中的每个突变器。
参数 | 描述 |
---|---|
callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any | 对每个条目执行的函数。 |
thisArg?: any | 调用处理程序函数时使用的 |
返回 | 描述 |
void |
get(variable: string): EnvironmentVariableMutator
获取此集合应用于变量的突变器(如果有)。
参数 | 描述 |
---|---|
variable: string | 要获取其突变器的变量。 |
返回 | 描述 |
EnvironmentVariableMutator |
getScoped(scope: EnvironmentVariableScope): EnvironmentVariableCollection
获取扩展的作用域特定环境变量集合。这使得仅在指定的作用域内修改终端环境变量成为可能,并且会在全局集合之外(之后)应用。
通过此方法获取的每个对象都是隔离的,不会影响其他作用域的对象,包括全局集合。
参数 | 描述 |
---|---|
scope: EnvironmentVariableScope | 环境变量集合适用的作用域。 如果省略作用域参数,则返回适用于该参数所有相关作用域的集合。例如,如果未指定“workspaceFolder”参数,将返回适用于所有工作区文件夹的集合。 |
返回 | 描述 |
EnvironmentVariableCollection | 传递的作用域的环境变量集合。 |
prepend(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
将值前置到环境变量。
请注意,一个扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的任何调用。
参数 | 描述 |
---|---|
variable: string | 要前置到的变量。 |
value: string | 要前置到变量的值。 |
options?: EnvironmentVariableMutatorOptions | 应用于突变器的选项,如果未提供选项,则默认为 |
返回 | 描述 |
void |
replace(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
用值替换环境变量。
请注意,一个扩展只能对任何一个变量进行一次更改,因此这将覆盖之前对 replace、append 或 prepend 的任何调用。
参数 | 描述 |
---|---|
variable: string | 要替换的变量。 |
value: string | 替换变量的值。 |
options?: EnvironmentVariableMutatorOptions | 应用于突变器的选项,如果未提供选项,则默认为 |
返回 | 描述 |
void |
GlobPattern
用于匹配文件路径的文件 glob 模式。这可以是 glob 模式字符串(如 **/*.{ts,js}
或 *.{ts,js}
)或相对模式。
Glob 模式可以具有以下语法
*
匹配路径段中的零个或多个字符?
匹配路径段中的一个字符**
匹配任意数量的路径段,包括零个{}
对条件进行分组(例如**/*.{ts,js}
匹配所有 TypeScript 和 JavaScript 文件)[]
声明要在路径段中匹配的字符范围(例如,example.[0-9]
匹配example.0
、example.1
等)[!...]
否定路径段中要匹配的字符范围(例如,example.[!0-9]
匹配example.a
、example.b
,但不匹配example.0
)
注意:反斜杠 (``) 在 glob 模式中无效。如果您有现有的文件路径要匹配,请考虑使用相对模式支持,该支持会处理将任何反斜杠转换为斜杠。否则,请确保在创建 glob 模式时将任何反斜杠转换为斜杠。
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
悬停提供程序接口定义了扩展与 hover 功能之间的约定。
方法
provideHover(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Hover>
为给定位置和文档提供悬停。同一位置的多个悬停将被编辑器合并。悬停可以有一个范围,如果省略,则默认为该位置的词语范围。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
position: Position | 调用命令的位置。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<Hover> | 悬停或解析为此类的 thenable。通过返回 |
IconPath
表示 UI 中的图标。这可以是 uri,浅色和深色主题的单独 uri,或者主题图标。
IconPath: Uri | {dark: Uri, light: Uri} | ThemeIcon
ImplementationProvider
实现提供程序接口定义了扩展与转到实现功能之间的约定。
方法
provideImplementation(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
提供给定位置和文档中符号的实现。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
position: Position | 调用命令的位置。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<Definition | LocationLink[]> | 一个定义或解析为该定义的 thenable。可以通过返回 |
IndentAction
描述按 Enter 时缩进的操作。
枚举成员
插入新行并复制上一行的缩进。
插入新行并缩进一次(相对于上一行的缩进)。
插入两个新行
- 第一个缩进以放置光标
- 第二个与第一个缩进级别相同
插入新行并向外缩进一次(相对于上一行的缩进)。
IndentationRule
描述语言的缩进规则。
属性
如果一行匹配此模式,则其后的所有行应向外缩进一次(直到另一个规则匹配)。
如果一行匹配此模式,则其后的所有行应缩进一次(直到另一个规则匹配)。
indentNextLinePattern?: RegExp
如果一行匹配此模式,则其后的仅下一行应缩进一次。
unIndentedLinePattern?: RegExp
如果一行匹配此模式,则其缩进不应更改,并且不应根据其他规则进行评估。
InlayHint
内嵌提示信息。
构造函数
new InlayHint(position: Position, label: string | InlayHintLabelPart[], kind?: InlayHintKind): InlayHint
创建一个新的内嵌提示。
参数 | 描述 |
---|---|
position: Position | 提示的位置。 |
label: string | InlayHintLabelPart[] | 提示的标签。 |
kind?: InlayHintKind | 提示的类型。 |
返回 | 描述 |
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 | 插入此完成项后执行的可选命令。 |
返回 | 描述 |
InlineCompletionItem |
属性
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[]> | 完成项数组或解析为完成项数组的 thenable。 |
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[]> | InlineValueDescriptor 数组或解析为此类的 thenable。通过返回 |
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
一个具体的快速输入,用于让用户输入文本值。
请注意,在许多情况下,更便捷的 window.showInputBox 更易于使用。window.createInputBox 应在 window.showInputBox 无法提供所需灵活性时使用。
事件
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 是否应保持打开状态。默认为 false。此设置在 iPad 上被忽略,始终为 false。
输入值是否应隐藏。默认为 false。
未输入值时显示的可选占位符。
提供一些请求或解释给用户的可选提示文本。
可选的当前步骤计数。
可选的标题。
可选的总步骤计数。
validationMessage: string | InputBoxValidationMessage
指示当前输入值存在问题的可选验证消息。通过返回字符串,InputBox 将使用默认的InputBoxValidationSeverity Error。返回 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]
预填充值的选择范围。定义为包含开始索引和排除结束索引的数字元组。当为 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} | 此属性已弃用,并且编辑器不再完全支持(忽略 scope 和 lineStart)。请改用语言配置文件中的 autoClosingPairs 属性。
|
autoClosingPairs?: AutoClosingPair[]
语言的自动关闭对。
brackets?: CharacterPair[]
语言的括号。此配置隐式影响在这些括号周围按 Enter 的行为。
comments?: CommentRule
语言的注释设置。
indentationRules?: IndentationRule
语言的缩进设置。
onEnterRules?: OnEnterRule[]
语言的规则,在按 Enter 时进行评估。
语言的词语定义。如果语言支持 Unicode 标识符(例如 JavaScript),最好提供使用排除已知分隔符的词语定义。例如:匹配除已知分隔符以外的任何内容的正则表达式(浮点数中允许出现点)
/(-?\d*\.\d\w*)|([^\`\~\!\\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>/\?\s]+)/g
LanguageModelAccessInformation
表示扩展程序访问语言模型的特定信息。
事件
onDidChange: Event<void>
访问信息更改时触发的事件。
方法
canSendRequest(chat: LanguageModelChat): boolean
检查是否可以向语言模型发出请求。
注意,调用此函数不会触发同意 UI,而只是检查持久化状态。
参数 | 描述 |
---|---|
chat: LanguageModelChat | 语言模型聊天对象。 |
返回 | 描述 |
boolean | 如果可以发出请求则为 |
LanguageModelChat
表示用于发出聊天请求的语言模型。
另请参阅 lm.selectChatModels
属性
语言模型的不透明系列名称。值可能包括 gpt-3.5-turbo
、gpt4
、phi2
或 llama
,但这些值由贡献语言的扩展程序定义,并可能发生更改。
语言模型的不透明标识符。
单个请求可以发送给模型的最大 token 数。
语言模型的人类可读名称。
语言模型供应商的已知标识符。例如 copilot
,但这些值由贡献聊天模型的扩展程序定义,需要通过它们进行查找。
模型的不透明版本字符串。这由贡献语言模型的扩展程序定义,并可能发生更改。
方法
countTokens(text: string | LanguageModelChatMessage, token?: CancellationToken): Thenable<number>
使用模型特定的分词器逻辑计算消息中的 token 数量。
参数 | 描述 |
---|---|
text: string | LanguageModelChatMessage | 字符串或消息实例。 |
options: LanguageModelToolInvocationOptions<object> | 可选的取消令牌。有关如何创建,请参阅CancellationTokenSource。 |
返回 | 描述 |
Thenable<number> | 解析为 token 数量的 thenable。 |
sendRequest(messages: LanguageModelChatMessage[], options?: LanguageModelChatRequestOptions, token?: CancellationToken): Thenable<LanguageModelChatResponse>
使用语言模型发起聊天请求。
请注意,语言模型的使用可能受到访问限制和用户同意的限制。首次调用此函数(对于扩展而言)将向用户显示同意对话框,因此此函数必须仅在响应用户操作时调用!扩展可以使用 LanguageModelAccessInformation.canSendRequest 来检查它们是否拥有发起请求所需的权限。
如果无法向语言模型发起请求,此函数将返回一个被拒绝的 promise。原因可能包括:
- 用户未同意,参见
NoPermissions
- 模型不再存在,参见
NotFound
- 超出配额限制,参见
Blocked
- 其他问题,在这种情况下,扩展必须检查 [
LanguageModelError.cause
](#LanguageModelError.causeLanguageModelError.cause
)
扩展可以通过将一组工具传递给 LanguageModelChatRequestOptions.tools 来利用语言模型工具调用功能。语言模型将返回一个 LanguageModelToolCallPart,扩展可以调用该工具并使用结果发起另一个请求。
参数 | 描述 |
---|---|
messages: LanguageModelChatMessage[] | 消息实例数组。 |
options?: LanguageModelChatRequestOptions | 控制请求的选项。 |
options: LanguageModelToolInvocationOptions<object> | 一个控制请求的取消令牌。参见 CancellationTokenSource 了解如何创建一个。 |
返回 | 描述 |
Thenable<LanguageModelChatResponse> | 一个 thenable,它解析为 LanguageModelChatResponse。如果无法发起请求,promise 将被拒绝。 |
LanguageModelChatMessage
表示聊天中的一条消息。可以扮演不同的角色,如用户或助手。
Static
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
创建一个新的 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。
然后,可以通过创建一个 Assistant 类型的 LanguageModelChatMessage(包含 LanguageModelToolCallPart),后跟一个 User 类型的消息(包含 LanguageModelToolResultPart)将工具结果提供给 LLM。
LanguageModelChatResponse
表示语言模型响应。
参见 ChatRequest
属性
stream: AsyncIterable<unknown>
一个异步可迭代对象,它是由文本和工具调用部分组成的流,形成总体响应。LanguageModelTextPart 是助手响应中应向用户显示的部分。LanguageModelToolCallPart 是语言模型发出的调用工具的请求。只有通过 LanguageModelChatRequestOptions.tools 在请求中传递了工具,才会返回后者。unknown
类型用作未来部分的占位符,例如图像数据部分。
请注意,如果在数据接收过程中发生错误,此流将出错。流的消费者应相应地处理错误。
要取消流,消费者可以 取消 用于发起请求的令牌或中断 for 循环。
示例
try {
// consume stream
for await (const chunk of response.stream) {
if (chunk instanceof LanguageModelTextPart) {
console.log('TEXT', chunk);
} else if (chunk instanceof LanguageModelToolCallPart) {
console.log('TOOL CALL', chunk);
}
}
} catch (e) {
// stream ended with an error
console.error(e);
}
这相当于从 LanguageModelChatResponse.stream 中过滤掉除文本部分之外的所有内容。
LanguageModelChatSelector
描述如何选择用于聊天请求的语言模型。
另请参阅 lm.selectChatModels
属性
语言模型系列。
语言模型标识符。
语言模型供应商。
语言模型版本。
LanguageModelChatTool
通过 LanguageModelChatRequestOptions 提供给语言模型的工具。语言模型使用此接口的所有属性来决定要调用哪个工具以及如何调用它。
属性
工具描述。
此工具接受的输入的 JSON schema。
工具名称。
LanguageModelChatToolMode
语言模型使用的工具调用模式。
枚举成员
语言模型可以选择调用工具或生成消息。这是默认模式。
语言模型必须调用提供的工具之一。注意 - 在使用此模式时,某些模型仅支持单个工具。
LanguageModelError
语言模型特定错误的错误类型。
语言模型的消费者应检查 code 属性以确定具体的失败原因,例如对于引用未知语言模型的情况,可以使用 if(someError.code === vscode.LanguageModelError.NotFound.name) {...}
。对于未指定的错误,cause 属性将包含实际错误。
Static
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 已根据声明的 schema 进行了验证。
参数 | 描述 |
---|---|
options: LanguageModelToolInvocationOptions<T> | |
token: CancellationToken | |
返回 | 描述 |
ProviderResult<LanguageModelToolResult> |
prepareInvocation(options: LanguageModelToolInvocationPrepareOptions<T>, token: CancellationToken): ProviderResult<PreparedToolInvocation>
在工具调用之前调用一次。建议实现此方法以自定义工具运行时显示的进度消息,并提供包含调用输入上下文的更有用的消息。如果合适,还可以指示工具在运行前需要用户确认。
- 注 1:必须无副作用。
- 注 2:对
prepareInvocation
的调用不一定紧随invoke
的调用。
参数 | 描述 |
---|---|
options: LanguageModelToolInvocationPrepareOptions<T> | |
token: CancellationToken | |
返回 | 描述 |
ProviderResult<PreparedToolInvocation> |
LanguageModelToolCallPart
指示工具调用的语言模型响应部分,从 LanguageModelChatResponse 返回,也可以作为内容部分包含在 LanguageModelChatMessage 中,以表示聊天请求中先前的工具调用。
构造函数
new LanguageModelToolCallPart(callId: string, name: string, input: object): LanguageModelToolCallPart
创建新的 LanguageModelToolCallPart。
参数 | 描述 |
---|---|
callId: string | 工具调用 ID。 |
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | 如果聊天参与者希望保留跨多个回合的请求的工具结果,它可以将工具结果存储在处理程序返回的ChatResult.metadata中,并在下一个回合中从ChatResponseTurn.result中检索它们。 |
input: object | 调用工具的输入。 |
返回 | 描述 |
LanguageModelToolCallPart |
属性
工具调用 ID。这是聊天请求中工具调用的唯一标识符。
调用工具的输入。
如果聊天参与者希望保留跨多个回合的请求的工具结果,它可以将工具结果存储在处理程序返回的ChatResult.metadata中,并在下一个回合中从ChatResponseTurn.result中检索它们。
LanguageModelToolConfirmationMessages
当在 PreparedToolInvocation 中返回此项时,将要求用户在运行工具前进行确认。这些消息将与“继续”和“取消”按钮一起显示。
属性
message: string | MarkdownString
确认消息的正文。
确认消息的标题。
LanguageModelToolInformation
关于 lm.tools 中可用已注册工具的信息。
属性
此工具的描述,可以传递给语言模型。
此工具接受的输入的 JSON schema。
工具的唯一名称。
一组标签,由工具声明,大致描述了工具的功能。工具用户可以使用这些标签来过滤工具集,使其仅包含与当前任务相关的工具。
LanguageModelToolInvocationOptions<T>
为工具调用提供的选项。
属性
调用工具的输入。输入必须与 LanguageModelToolInformation.inputSchema 中定义的 schema 匹配。
tokenizationOptions?: LanguageModelToolTokenizationOptions
选项,用于提示工具应在其响应中返回多少 token,并使工具能够准确地计数 token。
toolInvocationToken: undefined
一个不透明对象,它将工具调用与来自 chat participant 的聊天请求关联起来。
获取有效工具调用令牌的唯一方法是使用聊天请求中提供的 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
工具调用相关的 tokenization 选项。
属性
如果已知,工具应在其结果中发出的最大 token 数。
方法
countTokens(text: string, token?: CancellationToken): Thenable<number>
使用模型特定的分词器逻辑计算消息中的 token 数量。
参数 | 描述 |
---|---|
text: string | 字符串。 |
options: LanguageModelToolInvocationOptions<object> | 可选的取消令牌。有关如何创建,请参阅CancellationTokenSource。 |
返回 | 描述 |
Thenable<number> | 解析为 token 数量的 thenable。 |
LanguageStatusItem
语言状态项是为活动文本编辑器显示语言状态报告的首选方式,例如选定的 linter 或关于配置问题的通知。
属性
accessibilityInformation?: AccessibilityInformation
屏幕阅读器与此项交互时使用的辅助功能信息
控制此项是否显示为“忙碌”。默认为 false
。
command: Command
此项的 命令。
可选的,此项的人类可读详情。
此项的标识符。
此项的短名称,如 'Java Language Status' 等。
selector: DocumentSelector
定义此项显示的编辑器的 选择器。
severity: LanguageStatusSeverity
此项的严重性。
默认为 information。您可以使用此属性向用户发出信号,表明存在需要注意的问题,例如缺少可执行文件或配置无效。
要显示的文本。您可以通过利用以下语法在文本中嵌入图标
My text $(icon-name) contains icons like $(icon-name) this one.
其中 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 中显示此通道。
- deprecated - 使用只有一个参数的重载(
show(preserveFocus?: boolean): void
)。
参数 | 描述 |
---|---|
column?: ViewColumn | 此参数已弃用,将被忽略。 |
preserveFocus?: boolean | 当为 |
返回 | 描述 |
void |
trace(message: string, ...args: any[]): void
将给定跟踪消息输出到通道。使用此方法记录详细信息。
仅当通道配置为显示 跟踪 日志级别时,才会记录此消息。
参数 | 描述 |
---|---|
message: string | 要记录的跟踪消息 |
...args: any[] | |
返回 | 描述 |
void |
warn(message: string, ...args: any[]): void
将给定警告消息输出到通道。
仅当通道配置为显示 警告 日志级别或更低级别时,才会记录此消息。
参数 | 描述 |
---|---|
message: string | 要记录的警告消息 |
...args: any[] | |
返回 | 描述 |
void |
MarkdownString
支持通过 markdown 语法 进行格式化的人类可读文本。
当 supportThemeIcons 设置为 true
时,支持通过 $(<name>)
语法渲染 主题图标。
当 supportHtml 设置为 true
时,支持渲染嵌入式 html。
构造函数
new MarkdownString(value?: string, supportThemeIcons?: boolean): MarkdownString
使用给定值创建新的 markdown 字符串。
参数 | 描述 |
---|---|
value?: string | 可选的,初始值。 |
supportThemeIcons?: boolean | 可选的,指定 MarkdownString 中是否支持 ThemeIcons。 |
返回 | 描述 |
MarkdownString |
属性
baseUri?: Uri
解析相对路径的 base 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 将被转义。
- deprecated - 此类型已弃用,请改用 MarkdownString。
MarkedString: string | {language: string, value: string}
McpHttpServerDefinition
McpHttpServerDefinition 表示一个可以使用 Streamable HTTP 传输的 MCP 服务器。
构造函数
new McpHttpServerDefinition(label: string, uri: Uri, headers?: Record<string, string>, version?: string): McpHttpServerDefinition
参数 | 描述 |
---|---|
label: string | 服务器的人类可读名称。 |
uri: Uri | 服务器 URI。 |
headers?: Record<string, string> | 可选的附加头信息,包含在对服务器的每个请求中。 |
version?: string | |
返回 | 描述 |
McpHttpServerDefinition |
属性
headers: Record<string, string>
可选的附加头信息,包含在对服务器的每个请求中。
服务器的人类可读名称。
uri: Uri
服务器 URI。编辑器将向此 URI 发送 POST 请求以开始每个会话。
可选的服务器版本标识符。如果更改,编辑器将指示工具已更改并提示刷新它们。
McpServerDefinition
描述不同类型的模型上下文协议服务器的定义,这些定义可以从 McpServerDefinitionProvider 返回。
McpServerDefinition: McpStdioServerDefinition | McpHttpServerDefinition
McpServerDefinitionProvider<T>
可以提供模型上下文协议服务器定义的类型。应在扩展激活期间使用 lm.registerMcpServerDefinitionProvider 注册此类型。
事件
onDidChangeMcpServerDefinitions?: Event<void>
可选事件,用于信号可用服务器集已更改。
方法
provideMcpServerDefinitions(token: CancellationToken): ProviderResult<T[]>
提供可用的 MCP 服务器。编辑器将积极调用此方法以确保语言模型服务器的可用性,因此扩展不应执行需要用户交互的操作,例如身份验证。
参数 | 描述 |
---|---|
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T[]> | MCP 可用 MCP 服务器数组 |
resolveMcpServerDefinition(server: T, token: CancellationToken): ProviderResult<T>
当编辑器需要启动 MCP 服务器时将调用此函数。此时,扩展可以执行任何可能需要用户交互的操作,例如身份验证。服务器的任何非 readonly
属性都可以修改,扩展应返回解析后的服务器。
扩展可以返回 undefined 表示不应启动服务器,或抛出错误。如果存在待处理的工具调用,编辑器将取消该调用并向语言模型返回错误消息。
参数 | 描述 |
---|---|
server: T | 要解析的 MCP 服务器 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T> | 解析后的服务器或解析为此类的 thenable。这可以是给定的 |
McpStdioServerDefinition
McpStdioServerDefinition 表示通过运行本地进程并操作其 stdin 和 stdout 流可用的 MCP 服务器。该进程将作为扩展主机的子进程生成,默认情况下不会在 shell 环境中运行。
构造函数
new McpStdioServerDefinition(label: string, command: string, args?: string[], env?: Record<string, string | number>, version?: string): McpStdioServerDefinition
参数 | 描述 |
---|---|
label: string | 服务器的人类可读名称。 |
command: string | 用于启动服务器的命令。 |
args?: string[] | 传递给服务器的其他命令行参数。 |
env?: Record<string, string | number> | 服务器的可选其他环境信息。 |
version?: string | 服务器的可选版本标识。 |
返回 | 描述 |
McpStdioServerDefinition |
属性
传递给服务器的其他命令行参数。
用于启动服务器的命令。基于 Node.js 的服务器可以使用 process.execPath
来使用编辑器的 Node.js 版本来运行脚本。
cwd?: Uri
用于启动服务器的工作目录。
env: Record<string, string | number>
服务器的可选附加环境信息。此环境中的变量将覆盖或移除(如果为 null)编辑器扩展主机中的默认环境变量。
服务器的人类可读名称。
可选的服务器版本标识符。如果更改,编辑器将指示工具已更改并提示刷新它们。
Memento
Memento 表示一个存储工具。它可以存储和检索值。
方法
返回值。
参数 | 描述 |
---|---|
key: string | 字符串。 |
返回 | 描述 |
T | 存储的值或 |
get<T>(key: string, defaultValue: T): T
返回值。
参数 | 描述 |
---|---|
key: string | 字符串。 |
defaultValue: T | 当给定键没有值 ( |
返回 | 描述 |
T | 存储的值或 defaultValue。 |
返回存储的键。
参数 | 描述 |
---|---|
返回 | 描述 |
readonly string[] | 存储的键。 |
update(key: string, value: any): Thenable<void>
存储一个值。该值必须是可 JSON 字符串化的。
注意:使用 undefined
作为值将从底层存储中移除该键。
参数 | 描述 |
---|---|
key: string | 字符串。 |
value: any | 一个值。不得包含循环引用。 |
返回 | 描述 |
Thenable<void> |
MessageItem
属性
对于模态对话框的提示:当用户取消对话框(例如,按 ESC 键)时,应触发该项。
注意:对于非模态消息,此选项将被忽略。
简短标题,如“重试”、“打开日志”等。
MessageOptions
属性
人类可读的详细消息,渲染时不那么醒目。注意:详情仅对模态消息显示。
指示此消息应为模态。
NotebookCell
属性
document: TextDocument
此单元格的文本,表示为文本文档。
executionSummary: NotebookCellExecutionSummary
此单元格最近的执行摘要。
此单元格在其包含笔记本中的索引。当单元格在其笔记本中移动时,索引会更新。当单元格从其笔记本中移除时,索引为 -1
。
kind: NotebookCellKind
此单元格的类型。
此单元格的元数据。可以是任何内容,但必须是可 JSON 字符串化的。
notebook: NotebookDocument
包含此单元格的笔记本。
outputs: readonly NotebookCellOutput[]
此单元格的输出。
NotebookCellData
NotebookCellData 是笔记本单元格的原始表示。它是NotebookData 的一部分。
构造函数
new NotebookCellData(kind: NotebookCellKind, value: string, languageId: string): NotebookCellData
创建新的单元格数据。最小单元格数据指定其类型、源值及其源的语言标识符。
参数 | 描述 |
---|---|
kind: NotebookCellKind | 类型。 |
value: string | 源值。 |
*注意*,调用此函数将触发onDidCloseTextDocument事件,后跟onDidOpenTextDocument事件。 | 源值的语言标识符。 |
返回 | 描述 |
NotebookCellData |
属性
executionSummary?: NotebookCellExecutionSummary
此单元格数据的执行摘要。
kind: NotebookCellKind
此单元格数据的类型。
此单元格数据源值的语言标识符。可以是来自getLanguages 的任何值。
此单元格数据的任意元数据。可以是任何内容,但必须是可 JSON 字符串化的。
outputs?: NotebookCellOutput[]
此单元格数据的输出。
此单元格数据的源值 - 代码或格式化文本。
NotebookCellExecution
NotebookCellExecution 是笔记本控制器在执行过程中修改笔记本单元格的方式。
创建单元格执行对象后,单元格进入 [NotebookCellExecutionState.Pending Pending](#NotebookCellExecutionState.Pending Pending) 状态。在执行任务上调用 start(...) 后,它进入 [NotebookCellExecutionState.Executing Executing](#NotebookCellExecutionState.Executing Executing) 状态。调用 end(...) 后,它进入 [NotebookCellExecutionState.Idle Idle](#NotebookCellExecutionState.Idle Idle) 状态。
属性
cell: NotebookCell
为其创建此执行的单元格。
设置和取消设置此单元格执行的顺序。
token: CancellationToken
方法
appendOutput(out: NotebookCellOutput | readonly NotebookCellOutput[], cell?: NotebookCell): Thenable<void>
将输出追加到正在执行的单元格或受此执行影响的其他单元格。
参数 | 描述 |
---|---|
out: NotebookCellOutput | readonly NotebookCellOutput[] | 追加到当前输出的输出。 |
cell?: NotebookCell | 可选的单元格,用于追加输出。默认为此执行的单元格。 |
返回 | 描述 |
Thenable<void> | 一个在操作完成后解析的 thenable。 |
appendOutputItems(items: NotebookCellOutputItem | readonly NotebookCellOutputItem[], output: NotebookCellOutput): Thenable<void>
将输出项追加到现有单元格输出。
参数 | 描述 |
---|---|
items: NotebookCellOutputItem | readonly NotebookCellOutputItem[] | 追加到现有输出的输出项。 |
output: NotebookCellOutput | 已存在的输出对象。 |
返回 | 描述 |
Thenable<void> | 一个在操作完成后解析的 thenable。 |
clearOutput(cell?: NotebookCell): Thenable<void>
清除正在执行的单元格或受此执行影响的其他单元格的输出。
参数 | 描述 |
---|---|
cell?: NotebookCell | 可选的单元格,用于追加输出。默认为此执行的单元格。 |
返回 | 描述 |
Thenable<void> | 一个在操作完成后解析的 thenable。 |
end(success: boolean, endTime?: number): void
表示执行已结束。
参数 | 描述 |
---|---|
success: boolean | 如果为 true,单元格状态栏上显示绿色对勾。如果为 false,显示红色叉。如果为 undefined,不显示对勾或叉图标。 |
endTime?: number | 执行完成的时间,以 Unix 纪元的毫秒为单位。 |
返回 | 描述 |
void |
replaceOutput(out: NotebookCellOutput | readonly NotebookCellOutput[], cell?: NotebookCell): Thenable<void>
替换正在执行的单元格或受此执行影响的其他单元格的输出。
参数 | 描述 |
---|---|
out: NotebookCellOutput | readonly NotebookCellOutput[] | 替换当前输出的输出。 |
cell?: NotebookCell | 可选的单元格,用于追加输出。默认为此执行的单元格。 |
返回 | 描述 |
Thenable<void> | 一个在操作完成后解析的 thenable。 |
replaceOutputItems(items: NotebookCellOutputItem | readonly NotebookCellOutputItem[], output: NotebookCellOutput): Thenable<void>
替换现有单元格输出的所有输出项。
参数 | 描述 |
---|---|
items: NotebookCellOutputItem | readonly NotebookCellOutputItem[] | 替换现有输出项的输出项。 |
output: NotebookCellOutput | 已存在的输出对象。 |
返回 | 描述 |
Thenable<void> | 一个在操作完成后解析的 thenable。 |
start(startTime?: number): void
表示执行已开始。
参数 | 描述 |
---|---|
startTime?: number | 执行开始的时间,以 Unix 纪元的毫秒为单位。用于驱动显示单元格运行时间的时钟。如果未给定,则不显示时钟。 |
返回 | 描述 |
void |
NotebookCellExecutionSummary
笔记本单元格执行的摘要。
属性
执行发生的顺序。
执行是否成功完成。
timing?: {endTime: number, startTime: number}
执行开始和结束的时间,以 unix 时间戳表示
参数 | 描述 |
---|---|
endTime: number | 执行结束时间。 |
startTime: number | 执行开始时间。 |
NotebookCellKind
笔记本单元格类型。
枚举成员
标记单元格是用于显示的格式化源。
NotebookCellOutput
笔记本单元格输出表示执行单元格的结果。它是多个输出项的容器类型,其中包含的项表示相同的结果,但使用不同的 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 类型和数据定义的笔记本输出的一种表示形式。
Static
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>
一个可选事件,用于发出状态栏项已更改的信号。将再次调用 provide 方法。
方法
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 | |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
此笔记本控制器的标识符。
注意:控制器按其标识符记住,扩展在不同会话中应使用稳定的标识符。
interruptHandler?: (notebook: NotebookDocument) => void | Thenable<void>
可选的中断处理程序。
默认情况下,单元格执行通过令牌取消。取消令牌要求控制器能够跟踪其执行,以便稍后取消特定执行。并非所有场景都允许这样做,例如 REPL 式控制器通常通过中断当前正在运行的内容来工作。对于这些情况,存在中断处理程序 - 可以将其视为终端中 SIGINT
或 Control+C
的等效项。
注意:首选支持取消令牌,仅当无法支持令牌时才应使用中断处理程序。
参数 | 描述 |
---|---|
notebook: NotebookDocument | |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
此笔记本控制器的人类可读标签。
此控制器适用的笔记本类型。
此控制器支持的语言标识符数组。可以是来自getLanguages 的任何值。如果为 falsy,则支持所有语言。
示例
// 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
笔记本内容选项定义笔记本的哪些部分被持久化。注意
例如,笔记本序列化器可以选择不保存输出,在这种情况下,当笔记本的输出更改时,编辑器不会将笔记本标记为已更改。
属性
控制单元格元数据属性更改事件是否会触发笔记本文档内容更改事件,以及是否会在差异编辑器中使用,默认为 false。如果内容提供者未在文件文档中持久化元数据属性,应将其设置为 true。
控制文档元数据属性更改事件是否会触发笔记本文档内容更改事件,以及是否会在差异编辑器中使用,默认为 false。如果内容提供者未在文件文档中持久化元数据属性,应将其设置为 true。
控制输出更改事件是否会触发笔记本文档内容更改事件,以及是否会在差异编辑器中使用,默认为 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
笔记本编辑表示应应用于笔记本内容的编辑。
Static
deleteCells(range: NotebookRange): NotebookEdit
创建删除笔记本中单元格的编辑的实用工具。
参数 | 描述 |
---|---|
range: NotebookRange | 要删除的单元格范围。 |
返回 | 描述 |
NotebookEdit |
insertCells(index: number, newCells: NotebookCellData[]): NotebookEdit
创建在笔记本中插入单元格的编辑的实用工具。
参数 | 描述 |
---|---|
index: number | 插入单元格的索引。 |
newCells: NotebookCellData[] | 新的笔记本单元格。 |
返回 | 描述 |
NotebookEdit |
replaceCells(range: NotebookRange, newCells: NotebookCellData[]): NotebookEdit
创建替换笔记本中单元格的编辑的实用工具。
参数 | 描述 |
---|---|
range: NotebookRange | 要替换的单元格范围 |
newCells: NotebookCellData[] | 新的笔记本单元格。 |
返回 | 描述 |
NotebookEdit |
updateCellMetadata(index: number, newCellMetadata: ): NotebookEdit
创建更新单元格元数据的编辑的实用工具。
参数 | 描述 |
---|---|
index: number | 要更新的单元格索引。 |
newCellMetadata: | 单元格的新元数据。 |
返回 | 描述 |
NotebookEdit |
updateNotebookMetadata(newNotebookMetadata: ): NotebookEdit
创建更新笔记本元数据的编辑的实用工具。
参数 | 描述 |
---|---|
newNotebookMetadata: | 笔记本的新元数据。 |
返回 | 描述 |
NotebookEdit |
构造函数
new NotebookEdit(range: NotebookRange, newCells: NotebookCellData[]): NotebookEdit
创建新的笔记本编辑。
参数 | 描述 |
---|---|
range: NotebookRange | 笔记本范围。 |
newCells: NotebookCellData[] | 新单元格数据的数组。 |
返回 | 描述 |
NotebookEdit |
属性
单元格的可选新元数据。
newCells: NotebookCellData[]
正在插入的新单元格。可能为空。
笔记本的可选新元数据。
range: NotebookRange
正在编辑的单元格范围。可能为空。
NotebookEditor
表示附加到笔记本的笔记本编辑器。NotebookEditor 的其他属性可在提议的 API 中获取,该 API 将在以后最终确定。
属性
notebook: NotebookDocument
与此笔记本编辑器关联的笔记本文档。
selection: NotebookRange
此笔记本编辑器中的主要选区。
selections: readonly NotebookRange[]
此笔记本编辑器中的所有选区。
主要选区(或焦点范围)是 selections[0]
。当文档没有单元格时,主要选区为空 { start: 0, end: 0 }
;
viewColumn?: ViewColumn
此编辑器显示的列。
visibleRanges: readonly NotebookRange[]
编辑器中当前可见的范围(垂直方向)。
方法
revealRange(range: NotebookRange, revealType?: NotebookEditorRevealType): void
按 revealType
指示的方式滚动以显示给定范围。
参数 | 描述 |
---|---|
range: NotebookRange | 一个范围。 |
revealType?: NotebookEditorRevealType | 显示 |
返回 | 描述 |
void |
NotebookEditorRevealType
表示附加到笔记本的笔记本编辑器。
枚举成员
范围将以尽可能少的滚动方式显示。
范围将始终在视口中心显示。
如果范围在视口之外,它将在视口中心显示。否则,它将以尽可能少的滚动方式显示。
范围将始终在视口顶部显示。
NotebookEditorSelectionChangeEvent
表示描述笔记本编辑器选区更改的事件。
属性
notebookEditor: NotebookEditor
选区已更改的笔记本编辑器。
selections: readonly NotebookRange[]
笔记本编辑器选区的新值。
NotebookEditorVisibleRangesChangeEvent
表示描述笔记本编辑器可见范围更改的事件。
属性
notebookEditor: NotebookEditor
可见范围已更改的笔记本编辑器。
visibleRanges: readonly NotebookRange[]
笔记本编辑器可见范围的新值。
NotebookRange
笔记本范围表示两个单元格索引的有序对。保证 start 小于或等于 end。
构造函数
new NotebookRange(start: number, end: number): NotebookRange
创建一个新的笔记本范围。如果 start
不早于或等于 end
,则将交换值。
参数 | 描述 |
---|---|
start: number | 起始索引 |
end: number | 结束索引。 |
返回 | 描述 |
NotebookRange |
属性
此范围的独占结束索引(从零开始)。
如果 start
和 end
相等,则为 true
。
此范围的从零开始的起始索引。
方法
with(change: {end: number, start: number}): NotebookRange
从此范围派生一个新范围。
参数 | 描述 |
---|---|
change: {end: number, start: number} | 描述此范围更改的对象。 |
返回 | 描述 |
NotebookRange | 反映给定更改的范围。如果更改没有改变任何内容,将返回 |
NotebookRendererMessaging
渲染器消息用于与单个渲染器通信。它从 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 中显示此通道。
- deprecated - 使用只有一个参数的重载(
show(preserveFocus?: boolean): void
)。
参数 | 描述 |
---|---|
column?: ViewColumn | 此参数已弃用,将被忽略。 |
preserveFocus?: boolean | 当为 |
返回 | 描述 |
void |
OverviewRulerLane
表示在 Overview Ruler 中渲染装饰的不同位置。Overview Ruler 支持三条车道。
枚举成员
概览标尺的左侧车道。
概览标尺的中心车道。
概览标尺的右侧车道。
概览标尺的所有车道。
ParameterInformation
表示可调用签名的参数。参数可以有标签和文档注释。
构造函数
new ParameterInformation(label: string | [number, number], documentation?: string | MarkdownString): ParameterInformation
创建一个新的参数信息对象。
参数 | 描述 |
---|---|
label: string | [number, number] | 一个标签字符串或包含签名标签内的包含起始和不包含结束偏移量。 |
documentation?: string | MarkdownString | 文档字符串。 |
返回 | 描述 |
ParameterInformation |
属性
documentation?: string | MarkdownString
此签名的人类可读文档注释。将在 UI 中显示,但可以省略。
label: string | [number, number]
Position
构造函数
new Position(line: number, character: number): Position
参数 | 描述 |
---|---|
line: number | 从零开始的行值。 |
character: number | 从零开始的字符值。 |
返回 | 描述 |
Position |
属性
从零开始的字符值。
字符偏移量使用 UTF-16 代码单元 表示。
从零开始的行值。
方法
compareTo(other: Position): number
将此位置与 other
比较。
参数 | 描述 |
---|---|
other: Position | 一个位置。 |
返回 | 描述 |
number | 如果此位置在给定位置之前,则返回小于零的数字;如果此位置在给定位置之后,则返回大于零的数字;如果此位置与给定位置相等,则返回零。 |
isAfter(other: Position): boolean
检查此位置是否在 other
之后。
参数 | 描述 |
---|---|
other: Position | 一个位置。 |
返回 | 描述 |
boolean | 如果位置在更大的行上,或者在同一行上处于更大的字符位置,则返回 |
isAfterOrEqual(other: Position): boolean
检查此位置是否在 other
之后或等于 other
。
参数 | 描述 |
---|---|
other: Position | 一个位置。 |
返回 | 描述 |
boolean | 如果位置在更大的行上,或者在同一行上处于更大或等于的字符位置,则返回 |
isBefore(other: Position): boolean
检查此位置是否在 other
之前。
参数 | 描述 |
---|---|
other: Position | 一个位置。 |
返回 | 描述 |
boolean | 如果位置在更小的行上,或者在同一行上处于更小的字符位置,则返回 |
isBeforeOrEqual(other: Position): boolean
检查此位置是否在 other
之前或等于 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
此属性的存在表示应在运行工具之前要求用户确认。对于任何具有副作用或可能危险的工具,都应要求用户确认。
invocationMessage?: string | MarkdownString
在工具运行时显示的自定义进度消息。
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 的当前工作目录。如果省略,则使用工具当前的 workspace 根目录。
执行的程序或 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> | 一个解析为匹配的原始资源的 uri 的 thenable。 |
QuickInput
一个轻量级的用户输入 UI,最初不可见。通过其属性进行配置后,扩展可以通过调用 QuickInput.show 使其可见。
此 UI 必须隐藏的原因有很多,扩展将通过QuickInput.onDidHide得到通知。(例如:显式调用QuickInput.hide、用户按 Esc、打开了其他输入 UI 等)
用户按下 Enter 键或表明接受当前状态的其他手势不会自动隐藏此 UI 组件。由扩展决定是否接受用户的输入,以及是否应通过调用 QuickInput.hide 来隐藏 UI。
当扩展不再需要此输入 UI 时,应 QuickInput.dispose 它以释放与其关联的任何资源。
事件
onDidHide: Event<void>
当此输入 UI 隐藏时发出的事件。
此 UI 必须隐藏的原因有很多,扩展将通过QuickInput.onDidHide得到通知。(例如:显式调用QuickInput.hide、用户按 Esc、打开了其他输入 UI 等)
属性
UI 是否应显示进度指示器。默认为 false。
例如,在加载更多数据或验证用户输入时,将其更改为 true。
UI 是否应允许用户输入。默认为 true。
例如,在验证用户输入或加载下一步用户输入的数据时,将其更改为 false。
即使焦点移到编辑器的其他部分或另一个窗口,UI 是否应保持打开状态。默认为 false。此设置在 iPad 上被忽略,始终为 false。
可选的当前步骤计数。
可选的标题。
可选的总步骤计数。
方法
释放此输入 UI 和任何相关资源。如果它仍然可见,则首先隐藏。在此调用后,输入 UI 不再起作用,不应再访问其上的任何其他方法或属性。应改为创建新的输入 UI。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
隐藏此输入 UI。这也会触发QuickInput.onDidHide事件。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
使其当前配置下的输入 UI 可见。任何其他输入 UI 将首先触发QuickInput.onDidHide事件。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
QuickInputButton
属性
iconPath: IconPath
按钮的图标。
可选的工具提示。
QuickInputButtons
Static
Back: QuickInputButton
QuickPick<T>
一个具体的 QuickInput,用于让用户从类型 T 的项目列表中选择项目。项目可以通过过滤文本字段进行过滤,并且有一个选项 canSelectMany 允许选择多个项目。
请注意,在许多情况下,更便捷的 window.showQuickPick 更易于使用。window.createQuickPick 应在 window.showQuickPick 无法提供所需灵活性时使用。
事件
onDidAccept: Event<void>
当用户表示接受所选项目时发出的事件。
onDidChangeActive: Event<readonly T[]>
当活动项目发生变化时发出的事件。
onDidChangeSelection: Event<readonly T[]>
当所选项目发生变化时发出的事件。
onDidChangeValue: Event<string>
当过滤文本的值发生变化时发出的事件。
onDidHide: Event<void>
当此输入 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 是否应保持打开状态。默认为 false。此设置在 iPad 上被忽略,始终为 false。
当焦点离开选择器时,选择器是否应保持打开状态。默认为 false。
要选择的项目。扩展可以读取和更新此属性。
一个可选标志,用于在快速选择项目更新时保持快速选择的滚动位置。默认为 false。
过滤文本是否也应与项目的描述进行匹配。默认为 false。
过滤文本是否也应与项目的详情进行匹配。默认为 false。
当未输入过滤器时,在过滤器文本框中显示的可选占位符。
所选项目。扩展可以读取和更新此属性。
可选的当前步骤计数。
可选的标题。
可选的总步骤计数。
方法
过滤文本的当前值。
释放此输入 UI 和任何相关资源。如果它仍然可见,则首先隐藏。在此调用后,输入 UI 不再起作用,不应再访问其上的任何其他方法或属性。应改为创建新的输入 UI。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
隐藏此输入 UI。这也会触发QuickInput.onDidHide事件。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
使其当前配置下的输入 UI 可见。任何其他输入 UI 将首先触发QuickInput.onDidHide事件。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
show(): void
属性
表示可以从项目列表中选择的项目。
注意:当 kind 设置为 QuickPickItemKind.Separator 时,此属性将被忽略。
buttons?: readonly QuickInputButton[]
始终显示此项目。
将在此特定项目上渲染的可选按钮。单击这些按钮将触发 QuickPickItemButtonEvent 事件。仅在使用通过 createQuickPick() API 创建的快速选择时才会渲染按钮。使用 showQuickPick() API 时不会渲染按钮。
一个人类可读的字符串,在同一行中以不那么突出显示的方式渲染。支持通过 $(<name>)
语法渲染 主题图标。
一个人类可读的字符串,在单独的行中以不那么突出显示的方式渲染。支持通过 $(<name>)
语法渲染 主题图标。
iconPath?: IconPath
QuickPickItem 的图标路径或 ThemeIcon。
kind?: QuickPickItemKind
QuickPickItem 的类型,将决定此项目在快速选择中的渲染方式。如果未指定,默认为 QuickPickItemKind.Default。
一个人类可读的字符串,突出显示。支持通过 $(<name>)
语法渲染 主题图标。
注意:当 kind 设置为 QuickPickItemKind.Default 时(即常规项目而非分隔符),它支持通过 $(<name>)
语法渲染 主题图标。
可选标志,指示此项目最初是否被选中。仅在使用 showQuickPick() API 时生效。要使用 createQuickPick() API 实现相同效果,只需将 QuickPick.selectedItems 设置为您希望最初选中的项目即可。(注意:这仅在选择器允许多选时有效。)
始终显示此项目。
另请参阅 QuickPickOptions.canPickMany
当特定 QuickPickItem 中的按钮被触发时发出的事件。对于标题栏中的按钮,此事件不会触发。
属性
button: QuickInputButton
被点击的按钮。
按钮所属的项目。
枚举成员
快速选择项目 的类型。
当 QuickPickItem 的类型为 Separator 时,该项目仅是一个视觉分隔符,不代表实际项目。唯一适用的属性是 label。 QuickPickItem 上的所有其他属性将被忽略且无效。
默认的 QuickPickItem.kind 是可以在快速选择中选择的项目。
事件
配置快速选择 UI 行为的选项。
onDidSelectItem(item: string | QuickPickItem): any
参数 | 描述 |
---|---|
选择项目时调用的可选函数。 | |
返回 | 描述 |
任意类型 |
属性
item: string | QuickPickItem
使选择器接受多选的可选标志,如果为 true,则结果是选择的项目数组。
设置为 true
可在焦点移至编辑器的另一部分或另一个窗口时保持选择器打开。iPad 上忽略此设置,始终为 false。
筛选选择的项目时包含描述的可选标志。
筛选选择的项目时包含详情的可选标志。
在输入框中显示的可选字符串作为占位符,以指导用户选择。
表示快速选择标题的可选字符串。
构造函数
Range 对象是不可变的。使用 with、intersection 或 union 方法从现有范围派生新范围。
Range
new Range(startLine: number, startCharacter: number, endLine: number, endCharacter: number): Range
属性
endCharacter: number
end: Position
如果 start
和 end
相等,则为 true
。
如果 start.line
和 end.line
相等,则为 true
。
start: Position
方法
如果位置或范围在此范围内或等于此范围,则为 true
。
起始位置较大且结束位置较小的范围。如果没有重叠,将返回 undefined。
当起始和结束位置与此范围的起始和结束位置 相等 时,为 true
。
起始位置较小且结束位置较大的范围。
一个从该范围派生出来、具有给定起始和结束位置的新范围。如果起始和结束位置没有不同,将返回 this
范围。
change: {end: Position, start: Position}
属性
请求引用时包含附加信息的值对象。
包含当前符号的声明。
方法
引用提供者接口定义了扩展与 查找引用 功能之间的契约。
provideReferences(document: TextDocument, position: Position, context: ReferenceContext, token: CancellationToken): ProviderResult<Location[]>
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
position: Position | 调用命令的位置。 |
为给定位置和文档提供一组项目范围的引用。 | context: ReferenceContext |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
关于引用请求的附加信息。 |
位置数组或解析为此类数组的 thenable。可以通过返回 undefined
、null
或空数组来表示没有结果。
构造函数
相对模式是构建 glob 模式的辅助工具,该模式相对于基本文件路径进行匹配。基本路径可以是字符串形式的绝对文件路径或 uri,也可以是 工作区文件夹,这是创建相对模式的首选方式。
new RelativePattern(base: string | Uri | WorkspaceFolder, pattern: string): RelativePattern
示例
const folder = vscode.workspace.workspaceFolders?.[0];
if (folder) {
// Match any TypeScript file in the root of this workspace folder
const pattern1 = new vscode.RelativePattern(folder, '*.ts');
// Match any TypeScript file in `someFolder` inside this workspace folder
const pattern2 = new vscode.RelativePattern(folder, 'someFolder/*.ts');
}
参数 | 描述 |
---|---|
创建一个新的相对模式对象,包含一个基本文件路径和要匹配的模式。此模式将匹配相对于基本路径的文件路径。 | base: string | Uri | WorkspaceFolder |
此模式将相对匹配的基本路径。如果模式应在工作区内匹配,建议传入 工作区文件夹。否则,只有当模式针对工作区外的文件路径时,才应使用 uri 或字符串。 | pattern: string |
返回 | 描述 |
一个文件 glob 模式,例如 *.{ts,js} ,将匹配相对于基本路径的路径。 |
属性
RelativePattern
此模式将相对匹配的基本文件路径。
这与 RelativePattern.baseUri 的 fsPath
值匹配。
- 注意:更新此值将更新 RelativePattern.baseUri 为具有
file
方案的 uri。
已弃用 - 此属性已弃用,请改用 RelativePattern.baseUri。
baseUri: Uri
此模式将相对匹配的基本文件路径。文件路径必须是绝对路径,不应包含尾随路径分隔符,也不应包含任何相对段(.
或 ..
)。
示例:给定基本路径 /home/work/folder
和文件路径 /home/work/folder/index.js
,文件 glob 模式将匹配 index.js
。
方法
重命名提供者接口定义了扩展与 重命名 功能之间的契约。
prepareRename(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Range | {placeholder: string, range: Range}>
在运行重命名之前用于解析和验证位置的可选函数。结果可以是一个范围,或一个范围和占位符文本。占位符文本应是被重命名符号的标识符 - 如果省略,将使用返回范围内的文本。
参数 | 描述 |
---|---|
document: TextDocument | 注意:当提供的位置不允许重命名时,此函数应抛出错误或返回被拒绝的 thenable。 |
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
end: Position
如果 start
和 end
相等,则为 true
。
start: Position
start: Position
方法
contains(positionOrRange: Range | Position): boolean
intersection(range: Range): Range
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[]> | 选择范围或解析为选择范围的 thenable。可以通过返回 |
SemanticTokens
表示语义 token,可以在一个范围或整个文档中。
另请参阅
- 有关格式的解释,请参阅 provideDocumentSemanticTokens。
- 用于创建实例的帮助程序,请参阅 SemanticTokensBuilder。
构造函数
new SemanticTokens(data: Uint32Array, resultId?: string): SemanticTokens
创建新的语义 token。
参数 | 描述 |
---|---|
data: Uint32Array | Token 数据。 |
resultId?: string | 结果标识符。 |
返回 | 描述 |
SemanticTokens |
属性
实际的 token 数据。
另请参阅 provideDocumentSemanticTokens 以了解格式说明。
token 的结果 id。
这是将传递给 DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits
(如果已实现)的 id。
SemanticTokensBuilder
语义 token 生成器可以帮助创建包含增量编码语义 token 的 SemanticTokens
实例。
构造函数
new SemanticTokensBuilder(legend?: SemanticTokensLegend): SemanticTokensBuilder
创建语义 token 生成器。
参数 | 描述 |
---|---|
legend?: SemanticTokensLegend | 语义 token 图例。 |
返回 | 描述 |
SemanticTokensBuilder |
方法
build(resultId?: string): SemanticTokens
完成并创建 SemanticTokens
实例。
参数 | 描述 |
---|---|
resultId?: string | |
返回 | 描述 |
SemanticTokens |
push(line: number, char: number, length: number, tokenType: number, tokenModifiers?: number): void
添加另一个 token。
参数 | 描述 |
---|---|
line: number | token 开始行号(绝对值)。 |
char: number | token 开始字符(绝对值)。 |
length: number | token 的字符长度。 |
tokenType: number | 编码的 token 类型。 |
tokenModifiers?: number | 编码的 token 修饰符。 |
返回 | 描述 |
void |
push(range: Range, tokenType: string, tokenModifiers?: readonly string[]): void
添加另一个 token。仅在提供图例时使用。
参数 | 描述 |
---|---|
range: Range | token 的范围。必须是单行。 |
tokenType: string | token 类型。 |
tokenModifiers?: readonly string[] | token 修饰符。 |
返回 | 描述 |
void |
SemanticTokensEdit
代表对语义 token 的编辑。
另请参阅 provideDocumentSemanticTokensEdits 以了解格式说明。
构造函数
new SemanticTokensEdit(start: number, deleteCount: number, data?: Uint32Array): SemanticTokensEdit
创建语义 token 编辑。
参数 | 描述 |
---|---|
start: number | 开始偏移量 |
deleteCount: number | 要移除的元素数量。 |
data?: Uint32Array | 要插入的元素。 |
返回 | 描述 |
SemanticTokensEdit |
属性
要插入的元素。
要移除的元素计数。
编辑的开始偏移量。
SemanticTokensEdits
代表对语义 token 的编辑。
另请参阅 provideDocumentSemanticTokensEdits 以了解格式说明。
构造函数
new SemanticTokensEdits(edits: SemanticTokensEdit[], resultId?: string): SemanticTokensEdits
创建新的语义 token 编辑。
参数 | 描述 |
---|---|
edits: SemanticTokensEdit[] | 语义 token 编辑数组。 |
resultId?: string | 结果标识符。 |
返回 | 描述 |
SemanticTokensEdits |
属性
edits: SemanticTokensEdit[]
token 数据的编辑。所有编辑都基于初始数据状态。
token 的结果 id。
这是将传递给 DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits
(如果已实现)的 id。
SemanticTokensLegend
构造函数
语义 token 图例包含解读语义 token 的整数编码表示所需的信息。
new SemanticTokensLegend(tokenTypes: string[], tokenModifiers?: string[]): SemanticTokensLegend
参数 | 描述 |
---|---|
创建语义 token 图例。 | tokenTypes: string[] |
token 类型数组。 | tokenModifiers?: string[] |
返回 | 描述 |
token 修饰符数组。 |
属性
SemanticTokensLegend
可能的 token 修饰符。
可能的 token 类型。
构造函数
代表在 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 的可选选项。 |
属性
命令参数。
args: Array<string | ShellQuotedString>
shell 参数。如果使用完整命令行创建,则为 undefined
。
command: string | ShellQuotedString
shell 命令。如果使用完整命令行创建,则为 undefined
。
shell 命令行。如果使用命令和参数创建,则为 undefined
。
options?: ShellExecutionOptions
在 shell 中执行命令行时使用的 shell 选项。默认为 undefined。
属性
shell 执行选项。
执行的 shell 的当前工作目录。如果省略,则使用工具当前工作区根目录。
执行的 shell 的附加环境。如果省略,则使用父进程的环境。如果提供,则与父进程的环境合并。
shell 可执行文件。
传递给用于运行任务的 shell 可执行文件的参数。大多数 shell 需要特殊参数来执行命令。例如,bash
需要 -c
参数来执行命令,PowerShell
需要 -Command
,cmd
需要 /d
和 /c
。
shellQuoting?: ShellQuotingOptions
此 shell 支持的 shell 引用。
属性
根据使用的 shell 将被引用的字符串。
quoting: 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
。
属性
shell 引用选项。
用于字符转义的字符。如果提供字符串,则只转义空格。如果提供 { escapeChar, charsToEscape }
字面量,则使用 escapeChar
转义 charsToEscape
中的所有字符。
用于强引用的字符。字符串长度必须为 1。
用于弱引用的字符。字符串长度必须为 1。
构造函数
签名帮助代表可调用对象的签名。可以有多个签名,但只有一个活跃的签名,且只有一个活跃的参数。
参数 | 描述 |
---|---|
返回 | 描述 |
new SignatureHelp(): SignatureHelp |
属性
SignatureHelp
活跃签名的活跃参数。
活跃签名。
signatures: SignatureInformation[]
一个或多个签名。
属性
关于触发 SignatureHelpProvider 的上下文的附加信息。
activeSignatureHelp: SignatureHelp
当前活跃的 SignatureHelp。
activeSignatureHelp
的 activeSignature 字段会根据用户通过箭头键切换可用签名而更新。
当签名帮助已激活时会发生重新触发,可能由输入触发字符、光标移动或文档内容更改等操作引起。
当签名帮助不是通过键入触发时(例如手动调用签名帮助或移动光标时),此值为 undefined
。
triggerKind: SignatureHelpTriggerKind
导致触发签名帮助的操作。
方法
签名帮助提供程序接口定义了扩展与 参数提示 功能之间的契约。
provideSignatureHelp(document: TextDocument, position: Position, token: CancellationToken, context: SignatureHelpContext): ProviderResult<SignatureHelp>
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
position: Position | 调用命令的位置。 |
token: CancellationToken | 取消令牌。 |
为给定位置和文档处的签名提供帮助。 | context: SignatureHelpContext |
返回 | 描述 |
关于签名帮助如何被触发的信息。 |
签名帮助或解析为签名帮助的 thenable。可以通过返回 undefined
或 null
来表示没有结果。
属性
关于已注册的 SignatureHelpProvider 的元数据。
这些触发字符仅在签名帮助已显示时才激活。所有触发字符也被算作重新触发字符。
触发签名帮助的字符列表。
枚举成员
SignatureHelpProvider 如何被触发。
签名帮助由用户手动或通过命令调用。
签名帮助由触发字符触发。
签名帮助由光标移动或文档内容更改触发。
构造函数
代表可调用对象的签名。签名可以有标签(如函数名)、文档注释和一组参数。
new SignatureInformation(label: string, documentation?: string | MarkdownString): SignatureInformation
参数 | 描述 |
---|---|
label: string | 创建新的签名信息对象。 |
documentation?: string | MarkdownString | 文档字符串。 |
返回 | 描述 |
标签字符串。 |
属性
SignatureInformation
如果提供,则代替 SignatureHelp.activeParameter 使用。
此签名的人类可读文档注释。将在 UI 中显示,但可以省略。
documentation?: string | MarkdownString
此签名的标签。将显示在 UI 中。
此签名的标签。将显示在 UI 中。
parameters: ParameterInformation[]
构造函数
代码片段字符串是允许插入文本并在插入发生时控制编辑器光标的模板。
代码片段可以使用 $1
、$2
和 ${3:foo}
定义制表位和占位符。$0
定义最终制表位,默认为代码片段的末尾。变量使用 $name
和 ${name:default value}
定义。另请参阅 完整的代码片段语法。
参数 | 描述 |
---|---|
value?: string | new SnippetString(value?: string): SnippetString |
返回 | 描述 |
创建新的代码片段字符串。 |
属性
代码片段字符串。
SnippetString
方法
代码片段字符串。
参数 | 描述 |
---|---|
appendChoice(values: readonly string[], number?: number): SnippetString | 构建器函数,将选择( |
values: readonly string[] | 选择的值 - 字符串数组。 |
返回 | 描述 |
创建新的代码片段字符串。 | number?: number |
此制表位的编号,默认为从 1 开始的自增值。
此代码片段字符串。
参数 | 描述 |
---|---|
appendPlaceholder(value: string | (snippet: SnippetString) => any, number?: number): SnippetString | 构建器函数,将占位符( |
values: readonly string[] | 选择的值 - 字符串数组。 |
返回 | 描述 |
创建新的代码片段字符串。 | number?: number |
value: string | (snippet: SnippetString) => any
此占位符的值 - 可以是字符串,也可以是用于创建嵌套代码片段的函数。
参数 | 描述 |
---|---|
values: readonly string[] | 选择的值 - 字符串数组。 |
返回 | 描述 |
创建新的代码片段字符串。 | number?: number |
appendTabstop(number?: number): SnippetString
构建器函数,将制表位($1
、$2
等)附加到此代码片段字符串的 value。
参数 | 描述 |
---|---|
appendText(string: string): SnippetString | 构建器函数,将给定字符串附加到此代码片段字符串的 value。 |
返回 | 描述 |
创建新的代码片段字符串。 | number?: number |
string: string
要“按原样”附加的值。字符串将被转义。
参数 | 描述 |
---|---|
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | appendVariable(name: string, defaultValue: string | (snippet: SnippetString) => any): SnippetString |
构建器函数,将变量(${VAR} )附加到此代码片段字符串的 value。 | 变量的名称 - 不包括 |
返回 | 描述 |
创建新的代码片段字符串。 | number?: number |
defaultValue: string | (snippet: SnippetString) => any
Static
代码片段编辑表示由编辑器执行的交互式编辑。
注意,代码片段编辑始终可以作为普通 文本编辑 执行。这将在没有匹配编辑器打开时发生,或当 工作区编辑 包含多个文件的代码片段编辑时发生。在这种情况下,只有与活动编辑器匹配的编辑将作为代码片段编辑执行,其他编辑将作为普通文本编辑执行。
参数 | 描述 |
---|---|
position: Position | insert(position: Position, snippet: SnippetString): SnippetTextEdit |
创建插入代码片段编辑的实用程序。 | new SnippetString(value?: string): SnippetString |
返回 | 描述 |
一个位置,将成为一个空范围。 | snippet: SnippetString |
SnippetTextEdit
新的代码片段编辑对象。
参数 | 描述 |
---|---|
range: Range | 一个范围。 |
创建插入代码片段编辑的实用程序。 | new SnippetString(value?: string): SnippetString |
返回 | 描述 |
一个位置,将成为一个空范围。 | snippet: SnippetString |
构造函数
replace(range: Range, snippet: SnippetString): SnippetTextEdit
创建替换代码片段编辑的实用程序。
参数 | 描述 |
---|---|
range: Range | 一个范围。 |
创建插入代码片段编辑的实用程序。 | new SnippetString(value?: string): SnippetString |
返回 | 描述 |
一个位置,将成为一个空范围。 |
属性
new SnippetTextEdit(range: Range, snippet: SnippetString): SnippetTextEdit
创建新的代码片段编辑。
代码片段编辑应用时是否保留现有空白。
range: Range
此编辑应用的范围。
snippet: SnippetString
此编辑将执行的 代码片段。
构造函数
由源位置指定的断点。
参数 | 描述 |
---|---|
location: Location | |
enabled?: boolean | |
condition?: string | |
hitCondition?: string | |
logMessage?: string | |
返回 | 描述 |
new SourceBreakpoint(location: Location, enabled?: boolean, condition?: string, hitCondition?: string, logMessage?: string): SourceBreakpoint |
属性
为源位置创建新断点。
条件断点的可选表达式。
SourceBreakpoint
断点是否已启用。
控制忽略断点命中次数的可选表达式。
断点的唯一 ID。
此断点的源文件和行位置。
命中此断点时记录的可选消息。{} 中的嵌入表达式由调试适配器内插。
SourceControl
属性
acceptInputCommand?: Command
location: Location
此断点的源和行位置。
源代码管理能够向编辑器提供 资源状态,并以多种与源代码管理相关的方式与编辑器交互。
可选的提交模板字符串。
在适当时,源代码管理视图将使用此值填充源代码管理输入框。
此源代码管理的 UI 可见 资源状态 计数。
如果未定义,此源代码管理将
将其 UI 可见计数显示为零,并且
将其 资源状态 的计数贡献给所有源代码管理的 UI 可见总计数。
此源代码管理的 id。
inputBox: SourceControlInputBox
此源代码管理的 输入框。
方法
quickDiffProvider?: QuickDiffProvider
此源代码管理根目录的(可选)Uri。
statusBarCommands?: Command[]
参数 | 描述 |
---|---|
返回 | 描述 |
void |
可选的状态栏命令。
这些命令将显示在编辑器的状态栏中。
属性
createResourceGroup(id: string, label: string): SourceControlResourceGroup
创建新的 资源组。
SourceControlResourceGroup
释放此源代码管理。
代表源代码管理视图中的输入框。
控制输入框是否启用(默认为 true
)。
属性
在输入框中显示为占位符以指导用户的字符串。
输入框内容的设置器和获取器。
控制输入框是否可见(默认为 true
)。
源代码管理资源状态 的装饰。可以分别为浅色和深色主题独立指定。
深色主题装饰。
源代码管理资源状态 是否应在 UI 中淡化。
特定 源代码管理资源状态 的图标路径。
属性
浅色主题装饰。
"contributes": {
"menus": {
"scm/resourceGroup/context": [
{
"command": "extension.export",
"when": "scmResourceGroupState == exportable"
}
]
}
}
源代码管理资源状态 是否应在 UI 中带有删除线。
特定 源代码管理资源状态 的标题。
源代码管理资源组是 源代码管理资源状态 的集合。
资源组的上下文值。这可用于贡献特定于资源组的操作。例如,如果一个资源组的上下文值被赋予 exportable
,在使用 menus
扩展点贡献动作到 scm/resourceGroup/context
时,您可以在 when
表达式中为键 scmResourceGroupState
指定上下文值,例如 scmResourceGroupState == exportable
。
这将只显示 contextValue
等于 exportable
的资源组的动作 extension.export
。
方法
当此源代码管理资源组不包含 源代码管理资源状态 时是否隐藏。
此源代码管理资源组的 id。
属性
此源代码管理资源组的标签。
resourceStates: SourceControlResourceState[]
此组的 源代码管理资源状态 集合。
源代码管理资源状态代表特定 源代码管理组 中基础工作区资源的状态。
command?: Command
在源代码管理视图中打开资源状态时应运行的 命令。
contextValue?: string
资源状态的上下文值。这可用于贡献特定于资源的操作。例如,如果一个资源的上下文值被赋予 diffable
。在使用 menus
扩展点贡献动作到 scm/resourceState/context
时,您可以在 when
表达式中为键 scmResourceState
指定上下文值,例如 scmResourceState == diffable
。
属性
这将只显示 contextValue
为 diffable
的资源的动作 extension.diff
。
decorations?: SourceControlResourceDecorations
此源代码管理资源状态的 装饰。
构造函数
resourceUri: Uri
属性
包含单个语句或行的覆盖率信息。
new StatementCoverage(executed: number | boolean, location: Range | Position, branches?: BranchCoverage[]): StatementCoverage
工作区内基础资源的 Uri。
此语句执行的次数,如果确切计数未知,则为指示是否已执行的布尔值。如果为零或 false,则该语句将被标记为未覆盖。
语句位置。
branches?: BranchCoverage[]
表示状态栏项的对齐方式。
枚举成员
此行的分支的覆盖率。如果不是条件语句,则应省略。
左对齐。
StatementCoverage
右对齐。
branches: BranchCoverage[]
此行或语句的分支的覆盖率。如果不是条件语句,此项将为空。
属性
屏幕阅读器与此状态栏项交互时使用的辅助功能信息
语句位置。
状态栏项是状态栏贡献的一部分,可以显示文本和图标,并在点击时运行命令。
accessibilityInformation: AccessibilityInformation
屏幕阅读器与此状态栏项交互时使用的可访问性信息。
此项的对齐方式。
此项的标识符。
backgroundColor: ThemeColor
此项的背景颜色。
注意:仅支持以下颜色:
new ThemeColor('statusBarItem.errorBackground')
new ThemeColor('statusBarItem.warningBackground')
未来可能会支持更多背景颜色。
要显示的文本。您可以通过利用以下语法在文本中嵌入图标
My text $(icon-name) contains icons like $(icon-name) this one.
其中 icon-name 取自 ThemeIcon 图标集,例如 light-bulb
、thumbsup
、zap
等。
注意:设置背景颜色时,状态栏可能会覆盖 color
选择,以确保该项在所有主题中都可读。
color: string | ThemeColor
方法
此项的前景颜色。
command: string | Command
参数 | 描述 |
---|---|
返回 | 描述 |
void |
点击时运行的 命令 或命令标识符。
注意:如果 window.createStatusBarItem 方法未提供标识符,则标识符将与 扩展标识符 匹配。
此项的名称,例如“Python 语言指示器”、“Git 状态”等。尽量保持名称简短,但要有足够的描述性,以便用户理解状态栏项的含义。
构造函数
此项的优先级。值越高表示该项应显示在更左侧。
参数 | 描述 |
---|---|
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | 符号的名称。 |
kind: SymbolKind | 符号的种类。 |
containerName: string | tooltip: string | MarkdownString |
location: Location | 悬停在此项上时显示的工具提示文本。 |
返回 | 描述 |
dispose(): void |
释放并清除关联的资源。调用 hide。
参数 | 描述 |
---|---|
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | 符号的名称。 |
kind: SymbolKind | 符号的种类。 |
range: Range | 在状态栏中隐藏此项。 |
show(): void | 在状态栏中显示此项。 |
SymbolInformation | tooltip: string | MarkdownString |
返回 | 描述 |
dispose(): void |
属性
代表有关变量、类、接口等编程构造的信息。
new SymbolInformation(name: string, kind: SymbolKind, containerName: string, location: Location): SymbolInformation
创建新的符号信息对象。
此符号的种类。
containerName: string
包含此符号的符号名称。
location: Location
此符号的名称。
tags?: readonly SymbolTag[]
此符号的标签。
SymbolKind
一种符号类型。
枚举成员
File
符号类型。
Module
符号类型。
Namespace
符号类型。
Package
符号类型。
Class
符号类型。
Method
符号类型。
Property
符号类型。
Field
符号类型。
Constructor
符号类型。
Enum
符号类型。
Interface
符号类型。
Function
符号类型。
Variable
符号类型。
Constant
符号类型。
String
符号类型。
Number
符号类型。
Boolean
符号类型。
Array
符号类型。
Object
符号类型。
Key
符号类型。
Null
符号类型。
EnumMember
符号类型。
Struct
符号类型。
Event
符号类型。
Operator
符号类型。
TypeParameter
符号类型。
SymbolTag
符号标签是额外的注释,可以调整符号的渲染方式。
枚举成员
将符号渲染为已过时,通常带有删除线。
SyntaxTokenType
常见语法标记类型的枚举。
枚举成员
除注释、字符串字面量和正则表达式部分之外的所有标记。
注释。
字符串字面量。
正则表达式。
Tab
表示一个 标签页组 中的一个标签页。标签页只是编辑器区域内的图形表示。不保证有后备编辑器。
属性
group: TabGroup
该标签页所属的组。
定义标签页的结构,例如文本、笔记本、自定义等。资源和其他有用属性在标签页类型上定义。
该标签页当前是否处于活动状态。这取决于其是否是组中选中的标签页。
该标签页上是否存在未保存指示器。
该标签页是否已固定(固定图标是否存在)。
该标签页是否处于预览模式。
标签页上显示的文本。
TabChangeEvent
描述标签页变化的事件。
属性
changed: readonly Tab[]
已更改的标签页,例如其 活动 状态已更改。
closed: readonly Tab[]
已关闭的标签页。
opened: readonly Tab[]
已打开的标签页。
TabGroup
表示一个标签页组。标签页组本身包含多个标签页。
属性
activeTab: Tab
tabs: readonly Tab[]
组中包含的标签页列表。如果组中没有打开的标签页,则此列表可能为空。
viewColumn: ViewColumn
该组的视图列。
TabGroupChangeEvent
描述标签页组变化的事件。
属性
changed: readonly TabGroup[]
已更改的标签页组,例如其 活动 状态已更改。
closed: readonly TabGroup[]
已关闭的标签页组。
opened: readonly TabGroup[]
已打开的标签页组。
TabGroups
表示主编辑器区域,它由多个包含标签页的组组成。
事件
onDidChangeTabGroups: Event<TabGroupChangeEvent>
onDidChangeTabs: Event<TabChangeEvent>
属性
activeTabGroup: TabGroup
当前活动组。
all: readonly TabGroup[]
组容器内的所有组。
方法
close(tab: Tab | readonly Tab[], preserveFocus?: boolean): Thenable<boolean>
关闭标签页。这会使标签页对象失效,并且不应再将该标签页用于进一步的操作。注意:对于未保存的标签页,将显示一个确认对话框,该对话框可能会被取消。如果取消,标签页仍然有效。
close(tabGroup: TabGroup | readonly TabGroup[], preserveFocus?: boolean): Thenable<boolean>
关闭标签页组。这会使标签页组对象失效,并且不应再将该标签页组用于进一步的操作。
TabInputCustom
该标签页表示一个自定义编辑器。
构造函数
new TabInputCustom(uri: Uri, viewType: string): TabInputCustom
构造一个自定义编辑器标签页输入。
参数 | 描述 |
---|---|
uri: Uri | 标签页的 uri。 |
viewType: string | 自定义编辑器的 viewtype。 |
返回 | 描述 |
TabInputCustom |
属性
uri: Uri
标签页所表示的 uri。
自定义编辑器的类型。
TabInputNotebook
该标签页表示一个笔记本。
构造函数
new TabInputNotebook(uri: Uri, notebookType: string): TabInputNotebook
为笔记本构造一个新的标签页输入。
参数 | 描述 |
---|---|
uri: Uri | 笔记本的 uri。 |
createNotebookController(id: string, notebookType: string, label: string, handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>): NotebookController | 笔记本的类型。映射到 NotebookDocument 的 notebookType |
返回 | 描述 |
TabInputNotebook |
属性
笔记本的类型。映射到 NotebookDocument 的 notebookType
uri: Uri
标签页所表示的 uri。
TabInputNotebookDiff
该标签页以差异配置表示两个笔记本。
构造函数
new TabInputNotebookDiff(original: Uri, modified: Uri, notebookType: string): TabInputNotebookDiff
构造一个笔记本差异标签页输入。
参数 | 描述 |
---|---|
original: Uri | 原始未修改笔记本的 uri。 |
modified: Uri | 修改后笔记本的 uri。 |
createNotebookController(id: string, notebookType: string, label: string, handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>): NotebookController | 笔记本的类型。映射到 NotebookDocument 的 notebookType |
返回 | 描述 |
TabInputNotebookDiff |
属性
modified: Uri
修改后笔记本的 uri。
笔记本的类型。映射到 NotebookDocument 的 notebookType
original: Uri
原始笔记本的 uri。
TabInputTerminal
该标签页表示编辑器区域中的一个终端。
构造函数
new TabInputTerminal(): TabInputTerminal
构造一个终端标签页输入。
参数 | 描述 |
---|---|
返回 | 描述 |
TabInputTerminal |
TabInputText
该标签页表示单个基于文本的资源。
构造函数
new TabInputText(uri: Uri): TabInputText
使用给定的 URI 构造一个文本标签页输入。
参数 | 描述 |
---|---|
uri: Uri | 标签页的 URI。 |
返回 | 描述 |
TabInputText |
属性
uri: Uri
标签页表示的 uri。
TabInputTextDiff
该标签页表示两个基于文本的资源,并将其呈现为差异。
构造函数
new TabInputTextDiff(original: Uri, modified: Uri): TabInputTextDiff
使用给定的 URIs 构造一个新的文本差异标签页输入。
参数 | 描述 |
---|---|
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 | 指定任务的作用域。它可以是全局任务、工作区任务或特定工作区文件夹的任务。全局任务目前不受支持。 |
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | 任务的名称。在用户界面中显示。 |
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 扩展点中所定义。 |
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | 任务的名称。在用户界面中显示。 |
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
任务的分组。编辑器默认支持“Clean”、“Build”、“RebuildAll”和“Test”组。
Static
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>
解析一个没有设置 执行 的任务。任务通常从 tasks.json
文件中找到的信息创建。此类任务缺少如何执行它们的信息,任务提供者必须在 resolveTask
方法中填充缺失的信息。此方法不会为从上面的 provideTasks
方法返回的任务调用,因为这些任务总是完全解析的。resolveTask
方法的一个有效默认实现是返回 undefined
。
请注意,在填充 task
的属性时,您必须确保使用完全相同的 TaskDefinition
,而不要创建一个新的。其他属性可能会更改。
参数 | 描述 |
---|---|
task: T | 要解析的任务。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T> | 已解析的任务 |
TaskRevealKind
控制终端可见性的行为。
枚举成员
如果执行任务,始终将终端置于前台。
仅当检测到执行任务时出现问题(例如,任务无法启动)时才将终端置于前台。
执行任务时,终端永远不会置于前台。
TaskScope
任务的作用域。
枚举成员
该任务是全局任务。全局任务目前不受支持。
该任务是工作区任务
TaskStartEvent
表示任务执行开始的事件。
此接口不应被实现。
属性
execution: TaskExecution
表示已启动任务的任务项。
TelemetryLogger
一个遥测记录器,扩展可用于记录使用情况和错误遥测。
记录器包装了一个 发送者,但它保证
- 遵守用户用于禁用或调整遥测的设置,并且
- 潜在的敏感数据会被移除
它还启用了一个“回显 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>
可选的 flush 函数,在 TelemetryLogger 被释放时,它会给此发送者机会发送任何剩余事件
参数 | 描述 |
---|---|
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
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
终端的退出状态,在终端处于活动状态时将为 undefined。
示例: 当终端以非零退出代码退出时,显示带有退出代码的通知。
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)的标准输入。
参数 | 描述 |
---|---|
text: string | 要发送的文本。 |
shouldExecute?: boolean | 指示要发送的文本应被执行,而不仅仅是插入到终端中。添加的字符为 |
返回 | 描述 |
void |
show(preserveFocus?: boolean): void
显示终端面板并在 UI 中显示此终端。
参数 | 描述 |
---|---|
preserveFocus?: boolean | 当为 |
返回 | 描述 |
void |
TerminalDimensions
表示终端的尺寸。
属性
终端的列数。
终端的行数。
TerminalEditorLocationOptions
假设 TerminalLocation 为编辑器,并允许指定 ViewColumn 和 preserveFocus 属性。
属性
一个可选标志,当为 true
时,将阻止 终端 获取焦点。
viewColumn: ViewColumn
终端 应在编辑器区域中显示的视图列。默认为 活动 视图列。不存在的列将根据需要创建,最多可达 ViewColumn.Nine。使用 ViewColumn.Beside 在当前活动的编辑器旁边打开编辑器。
TerminalExitReason
终端退出原因类型。
枚举成员
未知原因。
窗口已关闭/重新加载。
shell 进程已退出。
用户关闭了终端。
扩展程序释放了终端。
TerminalExitStatus
表示终端的退出方式。
属性
终端退出的退出代码,它可能具有以下值:
- 零:终端进程或自定义执行成功。
- 非零:终端进程或自定义执行失败。
undefined
:用户强制关闭了终端或自定义执行退出时未提供退出代码。
reason: TerminalExitReason
触发终端退出的原因。
TerminalLink
终端行上的链接。
构造函数
new TerminalLink(startIndex: number, length: number, tooltip?: string): TerminalLink
创建一个新的终端链接。
参数 | 描述 |
---|---|
startIndex: number | 链接在 TerminalLinkContext.line 上的起始索引。 |
length: number | 链接在 TerminalLinkContext.line 上的长度。 |
tooltip?: string | 将鼠标悬停在此链接上时显示的工具提示文本。 如果提供了工具提示,它将显示在一个字符串中,其中包含如何触发链接的说明,例如 |
返回 | 描述 |
TerminalLink |
属性
链接在 TerminalLinkContext.line 上的长度。
链接在 TerminalLinkContext.line 上的起始索引。
将鼠标悬停在此链接上时显示的工具提示文本。
如果提供了工具提示,它将显示在一个字符串中,其中包含如何触发链接的说明,例如 {0} (ctrl + click)
。具体说明因操作系统、用户设置和本地化而异。
TerminalLinkContext
提供终端行信息以便为其提供链接。
属性
这是终端中未换行行的文本。
terminal: Terminal
链接所属的终端。
TerminalLinkProvider<T>
一个提供程序,用于在终端中检测和处理链接。
方法
handleTerminalLink(link: T): ProviderResult<void>
处理激活的终端链接。
参数 | 描述 |
---|---|
link: T | 要处理的链接。 |
返回 | 描述 |
ProviderResult<void> |
provideTerminalLinks(context: TerminalLinkContext, token: CancellationToken): ProviderResult<T[]>
为给定上下文提供终端链接。请注意,即使在先前的调用解析之前,此方法也可能被多次调用,请确保不要共享全局对象 (例如 RegExp
),因为它们在异步使用可能重叠时会出问题。
参数 | 描述 |
---|---|
context: TerminalLinkContext | 有关正在为其提供链接的信息。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T[]> | 给定行的终端链接列表。 |
TerminalLocation
终端的位置。
枚举成员
在终端视图中
在编辑器区域中
TerminalOptions
描述终端应使用哪些选项的值对象。
属性
color?: ThemeColor
终端图标的 ThemeColor。建议使用 terminal.ansi*
主题键,以在不同主题之间获得最佳对比度和一致性。
cwd?: string | Uri
终端应使用的当前工作目录的路径或 Uri。
将添加到编辑器进程的环境变量对象。
启用后,终端将正常运行进程,但在调用 Terminal.show
之前不会显示给用户。典型用法是当你需要运行可能需要交互的内容,但只希望在需要交互时通知用户时。请注意,终端仍将正常暴露给所有扩展。隐藏的终端在下次打开工作区时不会恢复。
iconPath?: IconPath
终端的图标路径或 ThemeIcon。
选择退出重启和重新加载时的默认终端持久性。这仅在启用 terminal.integrated.enablePersistentSessions
时生效。
location?: TerminalEditorLocationOptions | TerminalSplitLocationOptions | TerminalLocation
首次启动时写入终端的消息,请注意这不会发送到进程,而是直接写入终端。这支持设置文本样式等转义序列。
一个人类可读的字符串,将用于在 UI 中表示终端。
自定义 shell 可执行文件的参数。在 Windows 上可以使用字符串来指定命令行格式的 shell 参数。
终端中使用的自定义 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 | openContext: CustomDocumentOpenContext |
返回 | 描述 |
ProviderResult<TerminalProfile> | 终端配置文件。 |
TerminalShellExecution
在终端中执行的命令。
属性
commandLine: TerminalShellExecutionCommandLine
已执行的命令行。此值的 置信度 取决于特定 shell 的 shell 集成实现。在触发 window.onDidEndTerminalShellExecution 后,此值可能会变得更准确。
示例
// Log the details of the command line on start and end
window.onDidStartTerminalShellExecution(event => {
const commandLine = event.execution.commandLine;
console.log(`Command started\n${summarizeCommandLine(commandLine)}`);
});
window.onDidEndTerminalShellExecution(event => {
const commandLine = event.execution.commandLine;
console.log(`Command ended\n${summarizeCommandLine(commandLine)}`);
});
function summarizeCommandLine(commandLine: TerminalShellExecutionCommandLine) {
return [
` Command line: ${command.commandLine.value}`,
` Confidence: ${command.commandLine.confidence}`,
` Trusted: ${command.commandLine.isTrusted}
].join('\n');
}
cwd: Uri
shell 执行此命令时报告的工作目录。此 Uri 可能表示另一台机器上的文件 (例如,通过 ssh 连接到另一台机器)。这要求 shell 集成支持工作目录报告。
方法
创建写入终端的原始数据流 (包括转义序列)。这仅包含在首次调用 `read` 后写入的数据,即,你必须在通过 TerminalShellIntegration.executeCommand 或 window.onDidStartTerminalShellExecution 执行命令后立即调用 `read`,以免错过任何数据。
示例
// Log all data written to the terminal for a command
const command = term.shellIntegration.executeCommand({ commandLine: 'echo "Hello world"' });
const stream = command.read();
for await (const data of stream) {
console.log(data);
}
参数 | 描述 |
---|---|
返回 | 描述 |
AsyncIterable<string> |
TerminalShellExecutionCommandLine
在终端中执行的命令行。
属性
confidence: TerminalShellExecutionCommandLineConfidence
命令行值的 置信度,由获取值的方式决定。这取决于 shell 集成脚本的实现。
命令行值是否来自可信来源,因此可以安全执行,无需用户额外确认 (例如询问“是否要执行 (命令)?” 的通知)。如果你要再次执行该命令,才可能需要此验证。
仅当命令行由 shell 集成脚本明确报告 (即 高置信度),并且它使用了 nonce 进行验证时,此项为 true
。
执行的完整命令行,包括命令及其参数。
TerminalShellExecutionCommandLineConfidence
枚举成员
命令行值的 置信度 很低。这意味着该值是使用 shell 集成脚本报告的标记从终端缓冲区中读取的。此外,还将满足以下条件之一:
- 命令从最左侧列开始 (这不常见),或者
- 命令是多行的,由于换行符和右侧提示符,更难准确检测。
- shell 集成脚本未报告命令行标记。
命令行值的 置信度 为中等。这意味着该值是使用 shell 集成脚本报告的标记从终端缓冲区中读取的。命令是单行的,并且没有从最左侧列开始 (这不常见)。
命令行值的 置信度 很高。这意味着该值是 shell 集成脚本明确发送的,或者命令是通过 TerminalShellIntegration.executeCommand API 执行的。
TerminalShellExecutionEndEvent
指示终端中执行已结束的事件。
属性
execution: TerminalShellExecution
已结束的终端 shell 执行。
shell 报告的退出代码。
当此项为 undefined
时,可能意味着以下几点:
- shell 未报告退出代码 (即 shell 集成脚本行为不正常)
- shell 在命令完成之前报告命令已开始 (例如,打开了子 shell)。
- 用户通过 ctrl+c 取消了命令。
- 用户在没有输入时按下了 Enter 键。
通常不应该发生这种情况。根据用例,最好将此视为失败。
示例
const execution = shellIntegration.executeCommand({
command: 'echo',
args: ['Hello world']
});
window.onDidEndTerminalShellExecution(event => {
if (event.execution === execution) {
if (event.exitCode === undefined) {
console.log('Command finished but exit code is unknown');
} else if (event.exitCode === 0) {
console.log('Command succeeded');
} else {
console.log('Command failed');
}
}
});
shellIntegration: TerminalShellIntegration
shell 集成对象。
terminal: Terminal
已激活 shell 集成的终端。
TerminalShellExecutionStartEvent
指示终端中执行已开始的事件。
属性
execution: TerminalShellExecution
已结束的终端 shell 执行。
shellIntegration: TerminalShellIntegration
shell 集成对象。
terminal: Terminal
已激活 shell 集成的终端。
TerminalShellIntegration
终端拥有的由shell 集成支持的功能。
属性
cwd: Uri
终端的当前工作目录。此 Uri 可能表示另一台机器上的文件 (例如,通过 ssh 连接到另一台机器)。这要求 shell 集成支持工作目录报告。
方法
executeCommand(commandLine: string): TerminalShellExecution
执行命令,如有必要,发送 ^C 以中断任何正在运行的命令。
示例
// 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.
}
参数 | 描述 |
---|---|
使用完整命令行创建 shell 执行。 | 要执行的命令行,这是将发送到终端的确切文本。 |
返回 | 描述 |
TerminalShellExecution |
executeCommand(executable: string, args: string[]): TerminalShellExecution
执行命令,如有必要,发送 ^C 以中断任何正在运行的命令。
注意:这不能保证奏效,因为必须激活shell 集成。检查 TerminalShellExecution.exitCode 是否被拒绝,以验证它是否成功。
示例
// Execute a command in a terminal immediately after being created
const myTerm = window.createTerminal();
window.onDidChangeTerminalShellIntegration(async ({ terminal, shellIntegration }) => {
if (terminal === myTerm) {
const command = shellIntegration.executeCommand({
command: 'echo',
args: ['Hello world']
});
const code = await command.exitCode;
console.log(`Command exited with code ${code}`);
}
}));
// Fallback to sendText if there is no shell integration within 3 seconds of launching
setTimeout(() => {
if (!myTerm.shellIntegration) {
myTerm.sendText('echo "Hello world"');
// Without shell integration, we can't know when the command has finished or what the
// exit code was.
}
}, 3000);
示例
// Send command to terminal that has been alive for a while
const commandLine = 'echo "Hello world"';
if (term.shellIntegration) {
const command = term.shellIntegration.executeCommand({
command: 'echo',
args: ['Hello world']
});
const code = await command.exitCode;
console.log(`Command exited with code ${code}`);
} else {
term.sendText(commandLine);
// Without shell integration, we can't know when the command has finished or what the
// exit code was.
}
参数 | 描述 |
---|---|
executable: string | 要运行的命令。 |
args: string[] | 启动可执行文件时使用的参数。参数将被转义,以便在参数既包含空格又不包含任何单引号、双引号或反引号字符时,它们被解释为单个参数。 请注意,此转义并非旨在作为安全措施,将不受信任的数据传递给此 API 时请务必小心,因为 |
返回 | 描述 |
TerminalShellExecution |
TerminalShellIntegrationChangeEvent
指示终端的 shell 集成已更改的事件。
属性
shellIntegration: TerminalShellIntegration
shell 集成对象。
terminal: Terminal
已激活 shell 集成的终端。
TerminalSplitLocationOptions
使用父 Terminal 的位置作为此终端的位置。
属性
parentTerminal: Terminal
将此终端拆分到其旁边的父终端。无论父终端位于面板中还是编辑器区域中,这都适用。
TerminalState
表示 Terminal 的状态。
属性
Terminal 是否已与其交互。交互意味着终端已向进程发送数据,具体取决于终端的 *模式*。默认情况下,在按下按键或命令或扩展发送文本时发送输入,但根据终端的模式,交互也可能发生在:
- 指针点击事件
- 指针滚动事件
- 指针移动事件
- 终端获得/失去焦点
有关可以发送数据的事件的更多信息,请参阅 https://invisible-island.net/xterm/ctlseqs/ctlseqs.html 上的“DEC Private Mode Set (DECSET)”。
Terminal 检测到的 shell 类型。当 shell 是什么没有明确信号,或者 shell 尚不受支持时,此项将为 undefined
。此值应在启动子 shell 时更改为子 shell 的类型 (例如,在 zsh
中运行 bash
)。
请注意,可能的值目前定义为以下任意值:'bash'、'cmd'、'csh'、'fish'、'gitbash'、'julia'、'ksh'、'node'、'nu'、'pwsh'、'python'、'sh'、'wsl'、'zsh'。
TestController
发现和执行测试的入口点。它包含用于填充编辑器 UI 的 TestController.items,并与 运行配置文件 关联以允许执行测试。
属性
在 tests.createTestController 中传递的控制器 ID。此 ID 必须全局唯一。
items: TestItemCollection
“顶级”TestItem 实例的集合,它们自身可以拥有 子项 以形成“测试树”。
扩展程序控制何时添加测试。例如,为了使文件中测试的装饰可见,扩展程序应在触发 workspace.onDidOpenTextDocument 时添加文件的测试。
但是,编辑器有时可以使用 resolveHandler 显式请求子项。有关该方法的更多详细信息,请参阅文档。
测试控制器的人类可读标签。
refreshHandler: (token: CancellationToken) => void | Thenable<void>
如果存在此方法,UI 中将显示一个刷新按钮,单击该按钮时将调用此方法。调用时,扩展程序应扫描工作区以查找任何新增、已更改或已删除的测试。
建议扩展程序尝试使用 FileSystemWatcher 等工具实时更新测试,并将此方法用作回退。
参数 | 描述 |
---|---|
token: CancellationToken | |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 | 当测试已刷新时解析的 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 | 测试项的人类可读标签。 |
show(): void | 此 TestItem 关联的 URI。可以是文件或目录。 |
返回 | 描述 |
TestItem |
createTestRun(request: TestRunRequest, name?: string, persist?: boolean): TestRun
创建 TestRun。当请求执行测试时,TestRunProfile 应调用此方法,如果外部检测到测试运行,也可以调用此方法。创建后,请求中包含的测试将进入队列状态。
使用同一 request
实例创建的所有运行将分组在一起。例如,如果在多个平台上运行单个测试套件,这将非常有用。
参数 | 描述 |
---|---|
request: TestRunRequest | 测试运行请求。只有 |
name?: string | 运行的人类可读名称。这可用于区分测试运行中的多组结果。例如,如果在多个平台上运行测试,这将非常有用。 |
persist?: boolean | 运行创建的结果是否应保留在编辑器中。如果结果来自已外部保存的文件 (例如覆盖信息文件),此项可能为 false。 |
返回 | 描述 |
TestRun | TestRun 的实例。从调用此方法的那一刻起直到调用 TestRun.end,它将被视为“正在运行”。 |
注销测试控制器,释放其关联的测试和未持久化的结果。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
invalidateTestResults(items?: TestItem | readonly TestItem[]): void
将项的结果标记为已过时。这通常在代码或配置更改且先前结果不再被视为相关时调用。用于将结果标记为过时的相同逻辑可用于驱动 持续测试运行。
如果将项传递给此方法,则该项及其所有子项的测试结果都将标记为已过时。如果未传递任何项,则 TestController 拥有的所有测试都将标记为已过时。
在调用此方法之前开始的任何测试运行 (包括可能仍在进行的运行) 都将在编辑器 UI 中标记为已过时并降低优先级。
TestCoverageCount
一个类,包含有关覆盖资源的信息。可以提供文件中的行、分支和声明的计数。
构造函数
new TestCoverageCount(covered: number, total: number): TestCoverageCount
参数 | 描述 |
---|---|
covered: number | |
total: number | |
返回 | 描述 |
TestCoverageCount |
属性
文件中覆盖的项目数。
文件中覆盖的总项目数。
TestItem
“测试资源管理器”视图中显示的项。
一个 TestItem
可以表示测试套件或测试本身,因为它们都具有相似的功能。
属性
控制项在测试资源管理器视图中是否显示为“忙碌”。这对于在发现子项时显示状态很有用。
默认为 false
。
指示此测试项是否可以通过解析发现子项。
如果为 true,此项将在测试资源管理器视图中显示为可展开,展开该项将导致调用 TestController.resolveHandler 并传入该项。
默认为 false
。
children: TestItemCollection
此测试项的子项。对于测试套件,这可能包含单个测试用例或嵌套套件。
显示在标签旁边的可选描述。
error: string | MarkdownString
加载测试时遇到的可选错误。
请注意,这不是测试结果,应仅用于表示测试发现中的错误,例如语法错误。
TestItem
的标识符。用于将测试结果和文档中的测试与工作区 (测试资源管理器) 中的测试关联起来。此 ID 在 TestItem
的整个生命周期内不能更改,并且在其父项的直接子项中必须是唯一的。
描述测试用例的显示名称。
parent: TestItem
此项的父项。它会自动设置,对于 TestController.items 中的顶级项以及尚未包含在其他项的 子项 中的项,此项为 undefined。
range: Range
测试项在其 uri 中的位置。
仅当 uri
指向文件时,此项才有意义。
与其他项比较此项时应使用的字符串。当为 falsy
时,使用 label。
tags: readonly TestTag[]
与此测试项关联的标记。可以与 tags 结合使用,或者仅作为组织功能使用。
uri: Uri
此 TestItem
关联的 URI。可以是文件或目录。
TestItemCollection
测试项集合,位于 TestItem.children 和 TestController.items 中。
属性
获取集合中的项数。
方法
add(item: TestItem): void
将测试项添加到子项中。如果已存在具有相同 ID 的项,则将其替换。
参数 | 描述 |
---|---|
item: TestItem | 要添加的项。 |
返回 | 描述 |
void |
从集合中移除单个测试项。
参数 | 描述 |
---|---|
itemId: string | 要删除的项 ID。 |
返回 | 描述 |
void |
forEach(callback: (item: TestItem, collection: TestItemCollection) => unknown, thisArg?: any): void
遍历此集合中的每个条目。
参数 | 描述 |
---|---|
callback: (item: TestItem, collection: TestItemCollection) => unknown | 对每个条目执行的函数。 |
thisArg?: any | 调用处理程序函数时使用的 |
返回 | 描述 |
void |
get(itemId: string): TestItem
如果存在,高效地按 ID 获取子项中的测试项。
参数 | 描述 |
---|---|
itemId: string | 要获取的项 ID。 |
返回 | 描述 |
TestItem | 找到的项,如果不存在则为 undefined。 |
replace(items: readonly TestItem[]): void
替换集合存储的项。
参数 | 描述 |
---|---|
items: readonly TestItem[] | 要存储的项。 |
返回 | 描述 |
void |
TestMessage
与测试状态关联的消息。可以链接到特定的源范围 -- 例如,对于断言失败很有用。
Static
diff(message: string | MarkdownString, expected: string, actual: string): TestMessage
创建将在编辑器中呈现为差异的新 TestMessage。
参数 | 描述 |
---|---|
message: string | MarkdownString | 向用户显示的消息。 |
expected: string | 预期输出。 |
actual: string | 实际输出。 |
返回 | 描述 |
TestMessage |
构造函数
new TestMessage(message: string | MarkdownString): TestMessage
创建新的 TestMessage 实例。
参数 | 描述 |
---|---|
message: string | MarkdownString | 要向用户显示的消息。 |
返回 | 描述 |
TestMessage |
属性
实际测试输出。如果与 expectedOutput 一起提供,将显示差异视图。
测试项的上下文值。这可用于向测试峰值视图贡献消息特定的操作。此处设置的值可以在以下 menus
贡献点的 testMessage
属性中找到:
testing/message/context
- 结果树中消息的上下文菜单testing/message/content
- 覆盖显示消息的编辑器内容的一个突出按钮。
例如
"contributes": {
"menus": {
"testing/message/content": [
{
"command": "extension.deleteCommentThread",
"when": "testMessage == canApplyRichDiff"
}
]
}
}
将调用命令并传入一个包含以下内容的对象:
test
:消息关联的 TestItem,如果它仍然存在于 TestController.items 集合中。message
:TestMessage 实例。
预期测试输出。如果与 actualOutput 一起提供,将显示差异视图。
location?: Location
关联的文件位置。
message: string | MarkdownString
要显示的人类可读消息文本。
stackTrace?: TestMessageStackFrame[]
与消息或失败关联的堆栈跟踪。
TestMessageStackFrame
在 TestMessage.stackTrace 中找到的堆栈帧。
构造函数
new TestMessageStackFrame(label: string, uri?: Uri, position?: Position): TestMessageStackFrame
参数 | 描述 |
---|---|
label: string | 堆栈帧的名称 |
show(): void | |
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[]>
扩展程序提供的一个函数,用于提供文件的详细语句和函数级覆盖率。当文件需要更多详细信息时,例如在编辑器中打开文件或在 Test Coverage 视图中展开文件时,编辑器将调用此函数。
传递给此函数的 FileCoverage 对象是与此配置文件关联的 TestRun.addCoverage 调用中发出的同一实例。
参数 | 描述 |
---|---|
testRun: TestRun | |
fileCoverage: FileCoverage | |
token: CancellationToken | |
返回 | 描述 |
Thenable<FileCoverageDetail[]> |
loadDetailedCoverageForTest?: (testRun: TestRun, fileCoverage: FileCoverage, fromTestItem: TestItem, token: CancellationToken) => Thenable<FileCoverageDetail[]>
扩展程序提供的一个函数,用于提供文件中单个测试的详细语句和函数级覆盖率。这是 TestRunProfile.loadDetailedCoverage 的按测试提供的对应函数,仅当 FileCoverage.includesTests 中提供了测试项时,并且仅对于报告了此类数据的文件时才调用。
用户打开文件时通常会首先调用 TestRunProfile.loadDetailedCoverage,然后如果用户深入查看特定的按测试覆盖率信息,则会调用此方法。此方法应仅返回特定测试在运行期间执行的语句和声明的覆盖率数据。
传递给此函数的 FileCoverage 对象是与此配置文件关联的 TestRun.addCoverage 调用中发出的同一实例。
参数 | 描述 |
---|---|
testRun: TestRun | 生成覆盖率数据的测试运行。 |
fileCoverage: FileCoverage | 要加载详细覆盖率的文件覆盖率对象。 |
fromTestItem: TestItem | 要请求覆盖率信息的测试项。 |
token: CancellationToken | 表示操作应取消的取消令牌。 |
返回 | 描述 |
Thenable<FileCoverageDetail[]> |
runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void>
调用以开始测试运行的处理程序。调用时,该函数应至少调用一次 TestController.createTestRun,并且与请求关联的所有测试运行都应在该函数返回或返回的 promise 解析之前创建。
如果设置了 supportsContinuousRun,则 TestRunRequest.continuous 可能为 true
。在这种情况下,配置文件应观察源代码的变化并通过调用 TestController.createTestRun 创建新的测试运行,直到在 token
上请求取消为止。
参数 | 描述 |
---|---|
request: TestRunRequest | 测试运行的请求信息。 |
token: CancellationToken | |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
supportsContinuousRun: boolean
此配置文件是否支持请求的持续运行。如果是,则 TestRunRequest.continuous 可能设置为 true
。默认为 false。
tag: TestTag
配置文件的关联标记。如果设置了此项,则只有具有相同标记的 TestItem 实例才有资格在此配置文件中执行。
方法
删除运行配置文件。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
TestRunProfileKind
TestRunProfiles 控制的执行类型。
枚举成员
Run
测试配置文件类型。
Debug
测试配置文件类型。
Coverage
测试配置文件类型。
TestRunRequest
TestRunRequest 是 TestRun 的前身,TestRun 又通过将请求传递给 TestController.createTestRun 来创建。TestRunRequest 包含有关应该运行哪些测试、不应运行哪些测试以及如何运行它们(通过 profile)的信息。
通常,TestRunRequests 由编辑器创建并传递给 TestRunProfile.runHandler,但你也可以在 runHandler
之外创建测试请求和运行。
构造函数
new TestRunRequest(include?: readonly TestItem[], exclude?: readonly TestItem[], profile?: TestRunProfile, continuous?: boolean, preserveFocus?: boolean): TestRunRequest
参数 | 描述 |
---|---|
include?: readonly TestItem[] | 要运行的特定测试数组,或 undefined 表示运行所有测试 |
exclude?: readonly TestItem[] | 要从运行中排除的测试数组。 |
profile?: TestRunProfile | 用于此请求的运行配置文件。 |
continuous?: boolean | 是否在源代码更改时持续运行测试。 |
preserveFocus?: boolean | 是否在运行开始时保留用户的焦点 |
返回 | 描述 |
TestRunRequest |
属性
配置文件是否应在源代码更改时持续运行。仅与设置了 TestRunProfile.supportsContinuousRun 的配置文件相关。
exclude: readonly TestItem[]
用户标记为从本次运行包含的测试中排除的测试数组;排除应在包含之后应用。
如果未请求排除,则可以省略。测试控制器不应运行已排除的测试或任何已排除测试的子项。
include: readonly TestItem[]
用于过滤要运行的特定测试。如果提供,扩展应运行所有包含的测试及其所有子项,排除出现在 TestRunRequest.exclude 中的任何测试。如果此属性未定义,则扩展应简单地运行所有测试。
运行测试的过程应该解析任何尚未解析的测试项的子项。
控制测试结果视图如何获得焦点。如果为 true,编辑器将保持用户的焦点。如果为 false,编辑器将倾向于将焦点移动到测试结果视图,尽管这可以由用户配置。
profile: TestRunProfile
用于此请求的配置文件。对于从编辑器 UI 发出的请求,此属性将始终被定义,但扩展可能会以编程方式创建不与任何配置文件关联的请求。
TestTag
标签可以与 TestItems 和 TestRunProfiles 相关联。带有标签的配置文件只能执行在其 TestItem.tags 数组中包含该标签的测试。
构造函数
new TestTag(id: string): TestTag
创建新的 TestTag 实例。
参数 | 描述 |
---|---|
id: string | 测试标签的 ID。 |
返回 | 描述 |
TestTag |
属性
测试标签的 ID。具有相同 ID 的 TestTag
实例被视为相同。
TextDocument
表示文本文档,例如源文件。文本文档具有 行 和有关底层资源(如文件)的知识。
属性
保存文档时将使用的此文档的文件编码。
使用 onDidChangeTextDocument 事件在文档编码更改时获得通知。
请注意,可能的编码值目前被定义为以下任意一种:“utf8”、“utf8bom”、“utf16le”、“utf16be”、“windows1252”、“iso88591”、“iso88593”、“iso885915”、“macroman”、“cp437”、“windows1256”、“iso88596”、“windows1257”、“iso88594”、“iso885914”、“windows1250”、“iso88592”、“cp852”、“windows1251”、“cp866”、“cp1125”、“iso88595”、“koi8r”、“koi8u”、“iso885913”、“windows1253”、“iso88597”、“windows1255”、“iso88598”、“iso885910”、“iso885916”、“windows1254”、“iso88599”、“windows1258”、“gbk”、“gb18030”、“cp950”、“big5hkscs”、“shiftjis”、“eucjp”、“euckr”、“windows874”、“iso885911”、“koi8ru”、“koi8t”、“gb2312”、“cp865”、“cp850”。
eol: EndOfLine
此文档中主要使用的 行尾 序列。
关联资源的文件系统路径。是 TextDocument.uri.fsPath 的简写。与 uri scheme 无关。
如果文档已关闭,则为 true
。关闭的文档不再同步,并且当再次打开相同的资源时将不会被重用。
如果存在未持久化的更改,则为 true
。
此文档是否表示从未保存过的无标题文件。注意,这并不意味着文档将被保存到磁盘,使用 Uri.scheme 来确定文档将 保存 到何处,例如 file
、ftp
等。
与此文档关联的语言标识符。
此文档中的行数。
uri: Uri
uri: Uri
注意,大多数文档使用 file
scheme,这意味着它们是磁盘上的文件。但是,并非所有文档都保存在磁盘上,因此在尝试访问底层文件或磁盘上的同级文件之前,必须检查 scheme
。
另请参阅
此文档的版本号(每次更改后严格递增,包括撤销/重做)。
方法
getText(range?: Range): string
getWordRangeAtPosition(position: Position, regex?: RegExp): Range
在给定位置获取单词范围。默认情况下,单词由常见的分隔符(如空格、-、_等)定义。此外,可以为每种语言定义自定义 [单词定义]。也可以提供自定义正则表达式。
- 注意 1: 自定义正则表达式不得匹配空字符串,如果匹配空字符串,它将被忽略。
- 注意 2: 自定义正则表达式无法匹配多行字符串,为了提高速度,正则表达式不应匹配包含空格的单词。对于更复杂、非单词的场景,请使用 TextLine.text。
该位置将被 调整。
lineAt(line: number): TextLine
lineAt(position: Position): TextLine
offsetAt(position: Position): number
positionAt(offset: number): Position
保存底层文件。
参数 | 描述 |
---|---|
返回 | 描述 |
Thenable<boolean> | 一个 Promise,当文件保存成功时解析为 |
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 注册。当需要 加载 带有该 scheme 的 uri 时,将询问内容提供程序。
事件
表示资源已更改的事件。
方法
provideTextDocumentContent(uri: Uri, token: CancellationToken): ProviderResult<string>
为给定的 uri 提供文本内容。
编辑器将使用返回的字符串内容创建一个只读的 文档。当相应的文档 关闭 时,应释放分配的资源。
注意:由于行尾序列的规范化,创建的 文档 的内容可能与提供的文本不完全相同。
参数 | 描述 |
---|---|
uri: Uri | 其 scheme 与此提供程序 注册 的 scheme 匹配的 uri。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<string> | 一个字符串或解析为字符串的 thenable。 |
TextDocumentSaveReason
表示文本文档保存的原因。
枚举成员
手动触发,例如用户按下保存、开始调试或通过 API 调用。
延迟后自动触发。
编辑器失去焦点时。
TextDocumentShowOptions
属性
一个可选标志,当为 true
时,将阻止 编辑器 获得焦点。
一个可选标志,控制 编辑器 标签页是否显示为预览。预览标签页将被替换和重用,直到显式或通过编辑设置为保留。
注意,如果用户在设置中禁用了预览编辑器,则此标志将被忽略。
selection?: Range
应用于 编辑器 中文档的可选选择范围。
viewColumn?: ViewColumn
应显示 编辑器 的可选视图列。默认值为 当前活动列。不存在的列将按需创建,最多可达 ViewColumn.Nine。使用 ViewColumn.Beside 在当前活动编辑器旁边打开编辑器。
TextDocumentWillSaveEvent
属性
document: TextDocument
将要保存的文档。
reason: TextDocumentSaveReason
触发保存的原因。
方法
waitUntil(thenable: Thenable<readonly TextEdit[]>): void
允许暂停事件循环并应用 预保存编辑。对此函数的后续调用中的编辑将按顺序应用。如果文档发生并发修改,编辑将被忽略。
注意:此函数只能在事件分发期间调用,不能以异步方式调用。
workspace.onWillSaveTextDocument(event => {
// async, will *throw* an error
setTimeout(() => event.waitUntil(promise));
// sync, OK
event.waitUntil(promise);
});
waitUntil(thenable: Thenable<any>): void
允许暂停事件循环,直到提供的 thenable 解析。
注意:此函数只能在事件分发期间调用。
参数 | 描述 |
---|---|
thenable: Thenable<any> | 延迟保存的 thenable。 |
返回 | 描述 |
void |
TextEdit
一个表示应应用于文档的编辑的文本编辑。
Static
delete(range: Range | Selection): TextEdit
insert(position: Position, newText: string): TextEdit
创建插入编辑的实用程序。
参数 | 描述 |
---|---|
position: Position | insert(position: Position, snippet: SnippetString): SnippetTextEdit |
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
此编辑器显示的列。如果这不是主要编辑器之一(例如嵌入式编辑器),或者编辑器列大于三,则为 undefined
。
visibleRanges: readonly Range[]
编辑器中当前可见的范围(垂直方向)。这仅考虑垂直滚动,不考虑水平滚动。
方法
edit(callback: (editBuilder: TextEditorEdit) => void, options?: {undoStopAfter: boolean, undoStopBefore: boolean}): Thenable<boolean>
在此文本编辑器关联的文档上执行编辑。
调用提供的回调函数时会传入一个必须用于进行编辑的 edit-builder。请注意,edit-builder 仅在回调执行期间有效。
参数 | 描述 |
---|---|
callback: (editBuilder: TextEditorEdit) => void | 可以使用 edit-builder 创建编辑的函数。 |
options?: {undoStopAfter: boolean, undoStopBefore: boolean} | 此编辑周围的撤销/重做行为。默认情况下,在此编辑之前和之后都会创建撤销停止点。 |
返回 | 描述 |
Thenable<boolean> | 一个 Promise,解析为一个值,指示编辑是否可以应用。 |
隐藏文本编辑器。
- 已弃用 - 请改用命令
workbench.action.closeActiveEditor
。此方法显示意外行为,将在下一次主要更新中移除。
参数 | 描述 |
---|---|
返回 | 描述 |
void |
insertSnippet(snippet: SnippetString, location?: Range | Position | readonly Range[] | readonly Position[], options?: {keepWhitespace: boolean, undoStopAfter: boolean, undoStopBefore: boolean}): Thenable<boolean>
插入 snippet 并使编辑器进入 snippet 模式。"Snippet 模式"意味着编辑器添加占位符和附加光标,以便用户可以完成或接受 snippet。
参数 | 描述 |
---|---|
创建插入代码片段编辑的实用程序。 | 要在此编辑中插入的 snippet。 |
location?: Range | Position | readonly Range[] | readonly Position[] | 插入 snippet 的位置或范围,默认为当前编辑器选择或多个选择。 |
options?: {keepWhitespace: boolean, undoStopAfter: boolean, undoStopBefore: boolean} | 此编辑周围的撤销/重做行为。默认情况下,在此编辑之前和之后都会创建撤销停止点。 |
返回 | 描述 |
Thenable<boolean> | 一个 Promise,解析为一个值,指示 snippet 是否可以插入。请注意,该 Promise 不表示 snippet 已完全填充或接受。 |
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 中定义的 workbench 颜色之一。使用主题颜色优于使用自定义颜色,因为它让主题作者和用户可以更改颜色。
构造函数
new ThemeColor(id: string): ThemeColor
创建主题颜色的引用。
参数 | 描述 |
---|---|
id: string | 颜色的 id。可用颜色列在 https://vscode.js.cn/api/references/theme-color 中。 |
返回 | 描述 |
ThemeColor |
属性
此颜色的 ID。
ThemeIcon
对命名图标的引用。目前支持 File、Folder 和 ThemeIcon ids。使用主题图标优于自定义图标,因为它使产品主题作者能够更改图标。
注意,主题图标也可以渲染在标签和描述内。支持主题图标的地方会明确说明,并使用 $(<name>)
语法,例如 quickPick.label = "Hello World $(globe)"
。
Static
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 则获取根节点的子元素。
参数 | 描述 |
---|---|
element?: T | 提供程序获取子元素的元素。可以为 |
返回 | 描述 |
ProviderResult<T[]> |
|
getParent(element: T): ProviderResult<T>
可选方法,用于返回 element
的父级。如果 element
是根节点的子级,则返回 null
或 undefined
。
注意:必须实现此方法才能访问 reveal API。
参数 | 描述 |
---|---|
element: T | 需要返回父级的元素。 |
返回 | 描述 |
ProviderResult<T> |
|
getTreeItem(element: T): TreeItem | Thenable<TreeItem>
获取 element
的 TreeItem 表示形式。
resolveTreeItem(item: TreeItem, element: T, token: CancellationToken): ProviderResult<TreeItem>
鼠标悬停时调用,如果 TreeItem 属性未定义,则解析该属性。点击/打开树项目时调用,如果 TreeItem 属性未定义,则解析该属性。只有未定义的属性才能在 resolveTreeItem
中解析。此功能可能会在以后扩展,以便在选中和/或打开时解析其他缺失属性。
每个 TreeItem 只会调用一次。
不应在 resolveTreeItem 中触发 onDidChangeTreeData。
注意:此函数在树项目已显示在 UI 中时调用。因此,不能更改影响显示(标签、描述等)的任何属性。
参数 | 描述 |
---|---|
item: TreeItem | 应设置 |
element: T | 与 TreeItem 关联的对象。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<TreeItem> | 已解析的树项目或解析为该项目的 Thenable。可以返回给定的 |
TreeDragAndDropController<T>
在 TreeView
中提供拖放支持。
属性
dragMimeTypes: readonly string[]
此 TreeDragAndDropController
的 handleDrag
方法可能添加到树数据传输中的 mime 类型。这可以是预定义的、已存在的 mime 类型,也可以是扩展定义的 mime 类型。
树的推荐 mime 类型 (application/vnd.code.tree.<treeidlowercase>
) 将自动添加。
dropMimeTypes: readonly string[]
此 DragAndDropController
的 handleDrop
方法支持的 mime 类型。这可以是预定义的、已存在的 mime 类型,也可以是扩展定义的 mime 类型。
为了支持从树中拖放,您需要添加该树的 mime 类型。这包括从同一树中拖放。树的 mime 类型建议采用 application/vnd.code.tree.<treeidlowercase>
格式。
使用特殊的 files
mime 类型来支持所有类型的拖放文件 files,无论文件的实际 mime 类型如何。
要了解拖放项目的 mime 类型
- 设置您的
DragAndDropController
- 使用 Developer: Set Log Level... 命令将级别设置为 "Debug"
- 打开开发者工具,并将具有未知 mime 类型的项目拖到您的树上。mime 类型将记录到开发者控制台。
请注意,无法发送到扩展的 mime 类型将被忽略。
方法
handleDrag(source: readonly T[], dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
当用户开始从这个 DragAndDropController
拖放项目时,将调用 handleDrag
。扩展可以使用 handleDrag
将其 DataTransferItem
项目添加到拖放操作中。
在 handleDrag
中添加的 mime 类型在应用程序外部不可用。
当项目拖放到同一树中的另一个树项目上时,您的 DataTransferItem
对象将得到保留。使用树的推荐 mime 类型 (application/vnd.code.tree.<treeidlowercase>
) 在数据传输中添加树对象。请参阅 DataTransferItem
的文档,了解如何最好地利用这一点。
要添加可以拖入编辑器的数据传输项,请使用应用程序特定的 mime 类型 "text/uri-list"。 "text/uri-list" 的数据应是一个字符串,其中包含用 \r\n
分隔的经过 toString()
处理的 Uris。要指定文件中的光标位置,请将 Uri 的 fragment 设置为 L3,5
,其中 3 是行号,5 是列号。
参数 | 描述 |
---|---|
source: readonly T[] | 拖放操作的源项目。 |
dataTransfer: DataTransfer | 与此拖放操作关联的数据传输。 |
token: CancellationToken | 指示拖放操作已取消的取消令牌。 |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
handleDrop(target: T, dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
当拖放操作导致拖放到此 DragAndDropController
所属的树上时调用。
扩展应针对需要刷新的任何元素触发 onDidChangeTreeData 事件。
参数 | 描述 |
---|---|
target: T | 拖放发生的目标树元素。当为 undefined 时,目标是根节点。 |
dataTransfer: DataTransfer | 拖放源的数据传输项。 |
token: CancellationToken | 指示拖放操作已取消的取消令牌。 |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 |
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
树项目的 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 | IconPath
树项目的图标路径或 ThemeIcon。当为 falsy
时,如果项目可折叠,则分配 Folder Theme Icon,否则分配 File Theme Icon。指定文件或文件夹 ThemeIcon 时,图标是使用 resourceUri(如果提供)从当前文件图标主题中为指定的 ThemeIcon 派生而来。
树项目的可选 id,在整个树中必须是唯一的。id 用于保留树项目的选中和展开状态。
如果未提供,则使用树项目的标签生成 id。注意:当标签更改时,id 也会更改,并且选中和展开状态将无法保持稳定。
label?: string | TreeItemLabel
描述此项目的人类可读字符串。当为 falsy
时,它派生自 resourceUri。
resourceUri?: Uri
tooltip?: string | MarkdownString
将鼠标悬停在此项上时显示的工具提示文本。
TreeItemCheckboxState
树项目的复选框状态。
枚举成员
确定项目未选中。
确定项目已选中。
TreeItemCollapsibleState
树项目的可折叠状态。
枚举成员
确定项目既不能折叠也不能展开。这意味着它没有子元素。
确定项是否折叠
确定项是否展开
TreeItemLabel
描述 Tree item 的标签。
属性
highlights?: Array<[number, number]>
标签中需要高亮的范围。范围定义为一个包含两个数字的元组,第一个数字是包含的起始索引,第二个数字是排除的结束索引。
描述 Tree item 的人类可读字符串。
TreeView<T>
表示树视图。
事件
onDidChangeCheckboxState: Event<TreeCheckboxChangeEvent<T>>
表示元素或根节点已选中或取消选中的事件。
onDidChangeSelection: Event<TreeViewSelectionChangeEvent<T>>
selection 更改时触发的事件。
onDidChangeVisibility: Event<TreeViewVisibilityChangeEvent>
visibility 更改时触发的事件。
onDidCollapseElement: Event<TreeViewExpansionEvent<T>>
元素折叠时触发的事件。
onDidExpandElement: Event<TreeViewExpansionEvent<T>>
元素展开时触发的事件。
属性
badge?: ViewBadge
此 TreeView 显示的徽章。要删除徽章,请设置为 undefined。
可选的人类可读描述,在视图标题中呈现时不太突出。将标题描述设置为 null、undefined 或空字符串将从视图中移除描述。
可选的人类可读消息,将在视图中呈现。将消息设置为 null、undefined 或空字符串将从视图中移除消息。
当前选中的元素。
树视图标题最初取自扩展 package.json。对 title 属性的更改将在 UI 的视图标题中得到正确反映。
如果 tree view 可见则为 true
,否则为 false
。
方法
释放此对象。
参数 | 描述 |
---|---|
返回 | 描述 |
任意类型 |
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 为 false(默认行为)的示例
选中一个树项目,然后获取其子项目。子项目将处于选中状态。
树项目的父项目已选中。该树项目及其所有同级项目将处于选中状态。
- 父项目
- 子项目 1
- 子项目 2 当用户选中父项目时,树将如下所示
- 父项目
- 子项目 1
- 子项目 2
- 树项目及其所有同级项目均已选中。父项目将处于选中状态。
- 父项目
- 子项目 1
- 子项目 2 当用户选中子项目 1 和子项目 2 时,树将如下所示
- 父项目
- 子项目 1
- 子项目 2
- 树项目已取消选中。父项目将取消选中。
- 父项目
- 子项目 1
- 子项目 2 当用户取消选中子项目 1 时,树将如下所示
- 父项目
- 子项目 1
- 子项目 2
是否显示全部折叠操作。
treeDataProvider: TreeDataProvider<T>
提供树数据的数据提供程序。
TreeViewSelectionChangeEvent<T>
树视图选中项发生变化时触发的事件。
属性
选中的元素。
TreeViewVisibilityChangeEvent
树视图可见性发生变化时触发的事件。
属性
如果 tree view 可见则为 true
,否则为 false
。
TypeDefinitionProvider
类型定义提供程序定义了扩展与转到类型定义功能之间的约定。
方法
provideTypeDefinition(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
提供给定位置和文档处符号的类型定义。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
position: Position | 调用命令的位置。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<Definition | LocationLink[]> | 一个定义或解析为该定义的 thenable。可以通过返回 |
TypeHierarchyItem
表示类型层次结构中的项,如类或接口。
构造函数
new TypeHierarchyItem(kind: SymbolKind, name: string, detail: string, uri: Uri, range: Range, selectionRange: Range): TypeHierarchyItem
创建一个新的类型层次结构项。
参数 | 描述 |
---|---|
kind: SymbolKind | 项目的种类。 |
工具结果是文本部分 (text-) 和 prompt-tsx 部分 (prompt-tsx) 的数组。如果工具调用者正在使用 vscode/prompt-tsx ,它可以使用 ToolResult 将响应部分合并到其 prompt 中。否则,可以通过带有LanguageModelToolResultPart的用户消息将这些部分传递给LanguageModelChat。 | 项目的名称。 |
detail: string | 项目的详细信息。 |
uri: Uri | 项目的 Uri。 |
range: Range | 项目的整个范围。 |
selectionRange: Range | 项目的选中范围。 |
返回 | 描述 |
TypeHierarchyItem |
属性
此项的更多详细信息,例如函数的签名。
kind: SymbolKind
此项的类型。
此项的名称。
range: Range
包含此符号的范围,不包括前导/尾随空白,但包括所有其他内容,例如注释和代码。
selectionRange: Range
当选取此符号时应选中并显示的范围,例如类的名称。必须包含在 range 属性中。
tags?: readonly SymbolTag[]
此项的标签。
uri: Uri
此项的资源标识符。
TypeHierarchyProvider
类型层次结构提供程序接口描述了扩展与类型层次结构功能之间的约定。
方法
prepareTypeHierarchy(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<TypeHierarchyItem | TypeHierarchyItem[]>
通过返回给定文档和位置指示的项来引导类型层次结构。此项将用作类型图的入口。当给定位置没有项时,提供程序应返回 undefined
或 null
。
参数 | 描述 |
---|---|
document: TextDocument | 调用命令所在的文档。 |
position: Position | 调用命令的位置。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<TypeHierarchyItem | TypeHierarchyItem[]> | 一个或多个类型层次结构项,或解析为这些项的 Thenable。可以通过返回 |
provideTypeHierarchySubtypes(item: TypeHierarchyItem, token: CancellationToken): ProviderResult<TypeHierarchyItem[]>
为项提供所有子类型,例如所有从给定项派生/继承的类型。在图术语中,这描述了类型图内的有向带注释的边,例如给定项是起始节点,结果是可到达的节点。
参数 | 描述 |
---|---|
item: TypeHierarchyItem | 应计算子类型的层次结构项。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<TypeHierarchyItem[]> | 一组直接子类型或解析为这些子类型的 Thenable。可以通过返回 |
provideTypeHierarchySupertypes(item: TypeHierarchyItem, token: CancellationToken): ProviderResult<TypeHierarchyItem[]>
为项提供所有超类型,例如类型派生/继承自的所有类型。在图术语中,这描述了类型图内的有向带注释的边,例如给定项是起始节点,结果是可到达的节点。
参数 | 描述 |
---|---|
item: TypeHierarchyItem | 应计算超类型的层次结构项。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<TypeHierarchyItem[]> | 一组直接超类型或解析为这些超类型的 Thenable。可以通过返回 |
UIKind
可使用扩展的 UI 可能的种类。
枚举成员
从桌面应用程序访问扩展。
从 Web 浏览器访问扩展。
Uri
表示磁盘上的文件或另一个资源(例如无标题资源)的统一资源标识符。
Static
file(path: string): Uri
从文件系统路径创建 URI。scheme 将是 file
。
Uri.parse 与 Uri.file 的区别在于,后者将参数视为路径,而不是字符串化的 uri。例如,Uri.file(path)
与 Uri.parse('file://' + path)
不相同,因为路径可能包含被解释的字符(# 和 ?)。请参阅以下示例。
const good = URI.file('/coding/c#/project1');
good.scheme === 'file';
good.path === '/coding/c#/project1';
good.fragment === '';
const bad = URI.parse('file://' + '/coding/c#/project1');
bad.scheme === 'file';
bad.path === '/coding/c'; // path is now broken
bad.fragment === '/project1';
参数 | 描述 |
---|---|
path: string | 文件系统路径或 UNC 路径。 |
返回 | 描述 |
Uri | 一个新的 Uri 实例。 |
from(components: {authority: string, fragment: string, path: string, query: string, scheme: string}): Uri
从其组成部分创建 URI。
另请参阅 Uri.toString。
参数 | 描述 |
---|---|
components: {authority: string, fragment: string, path: string, query: string, scheme: string} | Uri 的组成部分。 |
返回 | 描述 |
Uri | 一个新的 Uri 实例。 |
joinPath(base: Uri, ...pathSegments: string[]): Uri
创建一个新的 uri,其路径是将基本 uri 的路径与提供的路径段连接的结果。
- 注意 1:
joinPath
只影响路径组件,所有其他组件(scheme、authority、query 和 fragment)保持不变。 - 注意 2:基本 uri 必须有路径;否则会抛出错误。
路径段按以下方式进行规范化:
- 连续的路径分隔符(
/
或\
)被单个分隔符替换。 - 对于 Windows 上的
file
-uris,反斜杠字符 (``) 被视为路径分隔符。 ..
段表示父段,.
表示当前段。- 路径有一个始终保留的根,例如在 Windows 上驱动器盘符是根,因此以下情况为 true:
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 表示形式。
参数 | 描述 |
---|---|
返回 | 描述 |
任意类型 | 一个对象。 |
toString(skipEncoding?: boolean): string
返回此 Uri 的字符串表示形式。Uri 的表示和规范化取决于 scheme。
- 生成的字符串可以安全地与 Uri.parse 一起使用。
- 生成的字符串不应用于显示目的。
注意,实现将进行积极编码,这通常会导致意想不到但并非错误的结果。例如,冒号会被编码为 %3A
,这在文件 uri 中可能出乎意料。此外,&
和 =
也将被编码,这对于 http-uris 可能出乎意料。出于稳定性原因,这不能再更改。如果您因过度积极的编码而受到困扰,您应使用 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 处理程序负责处理系统范围的 uris。
方法
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 源。
这是 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 时,或因消息不可送达而被丢弃时,此 Promise 将解析。 如果消息发送到 webview,则返回 返回 如果您想确认消息已被实际接收,您可以尝试让您的 webview 向您的扩展发送确认消息。 |
WebviewOptions
webview 的内容设置。
属性
enableCommandUris?: boolean | readonly string[]
控制 webview 内容中是否启用 command uri。
默认为 false
(command uri 被禁用)。
如果传入数组,则只允许数组中的命令。
控制 webview 内容中是否启用表单。
如果启用了脚本,则默认为 true。否则默认为 false。明确将此属性设置为 true 或 false 将覆盖默认值。
控制 webview 内容中是否启用脚本。
默认为 false(脚本禁用)。
localResourceRoots?: readonly Uri[]
webview 可以使用 asWebviewUri
的 uri 从这些根路径加载本地(文件系统)资源。
默认为当前工作区的根文件夹以及扩展的安装目录。
传入一个空数组以禁止访问任何本地资源。
portMapping?: readonly WebviewPortMapping[]
webview 内部使用的 localhost 端口映射。
端口映射允许 webview 透明地定义如何解析 localhost 端口。这可以用于允许在 webview 内部使用静态 localhost 端口,该端口解析到服务运行的随机端口。
如果 webview 访问 localhost 内容,即使 webviewPort
和 extensionHostPort
端口相同,我们也建议您指定端口映射。
注意,端口映射仅适用于 http
或 https
url。WebSocket url(例如 ws://localhost: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
事件。
参数 | 描述 |
---|---|
返回 | 描述 |
任意类型 |
reveal(viewColumn?: ViewColumn, preserveFocus?: boolean): void
在给定列中显示 webview 面板。
webview 面板一次只能显示在单列中。如果已显示,则此方法将其移动到新列。
参数 | 描述 |
---|---|
viewColumn?: ViewColumn | 面板要显示的视图列。如果为 undefined,则在当前 |
preserveFocus?: boolean | 当为 |
返回 | 描述 |
void |
WebviewPanelOnDidChangeViewStateEvent
webview 面板视图状态更改时触发的事件。
属性
webviewPanel: WebviewPanel
视图状态更改的 webview 面板。
WebviewPanelOptions
webview 面板的内容设置。
属性
控制面板中是否启用查找小部件。
默认为 false
。
retainContextWhenHidden?: boolean
控制即使面板不再可见时,webview 面板的内容 (iframe) 是否保留。
通常,当面板可见时创建 webview 面板的 html 上下文,并在其隐藏时销毁。具有复杂状态或 UI 的扩展可以设置 retainContextWhenHidden
,使编辑器保留 webview 上下文,即使 webview 移动到后台选项卡。当使用 retainContextWhenHidden
的 webview 隐藏时,其脚本和其他动态内容会被暂停。当面板再次可见时,上下文会自动恢复到原来的完全相同的状态。您不能向隐藏的 webview 发送消息,即使启用了 retainContextWhenHidden
。
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 首次可见时调用。
参数 | 描述 |
---|---|
正在解析的资源的文档。 | 要恢复的 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 | 取消令牌,指示提供的视图不再需要。 |
返回 | 描述 |
当用户重做此编辑时,编辑器会调用此方法。要实现 redo ,您的扩展应将文档和编辑器恢复到此编辑通过 onDidChangeCustomDocument 添加到编辑器的内部编辑堆栈后的状态。 | 可选的 thenable,指示视图已完全解析。 |
WebviewViewResolveContext<T>
有关正在解析的 webview 视图的附加信息。
属性
state: T
来自 webview 内容的持久化状态。
为了节省资源,编辑器通常会释放不可见的 webview 文档(iframe 内容)。例如,当用户折叠视图或切换到侧边栏中的另一个顶级活动时,WebviewView
本身保持活动状态,但 webview 的底层文档会被释放。当视图再次变为可见时,它会被重新创建。
您可以通过在 WebviewOptions
中设置 retainContextWhenHidden
来防止这种行为。但是,这会增加资源使用,应尽可能避免。相反,您可以使用持久化状态来保存 webview 的状态,以便在需要时可以快速重新创建。
要保存持久化状态,请在 webview 内部调用 acquireVsCodeApi().setState()
并传入任何可 JSON 序列化的对象。要再次恢复状态,请调用 getState()
。例如
// Within the webview
const vscode = acquireVsCodeApi();
// Get existing state
const oldState = vscode.getState() || { value: 0 };
// Update state
setState({ value: oldState.value + 1 });
编辑器确保在隐藏 webview 和编辑器重启时,持久化状态能正确保存。
WindowState
表示窗口的状态。
属性
窗口最近是否被交互过。这会在活动时立即改变,或者在用户不活动一小段时间后改变。
当前窗口是否获得焦点。
WorkspaceConfiguration
表示配置。它是以下各项的合并视图:
- 默认设置
- 全局(用户)设置
- 工作区设置
- 工作区文件夹设置 - 来自所请求资源所属的工作区文件夹之一。
- 语言设置 - 在所请求语言下定义的设置。
有效值(由get返回)通过按以下顺序覆盖或合并值来计算:
defaultValue
(如果在package.json
中定义,否则从值的类型派生)globalValue
(如果定义)workspaceValue
(如果定义)workspaceFolderValue
(如果定义)defaultLanguageValue
(如果定义)globalLanguageValue
(如果定义)workspaceLanguageValue
(如果定义)workspaceFolderLanguageValue
(如果定义)
注意:只有 object
值类型会被合并,所有其他值类型都会被覆盖。
示例 1:覆盖
defaultValue = 'on';
globalValue = 'relative';
workspaceFolderValue = 'off';
value = 'off';
示例 2:语言值
defaultValue = 'on';
globalValue = 'relative';
workspaceFolderValue = 'off';
globalLanguageValue = 'on';
value = 'on';
示例 3:对象值
defaultValue = { a: 1, b: 2 };
globalValue = { b: 3, c: 4 };
value = { a: 1, b: 3, c: 4 };
注意:工作区和工作区文件夹配置包含 launch
和 tasks
设置。它们的基名将成为节标识符的一部分。以下代码片段展示了如何从 launch.json
中检索所有配置:
// launch.json configuration
const config = workspace.getConfiguration(
'launch',
vscode.workspace.workspaceFolders[0].uri
);
// retrieve values
const values = config.get('configurations');
有关更多信息,请参阅设置。
方法
从此配置中返回值。
参数 | 描述 |
---|---|
检查给定的 section 是否已更改。如果提供了 scope,则检查给定 scope 下资源的 section 是否已更改。 | section: string |
返回 | 描述 |
T | 值 |
get<T>(section: string, defaultValue: T): T
从此配置中返回值。
参数 | 描述 |
---|---|
检查给定的 section 是否已更改。如果提供了 scope,则检查给定 scope 下资源的 section 是否已更改。 | section: string |
defaultValue: T | 当找不到值时,应返回一个值;该值为 |
返回 | 描述 |
T | 值 |
检查此配置是否具有特定值。
参数 | 描述 |
---|---|
检查给定的 section 是否已更改。如果提供了 scope,则检查给定 scope 下资源的 section 是否已更改。 | 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 是否已更改。如果提供了 scope,则检查给定 scope 下资源的 section 是否已更改。 | 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>
更新配置值。更新后的配置值会持久化。
值可以在以下位置更改:
注意:要移除配置值,请使用 undefined
,例如:config.update('somekey', undefined)
。
- 抛出 - 更新时出错
- 未注册的配置。
- 窗口配置到工作区文件夹
- 未打开工作区时配置到工作区或工作区文件夹。
- 没有工作区文件夹设置时配置到工作区文件夹。
- WorkspaceConfiguration 未限定于资源时配置到工作区文件夹。
参数 | 描述 |
---|---|
检查给定的 section 是否已更改。如果提供了 scope,则检查给定 scope 下资源的 section 是否已更改。 | 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?: IconPath
编辑的图标路径或主题图标。
醒目呈现的人类可读字符串。
一个标志,指示需要用户确认。
WorkspaceEditMetadata
有关工作区编辑的附加数据。
属性
向编辑器发出信号,表明此编辑是重构。
WorkspaceFolder
工作区文件夹是编辑器打开的潜在多个根目录之一。所有工作区文件夹都是平等的,这意味着没有活动或主要工作区文件夹的概念。
属性
此工作区文件夹的序号。
此工作区文件夹的名称。默认为其uri 路径的基名。
uri: Uri
此工作区文件夹的关联 uri。
注意:有意选择Uri类型,以便编辑器未来的版本可以支持不存储在本地磁盘上的工作区文件夹,例如 ftp://server/workspaces/foo
。
WorkspaceFolderPickOptions
配置工作区文件夹选择 UI 行为的选项。
属性
WorkspaceFoldersChangeEvent
描述工作区文件夹集更改的事件。
属性
added: readonly WorkspaceFolder[]
已添加的工作区文件夹。
removed: readonly WorkspaceFolder[]
已移除的工作区文件夹。
WorkspaceSymbolProvider<T>
工作区符号提供程序接口定义了扩展与符号搜索功能之间的契约。
方法
provideWorkspaceSymbols(query: string, token: CancellationToken): ProviderResult<T[]>
项目范围内的符号搜索,匹配给定的查询字符串。
query
参数应被解释为一种宽松的方式,因为编辑器会对结果应用其自己的高亮和评分。一个好的经验法则是进行不区分大小写的匹配,并简单地检查 query 的字符是否按其顺序出现在候选符号中。不要使用前缀、子字符串或类似的严格匹配。
为了提高性能,实现者可以实现 resolveWorkspaceSymbol
,然后提供带有部分location对象的符号,而无需定义 range
。编辑器随后将仅对选定的符号调用 resolveWorkspaceSymbol
,例如在打开工作区符号时。
参数 | 描述 |
---|---|
query: string | 一个查询字符串,可以是空字符串,在这种情况下应返回所有符号。 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T[]> | 文档高亮数组或解析为该数组的 thenable。可以通过返回 |
resolveWorkspaceSymbol(symbol: T, token: CancellationToken): ProviderResult<T>
给出符号后,填写其位置。此方法在 UI 中选择符号时调用。提供程序可以实现此方法并从 provideWorkspaceSymbols 返回不完整的符号,这通常有助于提高性能。
参数 | 描述 |
---|---|
symbol: T | 要解析的符号。保证是之前调用 |
token: CancellationToken | 取消令牌。 |
返回 | 描述 |
ProviderResult<T> | 已解析的符号或解析为该符号的 thenable。未返回结果时,使用给定的 |
API 模式
这些是我们在 VS Code API 中使用的一些常见模式。
Promises
VS Code API 使用promise表示异步操作。扩展可以返回任何类型的 promise,例如 ES6、WinJS、A+ 等。
通过 Thenable
类型在 API 中表达了不依赖于特定 promise 库的特性。Thenable
表示共同点,即then方法。
在大多数情况下,使用 promise 是可选的,当 VS Code 调用扩展时,它既可以处理结果类型,也可以处理结果类型的 Thenable
。当使用 promise 是可选的时,API 通过返回联合类型(or
-types)来表示这一点。
provideNumber(): number | Thenable<number>
Cancellation Tokens
操作通常在易变的状态下启动,这些状态在操作完成之前就会发生变化。例如,计算 IntelliSense 开始后,用户继续键入,导致该操作的结果过时。
暴露给此类行为的 API 会传递一个 CancellationToken
,您可以通过它检查是否已取消 (isCancellationRequested
),或者在取消发生时收到通知 (onCancellationRequested
)。取消令牌通常是函数调用的最后一个参数且是可选的。
Disposables
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),发生了什么 (verb),以及上下文 (noun),除非上下文很明显。
VS Code API 中的一个示例是 window.onDidChangeActiveTextEditor
,该事件在活动文本编辑器 (noun) 被 (onDid) 更改 (verb) 时触发。
Strict null
VS Code API 在适当的地方使用 undefined
和 null
TypeScript 类型,以支持严格空检查。
用于身份验证的命名空间。