Предпочтительный способ связывания моделей

#monaco-editor

#монако-редактор

Вопрос:

Существует ли предпочтительный способ связывания моделей в Монако (ctrl click)? Я внедряю редактор кода с управлением внешними вкладками дерево файлов, один редактор, между которыми переключается несколько моделей. Было бы идеально, чтобы пользователи могли нажимать ctrl click включает (ссылки на другие модели, например: @include 'abc' ) и делать их «доступными для отслеживания».

В настоящее время я занимаюсь регистрацией codelenses для открытия указанных моделей. В определении lenses я делаю a model.findMatches(regexp) , сопоставляю include оператор, получаю включенное имя файла из групп сопоставления и регистрирую команду open . В настоящее время это работает, но я не знаю, есть ли лучший, более стандартный и менее интенсивный способ обеспечения этой функциональности (предпочтительно с помощью ctrl click), чем сканирование окна просмотра модели на предмет совпадений при каждом создании линз ( keyup ) .

Ответ №1:

Отвечая на мой собственный вопрос здесь через четыре месяца. Да, вы не хотите, чтобы линзы регистрировали ссылки, а скорее регистрировали их на вашем языке registerLinkProvider , чтобы пользователи могли CTRL click использовать их как обычно.

Для этого используйте monaco.languages.registerLinkProvider метод, который возвращает объект с двумя методами provideLinks и resolveLink .

provideLinks это место, где вы захотите выполнить синтаксический анализ и захватить ваши ссылки, независимо от того, что вы вернете в этом методе, оно будет передано resolveLink .

resolveLink возьмет все, что вы вернули, provideLinks чтобы вы могли обрабатывать свою логику связывания.

Надеюсь, это поможет другим и помните, что это ваш лучший друг Монако.