我想序列化和存储Ace Session对象,所以我可以打开一个"文件"并恢复所有内容,值,选择,光标位置,模式等.
我试过了JSON.stringify(session)
,它抛出一个循环错误.
有任何想法吗?
最简单的版本
var session = editor.session state = {} state.value = session.getValue(); state.selection = session.selection.toJSON() state.options = session.getOptions() state.mode = session.getMode().$id state.folds = session.getAllFolds().map(function(fold) { return { start : fold.start, end : fold.end, placeholder : fold.placeholder }; }); state.scrollTop = session.getScrollTop() state.scrollLeft = session.getScrollLeft() JSON.stringify(state)
并恢复
session.setValue(state.value) session.selection.fromJSON(state.selection) session.setOptions(state.options) session.setMode(state.mode) try { state.folds.forEach(function(fold){ session.addFold(fold.placeholder, Range.fromPoints(fold.start, fold.end)); }); } catch(e) {} session.setScrollTop(state.scrollTop) session.setScrollTop(state.scrollLeft)
这不包括恢复undomanager,这是可行但有点棘手.你可以尝试碰这个问题https://github.com/ajaxorg/ace/issues/1452