使用ACE Editor,好像使用editor.getSession().getUndoManager()
并且已使用editor.setSession()
设置的会话返回UndoManager
对象,其中只包含{{1}的空函数1}},undo()
和redo()
。它不会使用reset()
或hasUndo()
或任何其他documented methods等方法返回UndoManager。在源代码中,看起来我的会话必须没有hasRedo()
,并且被迫使用空(且不完整)$undoManager
:
$defaultUndoManager
为什么使用editor.setSession()设置的会话的this.$defaultUndoManager = {
undo: function() {},
redo: function() {},
reset: function() {}
};
this.getUndoManager = function() {
return this.$undoManager || this.$defaultUndoManager;
};
类似$undoManager
?
答案 0 :(得分:2)
看起来应该在会话中设置撤消管理器,如this (ace.js#L112)
如果缺少undomamager,则会返回defaultUndomanager,以便在访问undomanager时,编辑器方法不必检查null。
我认为EditSession没有自己创建undoManager的原因是允许用户提供undomanager的特殊实现(例如用于协作)