gpt4 book ai didi

undo - 在 codemirror 中操作撤销状态

转载 作者:行者123 更新时间:2023-12-04 20:00:17 31 4
gpt4 key购买 nike

所以我正在使用 CodeMirror,我想要一种方法来从 undo 状态中省略某些编辑。特别是,我遇到了一种情况,我想要一次击键

  1. 替换部分镜像文本并
  2. 自动缩进新区域

天真地这样做意味着使用击键,然后点击 undo 将留下包含没有缩进的新文本的镜像。我想要一个撤消来恢复初始文本,而不是转到替换文本的未缩进版本。

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

text marking API 中还有一个 addToHistory 标志, 但它只是可用的标记,而不是像缩进这样的任意编辑。

有什么好的方法可以完成我在这里寻找的事情吗?

最佳答案

在单个 operation 内进行的更改将只产生一个历史事件。

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

关于undo - 在 codemirror 中操作撤销状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27560258/

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