From d48fb24ee2bd287f79e58f3fb59d8ebbda213240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20K=C3=BChn?= Date: Sun, 5 Dec 2021 16:47:02 +0100 Subject: [PATCH] feat: escape code blocks on triple enter, fix #2195 --- .../extension-code-block/src/code-block.ts | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) 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() + }, } },