aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorn-peugnet <n.peugnet@free.fr>2020-04-09 16:43:10 +0200
committern-peugnet <n.peugnet@free.fr>2020-04-09 16:44:26 +0200
commit9f3d969508114c692949b55de39277fd6584c7d3 (patch)
tree6aacdbaba6efa77410812a947925907d12fb9c51
parentb49830232096951202688bd775193424880bbd11 (diff)
downloadwcms-9f3d969508114c692949b55de39277fd6584c7d3.tar.gz
wcms-9f3d969508114c692949b55de39277fd6584c7d3.zip
feat: Coloration for W synthax in CodeMirror
Closes #54
-rw-r--r--assets/css/edit.css5
-rw-r--r--src/edit.js37
-rw-r--r--webpack.config.js2
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',