我正在编写一个跟踪特定行的 IDE 插件 - 认为它类似于 IDE 的内置书签功能。当用户编辑源代码时,特定行的位置会发生变化 - 例如,当在其上方某处按下 Enter 时,可能已经是第 100 行的第 101 行变为第 101 行。用户还可以删除行、一次选择和删除多个块、粘贴大块文本等,所有这些都会改变代码。
我想跟踪行插入和删除,以便知道“第 100 行”变成“第 101 行”,然后是“第 102 行”,依此类推。这怎么可能?
到目前为止,我发现的最接近的解决方案是使用INTAEditServicesNotifier.EditorViewModified
它可以在每次进行修改时访问整个缓冲区。然后可以将整个缓冲区与前一个缓冲区的存储副本进行比较,以查看有哪些更改,并查看添加或删除了多少换行符以及在何处添加或删除。
每次编辑器修改都会产生巨大的开销,并且必须有更好的方法。