在 ACE 编辑器中重置撤消堆栈
Reset the undo stack in ACE editor
我想在 ACE editor 中重置撤消堆栈。行为应该是:
- 我在编辑器中做了一些修改。
- 调用一些魔法函数来重置撤消堆栈
- 尝试撤消时,这是不可能的,因为撤消堆栈已重置。
我想这与 ACE 的 UndoManager
有关,但我不知道如何在下面的示例中使用它。
var editor = ace.edit("editor");
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/markdown");
setTimeout(function() {
editor.setValue("And now how can I reset the\nundo stack,so pressing\nCTRL+Z (or Command + Z) will *NOT*\ngo back to previous value?", -1);
}, 3000);
#editor {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
font-size: 25px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.1.9/ace.js"></script>
<div id="editor">This value will be changed in 3 seconds.</div>
我研究了 editor
和 editor.session
原型以找到一些辅助函数,但没有成功。
使用 editor.session.setValue()
或调用 editor.session.getUndoManager().reset();
参见 https://github.com/ajaxorg/ace/blob/v1.1.9/lib/ace/edit_session.js#L279
是的,UndoManager
就是维护所有历史记录的class。
解决方案是使用 blank/newly 创建的 class.
初始化会话
查看代码段。
var editor = ace.edit("editor");
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/markdown");
setTimeout(function() {
editor.setValue("And now how can I reset the\nundo stack,so pressing\nCTRL+Z (or Command + Z) will *NOT*\ngo back to previous value?", -1);
editor.getSession().setUndoManager(new ace.UndoManager())
}, 3000);
#editor {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
font-size: 25px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.1.9/ace.js"></script>
<div id="editor">This value will be changed in 3 seconds.</div>
我想在 ACE editor 中重置撤消堆栈。行为应该是:
- 我在编辑器中做了一些修改。
- 调用一些魔法函数来重置撤消堆栈
- 尝试撤消时,这是不可能的,因为撤消堆栈已重置。
我想这与 ACE 的 UndoManager
有关,但我不知道如何在下面的示例中使用它。
var editor = ace.edit("editor");
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/markdown");
setTimeout(function() {
editor.setValue("And now how can I reset the\nundo stack,so pressing\nCTRL+Z (or Command + Z) will *NOT*\ngo back to previous value?", -1);
}, 3000);
#editor {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
font-size: 25px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.1.9/ace.js"></script>
<div id="editor">This value will be changed in 3 seconds.</div>
我研究了 editor
和 editor.session
原型以找到一些辅助函数,但没有成功。
使用 editor.session.setValue()
或调用 editor.session.getUndoManager().reset();
参见 https://github.com/ajaxorg/ace/blob/v1.1.9/lib/ace/edit_session.js#L279
是的,UndoManager
就是维护所有历史记录的class。
解决方案是使用 blank/newly 创建的 class.
查看代码段。
var editor = ace.edit("editor");
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/markdown");
setTimeout(function() {
editor.setValue("And now how can I reset the\nundo stack,so pressing\nCTRL+Z (or Command + Z) will *NOT*\ngo back to previous value?", -1);
editor.getSession().setUndoManager(new ace.UndoManager())
}, 3000);
#editor {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
font-size: 25px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.1.9/ace.js"></script>
<div id="editor">This value will be changed in 3 seconds.</div>