vscode api:如何从文件图标主题获取图标

2024-04-16

我正在为 VSCode 编写一个扩展。在 WebviewPanel 中,我需要显示来自文件图标主题的文件扩展名图标。有没有从文件图标主题中获取图标的功能?


我也在研究这个。我还没有答案,但到目前为止已经有了一些线索。希望这可以帮助:

https://code.visualstudio.com/api/references/vscode-api#ThemeIcon https://code.visualstudio.com/api/references/vscode-api#ThemeIcon

对命名图标的引用。目前,文件、文件夹和主题图标

支持 id。

因此,如果您有文件/文件夹 ID,您可以使用其构造函数创建 ThemeIcon 的实例

建设者

新 ThemeIcon(id: 字符串, 颜色?: ThemeColor): ThemeIcon

如何获取文件和文件夹 ID?看起来是通过文件图标主题中定义的文件关联。看vscode API 用于文件图标主题/文件关联 https://code.visualstudio.com/api/extension-guides/file-icon-theme#file-association

那么如何获得这种关联呢?

我可以从下面的代码中获取当前图标主题的名称

const config = vscode.workspace.getConfiguration();
console.log(config.workbench.iconTheme); // output "vs-seti"

seti 主题是一个内部扩展,我可以通过

const ext = vscode.extensions.getExtension("vscode.vscode-theme-seti")
console.log(ext.packageJSON.contributes.iconThemes[0].id) // 'vs-seti'

我可以通过以下方式进一步获取主题 JSON

const themePath = path.join(ext.extensionPath, ext.packageJSON.contributes.iconThemes[0].path);

然后我可以读取该 JSON 文件,使用它将文件/目录名称与文件/目录 id 关联,然后获取图标......


今天的报告:

内置 seti 文件图标扩展的 JSON 位于here https://github.com/microsoft/vscode/blob/main/extensions/theme-seti/icons/vs-seti-icon-theme.json

在“fileExtensions”中,没有语言文件扩展名的映射(如 .ts)。对于编程语言源代码,需要首先找到 languageId,然后映射到“languageIds”部分中的图标

尝试在“files.associations”配置中查找语言 ID 映射的文件扩展名,但失败。

然后发现我可以循环遍历所有扩展 (vscode.extensions.all) 并检查它们的 package.json 以查找语言贡献。相关的文件扩展名在语言贡献中定义。现在我可以从文件扩展名映射到语言 ID。

然后我尝试了const icon = new vscode.ThemeIcon(langIconId);但图标并不如预期。我期待的不是打字稿图标,而是错误图标...ThemeIcon 提到所有图标都可以找到here https://code.visualstudio.com/api/references/icons-in-labels#icon-listing所以我想这毕竟不是 ThemeIcon...

所以 seti 主题的 JSONdocument https://github.com/microsoft/vscode/blob/main/extensions/theme-seti/icons/vs-seti-icon-theme.json包含“iconDefinitions”部分,它具有图标的 fontCharacter 和 fontColor。现在我可以将文件扩展名一直关联到图标 fontCharacter 和 fontColor。

然而这就是结束了。我无法设置树视图来使用它。

最后我想我需要设置TreeItem的resourceUri让vscode自动确定图标。看https://code.visualstudio.com/api/references/vscode-api#TreeItem.resourceUri https://code.visualstudio.com/api/references/vscode-api#TreeItem.resourceUri

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vscode api:如何从文件图标主题获取图标 的相关文章

