vscode 自定义链接跳转的逻辑无法打开链接

发布于 2022-09-12 04:29:53 字数 2011 浏览 9 评论 0

image.png

我找到两个相关的 API,分别是 go to define 和 custom editor,但目前测试 go to define 对于 markdown 的链接(已知类型)似乎无效,可能 go to define 不支持拦截链接而支持代码层面的跳转?

代码如下

  vscode.languages.registerDefinitionProvider(
    {
      scheme: 'file',
      language: 'markdown',
      pattern: 'edit-*.md',
    },
    new JoplinMarkdownProvider(),
  )
  
export class JoplinMarkdownProvider implements DefinitionProvider {
  provideDefinition(
    document: TextDocument,
    position: Position,
    token: CancellationToken,
  ): ProviderResult<Definition | DefinitionLink[]> {
    console.log('provideDefinition: ', document, position, token)
    return undefined
  }
}

更新,registerDefinitionProvider 可以拦截点击,但返回的 Uri 却无法打开

例如 https://github.com/ 在打开时会出现错误

Unable to open '': Unable to resolve resource https://github.com/.

另外 custom schema link 的 query 部分会被转义

形如 vscode://rxliuli.joplin-vscode-plugin/open?id=03c8b00ed350410baf41c33daddf3005 => vscode://rxliuli.joplin-vscode-plugin/open?id%3D03c8b00ed350410baf41c33daddf3005

同时也会报错

Unable to open 'open': Unable to resolve text model content for resource vscode://rxliuli.joplin-vscode-plugin/open?id%3D03c8b00ed350410baf41c33daddf3005.

具体错误代码在:https://github.com/rxliuli/jo...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文