所以我正在使用CodeMirror,我想要一种省略undo
状态的某些编辑的方法。特别是,我有一种情况需要一次击键
天真地这样做意味着使用击键,然后点击undo
将使包含新文本的镜像没有缩进。我想要一个undo
来恢复初始文本,而不是去替换文本的缩进版本。
唯一支持API的方法似乎是在缩进之前进行.getHistory
调用,然后立即进行.setHistory
调用,但the docs暗示这是一个坏主意。具体来说,如果镜像内容在.getHistory
和.setHistory
次调用之间发生变化,则效果不明确,这就是这种情况的重点。
text marking API中还有一个addToHistory
标记,但它只有标记而非压缩等任意编辑。
有没有一个好方法可以做我正在寻找的东西?
答案 0 :(得分:4)
在单个operation内进行的更改只会导致单个历史事件。
如果安排单个操作不可行,则更改的原始字段(可设置为replaceRange
和replaceSelection
的参数,在其他情况下通过注册{更加笨拙{1}}事件处理程序)确定CodeMirror执行的历史事件组合的类型。如果指定以星号(beforeChange
)字符开头的原点,则将合并具有相同原点的后续更改。如果原点以*
开头,则后续的同源变更将在+
毫秒内发生。