Я пишу текстовый редактор со Scintilla (на самом деле ScintillaNET, но информация о vanilla Scintilla также может быть полезна). В этом редакторе мы хотим отображать информацию об изменениях на полях (например, если я изменяю строку текста, в этой строке будет отображаться мое имя на полях). Мне удалось изменить маржу при изменении строки, но я не могу найти хороший способ отменить изменение маржи, если кто-то отменит свое изменение.
Я пытался вызвать BeginUndoAction в событии BeforeTextInsert и EndUndoAction в конце события TextInserted, но это, похоже, не рассматривает изменения полей как невыполнимые. Есть ли достойный способ отменить изменения полей? Я думаю, что мне, возможно, придется реализовать свой собственный стек отмены с небольшим полем (или изменить стек отмены Scintilla) и просто обрабатывать его таким образом, но если есть что-то встроенное, я бы предпочел это.