首页 文章

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

提问于
浏览
5

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

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

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


UPDATE: 当我处理Monaco编辑器实例时,可以完全破坏JavaScript环境 . 它集成在 C# 环境中,能够与 JS 进行通信 . 我的目标是将 Monaco Editor model 存储在 C# 中或序列化它 .

1 回答

  • 2

    这一切都与模型有关 .

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

    见例子

    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 可用于恢复编辑器的光标位置 .

相关问题