ACE编辑器的UndoManager的奇怪行为

布兰农

使用ACE编辑器,它就像使用出现editor.getSession().getUndoManager()与已经设定会话editor.setSession()返回一个UndoManager只包含空函数对象undo()redo()reset()它不返回带有诸如hasUndo(),或hasRedo()或任何其他已记录方法的方法的UndoManager 在源代码中,看起来我的会话不得具有,$undoManager并且被迫使用空(且不完整)$defaultUndoManager

this.$defaultUndoManager = {
    undo: function() {},
    redo: function() {},
    reset: function() {}
};

this.getUndoManager = function() {
    return this.$undoManager || this.$defaultUndoManager;
};

为什么会被设定editor.setSession会话(),有一个$undoManagerundefined这样呢?

一个用户

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章