diff --git a/packages/extension-code-block/src/code-block.ts b/packages/extension-code-block/src/code-block.ts index bf4568f65..638c95e4f 100644 --- a/packages/extension-code-block/src/code-block.ts +++ b/packages/extension-code-block/src/code-block.ts @@ -118,6 +118,34 @@ export const CodeBlock = Node.create({ return false }, + + // escape node on triple enter + Enter: ({ editor }) => { + const { state } = editor + const { selection } = state + const { $from, empty } = selection + + if (!empty || $from.parent.type !== this.type) { + return false + } + + const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2 + const endsWithDoubleNewline = $from.parent.textContent.endsWith('\n\n') + + if (!isAtEnd || !endsWithDoubleNewline) { + return false + } + + return editor + .chain() + .command(({ tr }) => { + tr.delete($from.pos - 2, $from.pos) + + return true + }) + .exitCode() + .run() + }, } },