shrimp/src/editor/keymap.ts
2025-10-06 16:37:07 -07:00

25 lines
720 B
TypeScript

import { outputSignal } from '#editor/editor'
import { evaluate } from '#interpreter/evaluator'
import { parser } from '#parser/shrimp'
import { errorMessage, log } from '#utils/utils'
import { keymap } from '@codemirror/view'
export const shrimpKeymap = keymap.of([
{
key: 'Cmd-Enter',
run: (view) => {
const input = view.state.doc.toString()
const context = new Map<string, any>()
try {
const tree = parser.parse(input)
const output = evaluate(input, tree, context)
outputSignal.emit({ output: String(output) })
} catch (error) {
log.error(error)
outputSignal.emit({ error: `${errorMessage(error)}` })
}
return true
},
},
])