#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
чтобы вы могли обрабатывать свою логику связывания.
Надеюсь, это поможет другим и помните, что это ваш лучший друг Монако.