javascript - 获取/恢复 Monaco 编辑器撤消重做堆栈

标签 javascript monaco-editor

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

为什么?:我有一个摩纳哥实例,我在其中进行了多项更改。然后我必须处理该实例并打开一个新实例。在这里,我想恢复上一个实例中的堆栈状态。

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


更新: 当我处理 Monaco 编辑器实例时,JavaScript 环境可以被完全破坏。它集成在能够与JS 通信的C# 环境中。我的目标是将 Monaco Editor 模型 存储在 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);

可能有帮助的是绑定(bind)到摩纳哥事件 Hook

monaco.editor.onWillDisposeModel(saveModel)

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

关于javascript - 获取/恢复 Monaco 编辑器撤消重做堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48210120/

相关文章:

javascript - 为冰柱可视化添加尺寸

javascript - Phonegap应用程序通过wifi发送数据

javascript - 为什么我的 req.body 在 POST 时总是为空?

javascript - Monaco Editor 复制/剪切/粘贴操作

angular - 如何清除现有模型,或者有没有办法重新初始化 Monaco Editor

reactjs - 使用 Monaco 编辑器无法在详细信息列表中导航

javascript - 帮忙用 javascript 解析 XML?

javascript - three.js SoftwareRenderer - 透明背景

monaco-editor - 如何从像 cdnjs 这样的 CDN 运行 Monaco 编辑器?

javascript - 在Angular应用中使用ngx-monaco-editor在404结果