ACE编辑器的UndoManager出现奇怪的行为

时间:2014-07-12 21:42:36

标签: javascript ace-editor

使用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

1 个答案:

答案 0 :(得分:2)

看起来应该在会话中设置撤消管理器,如this (ace.js#L112)
如果缺少undomamager,则会返回defaultUndomanager,以便在访问undomanager时,编辑器方法不必检查null。 我认为EditSession没有自己创建undoManager的原因是允许用户提供undomanager的特殊实现(例如用于协作)

相关问题