diff --git a/packages/codemirror/keybindings.mjs b/packages/codemirror/keybindings.mjs index d8e888b8..8f3013b7 100644 --- a/packages/codemirror/keybindings.mjs +++ b/packages/codemirror/keybindings.mjs @@ -1,5 +1,5 @@ import { defaultKeymap } from '@codemirror/commands'; -import { Prec, EditorState, StateField } from '@codemirror/state'; +import { Prec, EditorState } from '@codemirror/state'; import { keymap, ViewPlugin } from '@codemirror/view'; // import { searchKeymap } from '@codemirror/search'; import { emacs } from '@replit/codemirror-emacs'; @@ -26,10 +26,7 @@ function replEval(view) { // Dispatch a dedicated evaluate event first let handled = false; try { - const ev = new CustomEvent('repl-evaluate', { - detail: { source: 'vim', view }, - cancelable: true, - }); + const ev = new CustomEvent('repl-evaluate', { detail: { source: 'vim', view }, cancelable: true }); handled = document.dispatchEvent(ev) === false; // false means preventDefault was called } catch (e) { console.error('Error dispatching repl-evaluate event', e); @@ -99,11 +96,9 @@ try { // internal actions and works with current selections/visual mode. try { Vim.defineAction('strudelToggleComment', (cm) => { + const view = cm.cm6; try { - const ev = new CustomEvent('repl-toggle-comment', { - detail: { source: 'vim', view: cm.cm6 }, - cancelable: true, - }); + const ev = new CustomEvent('repl-toggle-comment', { detail: { source: 'vim', view }, cancelable: true }); document.dispatchEvent(ev); } catch (e) { console.error('strudelToggleComment dispatch failed', e); @@ -123,16 +118,16 @@ try { // :w to evaluate Vim.defineEx('write', 'w', (cm) => { - const view = cm?.view || cm; // CM6 Vim passes either an object with view or the view itself + const view = cm.cm6; try { - view?.focus?.(); + view.focus?.(); // Let the app know this came from Vim :w try { logger('[vim] :w — evaluating code'); } catch (e) { console.error('Error logging Vim :w evaluation', e); } - replEval(cm.cm6); + replEval(view); } catch (e) { console.error('Error dispatching :w evaluation event', e); }