我找到两个相关的 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...
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…