After a long day of investigation, I have finally understood why Undo/Redo is horked in Diavolo's editor... The hard thing to do in Diavolo is coalesce InsertText transactions so for instance Undo deletes the last word you typed and not only the last char. Working on it now, I need to optimize my refresh method for that.

Update: I wonder if I won't have to write my own transaction manager for diavolo...