悬停本地图像上的 VsCode 语言服务器协议不起作用

问题描述 投票:0回答:1

我正在使用 vscode 中客户端的语言服务器协议在 csharp 中创建外部语言服务器。

在该语言中,存在对图像文件(png)的引用,我希望有一个包含图像预览的悬停标记工具提示。当我在工具提示中嵌入一个通过 URL 指向网络上某些图像的“欺骗”图像时,该图像会正确加载。但是,当我尝试使用对本地文件的引用时,它不会渲染图像。

我发现这个相关问题,主要区别是我的语言服务器没有在 vscode/javascript 中实现。

假设我必须错误地指向图像,我尝试了绝对路径、工作空间根目录的路径、当前文件的相对路径和其他一些东西,但似乎都不起作用。 实际图像当前存在于

/CardArt/SlowAndSteady.png
中,其中
/
是 vscode 工作区根目录,以及
SlowAndSteady.png
与语言服务器为其提供悬停工具提示的文件位于同一文件夹中。

Different non-working paths

当我制作一个明确的降价文件并使用相同的路径引用图像时,图像解析得很好。只是悬停工具提示不显示图像。

我对工具提示中的图像的解析方式有什么误解吗,或者这是一个错误?

visual-studio-code markdown tooltip vscode-extensions language-server-protocol
1个回答
0
投票

Markdown vscode 工具提示中似乎屏蔽了任何本地或不安全的 URL。

我找到了解决该问题的方法。您可以将图像编码为 Base64 字符串,然后直接将其嵌入到 Markdown 中,而不是提供图像的链接。这样就不会引用需要不安全解析的本地图像。

这看起来像:

![image](data:image/png;base64,iVBORw0KGgoAAAAN... etc)

问题是工具提示有一定的最大长度(我不知道实际值),因此如果图像对于工具提示来说太大,则在转换为 Base64 之前必须缩小图像。

我目前正在将图像转换为 150x150px png,它似乎始终符合工具提示字符限制。

© www.soinside.com 2019 - 2024. All rights reserved.