链接模型的首选方式

Preferred way of linking models

在 Monaco 中是否有链接模型的首选方法(ctrl + 单击)?我正在实现一个带有外部选项卡管理 + 文件树、一个编辑器、多个模型之间交换的代码编辑器。用户能够 ctrl + 单击包含(对其他模型的引用,例如:@include 'abc')并使它们“可关注”是理想的。

我目前正在做的是注册代码镜头以打开所述模型。在镜头定义中,我做了一个 model.findMatches(regexp),匹配 include 语句,从匹配组中获取包含文件名并注册打开命令。这目前正在工作,但我不知道是否有比每次生成镜头时扫描模型视口以查找匹配项更好、更标准、更不密集的方式来实现此功能(最好通过 ctrl + 单击)(keyup).

四个月后在这里回答我自己的问题。是的,您不希望镜头注册链接,而是通过您的语言 registerLinkProvider 注册它们,这样用户就可以像往常一样 CTRL + click 它们。

为此使用 monaco.languages.registerLinkProvider 方法,该方法 return 是一个具有两个方法 provideLinksresolveLink 的对象。

provideLinks 是您要进行解析和捕获链接的地方,无论您在此方法中 return 什么,它都会传递给 resolveLink.

resolveLink 将获取您从 provideLinks return 编辑的任何内容,以便您处理链接逻辑。

希望这对其他人有帮助并记住,this is your best Monaco friend