X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/228aa4740bf9b1e7cf737f356cf92e549bfcdaf6..refs/pull/1762/head:/resources/js/services/code.js diff --git a/resources/js/services/code.js b/resources/js/services/code.js index 7dddc92fd..f69f28b8e 100644 --- a/resources/js/services/code.js +++ b/resources/js/services/code.js @@ -29,6 +29,8 @@ import 'codemirror/mode/yaml/yaml'; // Addons import 'codemirror/addon/scroll/scrollpastend'; +// Mapping of potential languages or formats from user input +// to their proper codemirror modes. const modeMap = { css: 'css', c: 'text/x-csrc', @@ -43,7 +45,7 @@ const modeMap = { haskell: 'haskell', hs: 'haskell', html: 'htmlmixed', - ini: 'text/x-ini', + ini: 'properties', javascript: 'javascript', json: {name: 'javascript', json: true}, js: 'javascript', @@ -56,7 +58,7 @@ const modeMap = { ml: 'mllike', nginx: 'nginx', powershell: 'powershell', - properties: 'text/x-properties', + properties: 'properties', ocaml: 'mllike', php: 'php', py: 'python', @@ -105,6 +107,7 @@ function highlightElem(elem) { value: content, mode: mode, lineNumbers: true, + lineWrapping: false, theme: getTheme(), readOnly: true }); @@ -191,6 +194,7 @@ function wysiwygView(elem) { value: content, mode: getMode(lang), lineNumbers: true, + lineWrapping: false, theme: getTheme(), readOnly: true }); @@ -216,8 +220,8 @@ function popupEditor(elem, modeSuggestion) { value: content, mode: getMode(modeSuggestion), lineNumbers: true, - theme: getTheme(), - lineWrapping: true + lineWrapping: false, + theme: getTheme() }); } @@ -243,24 +247,27 @@ function setContent(cmInstance, codeContent) { } /** - * Get a CodeMirror instace to use for the markdown editor. + * Get a CodeMirror instance to use for the markdown editor. * @param {HTMLElement} elem * @returns {*} */ function markdownEditor(elem) { - let content = elem.textContent; - - return CodeMirror(function (elt) { - elem.parentNode.insertBefore(elt, elem); - elem.style.display = 'none'; - }, { + const content = elem.textContent; + const config = { value: content, mode: "markdown", lineNumbers: true, - theme: getTheme(), lineWrapping: true, + theme: getTheme(), scrollPastEnd: true, - }); + }; + + window.$events.emitPublic(elem, 'editor-markdown-cm::pre-init', {config}); + + return CodeMirror(function (elt) { + elem.parentNode.insertBefore(elt, elem); + elem.style.display = 'none'; + }, config); } /**