Давайте возьмем этот пример во внимание.
У меня есть файл с содержимым:
1: one
2: two
3: three
, и я создаю оформление линии для строки "two":
const position = new vscode.Position(1, 0);
const range = new vscode.Range(position, position);
const decoration = vscode.window.createTextEditorDecorationType({
gutterIconPath: context.asAbsolutePath('images/icon.svg')
});
vscode.window.activeTextEditor?.setDecorations(decoration, [range]);
это дает мне
1: one
* 2: two
3: three
Следующий шаг : я изменяю содержимое файла, но добавляю новую строку перед строкой "два".
После этого файл выглядит следующим образом:
1: one
2:
* 3: two
4: three
Как вы можете видеть, VSCode обновил мое оформление линии и теперь он расположен на строке 3 (вместо 2), что совершенно правильно, и я ожидал, что.
И Теперь вопрос : как я могу получить эту текущую обновленную позицию моего украшения линии? Если я держу ссылку range
- она все еще указывает на строку 2.
Как правильно обрабатывать изменения в оформлении?
Любой из этих двух вариантов меня удовлетворит:
- способ запроса всех текущих позиций оформления, отображаемых для текущего открытого файла
- способ подписки на
decoration
/ range
изменений, чтобы я мог обрабатывать их вручную.
Может быть, я совершенно не прав, и это нужно сделать по-другому.
Пожалуйста, сообщите!