如何将叠加层限制在特定范围内?

How can I limit an overlay to a specific range?

我想向我的编辑器添加一个仅适用于给定范围的叠加层(例如,从第 3 行第 44 列到第 8 行第 5 列)。

问题是我无法想出任何方法来找到我的 token() 方法中的当前行,因为覆盖是无状态的,所以我无法将当前行存储在状态。

我仔细研究了 multiplex.jsoverlay.js 中的扩展,并试图理解嵌套模式是如何工作的,但我想不出一种方法来使用这些工具来帮助我.请记住,我仍然希望它表现得像一个叠加层,因此不会干扰基本模式。

我的替代方法是扫描添加的 class 元素并手动修改它们,使用 element.getBoundingClientRect()cm.coorsChar() 检查它们的位置。但这很丑陋,需要手动刷新,并且当标记的元素跨越我的范围边界时会导致错误。知道如何正确解决这个问题吗?

你不能像那样绑定叠加层。但您也不必手动弄乱 dom。 markText 方法提供了一种更方便的方式来设置文档特定部分的样式。