Я использую редактор Monaco для отображения некоторых пользовательских типов файлов.
Для этих файлов мне нужно настроить отображаемые номера строк в зависимости от моделей. Это подходит для одной модели, но не тогда, когда я хочу просмотреть определение в другой модели/файле. (Для содержимого отображаемые номера строк не всегда начинаются с одного и того же номера, а некоторые физические строки в файле не считаются строкой, поэтому рядом с ними не должно отображаться номер строки.)
Я устанавливаю собственные номера строк согласно примеру https://microsoft.github.io/monaco-editor/playground.html?source=v0.49.0#example-interacting-with-the-editor-customizing. -цифры-строки
Это lineNumbersFunc всегда одинаково для каждого отображаемого файла/модели, но это не то, что я хочу.
Есть ли другой способ указать номера строк? (по моделям)
или
Есть ли способ получить модель, к которой относится номер строки в lineNumbersFunc?
Я пробовал использовать editor.getModel() внутри функции, но это всегда возвращает исходную модель, а не ту, которая отображается во встроенном или просмотренном представлении.
--- редактировать ---
Посмотрите пример того, что я пытаюсь сделать на детской площадке
Это происходит при нажатии на кодовую линзу.
Это то, чем стало SO: копировать ответы только для того, чтобы получить репутацию от наград? Я думаю, что единственная репутация, которую можно испортить, — это ваша собственная.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я нашел способ сделать это с помощью onDidCreateEditor.
Когда это событие запускается, я смотрю на uri новой модели и использую соответствующий метод для установки другого номера строки.
Так:
const customLineNumbersAlpha = (num) => {
const map = [ '', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'];
return (num < map.length) ? map[num] : ' ';
}
const customLineNumbersFrom10 = (num) => {
const map = [ '', '10', '11', '12', '13', '14', '15', '16'];
return (num < map.length) ? map[num] : ' ';
}
monaco.editor.onDidCreateEditor(newEditor => {
newEditor.onDidChangeModel(e => {
if (e.newModelUrl == model1.uri)
{
newEditor.updateOptions({ lineNumbers: customLineNumbersAlpha });
}
else if (e.newModelUrl == model2.uri)
{
newEditor.updateOptions({ lineNumbers: customLineNumbersFrom10 });
}
});
});
Посмотрите, как он работает на детской площадке
который обеспечивает вывод следующим образом:
Я увидел, что ты нашел способ, который кажется мне великим. Я также пытался найти решение, но безуспешно. И у меня мало знаний о редакторе Монако. Я ценю ваше решение @Matt Lacey