From b9f77e0bea2deb91d9b3c32f272d3491869af5f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=98=8E=E6=98=8E?= Date: Fri, 18 Dec 2015 00:07:19 +0800 Subject: [PATCH 1/3] Adding support for asciidoctor A editor that can edit asciidoctor online ..... It seems the performance of the editor is not good. --- src/js/simplemde.js | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/js/simplemde.js b/src/js/simplemde.js index 352cf8d..456925b 100644 --- a/src/js/simplemde.js +++ b/src/js/simplemde.js @@ -9,6 +9,7 @@ require("codemirror/addon/mode/overlay.js"); require("codemirror/mode/gfm/gfm.js"); require("codemirror/mode/xml/xml.js"); require("spell-checker"); +require("codemirror-asciidoc"); var marked = require("marked"); @@ -371,6 +372,10 @@ function toggleSideBySide(editor) { // Updates preview cm.on("update", function() { preview.innerHTML = editor.options.previewRender(editor.value(), preview); + //post preview render callback let customer programming such as fire highlight script. + if(editor.options.afterPreviewRender) { + editor.options.afterPreviewRender(preview, editor); + } }); } @@ -1037,9 +1042,7 @@ SimpleMDE.prototype.render = function(el) { } this.codemirror = CodeMirror.fromTextArea(el, { - mode: mode, - backdrop: backdrop, - theme: "paper", + mode: "asciidoc", tabSize: (options.tabSize != undefined) ? options.tabSize : 2, indentUnit: (options.tabSize != undefined) ? options.tabSize : 2, indentWithTabs: (options.indentWithTabs === false) ? false : true, @@ -1050,6 +1053,20 @@ SimpleMDE.prototype.render = function(el) { allowDropFileTypes: ["text/plain"] }); + /* this.codemirror = CodeMirror.fromTextArea(el, { + mode: mode, + backdrop: backdrop, + theme: "paper", + tabSize: (options.tabSize != undefined) ? options.tabSize : 2, + indentUnit: (options.tabSize != undefined) ? options.tabSize : 2, + indentWithTabs: (options.indentWithTabs === false) ? false : true, + lineNumbers: false, + autofocus: (options.autofocus === true) ? true : false, + extraKeys: keyMaps, + lineWrapping: (options.lineWrapping === false) ? false : true, + allowDropFileTypes: ["text/plain"] + });*/ + if(options.toolbar !== false) { this.createToolbar(); } From 4fe8ad6cdf22dc364dc43380e67d8da86d69e7b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E5=93=B2=E6=98=8E?= <7upcat@gmail.com> Date: Fri, 18 Dec 2015 16:32:50 +0800 Subject: [PATCH 2/3] Fix bug related with issue #206 When user click 'toggleSideBySide' button will always register a new 'update' listener .Modify the logic if toggle on register a listener if toggle off remove the listener. --- src/js/simplemde.js | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/src/js/simplemde.js b/src/js/simplemde.js index 456925b..c64b160 100644 --- a/src/js/simplemde.js +++ b/src/js/simplemde.js @@ -9,7 +9,6 @@ require("codemirror/addon/mode/overlay.js"); require("codemirror/mode/gfm/gfm.js"); require("codemirror/mode/xml/xml.js"); require("spell-checker"); -require("codemirror-asciidoc"); var marked = require("marked"); @@ -334,7 +333,7 @@ function toggleSideBySide(editor) { var wrapper = cm.getWrapperElement(); var preview = wrapper.nextSibling; var toolbarButton = editor.toolbarElements["side-by-side"]; - + var toggleOn = false; if(/editor-preview-active-side/.test(preview.className)) { preview.className = preview.className.replace( /\s*editor-preview-active-side\s*/g, "" @@ -352,6 +351,7 @@ function toggleSideBySide(editor) { }, 1); toolbarButton.className += " active"; wrapper.className += " CodeMirror-sided"; + toggleOn = true; } // Hide normal preview if active @@ -366,17 +366,23 @@ function toggleSideBySide(editor) { toolbar_div.className = toolbar_div.className.replace(/\s*disabled-for-preview*/g, ""); } - // Start preview with the current text - preview.innerHTML = editor.options.previewRender(editor.value(), preview); - - // Updates preview - cm.on("update", function() { + var renderfunc = function() { preview.innerHTML = editor.options.previewRender(editor.value(), preview); - //post preview render callback let customer programming such as fire highlight script. if(editor.options.afterPreviewRender) { editor.options.afterPreviewRender(preview, editor); } - }); + }; + + //register the function it to cm object it can be refered by next toggle. + if(!cm.renderfunc) { + cm.renderfunc = renderfunc; + } + //if toggle off should remove the old listener avoid register a new listener each click 'toggleSideBySide' button + if(toggleOn) { + cm.on("update", cm.renderfunc); + } else { + cm.off("update", cm.renderfunc); + } } @@ -1042,7 +1048,9 @@ SimpleMDE.prototype.render = function(el) { } this.codemirror = CodeMirror.fromTextArea(el, { - mode: "asciidoc", + mode: mode, + backdrop: backdrop, + theme: "paper", tabSize: (options.tabSize != undefined) ? options.tabSize : 2, indentUnit: (options.tabSize != undefined) ? options.tabSize : 2, indentWithTabs: (options.indentWithTabs === false) ? false : true, @@ -1053,20 +1061,6 @@ SimpleMDE.prototype.render = function(el) { allowDropFileTypes: ["text/plain"] }); - /* this.codemirror = CodeMirror.fromTextArea(el, { - mode: mode, - backdrop: backdrop, - theme: "paper", - tabSize: (options.tabSize != undefined) ? options.tabSize : 2, - indentUnit: (options.tabSize != undefined) ? options.tabSize : 2, - indentWithTabs: (options.indentWithTabs === false) ? false : true, - lineNumbers: false, - autofocus: (options.autofocus === true) ? true : false, - extraKeys: keyMaps, - lineWrapping: (options.lineWrapping === false) ? false : true, - allowDropFileTypes: ["text/plain"] - });*/ - if(options.toolbar !== false) { this.createToolbar(); } From e96fddffcbc73f95c44be81deb16bfd1f13fa50d Mon Sep 17 00:00:00 2001 From: 7cat <7upcat@gmail.com> Date: Fri, 18 Dec 2015 16:38:40 +0800 Subject: [PATCH 3/3] Update simplemde.js --- src/js/simplemde.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/js/simplemde.js b/src/js/simplemde.js index c64b160..a275e88 100644 --- a/src/js/simplemde.js +++ b/src/js/simplemde.js @@ -368,17 +368,15 @@ function toggleSideBySide(editor) { var renderfunc = function() { preview.innerHTML = editor.options.previewRender(editor.value(), preview); - if(editor.options.afterPreviewRender) { - editor.options.afterPreviewRender(preview, editor); - } }; - //register the function it to cm object it can be refered by next toggle. + //register the function it to cm object it can be reffered by next toggle. if(!cm.renderfunc) { cm.renderfunc = renderfunc; } //if toggle off should remove the old listener avoid register a new listener each click 'toggleSideBySide' button if(toggleOn) { + preview.innerHTML = editor.options.previewRender(editor.value(), preview); cm.on("update", cm.renderfunc); } else { cm.off("update", cm.renderfunc);