codemirror option for text widgets & danbooru tag autocomplete

This commit is contained in:
space-nuko
2023-05-24 11:47:08 -05:00
parent 6bbd18a261
commit 18c63c9f2e
15 changed files with 100697 additions and 25 deletions

View File

@@ -0,0 +1,55 @@
import type { Extension } from "@codemirror/state";
import {
lineNumbers,
highlightSpecialChars,
drawSelection,
rectangularSelection,
crosshairCursor,
keymap
} from "@codemirror/view";
import { EditorView } from "@codemirror/view";
import { EditorState } from "@codemirror/state";
import {
foldGutter,
indentOnInput,
syntaxHighlighting,
defaultHighlightStyle,
foldKeymap
} from "@codemirror/language";
import { history, defaultKeymap, historyKeymap } from "@codemirror/commands";
import {
closeBrackets,
closeBracketsKeymap,
completionKeymap
} from "@codemirror/autocomplete";
import { lintKeymap } from "@codemirror/lint";
import {
type CompletionSource, autocompletion, CompletionContext, startCompletion,
currentCompletions, completionStatus, completeFromList, acceptCompletion
} from "@codemirror/autocomplete"
import DanbooruTags from "$lib/DanbooruTags";
export const basicSetup: Extension = /*@__PURE__*/ (() => [
lineNumbers(),
highlightSpecialChars(),
history(),
foldGutter(),
drawSelection(),
EditorState.allowMultipleSelections.of(true),
indentOnInput(),
syntaxHighlighting(defaultHighlightStyle, { fallback: true }),
closeBrackets(),
rectangularSelection(),
crosshairCursor(),
EditorView.lineWrapping,
DanbooruTags.getCompletionExt(),
keymap.of([
...closeBracketsKeymap,
...defaultKeymap,
...historyKeymap,
...foldKeymap,
...completionKeymap,
...lintKeymap
])
])();