jevstrudel.git / packages / codemirror / basicSetup.mjs
1import {
2  keymap,
3  highlightSpecialChars,
4  drawSelection,
5  highlightActiveLine,
6  dropCursor,
7  rectangularSelection,
8  crosshairCursor,
9  lineNumbers,
10  highlightActiveLineGutter,
11} from '@codemirror/view';
12import {
13  defaultHighlightStyle,
14  syntaxHighlighting,
15  bracketMatching,
16  foldGutter,
17  foldKeymap,
18} from '@codemirror/language';
19import { defaultKeymap, history, historyKeymap } from '@codemirror/commands';
20import { searchKeymap, highlightSelectionMatches } from '@codemirror/search';
21import { completionKeymap, closeBracketsKeymap } from '@codemirror/autocomplete';

Taken + slightly modified from https://github.com/codemirror/basic-setup/blob/main/src/codemirror.ts

25export const basicSetup = (() => [
26  //   lineNumbers(),
27  //   highlightActiveLineGutter(),
28  highlightSpecialChars(),
29  history(),
30  // foldGutter(),
31  // drawSelection(),
32  dropCursor(),
33  // EditorState.allowMultipleSelections.of(true),
34  // indentOnInput(),
35  // syntaxHighlighting(defaultHighlightStyle, { fallback: true }),
36  // autocompletion(),
37  rectangularSelection(),
38  crosshairCursor(),
39  // highlightActiveLine(),
40  // highlightSelectionMatches(),
41  keymap.of([
42    ...closeBracketsKeymap,
43    ...defaultKeymap,
44    // ...searchKeymap,
45    ...historyKeymap,
46    // ...foldKeymap,
47    // ...completionKeymap,
48  ]),
49])();

/ A minimal set of extensions to create a functional editor. Only / includes the default keymap, undo / history, special character / highlighting, custom selection / drawing, and default highlight / style.

57export const minimalSetup = (() => [
58  highlightSpecialChars(),
59  history(),
60  drawSelection(),
61  syntaxHighlighting(defaultHighlightStyle, { fallback: true }),
62  keymap.of([...defaultKeymap, ...historyKeymap]),
63])();