Define CodeMirror in external codeMirror.ts

This commit is contained in:
Henrik Giesel 2021-08-08 00:39:40 +02:00
parent e71aed7146
commit e269fe73da
3 changed files with 50 additions and 59 deletions

View file

@ -5,35 +5,13 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
<script lang="typescript">
import { onMount, createEventDispatcher } from "svelte";
import { ChangeTimer } from "./change-timer";
import CodeMirror from "codemirror";
import "codemirror/mode/stex/stex";
import "codemirror/addon/fold/foldcode";
import "codemirror/addon/fold/foldgutter";
import "codemirror/addon/fold/xml-fold";
import "codemirror/addon/edit/matchtags.js";
import "codemirror/addon/edit/closetag.js";
import { CodeMirror, latex, baseOptions } from "./codeMirror";
export let initialValue: string;
const latex = {
name: "stex",
inMathMode: true,
};
const noop = () => {
/* noop */
};
const codeMirrorOptions = {
mode: latex,
theme: "monokai",
lineWrapping: true,
matchTags: { bothTags: true },
extraKeys: { Tab: noop, "Shift-Tab": noop },
viewportMargin: Infinity,
lineWiseCopyCut: false,
autofocus: true,
...baseOptions,
};
let codeMirror: CodeMirror.EditorFromTextArea;

View file

@ -5,45 +5,13 @@
@typescript-eslint/no-non-null-assertion: "off",
*/
import CodeMirror from "codemirror";
import "codemirror/mode/htmlmixed/htmlmixed";
import "codemirror/mode/stex/stex";
import "codemirror/addon/fold/foldcode";
import "codemirror/addon/fold/foldgutter";
import "codemirror/addon/fold/xml-fold";
import "codemirror/addon/edit/matchtags.js";
import "codemirror/addon/edit/closetag.js";
import { CodeMirror, htmlanki, baseOptions, gutterOptions } from "./codeMirror";
import { inCodable } from "./toolbar";
const latex = {
name: "stex",
inMathMode: true,
};
const htmlanki = {
name: "htmlmixed",
tags: {
"anki-mathjax": [[null, null, latex]],
},
};
const noop = () => {
/* noop */
};
const codeMirrorOptions = {
mode: htmlanki,
theme: "monokai",
lineNumbers: true,
lineWrapping: true,
foldGutter: true,
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
matchTags: { bothTags: true },
autoCloseTags: true,
extraKeys: { Tab: noop, "Shift-Tab": noop },
viewportMargin: Infinity,
lineWiseCopyCut: false,
...baseOptions,
...gutterOptions,
};
const parser = new DOMParser();

45
ts/editor/codeMirror.ts Normal file
View file

@ -0,0 +1,45 @@
// Copyright: Ankitects Pty Ltd and contributors
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import CodeMirror from "codemirror";
import "codemirror/mode/htmlmixed/htmlmixed";
import "codemirror/mode/stex/stex";
import "codemirror/addon/fold/foldcode";
import "codemirror/addon/fold/foldgutter";
import "codemirror/addon/fold/xml-fold";
import "codemirror/addon/edit/matchtags.js";
import "codemirror/addon/edit/closetag.js";
export { CodeMirror };
export const latex = {
name: "stex",
inMathMode: true,
};
export const htmlanki = {
name: "htmlmixed",
tags: {
"anki-mathjax": [[null, null, latex]],
},
};
const noop = () => {
/* noop */
};
export const baseOptions = {
theme: "monokai",
lineWrapping: true,
matchTags: { bothTags: true },
autoCloseTags: true,
extraKeys: { Tab: noop, "Shift-Tab": noop },
viewportMargin: Infinity,
lineWiseCopyCut: false,
};
export const gutterOptions = {
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
lineNumbers: true,
foldGutter: true,
};