2024-01-13 12:40:47 -05:00
|
|
|
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"
|
2024-01-14 20:56:43 -05:00
|
|
|
import {oneDark} from "./theme-tf-dark.js"
|
|
|
|
import {lineNumbers, highlightActiveLineGutter, highlightSpecialChars, highlightTrailingWhitespace, drawSelection, dropCursor, rectangularSelection, crosshairCursor, highlightActiveLine, keymap, highlightWhitespace} from '@codemirror/view';
|
2024-01-13 22:07:08 -05:00
|
|
|
import {foldGutter, indentUnit, indentOnInput, syntaxHighlighting, defaultHighlightStyle, bracketMatching, foldKeymap} from '@codemirror/language';
|
|
|
|
import {history, defaultKeymap, historyKeymap, indentWithTab} from '@codemirror/commands';
|
2024-01-13 12:40:47 -05:00
|
|
|
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(),
|
2024-02-20 12:45:46 -05:00
|
|
|
highlightWhitespace(),
|
2024-01-13 12:40:47 -05:00
|
|
|
history(),
|
|
|
|
foldGutter(),
|
|
|
|
drawSelection(),
|
|
|
|
dropCursor(),
|
|
|
|
EditorState.allowMultipleSelections.of(true),
|
|
|
|
indentOnInput(),
|
2024-01-13 22:07:08 -05:00
|
|
|
indentUnit.of('\t'),
|
2024-01-13 12:40:47 -05:00
|
|
|
syntaxHighlighting(defaultHighlightStyle, { fallback: true }),
|
|
|
|
bracketMatching(),
|
|
|
|
autocompletion(),
|
|
|
|
rectangularSelection(),
|
|
|
|
crosshairCursor(),
|
|
|
|
highlightActiveLine(),
|
|
|
|
highlightSelectionMatches(),
|
2024-02-20 12:45:46 -05:00
|
|
|
highlightTrailingWhitespace(),
|
2024-01-13 12:40:47 -05:00
|
|
|
keymap.of([
|
|
|
|
...defaultKeymap,
|
|
|
|
...searchKeymap,
|
|
|
|
...historyKeymap,
|
|
|
|
...foldKeymap,
|
|
|
|
...completionKeymap,
|
2024-01-13 22:07:08 -05:00
|
|
|
...lintKeymap,
|
|
|
|
indentWithTab,
|
2024-01-13 12:40:47 -05:00
|
|
|
]),
|
|
|
|
javascript(),
|
|
|
|
html(),
|
|
|
|
css(),
|
|
|
|
search(),
|
|
|
|
oneDark,
|
|
|
|
updateListenerExtension,
|
|
|
|
];
|
|
|
|
|
|
|
|
function TildeFriendsEditorView(parent) {
|
|
|
|
return new EditorView({
|
|
|
|
extensions: extensions,
|
|
|
|
parent: parent,
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
export {
|
|
|
|
TildeFriendsEditorView,
|
|
|
|
EditorState,
|
|
|
|
EditorView,
|
|
|
|
extensions,
|
|
|
|
};
|