随机推荐

  • Angular 6 构建中的 style.js 是什么

    偷看html源代码 我使用 sass 使用 ng 6 构建 SPA 我找到了这些文件列表 我想知道 style js 是做什么用的 我正在
  • VIM自动插入PHPdoc

    有没有办法使用命令或组合键在 VIM 中插入 PHPDoc 例如 我有一堂课 class MyClass public function construct public function destruct command here to
  • 没有扩展名的文件名叫什么?

    给定文件名foo bar baz 我们可以说foo is the dirname bar baz is the basename and baz is the extname 但是有没有一个类似的术语可以用来表示foo bar or bar
  • C++ 没有 DELETE 宏的原因

    在那儿任何好的理由 也许除了 宏是邪恶的 不使用以下宏 define DELETE ptr if ptr NULL delete ptr ptr NULL define DELETE TABLE ptr if ptr NULL delete
  • 如何应用iOS VNImageHomographicAlignmentObservation warpTransform?

    我正在测试 Apple 的 Vision Alignment API 并对 VNHomgraphicImageRegistrationRequest 有疑问 有人让它工作吗 我可以从中得到 warpTransform 但我还没有看到一个有意
  • 如何通过FTP将多个多级(不同层次)文件从本地版本覆盖到在线版本

    我只是在本地更改了几个不同目录中的许多文件 然后将更改推送到 Subversion 但这不会更改实时版本 只会更改存储库 现在我必须通过 FTP 更新这些文件 但它们都是不同的层次结构级别 我怎么做 我知道的唯一方法是采用我的整个本地版本并
  • YUV420 到 RGB 转换

    我使用以下公式将 RGB 矩阵转换为 YUV 矩阵 Y 0 257 R 0 504 G 0 098 B 16 Cr V 0 439 R 0 368 G 0 071 B 128 Cb U 0 148 R 0 291 G 0 439 B 128
  • Java中获取Spark当前任务ID

    我需要获取 Spark 中当前任务的 ID 我一直在Google和官方API中搜索 但我能找到的唯一ID是执行者ID和RDD的ID 有谁知道如何获取任务的唯一ID 我看到班级TaskInfo正是我正在寻找的东西 但我不知道如何获取此类的实例
  • 正则表达式从查询字符串中删除一个参数

    我正在寻找一个正则表达式来从查询字符串中删除单个参数 并且如果可能的话 我想在单个正则表达式中执行此操作 假设我要删除foo范围 现在我用这个 foo 只要foo不是查询字符串中的第一个参数 如果是 那么我的新查询字符串以 符号开头 例如
  • 姜戈。线程安全的更新或创建。

    我们知道 更新是线程安全的操作 这意味着 当你这样做时 SomeModel objects filter id 1 update some field 100 代替 sm SomeModel objects get id 1 sm some
  • Spring-如何保护RESTful私有资源?

    我有一些 RESTful 服务 使用 Spring MVC 实现 公开一组资源 我已经使用基于 HTTPBasicAuthentication 和 HTTPS 的身份验证 某些资源必须只能由某些用户访问 例如 我希望 URI 中的所有子资源
  • jQuery,单击时连续调用多个动画

    到目前为止 我已经做到了 所以当页面打开时 一些动画会运行以使一些图片和文本滑入视图中 我在页面顶部有链接 这些链接没有目的地 但我已将它们全部链接用于样式目的 例如效果悬停 访问等 链接有类 所有链接都有 nav 类 然后它们每个都有相关
  • WPF:列表视图在顶部而不是底部显示最近添加的项目

    我有一个集合绑定到列表视图 该集合每 4 5 秒添加一次项目 新项目将自动添加到列表视图的底部 因此 如果您想看到最新的项目 那么您需要向下滚动到底部 我的问题是 是否可以反转列表视图 以便新的最新项目位于顶部 最旧的项目位于底部 Than
  • 视频馈送至 ThingsBoard 仪表板

    我目前使用 ThingsBoard 作为 IoT 代理来捕获来自多个传感器的遥测数据并将其显示到仪表板 我想添加显示来自 iPhone 相机或网络摄像头的实时视频源的功能 我想知道这里是否有人知道 ThingsBoard 是否支持任何类型的
  • 检测PHP中是否启用cookie

    我正在尝试检测我的页面上的用户是否启用了 cookie 以下代码执行检查 但是 我不知道如何将用户重定向到他们来自的页面 该脚本启动一个会话并检查是否已检查 cookie 如果没有 它会将用户重定向到测试页面 并且由于我在第一页中调用了 s
  • R rpart:如果删除不太重要的变量,则不会分割

    我试图了解 rpart 在我试图完成的项目中如何工作 我对 R 比较陌生 但我有很多使用 SAS 构建各种分析模型的经验 首先我运行了这段代码 mtree1 lt rpart X17 data mydata method class con
  • FileInfo.Extension 是否返回最后一个 *.* 模式或其他内容?

    我很好奇以下行为到底是什么 FileInfo info new FileInfo C testfile txt gz string ext info Extension 这会返回 txt gz 还是 gz 更多扩展名 例如 txt gz z
  • 点击 CardView 时的仰角动画

    我想将海拔动画添加到我的android support v7 widget CardView 就像材质风格一样Button是的 我尝试过设置一个StateListAnimator android stateListAnimator anim
  • 如何在 FactoryGirlRails 中定义序列?

    以前在 Factory Girl 中 我们可以像这样定义序列 spec factories rb FactoryGirl define do this is the sequence in question sequence random
  • vscode api:如何从文件图标主题获取图标

    我正在为 VSCode 编写一个扩展 在 WebviewPanel 中 我需要显示来自文件图标主题的文件扩展名图标 有没有从文件图标主题中获取图标的功能 我也在研究这个 我还没有答案 但到目前为止已经有了一些线索 希望这可以帮助 https