gpt4 book ai didi

javascript - ACE 编辑器的 UndoManager 的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 17:23:24 24 4
gpt4 key购买 nike

使用 ACE Editor , 它看起来好像使用 editor.getSession().getUndoManager() 和一个已经用 editor.setSession() 设置的 session 返回一个 UndoManager 对象,它只包含 undo()redo()reset() 的空函数。它不会返回带有 hasUndo()hasRedo() 或任何其他方法的 UndoManager documented methods .在源代码中,看起来我的 session 不能有 $undoManager 并且被迫使用空的(和不完整的)$defaultUndoManager:

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

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

为什么使用 editor.setSession() 设置的 session 会有一个像那样未定义$undoManager

最佳答案

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

关于javascript - ACE 编辑器的 UndoManager 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24717585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com