我正在用 Scintilla 编写一个文本编辑器(实际上是 ScintillaNET,但有关 vanilla Scintilla 的信息也可能很有用)。在此编辑器中,我们希望在边距中显示更改信息(例如,如果我修改一行文本,该行将在边距中显示我的名字)。我已经设法在修改一行时更改了边距,但是如果有人撤消了他们的更改,我似乎无法找到撤消边距更改的好方法。
我尝试在 BeforeTextInsert 事件中调用 BeginUndoAction 并在 TextInserted 事件结束时调用 EndUndoAction,但这似乎并没有将边距更改视为可撤消的。有没有一种不错的方法来撤消保证金变化?我想我可能需要实现我自己的小边距撤消堆栈(或修改 Scintilla 的撤消堆栈)并以这种方式处理它,但如果有内置的东西,我宁愿这样做。