vscode-extensions - 使用 TreeDataProvider 中的“vscode.open”命令
问题描述
编写 vscode 扩展时如何从自定义树视图项中打开文件?这是一个示例树视图项:
import { URI } from 'vscode-uri';
import { TreeDataProvider, ProviderResult, TreeItem } from 'vscode';
export class CustomTreeProvider implements TreeDataProvider<TreeItem>{
public getChildren(element?: TreeItem): ProviderResult<TreeItem[]> {
if (!element) {
return [{
id: 'some-unique-id',
label: 'some-unique-label',
command: {
command: 'vscode.open',
title: 'Open',
arguments: [URI.file('path/to/file']
}
}];
}
}
}
但是,每当我单击该树视图项时,它都会在控制台中失败并显示以下消息:
[renderer7] [error] 运行贡献的命令:'vscode.open' 失败。非法参数“资源” - 要打开的资源:错误:运行贡献的命令:“vscode.open”失败。非法参数“资源” - 要打开的资源
我有一个解决方法,我可以注册自己的自定义命令来打开文件,但如果可能的话,我宁愿使用内置的“vscode.open”命令。
解决方案
问题是vscode.open
命令不喜欢包Uri
生成的vscode-uri
。改为使用vscode.Uri
。
import { TreeDataProvider, ProviderResult, TreeItem, Uri } from 'vscode';
export class CustomTreeProvider implements TreeDataProvider<TreeItem>{
public getChildren(element?: TreeItem): ProviderResult<TreeItem[]> {
if (!element) {
return [{
id: 'some-unique-id',
label: 'some-unique-label',
command: {
command: 'vscode.open',
title: 'Open',
arguments: [Uri.file('path/to/file']
}
}];
}
}
}
推荐阅读
- spring - Spring Boot 分层 jar + docker builder
- python - win32com (Python):将相同的超链接添加到 Microsoft Word 中相同文本的多个实例
- google-apps-script - 在 Google 表单中的多项选择选项中插入换行符
- javascript - 如何使用 JavaScript 连接 variavél no vs code?
- linux - linux中的curl命令执行-globbing错误
- excel - CPLEX SheetWrite 错误:此平台不支持工作表数据
- javascript - 创建具有下拉选项的搜索栏 .Net MVC
- r - config::get 在打包的闪亮应用程序中使用时冻结
- python - Discord py 清除通道
- reactjs - 无法获取 HTMLElement 的值