让我们考虑这个例子。
我有一个包含内容的文件:
1: one
2: two
3: three
我为“二”行创建了一个线条装饰:
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
更改的方法,以便我可以手动处理这些。
也许我完全错了,应该以另一种方式完成。
请指教!