67 lines
1.9 KiB
JavaScript
67 lines
1.9 KiB
JavaScript
|
import {EditorState} from "@codemirror/state"
|
||
|
import {EditorView} from '@codemirror/view';
|
||
|
import {javascript} from "@codemirror/lang-javascript"
|
||
|
import {html} from "@codemirror/lang-html"
|
||
|
import {css} from "@codemirror/lang-css"
|
||
|
import {search} from "@codemirror/search"
|
||
|
import {oneDark} from "@codemirror/theme-one-dark"
|
||
|
import {lineNumbers, highlightActiveLineGutter, highlightSpecialChars, drawSelection, dropCursor, rectangularSelection, crosshairCursor, highlightActiveLine, keymap} from '@codemirror/view';
|
||
|
import {foldGutter, indentOnInput, syntaxHighlighting, defaultHighlightStyle, bracketMatching, foldKeymap} from '@codemirror/language';
|
||
|
import {history, defaultKeymap, historyKeymap} from '@codemirror/commands';
|
||
|
import {highlightSelectionMatches, searchKeymap} from '@codemirror/search';
|
||
|
import {autocompletion, closeBracketsKeymap, completionKeymap} from '@codemirror/autocomplete';
|
||
|
import {lintKeymap} from '@codemirror/lint';
|
||
|
|
||
|
let updateListenerExtension = EditorView.updateListener.of((update) => {
|
||
|
if (update.docChanged && update.view.onDocChange) {
|
||
|
update.view.onDocChange();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
const extensions = [
|
||
|
lineNumbers(),
|
||
|
highlightActiveLineGutter(),
|
||
|
highlightSpecialChars(),
|
||
|
history(),
|
||
|
foldGutter(),
|
||
|
drawSelection(),
|
||
|
dropCursor(),
|
||
|
EditorState.allowMultipleSelections.of(true),
|
||
|
indentOnInput(),
|
||
|
syntaxHighlighting(defaultHighlightStyle, { fallback: true }),
|
||
|
bracketMatching(),
|
||
|
autocompletion(),
|
||
|
rectangularSelection(),
|
||
|
crosshairCursor(),
|
||
|
highlightActiveLine(),
|
||
|
highlightSelectionMatches(),
|
||
|
keymap.of([
|
||
|
...defaultKeymap,
|
||
|
...searchKeymap,
|
||
|
...historyKeymap,
|
||
|
...foldKeymap,
|
||
|
...completionKeymap,
|
||
|
...lintKeymap
|
||
|
]),
|
||
|
javascript(),
|
||
|
html(),
|
||
|
css(),
|
||
|
search(),
|
||
|
oneDark,
|
||
|
updateListenerExtension,
|
||
|
];
|
||
|
|
||
|
function TildeFriendsEditorView(parent) {
|
||
|
return new EditorView({
|
||
|
extensions: extensions,
|
||
|
parent: parent,
|
||
|
});
|
||
|
};
|
||
|
|
||
|
export {
|
||
|
TildeFriendsEditorView,
|
||
|
EditorState,
|
||
|
EditorView,
|
||
|
extensions,
|
||
|
};
|