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

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...

阅读 3.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进