Редактор-декоратор Монако

В прошлой статье (https://medium.com/@lyuda.dzyubinska/monaco-editor-code-lens-provider-133ac9a13f84) мы говорили о том, как использовать CodeLensProvider. Давайте добавим выделение текста на основе нашего предыдущего кода, так как станет более очевидным, какие фрагменты текста использовались для выбора.

Для этого воспользуемся функцией редактора deltaDecorations ( https://github.com/Microsoft/monaco-editor/blob/3acd0a1/monaco.d.ts ):

Новый декоратор включает: диапазон - позиции строк и столбцов и параметры - список, который вы можете найти здесь - https://github.com/Microsoft/monaco-editor/blob/3acd0a1/monaco.d.ts#L1215 . Интерфейс модели:

Это все, что нам нужно знать, чтобы приступить к практической реализации. Изменения должны быть внесены в функцию componentDidMount

Во-первых, давайте установим пустой массив в качестве значения по умолчанию для переменной decorator. Создайте новый объект (первый декоратор должен покрывать область от начала строки до начала нового текста) и назначьте ему класс, который будет окрашивать фон в зеленый цвет, аналогично тексту, полученному при вводе.

В результате появляются две выделенные области, которые делают выбор более очевидным.

Полный пример кода вы можете найти здесь - https://github.com/lyudad/content-compare-monaco-editor

В нашем следующем примере мы рассмотрим добавление команд в контекстное меню редактора.