我想序列化并存储 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 https://github.com/ajaxorg/ace/issues/1452
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)