From 8b990489dbec44940288c50e6bf8788ec78e43e1 Mon Sep 17 00:00:00 2001 From: DeathAxe Date: Thu, 12 Aug 2021 18:04:32 +0200 Subject: [PATCH] Syntax: Fix thematic break after fenced codeblocks Fenced codeblocks are a separate type of block, which must not be part of ordinary paragraphs. see: https://spec.commonmark.org/0.30/#leaf-blocks --- syntaxes/Markdown.sublime-syntax | 2 +- tests/syntax_test_markdown.md | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/syntaxes/Markdown.sublime-syntax b/syntaxes/Markdown.sublime-syntax index 11a881ca..8e3b4bc6 100644 --- a/syntaxes/Markdown.sublime-syntax +++ b/syntaxes/Markdown.sublime-syntax @@ -295,6 +295,7 @@ contexts: pop: true - include: inline-bold-italic - include: reference-link-definition + - include: fenced-code-blocks - match: '^(?=\S)(?![=-]{3,}\s*$)' push: - meta_scope: meta.paragraph.markdown @@ -318,7 +319,6 @@ contexts: ) ) pop: true - - include: fenced-code-blocks - include: inline-bold-italic-linebreak - include: tag-kbd - include: scope:text.html.basic diff --git a/tests/syntax_test_markdown.md b/tests/syntax_test_markdown.md index b89e5337..db902a6c 100644 --- a/tests/syntax_test_markdown.md +++ b/tests/syntax_test_markdown.md @@ -122,6 +122,14 @@ underlined heading followed by another one that should be treated as a normal pa ===== | <- - markup.heading +``` +Fenced codeblocks are no no setext heading +``` +--- +| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown +|^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown + + Paragraph of text that should be scoped as meta.paragraph. |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph A [link](https://example.com){ :_attr = value }, *italic text* and **bold**. @@ -554,9 +562,9 @@ paragraph > Block quote followed by fenced code block ``` -| <- meta.paragraph.markdown meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown - meta.quote +| <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown - meta.quote ``` -| <- meta.paragraph.markdown meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown - meta.quote +| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown - meta.quote > Quoted fenced code block is terminated by missing > at bol > ``` @@ -574,9 +582,9 @@ no code block > Unterminated quoted fenced code block followed by unquoted fenced code block > ``` ``` -| <- meta.paragraph.markdown meta.code-fence.definition.begin.text.markdown-gfm - markup.quote +| <- meta.code-fence.definition.begin.text.markdown-gfm - markup.quote ``` -| <- meta.paragraph.markdown meta.code-fence.definition.end.text.markdown-gfm - markup.quote +| <- meta.code-fence.definition.end.text.markdown-gfm - markup.quote > Block quote followed by heading # heading @@ -2412,7 +2420,7 @@ var_dump(expression); (?x) \s+ ``` -|^^^ meta.paragraph meta.code-fence.definition.end.regexp - markup +|^^^ meta.code-fence.definition.end.regexp - markup |^^ punctuation.definition.raw.code-fence.end ```bash