繁体   English   中英

获取/恢复Monaco编辑器Undo&Redo堆栈

[英]Get/Restore Monaco editor Undo&Redo stack

我想创建一个系统来存储Monaco编辑器的Undo&Redo stack

为什么? :我有一个Monaco实例,我做了几处修改。 然后我必须处理该实例并打开一个新实例。 在这里,我想恢复与前一个实例中相同的堆栈状态。

问题 :如何获取和恢复Undo&Redo stack


更新:当我处理Monaco编辑器实例时,JavaScript环境可以完全销毁。 它集成在一个能够与JS通信的C#环境中。 我的目标是将Monaco Editor model存储在C#或序列化它。

这一切都与模型有关。

如果您恢复相同的模型,您将拥有撤消和重做堆栈

见例子

var model = editorInstance.getModel();
var viewState = editorInstance.saveViewState();

//Destroy your instance for whatever reason
editorInstance.dispose();

//When you create the new instance load the model that you saved
var newInstance = monaco.editor.create(elem, options);
newInstance.setModel(model);
newInstance.restoreViewState(viewState);

可能有帮助的东西就是与摩纳哥事件挂钩

monaco.editor.onWillDisposeModel(saveModel)

viewState可用于恢复编辑器的光标位置。

这是非官方的方式:

const {past, future} = editor.getModel()._commandManager;

在您的情况下,您可以在pastfuture运行JSON.stringify 然后,当您重新创建编辑器时,您就可以了

const cm = editor.getModel()._commandManager;
cm.past = JSON.parse(past);
cm.future = JSON.parse(future);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM