aboutsummaryrefslogtreecommitdiff
path: root/src/edit.js
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 /src/edit.js
parentb49830232096951202688bd775193424880bbd11 (diff)
downloadwcms-9f3d969508114c692949b55de39277fd6584c7d3.tar.gz
wcms-9f3d969508114c692949b55de39277fd6584c7d3.zip
feat: Coloration for W synthax in CodeMirror
Closes #54
Diffstat (limited to 'src/edit.js')
-rw-r--r--src/edit.js37
1 files changed, 31 insertions, 6 deletions
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' },
}),