diff --git a/public/js/index.js b/public/js/index.js index 244b6aa..bfb793c 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -1596,6 +1596,12 @@ editor.on('beforeChange', function (cm, change) { break; } } +editor.on('changes', function (cm, changes) { + updateHistory(); + preventSyncScroll = true; + var scrollInfo = editor.getScrollInfo(); + editor.scrollTo(null, scrollInfo.top - 1); + editor.scrollTo(null, scrollInfo.top); }); editor.on('focus', function (cm) { for (var i = 0; i < onlineUsers.length; i++) { @@ -1731,7 +1737,6 @@ function updateViewInner() { generateToc('toc-affix'); generateScrollspy(); smoothHashScroll(); - writeHistory(ui.area.markdown); isDirty = false; clearMap(); buildMap(); diff --git a/public/js/syncscroll.js b/public/js/syncscroll.js index a9eafe4..143e668 100644 --- a/public/js/syncscroll.js +++ b/public/js/syncscroll.js @@ -139,6 +139,8 @@ md.renderer.rules.code = function (tokens, idx /*, options, env */ ) { return '' + Remarkable.utils.escapeHtml(tokens[idx].content) + ''; }; +var preventSyncScroll = false; + //var editorScrollThrottle = 100; var buildMapThrottle = 100; @@ -299,6 +301,10 @@ function getEditorLineNoByTop(top) { function syncScrollToView(event, _lineNo) { if (currentMode != modeType.both) return; + if (preventSyncScroll) { + preventSyncScroll = false; + return; + } var lineNo, posTo; var scrollInfo = editor.getScrollInfo(); if (!scrollMap || !lineHeightMap) {