mirror of
https://github.com/eliasstepanik/strudel.git
synced 2026-01-11 13:48:40 +00:00
integrated vscode bindings
This commit is contained in:
parent
248757ac3f
commit
d4c12dcef4
@ -33,12 +33,17 @@
|
|||||||
"homepage": "https://github.com/tidalcycles/strudel#readme",
|
"homepage": "https://github.com/tidalcycles/strudel#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codemirror/autocomplete": "^6.6.0",
|
"@codemirror/autocomplete": "^6.6.0",
|
||||||
|
"@codemirror/commands": "^6.0.0",
|
||||||
"@codemirror/lang-javascript": "^6.1.7",
|
"@codemirror/lang-javascript": "^6.1.7",
|
||||||
|
"@codemirror/language": "^6.0.0",
|
||||||
|
"@codemirror/lint": "^6.0.0",
|
||||||
|
"@codemirror/search": "^6.0.0",
|
||||||
"@codemirror/state": "^6.2.0",
|
"@codemirror/state": "^6.2.0",
|
||||||
"@codemirror/view": "^6.10.0",
|
"@codemirror/view": "^6.10.0",
|
||||||
"@lezer/highlight": "^1.1.4",
|
"@lezer/highlight": "^1.1.4",
|
||||||
"@replit/codemirror-emacs": "^6.0.1",
|
"@replit/codemirror-emacs": "^6.0.1",
|
||||||
"@replit/codemirror-vim": "^6.0.14",
|
"@replit/codemirror-vim": "^6.0.14",
|
||||||
|
"@replit/codemirror-vscode-keymap": "^6.0.2",
|
||||||
"@strudel.cycles/core": "workspace:*",
|
"@strudel.cycles/core": "workspace:*",
|
||||||
"@strudel.cycles/transpiler": "workspace:*",
|
"@strudel.cycles/transpiler": "workspace:*",
|
||||||
"@strudel.cycles/webaudio": "workspace:*",
|
"@strudel.cycles/webaudio": "workspace:*",
|
||||||
|
|||||||
@ -1,8 +1,11 @@
|
|||||||
import { autocompletion } from '@codemirror/autocomplete';
|
import { autocompletion } from '@codemirror/autocomplete';
|
||||||
|
import { selectAll } from '@codemirror/commands';
|
||||||
|
import { Prec } from '@codemirror/state';
|
||||||
import { javascript, javascriptLanguage } from '@codemirror/lang-javascript';
|
import { javascript, javascriptLanguage } from '@codemirror/lang-javascript';
|
||||||
import { EditorView } from '@codemirror/view';
|
import { ViewPlugin, EditorView, keymap } from '@codemirror/view';
|
||||||
import { emacs } from '@replit/codemirror-emacs';
|
import { emacs } from '@replit/codemirror-emacs';
|
||||||
import { vim } from '@replit/codemirror-vim';
|
import { vim } from '@replit/codemirror-vim';
|
||||||
|
import { vscodeKeymap } from '@replit/codemirror-vscode-keymap';
|
||||||
import _CodeMirror from '@uiw/react-codemirror';
|
import _CodeMirror from '@uiw/react-codemirror';
|
||||||
import React, { useCallback, useMemo } from 'react';
|
import React, { useCallback, useMemo } from 'react';
|
||||||
import strudelTheme from '../themes/strudel-theme';
|
import strudelTheme from '../themes/strudel-theme';
|
||||||
@ -61,11 +64,28 @@ export default function CodeMirror({
|
|||||||
[onSelectionChange],
|
[onSelectionChange],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const vscodePlugin = ViewPlugin.fromClass(
|
||||||
|
class {
|
||||||
|
constructor(view) {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: (plugin) => {
|
||||||
|
return Prec.highest(keymap.of([
|
||||||
|
...vscodeKeymap
|
||||||
|
,
|
||||||
|
]));
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
const vscodeExtension = (options) => [vscodePlugin].concat(options ?? []);
|
||||||
|
|
||||||
const extensions = useMemo(() => {
|
const extensions = useMemo(() => {
|
||||||
let _extensions = [...staticExtensions];
|
let _extensions = [...staticExtensions];
|
||||||
let bindings = {
|
let bindings = {
|
||||||
vim,
|
vim,
|
||||||
emacs,
|
emacs,
|
||||||
|
vscodeExtension,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (bindings[keybindings]) {
|
if (bindings[keybindings]) {
|
||||||
@ -78,6 +98,8 @@ export default function CodeMirror({
|
|||||||
_extensions.push(autocompletion({ override: [] }));
|
_extensions.push(autocompletion({ override: [] }));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_extensions.push([keymap.of({})]);
|
||||||
|
|
||||||
if (isLineWrappingEnabled) {
|
if (isLineWrappingEnabled) {
|
||||||
_extensions.push(EditorView.lineWrapping);
|
_extensions.push(EditorView.lineWrapping);
|
||||||
}
|
}
|
||||||
|
|||||||
523
pnpm-lock.yaml
generated
523
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -436,7 +436,7 @@ function SettingsTab({ scheduler }) {
|
|||||||
<ButtonGroup
|
<ButtonGroup
|
||||||
value={keybindings}
|
value={keybindings}
|
||||||
onChange={(keybindings) => settingsMap.setKey('keybindings', keybindings)}
|
onChange={(keybindings) => settingsMap.setKey('keybindings', keybindings)}
|
||||||
items={{ codemirror: 'Codemirror', vim: 'Vim', emacs: 'Emacs' }}
|
items={{ codemirror: 'Codemirror', vim: 'Vim', emacs: 'Emacs', vscodeExtension: 'VSCode' }}
|
||||||
></ButtonGroup>
|
></ButtonGroup>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<FormItem label="Panel Position">
|
<FormItem label="Panel Position">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user