diff --git a/packages/codemirror/codemirror.mjs b/packages/codemirror/codemirror.mjs index 3c17826d..5ceb9619 100644 --- a/packages/codemirror/codemirror.mjs +++ b/packages/codemirror/codemirror.mjs @@ -3,7 +3,7 @@ import { closeBrackets } from '@codemirror/autocomplete'; import { history } from '@codemirror/commands'; import { javascript } from '@codemirror/lang-javascript'; import { defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language'; -import { Compartment, EditorState } from '@codemirror/state'; +import { Compartment, EditorState, Prec } from '@codemirror/state'; import { EditorView, highlightActiveLineGutter, highlightActiveLine, keymap, lineNumbers } from '@codemirror/view'; import { Pattern, Drawer, repl, cleanupDraw } from '@strudel.cycles/core'; // import { isAutoCompletionEnabled } from './Autocomplete'; @@ -44,27 +44,28 @@ export function initEditor({ initialCode = '', onChange, onEvaluate, onStop, set syntaxHighlighting(defaultHighlightStyle), history(), EditorView.updateListener.of((v) => onChange(v)), - keymap.of([ - { - key: 'Ctrl-Enter', - run: () => onEvaluate?.(), - }, - { - key: 'Alt-Enter', - run: () => onEvaluate?.(), - }, - { - key: 'Ctrl-.', - run: () => onStop?.(), - }, - { - key: 'Alt-.', - run: (_, e) => { - e.preventDefault(); - onStop?.(); + Prec.highest( + keymap.of([ + { + key: 'Ctrl-Enter', + run: () => onEvaluate?.(), }, - }, - /* { + { + key: 'Alt-Enter', + run: () => onEvaluate?.(), + }, + { + key: 'Ctrl-.', + run: () => onStop?.(), + }, + { + key: 'Alt-.', + run: (_, e) => { + e.preventDefault(); + onStop?.(); + }, + }, + /* { key: 'Ctrl-Shift-.', run: () => (onPanic ? onPanic() : onStop?.()), }, @@ -72,7 +73,8 @@ export function initEditor({ initialCode = '', onChange, onEvaluate, onStop, set key: 'Ctrl-Shift-Enter', run: () => (onReEvaluate ? onReEvaluate() : onEvaluate?.()), }, */ - ]), + ]), + ), ], }); diff --git a/packages/codemirror/keybindings.mjs b/packages/codemirror/keybindings.mjs index 4f82103e..6fe00eda 100644 --- a/packages/codemirror/keybindings.mjs +++ b/packages/codemirror/keybindings.mjs @@ -24,11 +24,8 @@ const keymaps = { vscode: vscodeExtension, }; -// filter out Mod-Enter to fix linux ctrl+enter -const _defaultKeymap = defaultKeymap.filter((kb) => kb.key !== 'Mod-Enter'); - export function keybindings(name) { const active = keymaps[name]; - return [keymap.of(_defaultKeymap), keymap.of(historyKeymap), active ? active() : []]; + return [keymap.of(defaultKeymap), keymap.of(historyKeymap), active ? active() : []]; // keymap.of(searchKeymap), }