在codemirror中操作撤消状态

时间:2014-12-19 05:34:13

标签: undo codemirror

所以我正在使用CodeMirror,我想要一种省略undo状态的某些编辑的方法。特别是,我有一种情况需要一次击键

  1. 替换部分镜像文字和
  2. 自动缩进新区域
  3. 天真地这样做意味着使用击键,然后点击undo将使包含新文本的镜像没有缩进。我想要一个undo来恢复初始文本,而不是去替换文本的缩进版本。

    唯一支持API的方法似乎是在缩进之前进行.getHistory调用,然后立即进行.setHistory调用,但the docs暗示这是一个坏主意。具体来说,如果镜像内容在.getHistory.setHistory次调用之间发生变化,则效果不明确,这就是这种情况的重点。

    text marking API中还有一个addToHistory标记,但它只有标记而非压缩等任意编辑。

    有没有一个好方法可以做我正在寻找的东西?

1 个答案:

答案 0 :(得分:4)

在单个operation内进行的更改只会导致单个历史事件。

如果安排单个操作不可行,则更改的原始字段(可设置为replaceRangereplaceSelection的参数,在其他情况下通过注册{更加笨拙{1}}事件处理程序)确定CodeMirror执行的历史事件组合的类型。如果指定以星号(beforeChange)字符开头的原点,则将合并具有相同原点的后续更改。如果原点以*开头,则后续的同源变更将在+毫秒内发生。

相关问题