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

时间:2015-10-19 11:28:50

标签: javascript codemirror codemirror-modes

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

问题在于我无法找到任何方法来查找当前行在token()方法中的内容,因为叠加是无状态的,因此我无法将当前行存储在该状态中。

我仔细考虑了multiplex.jsoverlay.js中的扩展程序,并试图了解嵌套模式的工作原理,但我无法找到一种方法来使用这些工具来帮助我。请记住,我仍然希望它的行为类似于叠加层,因此不会打扰基本模式。

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

1 个答案:

答案 0 :(得分:1)

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