From b9399845a43374c726ee002df9f76932bd44b2a5 Mon Sep 17 00:00:00 2001 From: deathaxe Date: Thu, 10 Aug 2023 11:20:46 +0200 Subject: [PATCH] Syntax: Add fold markers for fenced code blocks Addresses #733. This commit changes Markdown.sublime-syntax in order to introduce patterns to reliably provide fold markers for fenced code blocks. Note: The changes are not needed for ST3, but are backported to keep syntaxes aligned as much as possible. --- syntaxes/Fold.tmPreferences | 0 syntaxes/Markdown.sublime-syntax | 393 ++++++++++++++++++++++++------- tests/syntax_test_markdown.md | 190 +++++++++++---- 3 files changed, 459 insertions(+), 124 deletions(-) create mode 100644 syntaxes/Fold.tmPreferences diff --git a/syntaxes/Fold.tmPreferences b/syntaxes/Fold.tmPreferences new file mode 100644 index 00000000..e69de29b diff --git a/syntaxes/Markdown.sublime-syntax b/syntaxes/Markdown.sublime-syntax index 3308d860..b0a85731 100644 --- a/syntaxes/Markdown.sublime-syntax +++ b/syntaxes/Markdown.sublime-syntax @@ -117,10 +117,10 @@ variables: | # or (~){3,} # 3 or more tildas ) - \s* # allow for whitespace between code block start and info string ) fenced_code_block_language: |- (?x: # first word of an infostring is used as language specifier + \s* # allow for whitespace between code block start and info string ( [[:alpha:]] # starts with a letter to make sure not to hit any attribute annotation [^\s:;`]* # optionally followed by any nonwhitespace character (except backticks) @@ -128,12 +128,11 @@ variables: ) fenced_code_block_trailing_infostring_characters: |- (?x: - ( - \s* # any whitespace, or .. - | - [\s:;][^`]* # any characters (except backticks), separated by colon, semicolon or whitespace ... - ) - $\n? # ... until EOL + (?: + (?: \s+ | (?=[:;]) ) # separated by colon, semicolon or whitespace ... + ([^`]+?) # any characters (except backticks) + )? + (\s*$\n?) # ... until EOL (fold begin marker) ) fenced_code_block_end: |- (?x: @@ -142,7 +141,7 @@ variables: \2 # the backtick/tilde combination that opened the code fence (?:\3|\4)* # plus optional additional closing characters ) - \s*$ # any amount of whitespace until EOL + (\s*$\n?) # any amount of whitespace until EOL (fold end marker) ) fenced_code_block_escape: ^{{fenced_code_block_end}} @@ -410,11 +409,12 @@ contexts: (?x) {{fenced_code_block_start}} {{fenced_code_block_language}}? - .*$\n? # all characters until EOL + .*?(\s*$\n?) # all characters until EOL captures: 0: meta.code-fence.definition.begin.text.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: meta.fold.code-fence.begin.markdown push: block-quote-fenced-code-block-body block-quote-fenced-code-block-body: @@ -432,6 +432,7 @@ contexts: captures: 0: meta.code-fence.definition.end.text.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown pop: true ###[ CONTAINER BLOCKS: BLOCK QUOTES > REFERENCE DEFINITIONS ]################# @@ -974,386 +975,454 @@ contexts: - match: |- (?x) {{fenced_code_block_start}} - ((?i:actionscript|as)) + (?i:\s*(actionscript|as)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.actionscript.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.actionscript.2 embed_scope: markup.raw.code-fence.actionscript.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.actionscript.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-applescript: - match: |- (?x) {{fenced_code_block_start}} - ((?i:applescript|osascript)) + (?i:\s*(applescript|osascript)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.applescript.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.applescript embed_scope: markup.raw.code-fence.applescript.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.applescript.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-clojure: - match: |- (?x) {{fenced_code_block_start}} - ((?i:clojure|clj)) + (?i:\s*(clojure|clj)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.clojure.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.clojure embed_scope: markup.raw.code-fence.clojure.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.clojure.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-c: - match: |- (?x) {{fenced_code_block_start}} - ((?i:c|h)) + (?i:\s*(c|h)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.c.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.c embed_scope: markup.raw.code-fence.c.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.c.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-cpp: - match: |- (?x) {{fenced_code_block_start}} - ((?i:c\+\+|cc|cpp|cxx|h\+\+|hpp|hxx)) + (?i:\s*(c\+\+|cc|cpp|cxx|h\+\+|hpp|hxx)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.c++.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.c++ embed_scope: markup.raw.code-fence.c++.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.c++.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-csharp: - match: |- (?x) {{fenced_code_block_start}} - ((?i:csharp|c\#|cs)) + (?i:\s*(csharp|c\#|cs)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.csharp.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.cs embed_scope: markup.raw.code-fence.csharp.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.csharp.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-css: - match: |- (?x) {{fenced_code_block_start}} - ((?i:css)) + (?i:\s*(css)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.css.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.css embed_scope: markup.raw.code-fence.css.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.css.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-diff: - match: |- (?x) {{fenced_code_block_start}} - ((?i:diff|patch)) + (?i:\s*(diff|patch)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.diff.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.diff embed_scope: markup.raw.code-fence.diff.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.diff.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-dosbatch: - match: |- (?x) {{fenced_code_block_start}} - ((?i:bat|cmd|dos)) + (?i:\s*(bat|cmd|dos)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.dosbatch.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.dosbatch embed_scope: markup.raw.code-fence.dosbatch.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.dosbatch.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-erlang: - match: |- (?x) {{fenced_code_block_start}} - ((?i:erlang|escript)) + (?i:\s*(erlang|escript)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.erlang.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.erlang embed_scope: markup.raw.code-fence.erlang.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.erlang.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-graphviz: - match: |- (?x) {{fenced_code_block_start}} - ((?i:graphviz)) + (?i:\s*(graphviz)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.graphviz.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.dot embed_scope: markup.raw.code-fence.graphviz.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.graphviz.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-golang: - match: |- (?x) {{fenced_code_block_start}} - ((?i:go(?:lang)?)) + (?i:\s*(go(?:lang)?)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.go.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.go embed_scope: markup.raw.code-fence.go.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.go.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-haskell: - match: |- (?x) {{fenced_code_block_start}} - ((?i:haskell)) + (?i:\s*(haskell)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.haskell.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.haskell embed_scope: markup.raw.code-fence.haskell.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.haskell.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-html-php: - match: |- (?x) {{fenced_code_block_start}} - ((?i:html\+php)) + (?i:\s*(html\+php)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.html-php.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:embedding.php embed_scope: markup.raw.code-fence.html-php.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.html-php.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-html: - match: |- (?x) {{fenced_code_block_start}} - ((?i:html)) + (?i:\s*(html)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.html.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:text.html.basic embed_scope: markup.raw.code-fence.html.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.html.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-java: - match: |- (?x) {{fenced_code_block_start}} - ((?i:java)) + (?i:\s*(java)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.java.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.java embed_scope: markup.raw.code-fence.java.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.java.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-javascript: - match: |- (?x) {{fenced_code_block_start}} - ((?i:javascript|js)) + (?i:\s*(javascript|js)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.javascript.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.js embed_scope: markup.raw.code-fence.javascript.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.javascript.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-jsonc: - match: |- (?x) {{fenced_code_block_start}} - ((?i:jsonc?)) + (?i:\s*(jsonc?)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.json.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.json embed_scope: markup.raw.code-fence.json.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.json.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-jspx: - match: |- (?x) {{fenced_code_block_start}} - ((?i:jspx?)) + (?i:\s*(jspx?)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.jsp.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:text.html.jsp embed_scope: markup.raw.code-fence.jsp.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.jsp.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-jsx: - match: |- (?x) {{fenced_code_block_start}} - ((?i:jsx)) + (?i:\s*(jsx)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.jsx.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.jsx embed_scope: markup.raw.code-fence.jsx.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.jsx.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-lisp: - match: |- (?x) {{fenced_code_block_start}} - ((?i:lisp)) + (?i:\s*(lisp)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.lisp.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.lisp embed_scope: markup.raw.code-fence.lisp.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.lisp.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-lua: - match: |- (?x) {{fenced_code_block_start}} - ((?i:lua)) + (?i:\s*(lua)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.lua.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.lua embed_scope: markup.raw.code-fence.lua.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.lua.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-makefile: - match: |- (?x) {{fenced_code_block_start}} - ((?i:makefile)) + (?i:\s*(makefile)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.makefile.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.makefile embed_scope: markup.raw.code-fence.makefile.markdown-gfm @@ -1362,340 +1431,399 @@ contexts: escape_captures: 0: meta.code-fence.definition.end.makefile.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-matlab: - match: |- (?x) {{fenced_code_block_start}} - ((?i:matlab)) + (?i:\s*(matlab)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.matlab.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.matlab embed_scope: markup.raw.code-fence.matlab.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.matlab.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-objc: - match: |- (?x) {{fenced_code_block_start}} - ((?i:objc|obj-c|objectivec|objective-c)) + (?i:\s*(objc|obj-c|objectivec|objective-c)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.objc.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.objc embed_scope: markup.raw.code-fence.objc.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.objc.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-objcpp: - match: |- (?x) {{fenced_code_block_start}} - ((?i:objc\+\+|obj-c\+\+|objectivec\+\+|objective-c\+\+)) + (?i:\s*(objc\+\+|obj-c\+\+|objectivec\+\+|objective-c\+\+)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.objc++.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.objc++ embed_scope: markup.raw.code-fence.objc++.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.objc++.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-ocaml: - match: |- (?x) {{fenced_code_block_start}} - ((?i:ocaml)) + (?i:\s*(ocaml)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.ocaml.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.ocaml embed_scope: markup.raw.code-fence.ocaml.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.ocaml.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-perl: - match: |- (?x) {{fenced_code_block_start}} - ((?i:perl)) + (?i:\s*(perl)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.perl.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.perl embed_scope: markup.raw.code-fence.perl.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.perl.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-php: - match: |- (?x) {{fenced_code_block_start}} - ((?i:php|inc)) + (?i:\s*(php|inc)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.php.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.php embed_scope: markup.raw.code-fence.php.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.php.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-python: - match: |- (?x) {{fenced_code_block_start}} - ((?i:python|py)) + (?i:\s*(python|py)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.python.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.python embed_scope: markup.raw.code-fence.python.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.python.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-regexp: - match: |- (?x) {{fenced_code_block_start}} - ((?i:regexp?)) + (?i:\s*(regexp?)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.regexp.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.regexp embed_scope: markup.raw.code-fence.regexp.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.regexp.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-rscript: - match: |- (?x) {{fenced_code_block_start}} - ((?i:rscript|r|splus)) + (?i:\s*(rscript|r|splus)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.r.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.r embed_scope: markup.raw.code-fence.r.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.r.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-ruby: - match: |- (?x) {{fenced_code_block_start}} - ((?i:ruby|rb|rbx)) + (?i:\s*(ruby|rb|rbx)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.ruby.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.ruby embed_scope: markup.raw.code-fence.ruby.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.ruby.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-rust: - match: |- (?x) {{fenced_code_block_start}} - ((?i:rust|rs)) + (?i:\s*(rust|rs)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.rust.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.rust embed_scope: markup.raw.code-fence.rust.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.rust.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-scala: - match: |- (?x) {{fenced_code_block_start}} - ((?i:scala)) + (?i:\s*(scala)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.scala.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.scala embed_scope: markup.raw.code-fence.scala.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.scala.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-shell: - match: |- (?x) {{fenced_code_block_start}} - ((?i:console|shell)) + (?i:\s*(console|shell)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.shell.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.shell.interactive.markdown embed_scope: markup.raw.code-fence.shell.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.shell.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-shell-script: - match: |- (?x) {{fenced_code_block_start}} - ((?i:shell-script|sh|bash|zsh)) + (?i:\s*(shell-script|sh|bash|zsh)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.shell-script.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.shell.bash embed_scope: markup.raw.code-fence.shell-script.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.shell-script.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-sql: - match: |- (?x) {{fenced_code_block_start}} - ((?i:sql)) + (?i:\s*(sql)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.sql.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.sql embed_scope: markup.raw.code-fence.sql.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.sql.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-tsx: - match: |- (?x) {{fenced_code_block_start}} - ((?i:tsx)) + (?i:\s*(tsx)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.tsx.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.tsx embed_scope: markup.raw.code-fence.tsx.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.tsx.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-typescript: - match: |- (?x) {{fenced_code_block_start}} - ((?i:typescript|ts)) + (?i:\s*(typescript|ts)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.typescript.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.ts embed_scope: markup.raw.code-fence.typescript.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.typescript.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-xml: - match: |- (?x) {{fenced_code_block_start}} - ((?i:atom|plist|svg|xjb|xml|xsd|xsl)) + (?i:\s*(atom|plist|svg|xjb|xml|xsd|xsl)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.xml.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:text.xml embed_scope: markup.raw.code-fence.xml.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.xml.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-yaml: - match: |- (?x) {{fenced_code_block_start}} - ((?i:yaml|yml)) + (?i:\s*(yaml|yml)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.yaml.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.yaml embed_scope: markup.raw.code-fence.yaml.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.yaml.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-raw: - match: |- (?x) {{fenced_code_block_start}} {{fenced_code_block_language}}? - .*$\n? # all characters until EOL + .*?(\s*$\n?) # all characters until EOL captures: 0: meta.code-fence.definition.begin.text.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: meta.fold.code-fence.begin.markdown push: fenced-raw-content fenced-raw-content: @@ -1704,273 +1832,321 @@ contexts: captures: 0: meta.code-fence.definition.end.text.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown pop: true fenced-ada: - match: |- (?x) {{fenced_code_block_start}} - ((?i:ada)) + (?i:\s*(ada)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.ada.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.ada embed_scope: markup.raw.code-fence.ada.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.ada.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-akh: - match: |- (?x) {{fenced_code_block_start}} - ((?i:akh)) + (?i:\s*(akh)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.akh.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.akh embed_scope: markup.raw.code-fence.akh.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.akh.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-arduino: - match: |- (?x) {{fenced_code_block_start}} - ((?i:arduino|ino)) + (?i:\s*(arduino|ino)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.arduino.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.arduino embed_scope: markup.raw.code-fence.arduino.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.arduino.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-coffee: - match: |- (?x) {{fenced_code_block_start}} - ((?i:coffee(?:script)?|cjsx|cson|iced)) + (?i:\s*(coffee(?:script)?|cjsx|cson|iced)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.coffee.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.coffee embed_scope: markup.raw.code-fence.coffee.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.coffee.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-dart: - match: |- (?x) {{fenced_code_block_start}} - ((?i:dart)) + (?i:\s*(dart)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.dart.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.dart embed_scope: markup.raw.code-fence.dart.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.dart.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-docker: - match: |- (?x) {{fenced_code_block_start}} - ((?i:docker(?:file)?)) + (?i:\s*(docker(?:file)?)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.docker.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.shell.docker embed_scope: markup.raw.code-fence.docker.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.docker.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-elixir: - match: |- (?x) {{fenced_code_block_start}} - ((?i:elixir)) + (?i:\s*(elixir)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.elixir.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.elixir embed_scope: markup.raw.code-fence.elixir.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.elixir.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-fish: - match: |- (?x) {{fenced_code_block_start}} - ((?i:fish)) + (?i:\s*(fish)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.fish.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.shell.fish embed_scope: markup.raw.code-fence.fish.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.fish.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-graphql: - match: |- (?x) {{fenced_code_block_start}} - ((?i:graphql)) + (?i:\s*(graphql)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.graphql.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.graphql embed_scope: markup.raw.code-fence.graphql.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.graphql.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-http: - match: |- (?x) {{fenced_code_block_start}} - ((?i:http)) + (?i:\s*(http)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.http.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:text.http-request-response embed_scope: markup.raw.code-fence.http.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.http.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-ini: - match: |- (?x) {{fenced_code_block_start}} - ((?i:ini)) + (?i:\s*(ini)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.ini.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.ini embed_scope: markup.raw.code-fence.ini.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.ini.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-jade: - match: |- (?x) {{fenced_code_block_start}} - ((?i:jade)) + (?i:\s*(jade)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.jade.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.jade embed_scope: markup.raw.code-fence.jade.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.jade.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-julia: - match: |- (?x) {{fenced_code_block_start}} - ((?i:julia)) + (?i:\s*(julia)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.julia.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.julia embed_scope: markup.raw.code-fence.julia.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.julia.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-kotlin: - match: |- (?x) {{fenced_code_block_start}} - ((?i:kotlin)) + (?i:\s*(kotlin)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.kotlin.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.kotlin embed_scope: markup.raw.code-fence.kotlin.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.kotlin.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-less: - match: |- (?x) {{fenced_code_block_start}} - ((?i:less)) + (?i:\s*(less)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.less.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.less embed_scope: markup.raw.code-fence.less.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.less.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-mermaid: - match: |- (?x) {{fenced_code_block_start}} - ((?i:mermaid)) + (?i:\s*(mermaid)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.mermaid.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.mermaid embed_scope: markup.raw.code-fence.mermaid.markdown-gfm @@ -1979,221 +2155,260 @@ contexts: escape_captures: 0: meta.code-fence.definition.end.mermaid.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-nim: - match: |- (?x) {{fenced_code_block_start}} - ((?i:nim)) + (?i:\s*(nim)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.nim.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.nim embed_scope: markup.raw.code-fence.nim.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.nim.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-powershell: - match: |- (?x) {{fenced_code_block_start}} - ((?i:pwsh|powershell)) + (?i:\s*(pwsh|powershell)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.powershell.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.powershell embed_scope: markup.raw.code-fence.powershell.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.powershell.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-protobuf: - match: |- (?x) {{fenced_code_block_start}} - ((?i:protobuf)) + (?i:\s*(protobuf)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.protobuf.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.proto embed_scope: markup.raw.code-fence.protobuf.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.protobuf.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-reason: - match: |- (?x) {{fenced_code_block_start}} - ((?i:re|reason)) + (?i:\s*(re|reason)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.reason.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.reason embed_scope: markup.raw.code-fence.reason.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.reason.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-sass: - match: |- (?x) {{fenced_code_block_start}} - ((?i:sass)) + (?i:\s*(sass)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.sass.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.sass embed_scope: markup.raw.code-fence.sass.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.sass.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-scheme: - match: |- (?x) {{fenced_code_block_start}} - ((?i:scheme)) + (?i:\s*(scheme)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.scheme.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.scheme embed_scope: markup.raw.code-fence.scheme.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.scheme.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-scss: - match: |- (?x) {{fenced_code_block_start}} - ((?i:scss)) + (?i:\s*(scss)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.scss.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.scss embed_scope: markup.raw.code-fence.scss.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.scss.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-stata: - match: |- (?x) {{fenced_code_block_start}} - ((?i:s|stata|\{s\}|\{s[\s,].*\}|\{stata\}|\{stata[\s,].*\})) + (?i:\s*(s|stata|\{s\}|\{s[\s,].*\}|\{stata\}|\{stata[\s,].*\})) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.stata.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.stata embed_scope: markup.raw.code-fence.stata.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.stata.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-svelte: - match: |- (?x) {{fenced_code_block_start}} - ((?i:svelte)) + (?i:\s*(svelte)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.svelte.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:text.html.svelte embed_scope: markup.raw.code-fence.svelte.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.svelte.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-swift: - match: |- (?x) {{fenced_code_block_start}} - ((?i:swift)) + (?i:\s*(swift)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.swift.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.swift embed_scope: markup.raw.code-fence.swift.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.swift.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-terraform: - match: |- (?x) {{fenced_code_block_start}} - ((?i:terraform|tf|hcl)) + (?i:\s*(terraform|tf|hcl)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.terraform.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.json.terraform embed_scope: markup.raw.code-fence.terraform.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.terraform.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-toml: - match: |- (?x) {{fenced_code_block_start}} - ((?i:toml)) + (?i:\s*(toml)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.toml.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.toml embed_scope: markup.raw.code-fence.toml.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.toml.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-twee: - match: |- (?x) {{fenced_code_block_start}} - ((?i:twee)) + (?i:\s*(twee)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.twee.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:text.twee embed_scope: markup.raw.code-fence.twee.markdown-gfm @@ -2202,57 +2417,67 @@ contexts: escape_captures: 0: meta.code-fence.definition.end.twee.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-twig: - match: |- (?x) {{fenced_code_block_start}} - ((?i:twig|craftcms)) + (?i:\s*(twig|craftcms)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.twig.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:text.html.twig embed_scope: markup.raw.code-fence.twig.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.twig.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-verilog: - match: |- (?x) {{fenced_code_block_start}} - ((?i:verilog|v)) + (?i:\s*(verilog|v)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.verilog.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.verilog embed_scope: markup.raw.code-fence.verilog.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.verilog.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown fenced-xonsh: - match: |- (?x) {{fenced_code_block_start}} - ((?i:xonsh|xsh)) + (?i:\s*(xonsh|xsh)) {{fenced_code_block_trailing_infostring_characters}} captures: 0: meta.code-fence.definition.begin.xonsh.markdown-gfm 2: punctuation.definition.raw.code-fence.begin.markdown 5: constant.other.language-name.markdown + 6: comment.line.infostring.markdown + 7: meta.fold.code-fence.begin.markdown embed: scope:source.xonsh embed_scope: markup.raw.code-fence.xonsh.markdown-gfm escape: '{{fenced_code_block_escape}}' escape_captures: 0: meta.code-fence.definition.end.xonsh.markdown-gfm 1: punctuation.definition.raw.code-fence.end.markdown + 2: meta.fold.code-fence.end.markdown ###[ LEAF BLOCKS: HTML BLOCKS ]############################################### diff --git a/tests/syntax_test_markdown.md b/tests/syntax_test_markdown.md index d734fa8c..f1594b23 100644 --- a/tests/syntax_test_markdown.md +++ b/tests/syntax_test_markdown.md @@ -1109,7 +1109,7 @@ paragraph ``` | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation < | <- markup.raw.code-fence.markdown-gfm - punctuation > @@ -1117,14 +1117,14 @@ paragraph ``` | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-120 ~~~ | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation < | <- markup.raw.code-fence.markdown-gfm - punctuation > @@ -1132,7 +1132,7 @@ paragraph ~~~ | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-121 @@ -1147,28 +1147,28 @@ foo ``` | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation aaa ~~~ | <- markup.raw.code-fence.markdown-gfm - punctuation ``` | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-123 ~~~ | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation aaa ``` | <- markup.raw.code-fence.markdown-gfm - punctuation ~~~ | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ~~~~ | <- punctuation.definition.raw.code-fence.begin @@ -1180,21 +1180,21 @@ aaa ```` | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation aaa ``` | <- markup.raw.code-fence.markdown-gfm - punctuation `````` | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^^^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-125 ~~~~ | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation | aaa ~~~ @@ -1202,7 +1202,7 @@ aaa ~~~~ | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-128 @@ -1220,13 +1220,13 @@ bbb ``` | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation ``` | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-130 @@ -1234,7 +1234,7 @@ bbb ``` | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-131 @@ -1244,7 +1244,7 @@ aaa ``` | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-132 @@ -1256,7 +1256,7 @@ aaa | <- meta.code-fence.definition.end.text.markdown-gfm - punctuation |^ meta.code-fence.definition.end.text.markdown-gfm - punctuation | ^^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-133 @@ -1268,7 +1268,7 @@ aaa | <- meta.code-fence.definition.end.text.markdown-gfm - punctuation |^^ meta.code-fence.definition.end.text.markdown-gfm - punctuation | ^^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-134 @@ -1283,14 +1283,14 @@ aaa ``` | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation aaa | <- markup.raw.code-fence.markdown-gfm ``` | <- meta.code-fence.definition.end.text.markdown-gfm - punctuation |^ meta.code-fence.definition.end.text.markdown-gfm - punctuation | ^^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-136 @@ -1298,28 +1298,28 @@ aaa | <- meta.code-fence.definition.begin.text.markdown-gfm - punctuation |^^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation | ^^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation aaa | <- markup.raw.code-fence.markdown-gfm ``` | <- meta.code-fence.definition.end.text.markdown-gfm - punctuation |^ meta.code-fence.definition.end.text.markdown-gfm - punctuation | ^^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-137 ``` | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation aaa | <- markup.raw.code-fence.markdown-gfm ``` | <- meta.code-fence.definition.end.text.markdown-gfm - punctuation |^^^ meta.code-fence.definition.end.text.markdown-gfm - punctuation | ^^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-138 @@ -1343,7 +1343,7 @@ aaa ~~~~~~ | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^^^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown -| ^ meta.code-fence.definition.end.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-140 @@ -1351,7 +1351,7 @@ foo ``` | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation bar ``` baz @@ -1436,7 +1436,7 @@ foo ~~~ | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation bar |^^^ markup.raw.code-fence.markdown-gfm ~~~ @@ -1450,7 +1450,7 @@ bar | <- meta.code-fence.definition.begin.ruby.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.ruby.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown | ^^^^ meta.code-fence.definition.begin.ruby.markdown-gfm constant.other.language-name.markdown -| ^ meta.code-fence.definition.begin.ruby.markdown-gfm - constant +| ^ meta.code-fence.definition.begin.ruby.markdown-gfm meta.fold.code-fence.begin - constant def foo(x) | <- markup.raw.code-fence.ruby.markdown-gfm source.ruby meta.function return 3 @@ -1459,6 +1459,7 @@ end ``` | <- meta.code-fence.definition.end.ruby.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.ruby.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.ruby.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-143 @@ -1467,7 +1468,8 @@ end |^^^ meta.code-fence.definition.begin.ruby.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown | ^^^^ meta.code-fence.definition.begin.ruby.markdown-gfm - punctuation - constant | ^^^^ meta.code-fence.definition.begin.ruby.markdown-gfm constant.other.language-name.markdown -| ^^^^^^^^^^^^^^^^^^^ meta.code-fence.definition.begin.ruby.markdown-gfm - constant +| ^^^^^^^^^^^^^^^^^^ meta.code-fence.definition.begin.ruby.markdown-gfm - meta.fold - constant +| ^ meta.code-fence.definition.begin.ruby.markdown-gfm meta.fold.code-fence.begin - constant def foo(x) | <- markup.raw.code-fence.ruby.markdown-gfm source.ruby meta.function return 3 @@ -1482,10 +1484,12 @@ end ````; | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -| ^^ meta.code-fence.definition.begin.text.markdown-gfm +| ^ meta.code-fence.definition.begin.text.markdown-gfm - meta.fold +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation ```` | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-145 @@ -1503,33 +1507,43 @@ foo | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown | ^^ meta.code-fence.definition.begin.text.markdown-gfm constant.other.language-name.markdown -| ^^^^^^^^^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation +| ^^^^^^^^ meta.code-fence.definition.begin.text.markdown-gfm - meta.fold - punctuation +| ^ meta.code-fence.definition.begin.text.markdown-gfm - punctuation meta.fold.code-fence.begin.markdown foo ~~~ | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ~~~~~foo~ |^^^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown | ^^^^ meta.code-fence.definition.begin.text.markdown-gfm constant.other.language-name.markdown +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation ~~~~~ |^^^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://spec.commonmark.org/0.30/#example-147 ``` | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown |^^ meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin - punctuation ``` aaa | <- markup.raw.code-fence.markdown-gfm - punctuation ``` | <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ## https://fenced-code-block-embedded-syntaxes-tests ```bash +| <- meta.code-fence.definition.begin.shell-script.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown +|^^ meta.code-fence.definition.begin.shell-script.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown +| ^^^^ meta.code-fence.definition.begin.shell-script.markdown-gfm constant.other.language-name.markdown +| ^ meta.code-fence.definition.begin.shell-script.markdown-gfm meta.fold.code-fence.begin # test | ^^^^^ source.shell comment.line.number-sign echo hello, \ @@ -1541,30 +1555,41 @@ echo This is a smiley :-\) \(I have to escape the parentheses, though!\) |^^ meta.code-fence.definition.end.shell-script.markdown-gfm punctuation.definition.raw.code-fence.end.markdown ```clojure -|^^^^^^^^^ meta.code-fence.definition.begin.clojure +|^^^^^^^^^ meta.code-fence.definition.begin - meta.fold | ^^^^^^^ constant.other.language-name +| ^ meta.code-fence.definition.begin meta.fold.code-fence.begin (/ 10 3.0) | <- source.clojure |^^^^^^^^^^ source.clojure ``` | <- meta.code-fence.definition.end.clojure.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.clojure.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.clojure.markdown-gfm meta.fold.code-fence.end - punctuation ```cmd +|^^^^^ meta.code-fence.definition.begin - meta.fold +| ^ meta.code-fence.definition.begin meta.fold.code-fence.begin | <- markup.raw.code-fence.dosbatch.markdown-gfm source.dosbatch ``` | <- meta.code-fence.definition.end.dosbatch.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.dosbatch.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.dosbatch.markdown-gfm meta.fold.code-fence.end - punctuation ```css +|^^^^^ meta.code-fence.definition.begin - meta.fold +| ^ meta.code-fence.definition.begin meta.fold.code-fence.begin | <- markup.raw.code-fence.css.markdown-gfm source.css ``` | <- meta.code-fence.definition.end.css.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.css.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.css.markdown-gfm meta.fold.code-fence.end - punctuation ```diff +|^^^^^^ meta.code-fence.definition.begin - meta.fold +| ^ meta.code-fence.definition.begin meta.fold.code-fence.begin + + inserted | <- source.diff markup.inserted.diff punctuation.definition.inserted.diff - deleted @@ -1572,30 +1597,43 @@ echo This is a smiley :-\) \(I have to escape the parentheses, though!\) ``` | <- meta.code-fence.definition.end.diff.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.diff.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.diff.markdown-gfm meta.fold.code-fence.end - punctuation ```Graphviz +|^^^^^^^^^^ meta.code-fence.definition.begin - meta.fold +| ^ meta.code-fence.definition.begin meta.fold.code-fence.begin + graph n {} | ^^^ storage.type.dot ``` | <- meta.code-fence.definition.end.graphviz.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.graphviz.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.graphviz.markdown-gfm meta.fold.code-fence.end - punctuation ```haskell +|^^^^^^^^^ meta.code-fence.definition.begin - meta.fold +| ^ meta.code-fence.definition.begin meta.fold.code-fence.begin | <- markup.raw.code-fence.haskell.markdown-gfm source.haskell ``` | <- meta.code-fence.definition.end.haskell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.haskell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.haskell.markdown-gfm meta.fold.code-fence.end - punctuation ```html +|^^^^^^ meta.code-fence.definition.begin - meta.fold +| ^ meta.code-fence.definition.begin meta.fold.code-fence.begin | <- markup.raw.code-fence.html.markdown-gfm text.html | ^^^^^^ text.html meta.tag ``` | <- meta.code-fence.definition.end.html.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.html.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.html.markdown-gfm meta.fold.code-fence.end - punctuation ```html+php +|^^^^^^^^^^ meta.code-fence.definition.begin - meta.fold +| ^ meta.code-fence.definition.begin meta.fold.code-fence.begin
|^^^ entity.name.tag.block |^^^^^^^^^^^^^^^^^^^^^^ markup.raw.code-fence.xml @@ -1770,38 +1855,63 @@ FROM TableName ``` | <- meta.code-fence.definition.end.xml.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.xml.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.xml.markdown-gfm meta.fold.code-fence.end - punctuation ```jsx:file.jsx -|^^^^^^^^^^^^^^^ meta.code-fence.definition.begin.jsx.markdown-gfm +|^^^^^^^^^^^^^^ meta.code-fence.definition.begin - meta.fold - markup +| ^ meta.code-fence.definition.begin meta.fold.code-fence.begin - merkup |^^ punctuation.definition.raw.code-fence.begin.markdown | ^^^ constant.other.language-name.markdown +| ^^^^^^^^^ comment.line.infostring.markdown | <- markup.raw.code-fence.jsx.markdown-gfm source.jsx ``` +| <- meta.code-fence.definition.end.jsx.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +|^^ meta.code-fence.definition.end.jsx.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.jsx.markdown-gfm meta.fold.code-fence.end - punctuation ```jldoctest; filter = r"Stacktrace:(\n \[[0-9]+\].*)*" | <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown -|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.code-fence.definition.begin.text.markdown-gfm +|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.code-fence.definition.begin.text.markdown-gfm - meta.fold +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin.markdown - punctuation |^^ punctuation.definition.raw.code-fence.begin.markdown | ^^^^^^^^^ constant.other.language-name.markdown | ^ - constant ``` +| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +|^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ```R%&?! weired language name -|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.code-fence.definition.begin.text.markdown-gfm +|^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.code-fence.definition.begin.text.markdown-gfm - meta.fold +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin +|^^ punctuation.definition.raw.code-fence.begin.markdown | ^^^^^ constant.other.language-name.markdown | ^^^^^^^^^^^^^^^^^^^^^ - constant ``` +| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +|^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ```{key: value} -|^^^^^^^^^^^^^^^ meta.code-fence.definition.begin.text.markdown-gfm +|^^^^^^^^^^^^^^ meta.code-fence.definition.begin.text.markdown-gfm - meta.fold +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin +|^^ punctuation.definition.raw.code-fence.begin.markdown | ^^^^^^^^^^^^ - constant ``` +| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +|^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation ``` {key: value} -|^^^^^^^^^^^^^^^^ meta.code-fence.definition.begin.text.markdown-gfm +|^^^^^^^^^^^^^^^ meta.code-fence.definition.begin.text.markdown-gfm - meta.fold +| ^ meta.code-fence.definition.begin.text.markdown-gfm meta.fold.code-fence.begin +|^^ punctuation.definition.raw.code-fence.begin.markdown | ^^^^^^^^^^^^ - constant ``` +| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +|^^ meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown +| ^ meta.code-fence.definition.end.text.markdown-gfm meta.fold.code-fence.end - punctuation # TEST: HTML BLOCKS ###########################################################