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