diff options
author | n-peugnet <n.peugnet@free.fr> | 2020-04-09 16:43:10 +0200 |
---|---|---|
committer | n-peugnet <n.peugnet@free.fr> | 2020-04-09 16:44:26 +0200 |
commit | 9f3d969508114c692949b55de39277fd6584c7d3 (patch) | |
tree | 6aacdbaba6efa77410812a947925907d12fb9c51 | |
parent | b49830232096951202688bd775193424880bbd11 (diff) | |
download | wcms-9f3d969508114c692949b55de39277fd6584c7d3.tar.gz wcms-9f3d969508114c692949b55de39277fd6584c7d3.zip |
feat: Coloration for W synthax in CodeMirror
Closes #54
-rw-r--r-- | assets/css/edit.css | 5 | ||||
-rw-r--r-- | src/edit.js | 37 | ||||
-rw-r--r-- | webpack.config.js | 2 |
3 files changed, 37 insertions, 7 deletions
diff --git a/assets/css/edit.css b/assets/css/edit.css index c7fe67b..17465fa 100644 --- a/assets/css/edit.css +++ b/assets/css/edit.css @@ -379,6 +379,11 @@ div#showthumbnail img { cursor: text; } +/* CodeMirror Wcms mode */ +.cm-wcms { + color: red; +} + @media (max-width: 600px) { .bar, .hidephone { diff --git a/src/edit.js b/src/edit.js index c1018d7..ed89de1 100644 --- a/src/edit.js +++ b/src/edit.js @@ -9,6 +9,31 @@ import 'codemirror/addon/search/searchcursor'; import 'codemirror/addon/search/jump-to-line'; import 'codemirror/addon/dialog/dialog'; import 'codemirror/addon/dialog/dialog.css'; +import 'codemirror/addon/mode/overlay'; +import 'codemirror/addon/mode/simple'; + +CodeMirror.defineSimpleMode('wcms', { + start: [ + { + regex: /%(?:HEADER|NAV|ASIDE|MAIN|FOOTER|SUMMARY|LIST|MEDIA)(?:\?(?:[^ &]+=[^ &]+&?)+)?%/, + token: 'wcms', + }, + ], +}); + +CodeMirror.defineMode('wcms-markdown', (config, parserConfig) => { + return CodeMirror.overlayMode( + CodeMirror.getMode(config, parserConfig.backdrop || 'markdown'), + CodeMirror.getMode(config, 'wcms') + ); +}); + +CodeMirror.defineMode('wcms-html', (config, parserConfig) => { + return CodeMirror.overlayMode( + CodeMirror.getMode(config, parserConfig.backdrop || 'htmlmixed'), + CodeMirror.getMode(config, 'wcms') + ); +}); /** @type {HTMLFormElement} */ let form; @@ -39,7 +64,7 @@ window.addEventListener('load', () => { editors = [ CodeMirror.fromTextArea(document.getElementById('editmain'), { - mode: 'markdown', + mode: 'wcms-markdown', lineNumbers: true, lineWrapping: true, extraKeys: { 'Alt-F': 'findPersistent' }, @@ -50,31 +75,31 @@ window.addEventListener('load', () => { extraKeys: { 'Alt-F': 'findPersistent' }, }), CodeMirror.fromTextArea(document.getElementById('editheader'), { - mode: 'markdown', + mode: 'wcms-markdown', lineNumbers: true, lineWrapping: true, extraKeys: { 'Alt-F': 'findPersistent' }, }), CodeMirror.fromTextArea(document.getElementById('editnav'), { - mode: 'markdown', + mode: 'wcms-markdown', lineNumbers: true, lineWrapping: true, extraKeys: { 'Alt-F': 'findPersistent' }, }), CodeMirror.fromTextArea(document.getElementById('editaside'), { - mode: 'markdown', + mode: 'wcms-markdown', lineNumbers: true, lineWrapping: true, extraKeys: { 'Alt-F': 'findPersistent' }, }), CodeMirror.fromTextArea(document.getElementById('editfooter'), { - mode: 'markdown', + mode: 'wcms-markdown', lineNumbers: true, lineWrapping: true, extraKeys: { 'Alt-F': 'findPersistent' }, }), CodeMirror.fromTextArea(document.getElementById('editbody'), { - mode: 'htmlmixed', + mode: 'wcms-html', lineNumbers: true, extraKeys: { 'Alt-F': 'findPersistent' }, }), diff --git a/webpack.config.js b/webpack.config.js index f6af5a3..6611148 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -6,7 +6,7 @@ module.exports = (env) => { // Environment dependent mode: env == 'dev' ? 'development' : 'production', devtool: env == 'dev' ? - 'cheap-eval-source-map' : + 'eval-cheap-module-source-map' : env == 'dist' ? 'hidden-source-map' : 'source-map', |