Skip to content

Files

Latest commit

 

History

History
9280 lines (7448 loc) · 353 KB

syntax_test_markdown.md

File metadata and controls

9280 lines (7448 loc) · 353 KB

| SYNTAX TEST "Packages/MarkdownEditing/syntaxes/Markdown.sublime-syntax"

TEST: Tabs

foo	baz		bim

| <- markup.raw.block.markdown |^^^^^^^^^^^^^ markup.raw.block.markdown

foo	baz		bim

| <- markup.raw.block.markdown |^^^^^^^^^^^^^ markup.raw.block.markdown

foo	baz		bim

| <- markup.raw.block.markdown |^^^^^^^^^^^^^ markup.raw.block.markdown

a	a
ὐ	a

| <- markup.raw.block.markdown |^^^^^^^ markup.raw.block.markdown

  • foo

    bar | <- markup.list.unnumbered.markdown |^^^^ markup.list.unnumbered.markdown

  • foo

      bar
    

| <- markup.list.unnumbered.markdown - markup.raw.block.markdown |^^^^^ markup.list.unnumbered.markdown - markup.raw.block.markdown

Note: bar should be indented code block, but ST can't reliably highlight it!

  foo

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^^ markup.quote.markdown markup.raw.block.markdown

  •   foo
    

| <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown

foo
bar

| <- markup.raw.block.markdown |^^^^ markup.raw.block.markdown

  • foo
    • bar
      • baz |^ markup.list.unnumbered.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^ markup.list.unnumbered.markdown

Foo

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^ markup.heading.1.markdown - punctuation


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^ meta.separator.thematic-break.markdown | ^ punctuation.definition.thematic-break.markdown | ^ punctuation.definition.thematic-break.markdown


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^ meta.separator.thematic-break.markdown | ^ punctuation.definition.thematic-break.markdown | ^ punctuation.definition.thematic-break.markdown


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^ meta.separator.thematic-break.markdown | ^ punctuation.definition.thematic-break.markdown | ^ punctuation.definition.thematic-break.markdown

TEST: LIGATURES

this is a raw ampersand & does not require HTML escaping | ^ - entity - illegal

this is a raw bracket < > does not require HTML escaping | ^^^ - meta.tag - punctuation

these are raw ligatures << <<< <<<< <<<<< >>>>> >>>> >>> >> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.other.valid-bracket - meta.tag

these are raw ligatures <- <-- <--- <---- <-< <--< <---< <----< | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.other.valid-bracket - meta.tag

these are raw ligatures -> --> ---> ----> >-> >--> >---> >----> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.other.valid-bracket - meta.tag

these are raw ligatures >- >-- >--- >---- ----< ---< --< -< | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.other.valid-bracket - meta.tag

these are raw ligatures >< >-< >--< >---< <---> <--> <-> <> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.other.valid-bracket - meta.tag

these are raw ligatures <= <== <=== <==== <=< <==< <===< <====< | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.other.valid-bracket - meta.tag

these are raw ligatures => ==> ===> ====> >=> >==> >===> >====> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.other.valid-bracket - meta.tag

these are raw ligatures >= >== >=== >==== ====< ===< ==< =< | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.other.valid-bracket - meta.tag

these are raw ligatures >< >=< >==< >===< <===> <==> <=> <> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.other.valid-bracket - meta.tag

these are raw ligatures - -- --- ---- ----- ===== ==== === == = | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.other.valid-bracket - meta.tag

-= += /= %= -- ++ ** !~ =~ ~~ <= >= => <=> // && == != | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - constant - keyword - variable

-= += /= %= -- ++ ** !~ =~ ~~ <= >= => <=> // && == !=

| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.raw - constant - keyword - variable - punctuation

-= += /= %= -- ++ ** !~ =~ ~~ <= >= => <=> // && == != | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - constant - keyword - variable

-= += /= %= -- ++ ** !~ =~ ~~ <= >= => <=> // && == != | ^ markup.quote.markdown punctuation.definition.blockquote.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - constant - keyword - variable

TEST: BACKSLASH ESCAPES

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ | <- constant.character.escape.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constant.character.escape.markdown

\ \A\a\ \3\φ\« | <- - constant.character.escape |^^^^^^^^^^^^^ - constant.character.escape

*not emphasized* | <- constant.character.escape.markdown |^ constant.character.escape.markdown |^^^^^^^^^^^^^^^^ - markup.italic

<br/> not a tag | <- constant.character.escape.markdown |^ constant.character.escape.markdown |^^^^^ - markup.tag

<br/> not a tag | <- constant.character.escape.markdown |^^^^^^ - meta.tag | ^^ constant.character.escape

[not a link](/foo) | <- constant.character.escape.markdown |^ constant.character.escape.markdown |^^^^^^^^^^^^^^^^^^ - markup.link

`not code` | <- constant.character.escape.markdown |^ constant.character.escape.markdown |^^^^^^^^^ - markup.raw

1. not a list |^^ constant.character.escape.markdown |^^^^^^^^^^^^^ - markup.list

* not a list | <- constant.character.escape.markdown |^ constant.character.escape.markdown |^^^^^^^^^^^^ - markup.list

# not a heading | <- constant.character.escape.markdown |^ constant.character.escape.markdown |^^^^^^^^^^^^^^^ - markup.heading

[foo]: /url "not a reference" | <- constant.character.escape.markdown |^ constant.character.escape.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.link

&ouml; not a character entity | <- constant.character.escape.markdown |^ constant.character.escape.markdown |^^^^^^ - entity

~/.bashrc | <- constant.character.escape.markdown |^ constant.character.escape.markdown

\emphasis | <- constant.character.escape.markdown |^ constant.character.escape.markdown | ^^^^^^^^^^ markup.italic.markdown

\emphasis | <- constant.character.escape.markdown |^ constant.character.escape.markdown | ^^^^^^^^^^ markup.italic.markdown

foo
| ^ meta.hard-line-break.markdown constant.character.escape.markdown | ^ meta.hard-line-break.markdown - constant bar

\[\` |^^^^^^^^^ markup.raw.inline.markdown - constant.character.escape

\[\]

|^^^^^^^^ markup.raw.block.markdown - constant.character.escape

\[\]
|^^^^ markup.raw.code-fence.markdown-gfm - constant.character.escape

http://example.com?find=\* | ^^ - constant.character.escape

| ^^ - constant.character.escape

foo | ^^ markup.underline.link.markdown constant.character.escape | ^^ constant.character.escape

foo

| ^^ markup.underline.link.markdown constant.character.escape | ^^ constant.character.escape

Note: current design doesn't support highlighting escapes in info strings

|      ^^ - constant.character.escape
foo

TEST: HTML ENTITIES

  & © Æ Ď | ^^^^^^ constant.character.entity.named.html | ^ - constant | ^^^^^ constant.character.entity.named.html | ^ - constant | ^^^^^^ constant.character.entity.named.html | ^ - constant | ^^^^^^^ constant.character.entity.named.html | ^ - constant | ^^^^^^^^ constant.character.entity.named.html | ^ - constant

¾ ℋ ⅆ | ^^^^^^^^ constant.character.entity.named.html | ^ - constant | ^^^^^^^^^^^^^^ constant.character.entity.named.html | ^ - constant | ^^^^^^^^^^^^^^^ constant.character.entity.named.html | ^ - constant

∲ ≧̸ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ constant.character.entity.named.html | ^ - constant | ^^^^^ constant.character.entity.named.html | ^ - constant

# Ӓ Ϡ � | ^^^^^ constant.character.entity.decimal.html | ^ - constant | ^^^^^^^ constant.character.entity.decimal.html | ^ - constant | ^^^^^^ constant.character.entity.decimal.html | ^ - constant | ^^^^ constant.character.entity.decimal.html | ^ - constant

" ആ ಫ | ^^^^^^ constant.character.entity.hexadecimal.html | ^ - constant | ^^^^^^^ constant.character.entity.hexadecimal.html | ^ - constant | ^^^^^^^ constant.character.entity.hexadecimal.html | ^ - constant

& | ^ - constant - invalid

&nbsp &x; &#; &#x; | ^^^^^^ - constant | ^^^ constant.character.entity.named.html | ^^^^^^^^^ - constant

&#abcdef0; | ^^^^^^^^^^ - constant

&hi?; | ^^^^^ - constant

Note: ST's HTML or Markdown don't maintain a full list of valid html5 entities for simplicity reasons and therefore invalid entities are highlighted.

Although HTML5 does accept some entity references without a trailing semicolon (such as &copy), these are not recognized here, because it makes the grammar too ambiguous:

&copy | ^^^^^ - constant

Strings that are not on the list of HTML5 named entities are not recognized as entity references either:

&MadeUpEntity; | ^^^^^^^^^^^^^^ constant.character.entity.named.html

Note: ST's HTML or Markdown don't maintain a full list of valid html5 entities for simplicity reasons and therefore invalid entities are highlighted.

| ^^^^^^^^^^^^ constant.character.entity.named.html

foo | ^^^^^^^^^^^^ constant.character.entity.named.html | ^^^^^^^^^^^^ constant.character.entity.named.html

foo

| ^^^^^^^^^^^^ constant.character.entity.named.html | ^^^^^^^^^^^^ constant.character.entity.named.html

foo

Note: current design doesn't support highlighting entities in info strings

f&ouml;&ouml; |^^^^^^^^^^^^^ - constant.character.entity

f&ouml;f&ouml;

| ^^^^^^^^^^^^^^ - constant.character.entity

*foo* | <- meta.paragraph.markdown constant.character.entity.decimal.html |^^^^^^^^^^^^^ meta.paragraph.markdown - markup.italic |^^^^ constant.character.entity.decimal.html | ^^^^^ constant.character.entity.decimal.html

foo | <- meta.paragraph.markdown markup.italic.markdown |^^^^ meta.paragraph.markdown markup.italic.markdown

* foo | <- meta.paragraph.markdown constant.character.entity.decimal.html |^^^^^^^^^ meta.paragraph.markdown |^^^^ constant.character.entity.decimal.html

  • foo | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^^ markup.list.unnumbered.markdown

foo bar | <- meta.paragraph.markdown |^^^^^^^^^^^^^^^^ meta.paragraph.markdown | ^^^^^^^^^^ constant.character.entity.decimal.html

foo | <- meta.paragraph.markdown constant.character.entity.decimal.html |^^^ meta.paragraph.markdown constant.character.entity.decimal.html | ^^^^ meta.paragraph.markdown - constant

[a](url "tit") | ^^^^^^^^^^^^^^^^^ meta.paragraph.markdown - meta.link | ^^^^^^ constant.character.entity.named.html | ^^^ - constant | ^^^^^^ constant.character.entity.named.html

TEST: THEMATIC BREAKS


|^^^ meta.separator.thematic-break.markdown |^^ punctuation.definition.thematic-break.markdown


|^^^ meta.separator.thematic-break.markdown |^^ punctuation.definition.thematic-break.markdown


|^^^ meta.separator.thematic-break.markdown |^^ punctuation.definition.thematic-break.markdown

+++ | <- - meta.separator |^^^ - meta.separator

=== | <- - meta.separator |^^^ - meta.separator

** | <- - meta.separator |^ - meta.separator

-- | <- - meta.separator |^ - meta.separator

__ | <- - meta.separator |^ - meta.separator


|<- meta.separator.thematic-break.markdown - punctuation |^^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown


|<- meta.separator.thematic-break.markdown - punctuation |^ meta.separator.thematic-break.markdown - punctuation | ^^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown


|<- meta.separator.thematic-break.markdown - punctuation |^^ meta.separator.thematic-break.markdown - punctuation | ^^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown

***

|<- markup.raw.block.markdown |^^^^^^^ markup.raw.block.markdown

Foo *** | <- meta.paragraph.markdown |^^^^^^^ meta.paragraph.markdown


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown


| <- meta.separator.thematic-break.markdown - punctuation |^^^^^^ meta.separator.thematic-break.markdown |^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation


| <- meta.separator.thematic-break.markdown - punctuation |^^^^^^ meta.separator.thematic-break.markdown |^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation


| <- meta.separator.thematic-break.markdown - punctuation |^^^^^^ meta.separator.thematic-break.markdown |^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation


| <- meta.separator.thematic-break.markdown - punctuation |^^^^^^^^^^^^^^^^^^^ meta.separator.thematic-break.markdown |^^ punctuation.definition.thematic-break.markdown | ^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^^ punctuation.definition.thematic-break.markdown | ^ - punctuation


| <- meta.separator.thematic-break.markdown - punctuation |^^^^^^^^^^^^^^^^^^^ meta.separator.thematic-break.markdown |^^ punctuation.definition.thematic-break.markdown | ^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^^ punctuation.definition.thematic-break.markdown | ^ - punctuation


| <- meta.separator.thematic-break.markdown - punctuation |^^^^^^^^^^^^^^^^^^^ meta.separator.thematic-break.markdown |^^ punctuation.definition.thematic-break.markdown | ^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation | ^^ punctuation.definition.thematic-break.markdown | ^ - punctuation


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^^^^^^^^^^^^^^^^ meta.separator.thematic-break.markdown |^^^^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^^^^^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^^^^^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^^^^^^^^^^^^^^^^ meta.separator.thematic-break.markdown |^^^^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^^^^^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^^^^^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^^^^^^^^^^^^^^^^ meta.separator.thematic-break.markdown |^^^^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^^^^^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^^^^^^ - punctuation | ^ punctuation.definition.thematic-break.markdown | ^ - punctuation


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^^ meta.separator.thematic-break.markdown |^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^^ meta.separator.thematic-break.markdown |^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^^^ meta.separator.thematic-break.markdown |^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation

_ _ _ _ a | <- meta.paragraph.markdown - meta.separator |^^^^^^^^^ meta.paragraph.markdown - meta.separator

a------ | <- meta.paragraph.markdown - meta.separator |^^^^^^^ meta.paragraph.markdown - meta.separator

---a--- | <- meta.paragraph.markdown - meta.separator |^^^^^^^ meta.paragraph.markdown - meta.separator

- | <- meta.paragraph.markdown - meta.separator |^^^ meta.paragraph.markdown - meta.separator

  • foo

| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown

  • bar | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown

Foo


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown bar | <- meta.paragraph.markdown

Foo

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown bar | <- meta.paragraph.markdown

  • Foo

| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^^^ meta.separator.thematic-break.markdown | ^ punctuation.definition.thematic-break.markdown | ^ punctuation.definition.thematic-break.markdown

  • Bar | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown
  • Foo

| ^^^^^^ markup.list.unnumbered.markdown meta.separator.thematic-break.markdown

TEST: ATX HEADINGS

foo

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^ markup.heading.1.markdown - punctuation

foo

| <- markup.heading.2.markdown punctuation.definition.heading.begin.markdown |^ markup.heading.2.markdown punctuation.definition.heading.begin.markdown | ^^^^^ markup.heading.2.markdown - punctuation

foo

| <- markup.heading.3.markdown punctuation.definition.heading.begin.markdown |^^ markup.heading.3.markdown punctuation.definition.heading.begin.markdown | ^^^^^ markup.heading.3.markdown - punctuation

foo

| <- markup.heading.4.markdown punctuation.definition.heading.begin.markdown |^^^ markup.heading.4.markdown punctuation.definition.heading.begin.markdown | ^^^^^ markup.heading.4.markdown - punctuation

foo

| <- markup.heading.5.markdown punctuation.definition.heading.begin.markdown |^^^^ markup.heading.5.markdown punctuation.definition.heading.begin.markdown | ^^^^^ markup.heading.5.markdown - punctuation

foo

| <- markup.heading.6.markdown punctuation.definition.heading.begin.markdown |^^^^^ markup.heading.6.markdown punctuation.definition.heading.begin.markdown | ^^^^^ markup.heading.6.markdown - punctuation

####### foo | <- meta.paragraph.markdown - markup.heading |^^^^^^^^^^^ meta.paragraph.markdown - markup.heading

#5 bolt | <- meta.paragraph.markdown - markup.heading |^^^^^^^ meta.paragraph.markdown - markup.heading

#hashtag | <- meta.paragraph.markdown - markup.heading |^^^^^^^^ meta.paragraph.markdown - markup.heading

## foo | <- meta.paragraph.markdown constant.character.escape.markdown - markup |^ meta.paragraph.markdown constant.character.escape.markdown - markup | ^^^^^^ meta.paragraph.markdown - constant - markup

foo bar *baz*

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^ markup.heading.1.markdown - entity.name - markup.italic | ^^^^ markup.heading.1.markdown entity.name.section.markdown - markup.italic | ^^^^^ markup.heading.1.markdown entity.name.section.markdown markup.italic.markdown | ^^^^^^^^ markup.heading.1.markdown entity.name.section.markdown - markup.italic

foo

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^ markup.heading.1.markdown - entity.name | ^^^ markup.heading.1.markdown entity.name.section.markdown | ^^^^^^^^^^^^^^^^^^^^^^ markup.heading.1.markdown - entity.name

foo

| <- markup.heading.3.markdown |^^^^^^^^ markup.heading.3.markdown

foo

| <- markup.heading.2.markdown |^^^^^^^^ markup.heading.2.markdown

foo

| <- markup.heading.1.markdown |^^^^^^^^ markup.heading.1.markdown

# foo

| <- markup.raw.block.markdown |^^^^^^^^^ markup.raw.block.markdown

foo # bar | <- meta.paragraph.markdown - markup.heading |^^^^^^^^^ meta.paragraph.markdown - markup.heading

foo

bar

| <- markup.heading.3.markdown |^^^^^^^^^^^^^^^^^^ markup.heading.3.markdown | ^^^ punctuation.definition.heading.begin.markdown | ^^^ - entity - punctuation | ^^^ entity.name.section.markdown | ^^^^ - entity - punctuation | ^^^ punctuation.definition.heading.end.markdown | ^ - punctuation

foo

foo

| <- markup.heading.5.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^ markup.heading.5.markdown |^^^^ punctuation.definition.heading.begin.markdown | ^ - entity - punctuation | ^^^ entity.name.section.markdown | ^ - entity - punctuation | ^^ punctuation.definition.heading.end.markdown | ^ - punctuation

foo

| <- markup.heading.3.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^ markup.heading.3.markdown |^^ punctuation.definition.heading.begin.markdown | ^ - entity - punctuation | ^^^ entity.name.section.markdown | ^ - entity - punctuation | ^^^ punctuation.definition.heading.end.markdown | ^^^^^^ - punctuation

foo ### b

| <- markup.heading.3.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^ markup.heading.3.markdown |^^ punctuation.definition.heading.begin.markdown | ^ - entity - punctuation | ^^^^^^^^^ entity.name.section.markdown | ^ - entity

foo#

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^ markup.heading.1.markdown |^ - entity - punctuation | ^^^^ entity.name.section.markdown | ^ - entity

foo#

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^ markup.heading.1.markdown |^ - entity - punctuation | ^^^^ entity.name.section.markdown | ^ - entity - punctuation | ^ punctuation.definition.heading.end.markdown | ^ - punctuation

foo ###

| <- markup.heading.3.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^ markup.heading.3.markdown |^^ punctuation.definition.heading.begin.markdown | ^^^^^^^^ entity.name.section.markdown | ^^ constant.character.escape.markdown | ^ - constant - entity - punctuation

foo ###

| <- markup.heading.2.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^ markup.heading.2.markdown |^ punctuation.definition.heading.begin.markdown | ^^^^^^^^ entity.name.section.markdown | ^^ constant.character.escape.markdown | ^ - constant - entity - punctuation

foo #

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^ markup.heading.1.markdown | ^^^^^^ entity.name.section.markdown | ^^ constant.character.escape.markdown | ^ - constant - entity - punctuation


foo

| <- markup.heading.2.markdown punctuation.definition.heading.begin.markdown |^^^^^^ markup.heading.2.markdown


foo


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown |^^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown

Foo bar

baz

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^ markup.heading.1.markdown

Foo bar

baz

Bar foo | <- meta.paragraph.markdown - markup.heading |^^^^^^^ meta.paragraph.markdown - markup.heading

Foo **bar

baz

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown - markup.bold |^^^^^ markup.heading.1.markdown this must not be bold** | <- - meta.bold |^^^^^^^^^^^^^^^^^^^^^^ - meta.bold

Foo *bar

baz

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown - markup.italic |^^^^ markup.heading.1.markdown this must not be italic* | <- - meta.italic |^^^^^^^^^^^^^^^^^^^^^^^ - meta.italic

Foo ***bar

baz

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown - markup.bold - markup.italic |^^^^^ markup.heading.1.markdown this must not be bold italic*** | <- - meta.bold - markup.italic |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.bold - markup.italic

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^ markup.heading.1.markdown - entity.name.section | ^ punctuation.definition.heading.end.markdown

| <- markup.heading.2.markdown punctuation.definition.heading.begin.markdown - entity.name.section |^ markup.heading.2.markdown punctuation.definition.heading.begin.markdown - entity.name.section

| <- markup.heading.2.markdown punctuation.definition.heading.begin.markdown - entity.name.section |^^^^^ markup.heading.2.markdown - entity.name.section |^ punctuation.definition.heading.begin.markdown | ^^ punctuation.definition.heading.end.markdown

| <- markup.heading.3.markdown - entity.name.sectionpunctuation.definition.heading.begin.markdown |^^^^^^^ markup.heading.3.markdown - entity.name.section |^^ punctuation.definition.heading.begin.markdown | ^^^ punctuation.definition.heading.end.markdown

####

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^ markup.heading.1.markdown |^ - entity.name.section | ^^^^ entity.name.section.markdown | ^^ - entity.name.section | ^ punctuation.definition.heading.end.markdown

####

| <- markup.heading.2.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^ markup.heading.2.markdown |^ - entity.name.section | ^^^^ entity.name.section.markdown | ^^^ - entity.name.section | ^^ punctuation.definition.heading.end.markdown

Headding with tag

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.heading.1.markdown | ^^^ meta.tag | ^^^^ meta.tag

TEST: SETEXT HEADINGS

SETEXT Heading Level 1 | <- markup.heading.1.markdown entity.name.section.markdown

| <- markup.heading.1.markdown punctuation.definition.heading.setext.markdown |^^^^^^^^^^^^^^^^ markup.heading.1.markdown punctuation.definition.heading.setext.markdown | ^ markup.heading.1.markdown meta.whitespace.newline.markdown

SETEXT Heading Level 2 | <- markup.heading.2.markdown entity.name.section.markdown

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown | ^ markup.heading.2.markdown meta.whitespace.newline.markdown - punctuation

underlined heading followed by a separator


| <- meta.separator.thematic-break.markdown - markup.heading

underlined heading followed by another one that should be treated as a normal paragraph

===== | <- meta.paragraph.markdown - markup.heading

https://spec.commonmark.org/0.30/#example-80

Foo bar | <- markup.heading.1.markdown entity.name.section.markdown |^^^^^^^^^ markup.heading.1.markdown entity.name.section.markdown | ^^^^^ markup.italic.markdown

| <- markup.heading.1.markdown punctuation.definition.heading.setext.markdown |^^^^^^^^ markup.heading.1.markdown punctuation.definition.heading.setext.markdown | ^ markup.heading.1.markdown meta.whitespace.newline.markdown

Foo bar | <- markup.heading.2.markdown entity.name.section.markdown |^^^^^^^^^ markup.heading.2.markdown entity.name.section.markdown | ^^^^^ markup.italic.markdown

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^^^^^^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown | ^ markup.heading.2.markdown meta.whitespace.newline.markdown

Foo *bar | <- markup.heading.1.markdown entity.name.section.markdown |^^^^^^^^^ markup.heading.1.markdown entity.name.section.markdown | ^^^^^ markup.italic.markdown

| <- markup.heading.1.markdown punctuation.definition.heading.setext.markdown - markup.italic |^^^^^^^^ markup.heading.1.markdown punctuation.definition.heading.setext.markdown - markup.italic | ^ markup.heading.1.markdown meta.whitespace.newline.markdown - markup.italic

Foo *bar | <- markup.heading.2.markdown entity.name.section.markdown |^^^^^^^^^ markup.heading.2.markdown entity.name.section.markdown | ^^^^^ markup.italic.markdown

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown - markup.italic |^^^^^^^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown - markup.italic | ^ markup.heading.2.markdown meta.whitespace.newline.markdown - markup.italic

https://spec.commonmark.org/0.30/#example-81

Foo bar baz | <- markup.heading.1.markdown entity.name.section.markdown markup.italic.markdown |^^^ markup.heading.1.markdown entity.name.section.markdown markup.italic.markdown | ^ markup.heading.1.markdown entity.name.section.markdown - markup.italic

| <- markup.heading.1.markdown punctuation.definition.heading.setext.markdown |^^^ markup.heading.1.markdown punctuation.definition.heading.setext.markdown | ^ markup.heading.1.markdown meta.whitespace.newline.markdown

https://spec.commonmark.org/0.30/#example-82

Foo bar baz
| <- markup.heading.1.markdown entity.name.section.markdown markup.italic.markdown |^^^ markup.heading.1.markdown entity.name.section.markdown markup.italic.markdown | ^^ markup.heading.1.markdown entity.name.section.markdown - markup.italic

| <- markup.heading.1.markdown punctuation.definition.heading.setext.markdown |^^^ markup.heading.1.markdown punctuation.definition.heading.setext.markdown | ^ markup.heading.1.markdown meta.whitespace.newline.markdown

https://spec.commonmark.org/0.30/#example-83

Foo

| <- markup.heading.1.markdown punctuation.definition.heading.setext.markdown |^ markup.heading.1.markdown meta.whitespace.newline.markdown

Foo

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^ markup.heading.2.markdown meta.whitespace.newline.markdown

https://spec.commonmark.org/0.30/#example-84

Foo

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown | ^ markup.heading.2.markdown meta.whitespace.newline.markdown

Foo

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown | ^ markup.heading.2.markdown meta.whitespace.newline.markdown

Foo

| <- markup.heading.1.markdown - punctuation |^ markup.heading.1.markdown - punctuation | ^^^ markup.heading.1.markdown punctuation.definition.heading.setext.markdown | ^ markup.heading.1.markdown meta.whitespace.newline.markdown

https://spec.commonmark.org/0.30/#example-85

Foo
---

|^^^^^^^ markup.raw.block.markdown

Foo

| <- meta.separator.thematic-break.markdown - markup.heading |^^^ meta.separator.thematic-break.markdown - markup.heading

https://spec.commonmark.org/0.30/#example-86

Foo

|^^^^^^^^^^^^^ markup.heading.2.markdown |^^ - punctuation | ^^^^ punctuation.definition.heading.setext.markdown | ^^^^^^^ - punctuation | ^ meta.whitespace.newline.markdown

https://spec.commonmark.org/0.30/#example-87

Foo --- | <- meta.paragraph.markdown - markup.heading |^^^^^^^ meta.paragraph.markdown - markup.heading

https://spec.commonmark.org/0.30/#example-88

Foo = = | <- meta.paragraph.markdown - markup.heading |^^^ meta.paragraph.markdown - markup.heading

Foo


| <- meta.separator.thematic-break.markdown - markup.heading |^^^^^ meta.separator.thematic-break.markdown - markup.heading

https://spec.commonmark.org/0.30/#example-89

Foo
| ^^ markup.heading.2.markdown entity.name.section.markdown - meta.hard-line-break

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown

https://spec.commonmark.org/0.30/#example-90

Foo
| ^ markup.heading.2.markdown entity.name.section.markdown - meta.hard-line-break

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown

https://spec.commonmark.org/0.30/#example-91

`Foo

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown

Foo

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown

https://spec.commonmark.org/0.30/#example-92

Foo


| <- meta.separator.thematic-break.markdown - markup.heading |^^^ meta.separator.thematic-break.markdown - markup.heading

https://spec.commonmark.org/0.30/#example-93

foo bar === | <- markup.quote.markdown - markup.heading |^^^ markup.quote.markdown - markup.heading

https://spec.commonmark.org/0.30/#example-94

  • Foo

| <- meta.separator.thematic-break.markdown - markup.heading |^^^ meta.separator.thematic-break.markdown - markup.heading

https://spec.commonmark.org/0.30/#example-95

Foo Bar

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown

https://spec.commonmark.org/0.30/#example-96


Foo

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown


Foo

Bar

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown Baz


Foo

Bar

Baz | <- meta.paragraph.markdown |^^^ meta.paragraph.markdown

https://spec.commonmark.org/0.30/#example-97

==== | <- meta.paragraph.markdown |^^^^ meta.paragraph.markdown

https://spec.commonmark.org/0.30/#example-98



| <- meta.separator.thematic-break.markdown - markup.heading |^^^ meta.separator.thematic-break.markdown - markup.heading

https://spec.commonmark.org/0.30/#example-102

> foo

| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^^^^ markup.heading.2.markdown punctuation.definition.heading.setext.markdown

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

TEST: INDENTED CODE BLOCKS

Code block below:

this is code!

| ^^^^^^^^^^^^^^^^ markup.raw.block

more code
spanning multiple lines

| ^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.raw.block

paragraph | <- meta.paragraph

TEST: FENCED CODE BLOCKS

| <- 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
<
| <- markup.raw.code-fence.markdown-gfm - punctuation
 >
|^^ 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

| <- 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
<
| <- markup.raw.code-fence.markdown-gfm - punctuation
 >
|^^ 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

foo | <- - meta.code-fence - punctuation.definition.raw.code-fence |^ - meta.code-fence - punctuation.definition.raw.code-fence

| <- 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

| <- 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

| <- punctuation.definition.raw.code-fence.begin

| ^^^ punctuation.definition.raw.code-fence.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.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

| <- 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

aaa

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown - markup.raw | ^^^^ markup.quote.markdown markup.raw.code-fence.markdown-gfm

bbb | <- meta.paragraph.markdown - markup.raw

| <- 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

  

| <- 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

| <- 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

aaa
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 meta.fold.code-fence.end - punctuation

aaa
aaa
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 meta.fold.code-fence.end - punctuation

aaa
 aaa
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 meta.fold.code-fence.end - punctuation

```
aaa
```

| <- markup.raw.block.markdown |^^^^^^^ markup.raw.block.markdown - 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.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

| <- 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 meta.fold.code-fence.end - punctuation

| <- 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 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 meta.fold.code-fence.end - 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.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
    ```
| <- 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 meta.fold.code-fence.end - punctuation

## https://spec.commonmark.org/0.30/#example-138

``` ```
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^^^^ markup.raw.inline.markdown

``` ```
aaa
| <- meta.paragraph.markdown - meta.code-fence - markup
|^^ meta.paragraph.markdown - meta.code-fence - markup

## https://spec.commonmark.org/0.30/#example-139

~~~~~~
aaa
~~~ ~~
| <- markup.raw.code-fence.markdown-gfm - punctuation
|^^^^^^ 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://spec.commonmark.org/0.30/#example-140

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 meta.fold.code-fence.begin - punctuation bar

baz
| <- meta.paragraph.markdown - meta.code-fence - markup
|^^ meta.paragraph.markdown - meta.code-fence - markup

## https://spec.commonmark.org/0.30/#example-140-including-emphasis-termination

Paragraph is terminated by fenced code blocks.

| <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown

| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

Code blocks terminate **bold text

| <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown

| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown
this must not be bold**
| <- - meta.bold
|^^^^^^^^^^^^^^^^^^^^^^^ - meta.bold

Code blocks terminate __bold text

| <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown

| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown
this must not be bold__
| <- - meta.bold
|^^^^^^^^^^^^^^^^^^^^^^^ - meta.bold

Code blocks terminate *italic text

| <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown

| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown
this must not be italic*
| <- - meta.italic
|^^^^^^^^^^^^^^^^^^^^^^^ - meta.italic

Code blocks terminate _italic text

| <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown

| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown
this must not be italic_
| <- - meta.italic
|^^^^^^^^^^^^^^^^^^^^^^^ - meta.bold - meta.italic

Code blocks terminate ***bold italic text

| <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown

| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown
this must not be bold italic***
| <- - meta.bold - meta.italic
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.bold - meta.italic

Code blocks terminate ___bold italic text

| <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown

| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown
this must not be bold italic___
| <- - meta.bold - meta.italic
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.bold - meta.italic

Code blocks terminate **_bold italic text

| <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown

| <- meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown
this must not be bold italic_**
| <- - meta.bold - meta.italic
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.bold - meta.italic

## https://spec.commonmark.org/0.30/#example-141

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 meta.fold.code-fence.begin - punctuation
bar
|^^^ markup.raw.code-fence.markdown-gfm
~~~
# baz
| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown
|^^^^^ markup.heading.1.markdown

## https://spec.commonmark.org/0.30/#example-142

```ruby
| <- 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 meta.fold.code-fence.begin - constant
def foo(x)
| <- markup.raw.code-fence.ruby.markdown-gfm source.ruby meta.function
  return 3
end
| <- markup.raw.code-fence.ruby.markdown-gfm source.ruby keyword

| <- 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

| <- 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 - punctuation - constant
|       ^^^^ meta.code-fence.definition.begin.ruby.markdown-gfm constant.other.language-name.markdown
|           ^^^^^^^^^^^^^^^^^^ 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
end
| <- markup.raw.code-fence.ruby.markdown-gfm source.ruby keyword

| <- 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.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
|    ^ 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

aa | <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown |^^^^^^^^^ meta.paragraph.markdown markup.raw.inline.markdown |^^ punctuation.definition.raw.begin.markdown | ^^^ punctuation.definition.raw.end.markdown foo | <- meta.paragraph.markdown - markup

| <- 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 - 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

|^^^^ 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

| <- 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

| <- meta.code-fence.definition.begin.shell.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown
|^^ meta.code-fence.definition.begin.shell.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown
|  ^^^^ meta.code-fence.definition.begin.shell.markdown-gfm constant.other.language-name.markdown
|      ^ meta.code-fence.definition.begin.shell.markdown-gfm meta.fold.code-fence.begin
# test
| ^^^^^ source.shell comment.line.number-sign
echo hello, \
|           ^ punctuation.separator.continuation.line
echo This is a smiley :-\) \(I have to escape the parentheses, though!\)
|                       ^^ constant.character.escape

| <- meta.code-fence.definition.end.shell punctuation.definition.raw.code-fence.end |^^ meta.code-fence.definition.end.shell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

|^^^^^^^^^ 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

|^^^^^ 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

|^^^^^ 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

|^^^^^^ 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
| <- source.diff markup.deleted.diff punctuation.definition.deleted.diff

| <- 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

|^^^^^^^^^^ 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

| ^^^^^^^ meta.code-fence.definition.begin.groovy.markdown-gfm - meta.fold
|        ^ meta.code-fence.definition.begin.groovy.markdown-gfm meta.fold.code-fence.begin.markdown

| <- markup.raw.code-fence.groovy.markdown-gfm source.groovy

| <- meta.code-fence.definition.end.groovy.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.groovy.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.groovy.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^^^^^^ 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

|^^^^^^ meta.code-fence.definition.begin - meta.fold
|      ^ meta.code-fence.definition.begin meta.fold.code-fence.begin
  <html>
| <- 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

|^^^^^^^^^^ meta.code-fence.definition.begin - meta.fold
|          ^ meta.code-fence.definition.begin meta.fold.code-fence.begin
<div></div>
|^^^ entity.name.tag.block
<?php
| <- markup.raw.code-fence.html-php.markdown-gfm embedding.php text.html meta.embedded punctuation.section.embedded.begin.php
var_dump(expression);
| <- markup.raw.code-fence.html-php.markdown-gfm embedding.php text.html meta.embedded source.php meta.function-call

| <- meta.code-fence.definition.end.html-php.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.html-php.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

|^^^^ meta.code-fence.definition.begin - meta.fold
|    ^ meta.code-fence.definition.begin meta.fold.code-fence.begin
| <- punctuation.definition.raw.code-fence.begin
|  ^^ constant.other.language-name
for (var i = 0; i < 10; i++) {
| ^ source.js keyword.control.loop
    console.log(i);
}

| <- meta.code-fence.definition.end.javascript.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.javascript.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.javascript.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^^ meta.code-fence.definition.begin - meta.fold
|     ^ meta.code-fence.definition.begin meta.fold.code-fence.begin

| <- markup.raw.code-fence.jsx.markdown-gfm

| <- 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

| <- meta.code-fence.definition.begin.latex.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown
|^^ meta.code-fence.definition.begin.latex.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown
|  ^^^^^ meta.code-fence.definition.begin.latex.markdown-gfm constant.other.language-name.markdown
|       ^ meta.code-fence.definition.begin.latex.markdown-gfm meta.fold.code-fence.begin.markdown - punctuation

| <- markup.raw.code-fence.latex.markdown-gfm text.tex.latex

| <- meta.code-fence.definition.end.latex.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.latex.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.latex.markdown-gfm meta.fold.code-fence.end.markdown - punctuation

|^^^^^^ meta.code-fence.definition.begin - meta.fold
|      ^ meta.code-fence.definition.begin meta.fold.code-fence.begin

| <- markup.raw.code-fence.lisp.markdown-gfm source.lisp

| <- meta.code-fence.definition.end.lisp.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.lisp.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.lisp.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^^ meta.code-fence.definition.begin - meta.fold
|     ^ meta.code-fence.definition.begin meta.fold.code-fence.begin

| <- markup.raw.code-fence.lua.markdown-gfm source.lua

| <- meta.code-fence.definition.end.lua.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.lua.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.lua.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^^^^^^^ meta.code-fence.definition.begin - meta.fold
|          ^ meta.code-fence.definition.begin meta.fold.code-fence.begin

| <- markup.raw.code-fence.makefile.markdown-gfm source.makefile

| <- meta.code-fence.definition.end.makefile.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.makefile.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.makefile.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^^^^^ meta.code-fence.definition.begin - meta.fold
|        ^ meta.code-fence.definition.begin meta.fold.code-fence.begin

| <- markup.raw.code-fence.matlab.markdown-gfm source.matlab

| <- meta.code-fence.definition.end.matlab.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.matlab.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.matlab.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^^^^ meta.code-fence.definition.begin - meta.fold
|       ^ meta.code-fence.definition.begin meta.fold.code-fence.begin

| <- markup.raw.code-fence.ocaml.markdown-gfm source.ocaml

| <- meta.code-fence.definition.end.ocaml.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.ocaml.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.ocaml.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^^ meta.code-fence.definition.begin - meta.fold
|     ^ meta.code-fence.definition.begin meta.fold.code-fence.begin
var_dump(expression);
| <- markup.raw.code-fence.php.markdown-gfm source.php meta.function-call

| <- meta.code-fence.definition.end.php.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.php.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.php.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^^^^^ 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
|  ^^^^^^ constant.other.language-name
def function():
    pass
|   ^^^^ keyword.control.flow
unclosed_paren = (
|                ^ meta.group.python punctuation.section.group.begin.python

| <- meta.code-fence.definition.end.python.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.python.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.python.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^^^^ meta.code-fence.definition.begin - meta.fold - markup
|       ^ meta.code-fence.definition.begin meta.fold.code-fence.begin - merkup
(?x)
\s+
| <- markup.raw.code-fence.regexp.markdown-gfm source.regexp

| <- meta.code-fence.definition.end.regexp.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.regexp.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.regexp.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^^^^ meta.code-fence.definition.begin - meta.fold - markup
|       ^ meta.code-fence.definition.begin meta.fold.code-fence.begin - merkup

| <- markup.raw.code-fence.scala.markdown-gfm source.scala

| <- meta.code-fence.definition.end.scala.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.scala.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.scala.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^ meta.code-fence.definition.begin - meta.fold - markup
|    ^ meta.code-fence.definition.begin meta.fold.code-fence.begin - markup

| <- markup.raw.code-fence.shell.markdown-gfm source.shell

| <- meta.code-fence.definition.end.shell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.shell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

|^^^^^^^ meta.code-fence.definition.begin - meta.fold - markup
|       ^ meta.code-fence.definition.begin meta.fold.code-fence.begin - markup

| <- markup.raw.code-fence.shell.markdown-gfm source.shell

| <- meta.code-fence.definition.end.shell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.shell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

| <- markup.raw.code-fence.shell.markdown-gfm source.shell

| <- meta.code-fence.definition.end.shell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.shell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

=== Generic Interactive Shell ===

$ ls ~
| <- markup.raw.code-fence.shell.markdown-gfm source.shell comment.other.shell
| ^^ meta.function-call.identifier.shell variable.function.shell
|   ^^ meta.function-call.arguments.shell

output.txt
| <- markup.raw.code-fence.shell.markdown-gfm source.shell - meta.function-call - variable
|^^^^^^^^^ markup.raw.code-fence.shell.markdown-gfm source.shell - meta.function-call - variable

$ ls \
> /foo/
| <- markup.raw.code-fence.shell.markdown-gfm source.shell
|^^^^^^^ markup.raw.code-fence.shell.markdown-gfm source.shell

$ ls \
> /foo/
bar
| <- markup.raw.code-fence.shell.markdown-gfm source.shell - meta.function-call
|^^^ markup.raw.code-fence.shell.markdown-gfm source.shell - meta.function-call

| <- meta.code-fence.definition.end.shell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.shell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.shell.markdown-gfm meta.fold.code-fence.end - punctuation

$ ls
|  ^^^^^ markup.raw.code-fence.shell.markdown-gfm source.shell
|  ^ comment.other.shell
|    ^^ meta.function-call.identifier.shell variable.function.shell

| ^^^ meta.code-fence.definition.end.shell.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.shell.markdown-gfm meta.fold.code-fence.end - punctuation

|^^^^^ 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
SELECT TOP 10 *
|^^^^^^^^^^^^^^^ markup.raw.code-fence.sql source.sql
FROM TableName

| <- meta.code-fence.definition.end.sql.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.sql.markdown-gfm punctuation.definition.raw.code-fence.end.markdown | ^ meta.code-fence.definition.end.sql.markdown-gfm meta.fold.code-fence.end - punctuation

declare type foo = 'bar'
| <- markup.raw.code-fence.typescript.markdown-gfm source.ts

| <- meta.code-fence.definition.end.typescript.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.typescript.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

| <- markup.raw.code-fence.tsx.markdown-gfm

| <- meta.code-fence.definition.end.tsx.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ meta.code-fence.definition.end.tsx.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

|^^^^^ 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
<?xml version="1.0" ?>
|^^^^^^^^^^^^^^^^^^^^^^ markup.raw.code-fence.xml
|     ^^^^^^^ meta.tag.preprocessor.xml entity.other.attribute-name.localname.xml
<example>
    <foobar />
</example>

| <- 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

|^^^^^^^^^^^^^^ 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

| <- 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

| <- 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
|                                                      ^ 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

|^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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

|^^^^^^^^^^^^^^ 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

|^^^^^^^^^^^^^^^ 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

**Hello**,
| ^^^^^^^^^ meta.disable-markdown - markup

world. | ^^^^ markup.italic - meta.disable-markdown

hi |^^^^^^^^^^^^^ meta.disable-markdown

okay. | <- meta.paragraph.markdown |^^^^^ meta.paragraph.markdown

*hello* | <- meta.disable-markdown |^^^^^^^^^^^^^^^^^ meta.disable-markdown | ^^^^^^^^ meta.tag
*foo* | <- meta.disable-markdown - markup.italic |^^^^^ meta.disable-markdown - markup.italic
| ^^^^^^^^^^^^^^^^ meta.disable-markdown

Markdown | ^^^^^^^ meta.paragraph markup.italic - meta.disable-markdown

| ^^^ meta.disable-markdown meta.tag.block
|^^^^^^^^^^^^^ meta.disable-markdown meta.tag.block
|^^^^^ meta.disable-markdown meta.tag.block
|^^^^^^ meta.disable-markdown meta.tag.block
|^^^^^ meta.disable-markdown meta.tag.block
*foo* | <- meta.disable-markdown - markup.italic
*foo*

bar | <- meta.paragraph.markdown markup.italic.markdown punctuation.definition.italic.begin.markdown

| ^^^^^ meta.disable-markdown - markup.italic
``` c int x = 33; ``` |^^^ meta.disable-markdown *bar* | <- meta.disable-markdown - markup.italic - punctuation |^^^^^ meta.disable-markdown - markup.italic *bar* | <- meta.disable-markdown - markup.italic - punctuation |^^^^^ meta.disable-markdown - markup.italic | ^^^^^^^ meta.disable-markdown meta.tag.other entity.name.tag.other.html *bar* | <- meta.disable-markdown - markup.italic - punctuation |^^^^^ meta.disable-markdown - markup.italic | <- meta.disable-markdown meta.tag punctuation.definition.tag |^^^ meta.disable-markdown meta.tag | ^ meta.disable-markdown - meta.tag *bar* | <- meta.disable-markdown - markup.italic - punctuation |^^^^^ meta.disable-markdown - markup.italic *foo* | <- meta.disable-markdown - markup.italic - punctuation |^^^^^ meta.disable-markdown - markup.italic | <- meta.disable-markdown meta.tag punctuation.definition.tag |^^^^^ meta.disable-markdown meta.tag | ^ meta.disable-markdown - meta.tag | <- meta.disable-markdown meta.tag punctuation.definition.tag |^^^^ meta.disable-markdown meta.tag | ^ meta.disable-markdown - meta.tag

foo | <- meta.paragraph.markdown markup.italic.markdown punctuation.definition.italic.begin.markdown |^^^ meta.paragraph.markdown markup.italic.markdown - punctuation | ^ meta.paragraph.markdown markup.italic.markdown punctuation.definition.italic.end.markdown

| <- meta.disable-markdown meta.tag punctuation.definition.tag |^^^^^ meta.disable-markdown meta.tag | ^ meta.disable-markdown - meta.tag

foo |^^^^^^^^^^^^^^^ meta.paragraph - meta.disable-markdown |^^^^ meta.tag.inline | ^^^^^ markup.italic | ^^^^^^ meta.tag.inline


| ^^ meta.disable-markdown meta.tag.block entity.name.tag.block
import Text.HTML.TagSoup

main :: IO ()
| ^^^^^^^^^^^^ meta.disable-markdown
main = print $ parseTags tags

| ^^^^^^^^^^^ meta.disable-markdown | ^^^ meta.tag.block entity.name.tag.block okay | <- - meta.disable-markdown

<script type="text/javascript"> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.disable-markdown meta.tag.script.begin.html // JavaScript example | ^^^^^^^^^^^^^^^^^^^^ meta.disable-markdown source.js.embedded.html comment.line.double-slash.js document.getElementById("demo").innerHTML = "Hello JavaScript!"; | ^^^^^^ meta.disable-markdown source.js.embedded.html support.type.object.dom.js </script>

| ^^^^^^ meta.disable-markdown meta.tag.script.end.html entity.name.tag.script.html okay | <- - meta.disable-markdown

<style type="text/css"> | ^^^^^^^^^^^^^^^ meta.disable-markdown meta.tag.style.begin.html meta.attribute-with-value h1 {color:red;} | ^^^^^ meta.disable-markdown source.css.embedded.html meta.property-list.css meta.property-name.css support.type.property-name.css p {color:blue;} | ^^^^^ meta.disable-markdown source.css.embedded.html meta.property-list.css meta.property-name.css support.type.property-name.css </style>

| ^^^^^ meta.disable-markdown meta.tag.style.end.html entity.name.tag.style.html okay | <- - meta.disable-markdown

<style type="text/css"> h1 {color:red;} | <- meta.disable-markdown source.css.embedded.html meta.selector.css entity.name.tag p {color:blue;} | <- meta.disable-markdown source.css.embedded.html meta.selector.css entity.name.tag </style>

okay | <- - meta.disable-markdown

foo

bar | <- - meta.disable-markdown

  • foo | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^^ markup.list.unnumbered.markdown
<style>p{color:red;}</style>

| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.disable-markdown foo | <- - meta.disable-markdown

*bar*

| ^^^^^^^^^^ comment.block.html | ^^^^^ meta.disable-markdown baz | <- - meta.disable-markdown

<script> foo </script>1. *bar*

| ^^^^^^^^^^^^^^^^ meta.disable-markdown okay | <- - meta.disable-markdown

| ^^^^^^^^ meta.disable-markdown comment.block.html okay | <- - meta.disable-markdown

'; ?>

|^^ meta.disable-markdown okay | <- - meta.disable-markdown

| ^^^^^^^ meta.disable-markdown meta.tag.sgml.doctype.html okay | <- - meta.disable-markdown

| ^^^^^^^^^^^^^ meta.disable-markdown okay | <- - meta.disable-markdown

|^^ meta.disable-markdown meta.tag.sgml okay | <- - meta.disable-markdown

| ^^^^^^^^^^^^ meta.disable-markdown comment.block.html

<!-- foo -->

|^^^^^^^^^^^^^^^^ markup.raw.block.markdown

<div>

|^^^^^^^^^ markup.raw.block.markdown

Emphasized text. |^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown | <- markup.italic.markdown punctuation.definition.italic.begin.markdown |^^^^^^^^^^^ markup.italic.markdown

| <- meta.disable-markdown meta.tag.block |^^^^^ meta.disable-markdown meta.tag.block
*Emphasized* text. | <- meta.disable-markdown - markup.italic |^^^^^^^^^^^^^^^^^^ meta.disable-markdown - markup.italic
| <- meta.disable-markdown meta.tag.block |^^^^^ meta.disable-markdown meta.tag.block | <- meta.disable-markdown meta.tag |^^^^^^ meta.disable-markdown meta.tag | <- meta.disable-markdown meta.tag |^^^ meta.disable-markdown meta.tag | <- meta.disable-markdown meta.tag |^^^^ meta.disable-markdown meta.tag | <- meta.disable-markdown meta.tag |^^^^ meta.disable-markdown meta.tag
Hi
| <- meta.disable-markdown meta.tag |^^^^^^^ meta.disable-markdown meta.tag | <- meta.disable-markdown meta.tag |^^^^^^ meta.disable-markdown meta.tag | <- meta.disable-markdown |^^^^^^^ meta.disable-markdown
<td>
  Hi
</td>

| <- markup.raw.block.markdown |^^^^^^^^^ markup.raw.block.markdown

| <- meta.disable-markdown |^^^^^^^ meta.disable-markdown
| <- meta.disable-markdown meta.tag |^^^^^^^ meta.disable-markdown meta.tag
this is HTML until there are two blank lines
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.disable-markdown disabled markdown | <- meta.disable-markdown

non-disabled markdown | <- - meta.disable-markdown

this is HTML until there are two blank lines | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.disable-markdown still HTML | ^^^^ meta.tag.inline entity.name.tag.inline
| ^^^^ meta.disable-markdown

non-disabled markdown | <- - meta.disable-markdown

nested tags don't count 
test

| ^^^^^^ meta.disable-markdown meta.tag.block non-disabled markdown | <- - meta.disable-markdown

nested tags don't count
test | ^^^^^ meta.disable-markdown
| ^^^ meta.disable-markdown entity.name.tag.block

non-disabled markdown | <- - meta.disable-markdown

two blank lines needed
to stop disabled markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.disable-markdown disabled markdown | <- meta.disable-markdown

non-disabled markdown | <- - meta.disable-markdown

another
disable test | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.disable-markdown | ^^^^^^ meta.tag.inline disabled markdown | <- meta.disable-markdown

non-disabled markdown | <- - meta.disable-markdown

a | ^ markup.italic

*a*

| ^^^^^^^^^ meta.disable-markdown - markup.italic *a* | ^^ meta.disable-markdown

non-disabled markdown | <- - meta.disable-markdown

TEST: LINK REFERENCE DEFINITIONS

|^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown | ^ punctuation.separator.key-value | ^^^^ markup.underline.link | ^^^^^^^ string.quoted.double

|^^^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown | ^^^^^^^^^^^ string.quoted.single

|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown |^ punctuation.definition.reference.begin.markdown | ^^^^^^^^^ entity.name.reference.link.markdown - punctuation | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^^^^^ markup.underline.link | ^ - markup - string | ^^^^^^^^^^^^^^^^^^^^^ string.quoted.single

| <- meta.link.reference.def.markdown punctuation.definition.link.begin.markdown |^^^^^^ meta.link.reference.def.markdown markup.underline.link.markdown | ^ meta.link.reference.def.markdown punctuation.definition.link.end.markdown

| <- meta.link.reference.def.markdown meta.string.title.markdown string.quoted.single.markdown |^^^^^^ meta.link.reference.def.markdown meta.string.title.markdown string.quoted.single.markdown

| <- meta.link.reference.def.markdown meta.string.title.markdown string.quoted.single.markdown punctuation.definition.string.end.markdown

foo: /url 'title

with blank line' | <- meta.paragraph.markdown - meta.link |^^^^^^^^^^^^^^^ meta.paragraph.markdown - meta.link

| <- meta.link.reference.def.markdown markup.underline.link.markdown punctuation.separator.path.markdown |^^^ meta.link.reference.def.markdown markup.underline.link.markdown

foo: | <- meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^ meta.link.reference.def.markdown entity.name.reference.link.markdown | ^ meta.link.reference.def.markdown punctuation.definition.reference.end.markdown | ^ meta.link.reference.def.markdown punctuation.separator.key-value.markdown | ^ meta.link.reference.def.markdown - punctuation

|^^^^^^^^ meta.link.reference.def.markdown | ^ punctuation.separator.key-value | ^ punctuation.definition.link.begin | ^ punctuation.definition.link.end

foo: (baz) | <- meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^ punctuation.definition.link.begin.markdown | ^^^ markup.underline.link.markdown | ^ punctuation.definition.link.end.markdown | ^^^^^ meta.string.title.markdown string.quoted.other.markdown | ^ punctuation.definition.string.begin.markdown | ^ punctuation.definition.string.end.markdown

| <- meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^^^^^^^^^^ markup.underline.link.markdown | ^ punctuation.separator.path.markdown | ^^ - constant.character.escape | ^^ constant.character.escape.markdown | ^^^^^^^^^^^^^^ meta.string.title.markdown string.quoted.double.markdown | ^ punctuation.definition.string.begin.markdown | ^^ constant.character.escape.markdown | ^^ - constant.character.escape | ^ punctuation.definition.string.end.markdown

| <- meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^ meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^ markup.underline.link.markdown

| <- meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^^ meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^^^ markup.underline.link.markdown

| <- meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^ meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

| <- meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^ meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

bar | <- meta.paragraph.markdown - meta.link |^^^ meta.paragraph.markdown - meta.link

This is not a link reference definition, because there are characters other than spaces or tabs after the title:

foo: /url "title" ok |^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown | ^^ invalid.illegal.expected-eol.markdown

This is a link reference definition, but it has no title:

"title" ok |^^^^^^^^^ meta.link.reference.def.markdown | ^^ invalid.illegal.expected-eol.markdown

|^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown | ^ punctuation.definition.link.begin | ^^^ markup.underline.link | ^ punctuation.definition.link.end | ^^^^^ string.quoted.double | ^ - invalid.illegal.expected-eol

foo: > "baz" |^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown | ^ punctuation.definition.link.begin | ^^^ markup.underline.link | ^ punctuation.definition.link.end | ^^^^^^^ invalid.illegal.expected-eol.markdown

This is not a link reference definition, because it is indented four spaces:

[foo]: /url "title"

|^^^^^^^^^^^^^^^^^^^^^^^ markup.raw.block.markdown - meta.link

This is not a link reference definition, because it occurs inside a code block:

[foo]: /url
| <- markup.raw.code-fence.markdown-gfm - meta.link
|^^^^^^^^^^^ markup.raw.code-fence.markdown-gfm - meta.link

A link reference definition cannot interrupt a paragraph.

Foo [bar]: /baz | <- meta.paragraph.markdown meta.link.reference.description.markdown punctuation.definition.link.begin.markdown |^^^^^^^^^^^ meta.paragraph.markdown |^^^^ meta.link.reference.description.markdown | ^^^^^^^ - punctuation - markup.underline

| <- meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ meta.link.reference.def.markdown

bar | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown - meta.link | ^^^^^^^^^^^^ markup.quote.markdown meta.link.reference.def.markdown | ^ punctuation.definition.reference.begin.markdown | ^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

link: /url {#id .class width=30} | ^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown meta.attributes.markdown

link: /url (description) {#id .class width=30} | ^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown meta.attributes.markdown

link: /url "description" {#id .class width=30} | ^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown meta.attributes.markdown

{#id .class width=30} | ^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown meta.attributes.markdown

{#id .class width=30} | ^^^^^^^^^^^^^^^^^^^^^ - meta.link - meta.attributes

{#id .class width=30} | ^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown meta.attributes.markdown

{#id .class width=30} | ^^^^^^^^^^^^^^^^^^^^^ - meta.link - meta.attributes

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown - meta.link | ^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown meta.link.reference.def.markdown | ^ punctuation.definition.reference.begin.markdown | ^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown | ^^^^^^^^^^^^^ meta.string.title.markdown string.quoted.double.markdown

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown meta.link.reference.def.markdown - markup.underline | ^^^^ markup.quote.markdown meta.link.reference.def.markdown markup.underline.link.markdown

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown meta.link.reference.def.markdown - meta.string - string | ^^^^^^^^^^^^^ markup.quote.markdown meta.link.reference.def.markdown meta.string.title.markdown string.quoted.double.markdown

foo: </url-with -continuation> | <- markup.quote.markdown meta.link.reference.def.markdown markup.underline.link.markdown punctuation.definition.blockquote.markdown |^^^^^^^^^^^^^^^^ markup.quote.markdown meta.link.reference.def.markdown |^^^^^^^^^^^^^^ markup.underline.link.markdown | ^ punctuation.definition.link.end.markdown

| <- markup.quote.markdown - markup.underline - punctuation |^ markup.quote.markdown meta.link.reference.def.markdown - markup.underline | ^^^^ markup.quote.markdown meta.link.reference.def.markdown markup.underline.link.markdown

| <- markup.quote.markdown - meta.string - string - punctuation |^ markup.quote.markdown meta.link.reference.def.markdown - meta.string - string | ^^^^^^^^^^^^^ markup.quote.markdown meta.link.reference.def.markdown meta.string.title.markdown string.quoted.double.markdown

foo: </url-with -continuation> | <- markup.quote.markdown meta.link.reference.def.markdown markup.underline.link.markdown |^^^^^^^^^^^^^^^^ markup.quote.markdown meta.link.reference.def.markdown |^^^^^^^^^^^^^^ markup.underline.link.markdown | ^ punctuation.definition.link.end.markdown

| ^ meta.link.reference.def.markdown markup.underline.link | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.other

| ^ punctuation.definition.string.end

//: # (testing)blah |^^^^^^^^^^^^^^^^^^^^ meta.link.reference.def.markdown | ^ punctuation.definition.string.begin | ^ punctuation.definition.string.end | ^^^^ invalid.illegal.expected-eol | ^ - invalid

//: # (testing blah | <- meta.link.reference.def.markdown string.quoted.other

| <- invalid.illegal.non-terminated.link-title text | <- meta.paragraph - meta.link.reference.def.markdown

Not a footnote paragraph. |^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown - meta.link

[^1]: And that's no footnote.

|^ markup.quote.markdown - meta.link - markup.raw | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.raw.block.markdown

That's the *second* paragraph.

| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown meta.link.reference.def.footnote.markdown-extra | ^^^^^^^^ markup.italic

Not a footnote paragraph. | <- markup.quote.markdown punctuation.definition.blockquote.markdown - markup.link | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.paragraph.markdown - markup.link

code block

| <- markup.quote.markdown punctuation.definition.blockquote.markdown - markup.raw |^ markup.quote.markdown - markup.raw | ^^^^^^^^^^^^^^^ markup.quote.markdown markup.raw.block.markdown

  That's not a *second* paragraph.

|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.raw.block.markdown

TEST: TABLES

| foo | bar | |^^^^^^^^^^^^^ meta.table.header | <- punctuation.separator.table-cell | ^ punctuation.separator.table-cell | ^ punctuation.separator.table-cell | ^^^^ - punctuation.separator.table-cell

foo bar
baz bim Ctrl+C
<- meta.table punctuation.separator.table-cell
^^^^^ meta.tag.inline.any
^ punctuation.separator.table-cell

| <- - meta.table

abc defghi
^^^^^^^^^^^^^^^^^ meta.table.header-separator
<- punctuation.definition.table-cell-alignment
^ punctuation.section.table-header
^ punctuation.separator.table-cell
^^^^^^^^^^^ punctuation.section.table-header
^ punctuation.definition.table-cell-alignment - punctuation.section.table-header
bar baz
^ meta.table punctuation.separator.table-cell

| f|oo | | <- meta.table punctuation.separator.table-cell | ^^ meta.table constant.character.escape - punctuation.separator.table-cell | ^ meta.table punctuation.separator.table-cell

f|oo
b `
^^^^^^^^^^^ meta.table.markdown-gfm - markup.raw
^ punctuation.separator.table-cell.markdown
^ punctuation.separator.table-cell.markdown
b **
<- meta.table punctuation.separator.table-cell
^^^^^ meta.table markup.bold - punctuation.separator.table-cell
^ meta.table punctuation.separator.table-cell
abc def
bar baz
^^^^^^^^^^^^^ meta.table
test
^^^^ meta.table

bar | <- markup.quote punctuation.definition.blockquote - meta.table

c1 c2 c3 c4 c5 c6 c7
me ` `` foo`bar ```foo`` ``foo```
<- meta.table.markdown-gfm punctuation.separator.table-cell.markdown
^^^ meta.table.markdown-gfm markup.raw.inline.markdown
^ punctuation.definition.raw.begin.markdown
^ punctuation.definition.raw.end.markdown
^ punctuation.separator.table-cell
^^^^^^ markup.raw.inline.markdown
^ punctuation.definition.raw.begin.markdown
^ punctuation.definition.raw.end.markdown
^^^^^^^ markup.raw.inline.markdown
^^ punctuation.definition.raw.begin.markdown
^^^ - punctuation
^^ punctuation.definition.raw.end.markdown
^ punctuation.separator.table-cell
^^^^^^ markup.raw.inline.markdown
^ punctuation.definition.raw.begin.markdown
^^^^ - punctuation
^ punctuation.definition.raw.end.markdown
^ punctuation.separator.table-cell
^^^^^^^^^^^ markup.raw.inline.markdown
^^ punctuation.definition.raw.begin.markdown
^^^^^^^ - punctuation
^^ punctuation.definition.raw.end.markdown
^ punctuation.separator.table-cell
^^^^^^^^ - markup.raw
c1 c2
``` `````
^^^^^^^^^^^^^ markup.raw.inline.markdown
^^^^ punctuation.definition.raw.begin.markdown
^^^^^ - punctuation
^^^^ punctuation.definition.raw.end.markdown
^^^^^^^^^^^^^^^^^^^ markup.raw.inline.markdown
^^^^^^ punctuation.definition.raw.begin.markdown
^^^^^^^ - punctuation
^^^^^^ punctuation.definition.raw.end.markdown
table with multiple code spans)
<- punctuation.separator.table-cell
^ punctuation.separator.table-cell
^^^^^^^^^^ markup.raw.inline
^^^^^^ - markup.raw.inline
^^^^^^^ markup.raw.inline

| this | example | is not a table | | ^ punctuation.definition.raw.end - meta.table | nor is this | because it is not at block level, it immediately follows a paragraph | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph - meta.table

First Header Second Header Third Header
First row Data Very long data entry
Second row Cell Cell
Third row Cell that spans across two columns
^^^^^^^^^^^^^^ meta.table
^^ punctuation.separator.table-cell
table that doesn't start at column 0
blah
^^^^^^^^ meta.table
^ punctuation.separator.table-cell

not a table | | ^^^^^^^^^^^^^ - meta.table

abc def
--- ---
^^^^ meta.table - meta.table.header

a | b

  • | - |^^^^^^ meta.table.header-separator.markdown-gfm |^ punctuation.section.table-header.markdown | ^ punctuation.separator.table-cell.markdown | ^ punctuation.section.table-header.markdown
  • | - |^^^^^^ meta.table.markdown-gfm
a b
^^^^^^ meta.table.header-separator.markdown-gfm
^ punctuation.section.table-header.markdown
^ punctuation.definition.table-cell-alignment.markdown
^ punctuation.separator.table-cell.markdown
^ punctuation.section.table-header.markdown
  • | - |^^^^^^ meta.table.markdown-gfm
test me
^^^^^^ punctuation.section.table-header
*test me
^^^^^^ - markup.bold
^ punctuation.separator.table-cell
^ punctuation.separator.table-cell
`test me
^^^^^^^^^^^^^ meta.table.markdown-gfm - markup.raw
^ punctuation.separator.table-cell

| table | followed by paragraph | <- meta.paragraph.markdown |^^^^^^^^^ meta.paragraph.markdown

| table | followed by https://foo.bar/baz | <- meta.paragraph.markdown meta.link.inet.markdown markup.underline.link.markdown-gfm |^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown meta.link.inet.markdown markup.underline.link.markdown-gfm

| table | followed by

heading

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^ markup.heading.1.markdown

| table | followed by

quote | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^^^ markup.quote.markdown

| table | followed by quote | <- markup.raw.block.markdown |^^^^^^^^^ markup.raw.block.markdown

| table | followed by

| <- meta.code-fence.definition.begin.text.markdown-gfm
|^^^^^^^^^ meta.code-fence.definition.begin.text.markdown-gfm
code block

| <- meta.code-fence.definition.end.text.markdown-gfm |^^ meta.code-fence.definition.end.text.markdown-gfm

A line without bolded | | ^ - punctuation.separator.table-cell

A line with bolded | | ^ - punctuation.separator.table-cell

TEST: BLOCK QUOTES

Foo

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown - markup.heading | ^^^^^^ markup.quote.markdown markup.heading.1.markdown | ^ punctuation.definition.heading.begin.markdown | ^^^ entity.name.section.markdown

Foo

bar | <- meta.paragraph.markdown - markup.quote |^^ meta.paragraph.markdown - markup.quote

Foo

bar | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown

Foo

bar baz | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown

Foo

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^^ markup.quote.markdown markup.heading.1.markdown |^ punctuation.definition.heading.begin.markdown | ^^^ entity.name.section.markdown

Foo

bar | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^ markup.quote.markdown

Foo

bar baz | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown

Foo

| <- markup.quote.markdown |^^^^^^^^^^ markup.quote.markdown | ^ punctuation.definition.blockquote.markdown | ^^^^^^ markup.heading.1.markdown | ^ punctuation.definition.heading.begin.markdown | ^^^ entity.name.section.markdown

Foo

bar | <- markup.quote.markdown - punctuation |^^ markup.quote.markdown - punctuation | ^ markup.quote.markdown punctuation.definition.blockquote.markdown | ^^^^^ markup.quote.markdown - punctuation

Foo

bar baz | <- markup.quote.markdown - punctuation |^ markup.quote.markdown punctuation.definition.blockquote.markdown | ^^^^^ markup.quote.markdown - punctuation

> # Foo
> bar
> baz

| <- markup.raw.block.markdown |^^^^^^^^^ markup.raw.block.markdown

Foo

bar baz | <- markup.quote.markdown |^^^ markup.quote.markdown

bar baz | <- markup.quote.markdown |^^^ markup.quote.markdown foo | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown - punctuation

foo


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown - markup.quote |^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown - markup.quote

foo


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown - markup.quote |^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown - markup.quote

foo


| <- meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown - markup.quote |^^ meta.separator.thematic-break.markdown punctuation.definition.thematic-break.markdown - markup.quote

  • foo
  • bar | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown - markup.quote |^^^^^ markup.list.unnumbered.markdown - markup.quote
foo
bar

| <- markup.raw.block.markdown |^^^^^^^ markup.raw.block.markdown

foo | <- meta.paragraph.markdown - markup.quote - markup.raw |^^^ meta.paragraph.markdown - markup.quote - markup.raw

foo - bar | <- markup.quote.markdown - markup.list - markup.raw |^^^^^^^^^ markup.quote.markdown - markup.list - markup.raw

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^ markup.quote.markdown

foo

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^ markup.quote.markdown

foo

| <- - markup.quote

foo

bar | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown

foo bar | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown

foo

| <- markup.quote.markdown punctuation.definition.blockquote.markdown

bar | <- markup.quote.markdown punctuation.definition.blockquote.markdown

foo

bar | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown

aaa


bbb | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown

bar baz | <- markup.quote.markdown |^^^ markup.quote.markdown

bar

baz | <- meta.paragraph.markdown - markup.quote |^^ meta.paragraph.markdown - markup.quote

bar

baz | <- meta.paragraph.markdown - markup.quote |^^ meta.paragraph.markdown - markup.quote

foo | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^^^^^ markup.quote.markdown | ^ punctuation.definition.blockquote.markdown | ^ punctuation.definition.blockquote.markdown | ^^^^^ - punctuation

foo bar | <- markup.quote.markdown |^^^ markup.quote.markdown

foo bar baz | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown punctuation.definition.blockquote.markdown | ^^^^ markup.quote.markdown - punctuation

code

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown - markup.raw | ^^^^^^^^^ markup.quote.markdown markup.raw.block.markdown

not code | <- markup.quote.markdown punctuation.definition.blockquote.markdown - markup.raw |^^^^^^^^^^^^^ markup.quote.markdown - markup.raw

= | <- punctuation.definition.blockquote.markdown

== | <- punctuation.definition.blockquote.markdown

= | ^ punctuation.definition.blockquote.markdown >= | ^^^^^ markup.quote.markdown - punctuation

>=

| ^^ markup.raw.block.markdown - markup.quote - punctuation

Nested block quote | <- markup.quote punctuation.definition.blockquote | ^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown |^ - punctuation | ^ punctuation.definition.blockquote | ^ - punctuation

Nested quote Followed by more quoted text that is not nested | <- markup.quote punctuation.definition.blockquote - markup.quote markup.quote

this is a nested quote but no code in a block quote | <- punctuation.definition.blockquote | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown

this is a nested quote but no code in a block quote > with a second line of content | <- punctuation.definition.blockquote |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.paragraph.markdown | ^ - punctuation

> this is code in a block quote, not a nested quote

| <- punctuation.definition.blockquote | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.raw.block - markup.quote markup.quote

Block quote followed by heading

heading

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^ markup.heading.1.markdown - meta.quote | ^^^^^^^ entity.name.section.markdown

Block quote followed by unordered list

  • list item | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^^^^^^^^ markup.list.unnumbered.markdown - meta.quote

Block quote followed by unordered list

  • list item | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^^^^^^^^ markup.list.unnumbered.markdown - meta.quote

Block quote followed by unordered list

  • list item | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^^^^^^^^ markup.list.unnumbered.markdown - meta.quote

Block quote followed by ordered list

  1. list item | <- markup.list.numbered.bullet.markdown - punctuation |^ markup.list.numbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^^^^^^ markup.list.numbered.markdown - meta.quote

Block quote followed by ordered list

  1. list item | <- markup.list.numbered.bullet.markdown - punctuation |^ markup.list.numbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^^^^^^ markup.list.numbered.markdown - meta.quote

Block quote followed by invalid list 1234567890. no list item | <- markup.quote.markdown - markup.list |^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown - markup.list

Block quote followed by html block

*no-markdown

| <- meta.disable-markdown meta.tag.block |^^^^^^^^^^^^^^^^^^^ meta.disable-markdown

paragraph | <- meta.paragraph.markdown - markup.quote


paragraph | <- meta.paragraph.markdown - markup.quote


paragraph | <- meta.paragraph.markdown - markup.quote

paragraph


| ^^^^^^ markup.quote.markdown meta.separator.thematic-break.markdown

paragraph


| ^^^^^^ markup.quote.markdown meta.separator.thematic-break.markdown

paragraph


| ^^^^^^ markup.quote.markdown meta.separator.thematic-break.markdown

Quoted fenced code block begin

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown - meta.code-fence | ^^^^ markup.quote.markdown meta.code-fence.definition.begin.text.markdown-gfm | ^^^ punctuation.definition.raw.code-fence.begin.markdown

Quoted fenced code block language identifier

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown - meta.code-fence | ^^^^^^^ markup.quote.markdown meta.code-fence.definition.begin.text.markdown-gfm | ^^^ constant.other.language-name.markdown

Quoted fenced code block language identifier

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown - meta.code-fence | ^^^^^^^^^^^^^^^^^^^ markup.quote.markdown meta.code-fence.definition.begin.text.markdown-gfm | ^^^ constant.other.language-name.markdown | ^^^^^^^^^^^^^ - constant

Quoted fenced code block content

code block

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown - meta.code-fence | ^^^^^^^^^^^ markup.quote.markdown markup.raw.code-fence.markdown-gfm

Quoted fenced code block end

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown - meta.code-fence | ^^^^ markup.quote.markdown meta.code-fence.definition.end.text.markdown-gfm | ^^^ punctuation.definition.raw.code-fence.end.markdown

2nd level quoted fenced code block

code block ```

| ^^^ - punctuation

2nd level quoted fenced code block

code block ```

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^ markup.quote.markdown - meta.code-fence | ^^^ markup.quote.markdown meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

Block quote followed by fenced code block

| <- meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.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

no code block | <- meta.paragraph.markdown - meta.quote - meta.code-fence |^^^^^^^^^^^^^ meta.paragraph.markdown - meta.quote - meta.code-fence

Quoted fenced code block is terminated by missing > at bol

content

no code block | <- meta.paragraph.markdown - meta.quote - meta.code-fence |^^^^^^^^^^^^^ meta.paragraph.markdown - meta.quote - meta.code-fence

Unterminated quoted fenced code block followed by unquoted fenced code block

| <- meta.code-fence.definition.begin.text.markdown-gfm - markup.quote

| <- meta.code-fence.definition.end.text.markdown-gfm - markup.quote

This is a paragraph highlight as code, because nested block quotes can't be counted. | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown

Block quote with lists

  • list item 1 | ^ markup.quote punctuation.definition.list_item
  • list item 2 | ^ markup.list.unnumbered.bullet punctuation.definition.list_item | ^^^^^^^^^^^^^^ markup.quote markup.list.unnumbered
    1. sub list item | <- markup.quote punctuation.definition.blockquote |^^^^^^^^^^^^^^^^^^ markup.quote | ^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered | ^ punctuation.definition.list_item | ^^ markup.list.numbered.bullet
  • list item 3 continued | ^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown
  • list item second line | <- markup.quote.markdown markup.list.unnumbered.markdown punctuation.definition.blockquote.markdown
    • subitem second line | <- markup.quote.markdown markup.list.unnumbered.markdown punctuation.definition.blockquote.markdown
      • subitem second line | <- markup.quote.markdown markup.list.unnumbered.markdown punctuation.definition.blockquote.markdown
        • subitem second line | <- markup.quote.markdown markup.list.unnumbered.markdown punctuation.definition.blockquote.markdown
  • list item second line | <- markup.quote.markdown markup.list.unnumbered.markdown
    • subitem second line | <- markup.quote.markdown markup.list.unnumbered.markdown
      • subitem second line | <- markup.quote.markdown markup.list.unnumbered.markdown
        • subitem second line | <- markup.quote.markdown markup.list.unnumbered.markdown
  1. list item second line | <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown 2. subitem second line | <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown 3. subitem second line | <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown 4. subitem second line | <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown
  1. list item second line | <- markup.quote.markdown markup.list.numbered.markdown 2. subitem second line | <- markup.quote.markdown markup.list.numbered.markdown 3. subitem second line | <- markup.quote.markdown markup.list.numbered.markdown 4. subitem second line | <- markup.quote.markdown markup.list.numbered.markdown
  1. list item second line | <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown
    • subitem second line | <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown
      • subitem second line | <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown
        • subitem second line | <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown
  1. list item second line | <- markup.quote.markdown markup.list.numbered.markdown
    • subitem second line | <- markup.quote.markdown markup.list.numbered.markdown
      • subitem second line | <- markup.quote.markdown markup.list.numbered.markdown
        • subitem second line | <- markup.quote.markdown markup.list.numbered.markdown

| ^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered | ^ punctuation.definition.list_item.markdown | ^^^^^^^^^^^^^^ meta.separator.thematic-break.markdown | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation


  • still a list item | ^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown

| ^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered | ^ punctuation.definition.list_item.markdown | ^ punctuation.definition.list_item.markdown | ^ - punctuation | ^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.separator.thematic-break.markdown | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation


    • still a list item | <- markup.quote.markdown markup.list.unnumbered.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown markup.list.unnumbered.markdown - meta.paragraph | ^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown meta.paragraph.list.markdown

| ^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered | ^^ markup.list.numbered.bullet.markdown | ^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.separator.thematic-break.markdown | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation


  1. still a list item | <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown markup.list.numbered.markdown - meta.paragraph | ^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown meta.paragraph.list.markdown
  • list item

global heading

| <- markup.quote.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown - markup.list |^^^^^^^^^^^^^^^^ markup.quote.markdown markup.heading.1.markdown - markup.list

  • list item

global heading (matched as list item heading)

| <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown

  • list item

    list item heading

| <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
|^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown
  • list item

    list item heading

| <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.begin.markdown
|^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.2.markdown
  • list item

    list item heading

  | <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.3.markdown punctuation.definition.heading.begin.markdown
  |^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.3.markdown
  • list item

    list item heading

    • list item

      list item heading

    | <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.4.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.4.markdown
  • list item heading

| <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
|^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown  
  • list item heading

  | <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
  |^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown  
  • list item heading

    • list item heading 1

    | <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown   
  • list item heading

    • list item heading 1

      list item heading 2

    | <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.2.markdown
  ## not a list item heading
    | <- markup.quote.markdown markup.raw.block.markdown
    |^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.raw.block.markdown

list item heading

| <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
|^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown  
# list item heading
  | <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
  |^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown  
# list item heading

- 

  # list item heading 1
    | <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.1.markdown  
# list item heading

- 

  # list item heading 1

  ## list item heading 2
    | <- markup.quote.markdown markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown markup.heading.2.markdown
  ## not a list item heading
    | <- markup.quote.markdown markup.raw.block.markdown
    |^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.raw.block.markdown
  1. list item

global heading

| <- markup.quote.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown - markup.list |^^^^^^^^^^^^^^^^ markup.quote.markdown markup.heading.1.markdown - markup.list

  1. list item

global heading (matched as list item heading)

| <- markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown

|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown

  1. list item

    list item heading

 | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
 |^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown
  1. list item

    list item heading

    | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown
  1. list item

    list item heading

    1. list item

      list item heading

       | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
       |^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown
  1. list item

    list item heading

    | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown
  1. list item heading

 | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
 |^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown
  1. list item heading

    | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown
  1. list item heading

    1. list item heading

       | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
       |^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown
  1. list item heading

    1. list item heading

      list item heading 2

       | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.2.markdown punctuation.definition.heading.begin.markdown
       |^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.2.markdown

list item heading

 | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
 |^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown
  # list item heading
    | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown
  # list item heading

  1. 

     # list item heading 1
       | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
       |^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown
  # list item heading

  1. 

     # list item heading 1

     ## list item heading 2
       | <- markup.quote.markdown markup.list.numbered.markdown markup.heading.2.markdown punctuation.definition.heading.begin.markdown
       |^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.2.markdown
  1. item
    • item
      • item

| <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown markup.list.numbered.markdown - meta.code-fence | ^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown meta.code-fence.definition.begin.text.markdown-gfm | ^^^ punctuation.definition.raw.code-fence.begin.markdown | ^^^ constant.other.language-name.markdown

  1. item
    • item
      • item
        code

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown markup.list.numbered.markdown - meta.code-fence | ^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.raw.code-fence.markdown-gfm

  1. item
    • item
      • item
        code

| <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown markup.list.numbered.markdown - meta.code-fence | ^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown meta.code-fence.definition.end.text.markdown-gfm | ^^^ punctuation.definition.raw.code-fence.end.markdown

  • list item ref | ^^^^^ markup.list.unnumbered.markdown meta.link.reference.description.markdown

    • sub item ref | ^^^^^ markup.list.unnumbered.markdown meta.link.reference.description.markdown

      | <- markup.list.unnumbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.unnumbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

    • sub item ref

      • sub item ref | ^^^^^ markup.list.unnumbered.markdown meta.link.reference.description.markdown

        | <- markup.list.unnumbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.unnumbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

    • sub item ref

| <- markup.list.unnumbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.unnumbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

  1. list item ref | ^^^^^ markup.list.numbered.markdown meta.link.reference.description.markdown

    1. sub item ref | ^^^^^ markup.list.numbered.markdown meta.link.reference.description.markdown

      | <- markup.list.numbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.numbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

    2. sub item ref 3. sub item ref | ^^^^^ markup.list.numbered.markdown meta.link.reference.description.markdown

      | <- markup.list.numbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.numbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

    3. sub item ref 3. sub item ref

    | <- markup.list.numbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.numbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

  1. item
    • item
      • item foo

        | <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown markup.list.numbered.markdown - meta.link | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown | ^ punctuation.definition.reference.begin.markdown | ^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown | ^^^^^^^^^^^^^ meta.string.title.markdown string.quoted.double.markdown

  1. item
    • item
      • item foo

        | <- markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown punctuation.definition.blockquote.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown | ^^^^ markup.underline.link.markdown | ^^^^^^^^^^^^^ meta.string.title.markdown string.quoted.double.markdown

  1. item
    • item
      • item foo

        | <- markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown punctuation.definition.blockquote.markdown |^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown | ^^^^^^^^^^^^^ meta.string.title.markdown string.quoted.double.markdown

  1. item
    • item
      • item foo

        foo: </url-with -continuation> | <- markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown markup.underline.link.markdown punctuation.definition.blockquote.markdown |^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown |^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.markdown | ^ punctuation.definition.link.end.markdown

  1. item
    • item
      • item foo

        |<- markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown | ^^^^ markup.underline.link.markdown | ^^^^^^^^^^^^^ meta.string.title.markdown string.quoted.double.markdown

  1. item
    • item
      • item foo

        | <- markup.quote.markdown - meta.string - string - punctuation |^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown | ^^^^^^^^^^^^^ meta.string.title.markdown string.quoted.double.markdown

  1. item
    • item
      • item foo

        foo: </url-with -continuation> | <- markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown markup.underline.link.markdown |^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.markdown |^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.markdown | ^ punctuation.definition.link.end.markdown

  1. list item
    • sub item
      • sub item 1

  1. list item
    • sub item
      • sub item 1

| ^^^^^^ markup.quote.markdown markup.list.numbered.markdown meta.link.reference.def.footnote.markdown-extra | ^ punctuation.definition.reference.begin.markdown | ^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown

  1. list item
    • sub item
      • sub item 1

        header

|^ markup.quote.markdown markup.list.numbered.markdown - markup.heading | ^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown

  1. list item
    • sub item
      • sub item 1

      • sub item |^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown

Block quote with GFM tasks

  • task | ^^^^^^^^^^^ markup.quote.markdown | ^ markup.list.unnumbered.bullet.markdown | ^^^^^^^^^^ markup.list.unnumbered.markdown | ^ punctuation.definition.list_item.markdown | ^ markup.checkbox.begin.markdown-gfm punctuation.definition.checkbox.begin.markdown-gfm | ^ markup.checkbox.mark.markdown-gfm - punctuation | ^ markup.checkbox.end.markdown-gfm punctuation.definition.checkbox.end.markdown-gfm
  • task | ^^^^^^^^^^^ markup.quote.markdown | ^ markup.list.unnumbered.bullet.markdown | ^^^^^^^^^^ markup.list.unnumbered.markdown | ^ punctuation.definition.list_item.markdown | ^ markup.checkbox.begin.markdown-gfm punctuation.definition.checkbox.begin.markdown-gfm | ^ markup.checkbox.mark.markdown-gfm - punctuation | ^ markup.checkbox.end.markdown-gfm punctuation.definition.checkbox.end.markdown-gfm
  • task | ^^^^^^^^^^^ markup.quote.markdown | ^ markup.list.unnumbered.bullet.markdown | ^^^^^^^^^^ markup.list.unnumbered.markdown | ^ punctuation.definition.list_item.markdown | ^ markup.checkbox.begin.markdown-gfm punctuation.definition.checkbox.begin.markdown-gfm | ^ markup.checkbox.mark.markdown-gfm - punctuation | ^ markup.checkbox.end.markdown-gfm punctuation.definition.checkbox.end.markdown-gfm
  • task
    • task | ^^^^^^^^^^^^^ markup.quote.markdown | ^ markup.list.unnumbered.bullet.markdown | ^^^^^^^^^^ markup.list.unnumbered.markdown | ^ punctuation.definition.list_item.markdown | ^ markup.checkbox.begin.markdown-gfm punctuation.definition.checkbox.begin.markdown-gfm | ^ markup.checkbox.mark.markdown-gfm - punctuation | ^ markup.checkbox.end.markdown-gfm punctuation.definition.checkbox.end.markdown-gfm

Blcok quotes support markup, like italics, bold, bold italic and strikethrough. |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown | ^^^^^^^^^ markup.italic.markdown | ^^^^^^^^ markup.bold.markdown | ^^ markup.bold.markdown punctuation.definition.bold.begin.markdown | ^ markup.bold.markdown markup.italic.markdown punctuation.definition.italic.begin.markdown | ^^^^^^^^^^^ markup.bold.markdown markup.italic.markdown - punctuation | ^ markup.bold.markdown markup.italic.markdown punctuation.definition.italic.end.markdown | ^^ markup.bold.markdown punctuation.definition.bold.end.markdown | ^^^^^^^^^^^^^^^^^ markup.strikethrough.markdown-gfm

TEST: LIST BLOCKS

A paragraph with two lines.

indented code

A block quote. | <- markup.quote.markdown punctuation.definition.blockquote.markdown - markup.raw |^^^^^^^^^^^^^^^^ markup.quote.markdown - markup.raw

  1. A paragraph with two lines.

    indented code
    

    A block quote. | <- markup.list.numbered.markdown markup.quote.markdown |^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown | ^ punctuation.definition.blockquote.markdown

  • one

two | <- markup.list.unnumbered.markdown |^^^^ markup.list.unnumbered.markdown

Note: two is not a part of the list item, but ST can't handle it!

  • one

    two | <- markup.list.unnumbered.markdown |^^^^^ markup.list.unnumbered.markdown

  • one
 two

| <- markup.list.unnumbered.markdown |^^^^^^^^ markup.list.unnumbered.markdown

Note: two is not a part of the list item, but ST can't handle it!

  • one

    two | <- markup.list.unnumbered.markdown |^^^^^^^^^ markup.list.unnumbered.markdown

Note that at least one space or tab is needed between the list marker and any following content, so these are not list items:

-one | <- meta.paragraph.markdown - markup.list |^^^^ meta.paragraph.markdown - markup.list

2.two | <- meta.paragraph.markdown - markup.list |^^^^^ meta.paragraph.markdown - markup.list

A list item may contain blocks that are separated by more than one blank line.

  • foo

    bar | <- markup.list.unnumbered.markdown |^^^ markup.list.unnumbered.markdown

  1. foo

    | <- markup.list.numbered.markdown meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown
    bar
    | <- markup.list.numbered.markdown markup.raw.code-fence.markdown-gfm - punctuation
    

    | <- markup.list.numbered.markdown meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

    baz | <- markup.list.numbered.markdown

    bam | <- markup.list.numbered.markdown markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.list.numbered.markdown markup.quote.markdown

Note that ordered list start numbers must be nine digits or less:

  1. ok | <- markup.list.numbered.bullet.markdown |^^^^^^^^^ markup.list.numbered.bullet.markdown | ^^^^ markup.list.numbered.markdown

1234567890. not ok | <- meta.paragraph.markdown - markup.list |^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown - markup.list

  1. ok | <- markup.list.numbered.bullet.markdown |^ markup.list.numbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^ markup.list.numbered.markdown
  1. ok | <- markup.list.numbered.bullet.markdown |^^^ markup.list.numbered.bullet.markdown | ^ punctuation.definition.list_item.markdown | ^^^^ markup.list.numbered.markdown

-1. not ok | <- meta.paragraph.markdown - markup.list |^^^^^^^^^^ meta.paragraph.markdown - markup.list

  • foo

| <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^ markup.list.unnumbered.markdown

  • foo
  • bar | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^ markup.list.unnumbered.markdown
  1. foo

| <- markup.list.numbered.bullet.markdown |^ markup.list.numbered.bullet.markdown punctuation.definition.list_item.markdown | ^ markup.list.numbered.markdown - punctuation

  1. foo
  2. bar | <- markup.list.numbered.bullet.markdown |^ markup.list.numbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^ markup.list.numbered.markdown - punctuation

| <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^ markup.list.unnumbered.markdown - punctuation

foo * | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^ markup.list.unnumbered.markdown - punctuation

foo 1. | <- markup.list.numbered.bullet.markdown |^ markup.list.numbered.bullet.markdown punctuation.definition.list_item.markdown | ^ markup.list.numbered.markdown - punctuation

  1. A paragraph with two lines. |^^^^^^^^^^^^^^^ markup.list.numbered.markdown

    indented code (but ST can't reliably highlight it!)
    

    |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown - markup.raw

    A block quote. |^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown

  1. A paragraph with two lines. |^^^^^^^^^^^^^^^ markup.list.numbered.markdown

    indented code (but ST can't reliably highlight it!)
    

    |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown - markup.raw

    A block quote. | ^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown

  1. A paragraph with two lines. |^^^^^^^^^^^^^^^ markup.list.numbered.markdown

     indented code (but ST can't reliably highlight it!)
    

    |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown - markup.raw

    A block quote. |^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown

1.  A paragraph
    with two lines.
    |^^^^^^^^^^^^^^^ markup.raw.block.markdown - markup.list

        indented code
    |^^^^^^^^^^^^^^^^^ markup.raw.block.markdown - markup.list

    > A block quote.
    |^^^^^^^^^^^^^^^^ markup.raw.block.markdown - markup.list
  1. A paragraph with two lines. | <- markup.list.numbered.markdown |^^^^^^^^^^^^^^^ markup.list.numbered.markdown

    indented code (but ST can't reliably highlight it!)
    

    |^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown - markup.raw

    A block quote. | ^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown

  1. A paragraph with two lines. |^^^^^^^^^^^^^^^ markup.list.numbered.markdown
  1. Blockquote > text | ^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown | ^ punctuation.definition.blockquote.markdown | ^ - punctuation

  1. Blockquote continued here. | <- markup.quote.markdown markup.list.numbered.markdown |^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown

  1. Blockquote continued here. | <- markup.quote.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown |^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.numbered.markdown

So, in this case we need two spaces indent:

  • foo
    • bar
      • baz
        • boo | <- markup.list.unnumbered.markdown |^^^^^ markup.list.unnumbered.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^ markup.list.unnumbered.markdown

One is not enough:

  • foo
  • bar
  • baz
  • boo | <- markup.list.unnumbered.markdown |^^ markup.list.unnumbered.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^ markup.list.unnumbered.markdown

Here we need four, because the list marker is wider:

  1. foo
    • bar | <- markup.list.numbered.markdown |^^^ markup.list.numbered.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^ markup.list.numbered.markdown

Three is not enough:

  1. foo
  • bar | <- markup.list.numbered.markdown |^^ markup.list.numbered.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^ markup.list.numbered.markdown

A list may be the first block in a list item:

    • foo | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^ markup.list.unnumbered.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^ markup.list.unnumbered.markdown

A list may be the first block in a list item:

      1. foo 3. bar | <- markup.list.numbered.bullet.markdown |^ markup.list.numbered.bullet.markdown punctuation.definition.list_item.markdown | ^ markup.list.numbered.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown | ^ markup.list.unnumbered.markdown | ^^ markup.list.numbered.bullet.markdown | ^^^^^^^^^^^^^ markup.list.numbered.markdown - punctuation

A list item can contain a heading:

  • Foo

| <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^^^^ markup.list.unnumbered.markdown | ^^^^^^ markup.heading.1.markdown | ^ punctuation.definition.heading.begin.markdown | ^^^ entity.name.section.markdown

  • Should be a setext heading!

| ^^^ markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.setext.markdown

  • Bar

    baz | <- markup.list.unnumbered.markdown |^^^^^ markup.list.unnumbered.markdown

Changing the bullet or ordered list delimiter starts a new list:

  • foo
  • bar
  • baz | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^^ markup.list.unnumbered.markdown

Changing the bullet or ordered list delimiter starts a new list:

  1. foo
  2. bar
  1. baz | <- markup.list.numbered.bullet.markdown |^ markup.list.numbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^ markup.list.numbered.markdown

In CommonMark, a list can interrupt a paragraph. That is, no blank line is needed to separate a paragraph from a following list:

Foo

  • bar | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown

Foo

  • bar
  • baz | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown

In order to solve of unwanted lists in paragraphs with hard-wrapped numerals, we allow only lists starting with 1 to interrupt paragraphs.

The number of windows in my house is 14. The number of doors is 6. | <- meta.paragraph.markdown - markup.list |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown - markup.list

We may still get an unintended result in cases like

The number of windows in my house is

  1. The number of doors is 6. | <- markup.list.numbered.bullet.markdown |^ markup.list.numbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown

There can be any number of blank lines between items:

  • foo

  • bar |^^^ markup.list.unnumbered.markdown

  • baz |^^^ markup.list.unnumbered.markdown

  • foo
    • bar
      • baz

        bim |^^^ markup.list.unnumbered.markdown - markup.raw

To separate consecutive lists of the same type, you can insert a blank HTML comment:

  • foo
  • bar

| <- meta.disable-markdown comment.block.html |^^^^^^^ meta.disable-markdown comment.block.html

  • baz
  • bim

To separate a list from an indented code block that would otherwise be parsed as a subparagraph of the final list item, you can insert a blank HTML comment:

  • foo

    notcode |^^^^^^^ markup.list.unnumbered.markdown - markup.raw

  • foo

code
|^^^^ markup.raw.block.markdown - markup.list

List items need not be indented to the same level.

  1. a | <- markup.list.numbered.markdown - markup.raw

  2. b | <- markup.list.numbered.markdown - markup.raw

  3. c | <- markup.list.numbered.markdown - markup.raw

  1. a | <- markup.list.numbered.markdown - markup.raw

  2. b | <- markup.list.numbered.markdown - markup.raw

  3. c | <- markup.list.numbered.markdown - markup.raw

And here, 3. c should be treated as in indented code block, because it is indented four spaces and preceded by a blank line.

  1. a | <- markup.list.numbered.markdown - markup.raw

  2. b | <- markup.list.numbered.markdown - markup.raw

3. c
   | <- markup.list.numbered.markdown - markup.raw
  1. a | <- markup.list.numbered.markdown - markup.raw

  2. b | <- markup.list.numbered.markdown - markup.raw

3) c
   | <- markup.list.numbered.markdown - markup.raw

Note: ST's syntax engine and the implementation of this syntax don't support that.

This is a loose list, because there is a blank line between two of the list items:

  • a

  • b

  • c | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^ markup.list.unnumbered.markdown

So is this, with a empty second item:

  • a

| <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^ markup.list.unnumbered.markdown

  • c | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^ markup.list.unnumbered.markdown
  • a

  • b ref | ^^^^^ markup.list.unnumbered.markdown meta.link.reference.description.markdown

    | <- markup.list.unnumbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.unnumbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

  • d | <- markup.list.unnumbered.markdown

  • a

  • | <- markup.list.unnumbered.markdown meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown
    |^^ markup.list.unnumbered.markdown meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown
    b
    | <- markup.list.unnumbered.markdown markup.raw.code-fence.markdown-gfm
    
    
    

    | <- markup.list.unnumbered.markdown meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ markup.list.unnumbered.markdown meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

  • a

  • b
    
    
    
  • c | <- markup.list.unnumbered.markdown - markup.raw

  • a
    • b

      c | <- markup.list.unnumbered.markdown

  • d | <- markup.list.unnumbered.markdown
  • a

    b

    | <- markup.list.unnumbered.markdown markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.list.unnumbered.markdown markup.quote.markdown - punctuation

  • a

    b

  • c | <- markup.list.unnumbered.markdown

  • a

    b

    | <- markup.list.unnumbered.markdown meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown
    |^^ markup.list.unnumbered.markdown meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown
    c
    

    | <- markup.list.unnumbered.markdown meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ markup.list.unnumbered.markdown meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

  • a

    b

    c
    
  • d | <- markup.list.unnumbered.markdown

  1. | <- markup.list.numbered.markdown meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown
    |^^ markup.list.numbered.markdown meta.code-fence.definition.begin.text.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown
    foo
    | <- markup.list.numbered.markdown markup.raw.code-fence.markdown-gfm
    

    | <- markup.list.numbered.markdown meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown |^^ markup.list.numbered.markdown meta.code-fence.definition.end.text.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

    bar | <- markup.list.numbered.markdown

  • foo

    • bar

    baz | <- markup.list.unnumbered.markdown |^^^ markup.list.unnumbered.markdown

  • Unticked GitHub-flavored-markdown checkbox | ^ markup.checkbox.begin.markdown-gfm punctuation.definition.checkbox.begin.markdown-gfm | ^ markup.checkbox.mark.markdown-gfm - punctuation | ^ markup.checkbox.end.markdown-gfm punctuation.definition.checkbox.end.markdown-gfm

  • Ticked GFM checkbox | ^ markup.checkbox.begin.markdown-gfm punctuation.definition.checkbox.begin.markdown-gfm | ^ markup.checkbox.mark.markdown-gfm - punctuation | ^ markup.checkbox.end.markdown-gfm punctuation.definition.checkbox.end.markdown-gfm

  • Another ticked checkbox | ^ markup.checkbox.begin.markdown-gfm punctuation.definition.checkbox.begin.markdown-gfm | ^ markup.checkbox.mark.markdown-gfm - punctuation | ^ markup.checkbox.end.markdown-gfm punctuation.definition.checkbox.end.markdown-gfm

  • Another ticked checkbox

    • Sub-item with checkbox | ^ markup.checkbox.begin.markdown-gfm punctuation.definition.checkbox.begin.markdown-gfm | ^ markup.checkbox.mark.markdown-gfm - punctuation | ^ markup.checkbox.end.markdown-gfm punctuation.definition.checkbox.end.markdown-gfm
  • [] Not a checkbox | ^^ - markup.checkbox

  • [/] Not a checkbox | ^^^ - markup.checkbox

  • Not [ ] a [x] checkbox [X] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - markup.checkbox

  • [Checkbox][] with next word linked | ^ markup.checkbox.begin.markdown-gfm punctuation.definition.checkbox.begin.markdown-gfm | ^ markup.checkbox.mark.markdown-gfm - punctuation | ^ markup.checkbox.end.markdown-gfm punctuation.definition.checkbox.end.markdown-gfm | ^^^^^^^^^^^^ meta.link


| <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.separator.thematic-break.markdown | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation


  • still a list item | ^^^^^^^^^^^^^^^^^^ markup.list.unnumbered


| <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown | ^ - punctuation | ^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.separator.thematic-break.markdown | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation


    • still a list item | ^^^^^^^^^^^^^^^^^^ markup.list.unnumbered

| <- markup.list.numbered.bullet.markdown | ^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.separator.thematic-break.markdown | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation | ^ punctuation.definition.thematic-break | ^ - punctuation


  1. still a list item | ^^^^^^^^^^^^^^^^^^ markup.list.numbered
  • list item

global heading

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown - markup.list |^^^^^^^^^^^^^^^^ markup.heading.1.markdown - markup.list

  • list item

global heading (matched as list item heading)

| <- markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.1.markdown

  • list item

    list item heading

    | <- markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.1.markdown

  • list item

    list item heading

    | <- markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.2.markdown

    • list item

      list item heading

      | <- markup.list.unnumbered.markdown markup.heading.3.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.3.markdown
      • list item

        list item heading

        | <- markup.list.unnumbered.markdown markup.heading.4.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.4.markdown
  • list item heading

    | <- markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.1.markdown
    +

    list item heading

    | <- markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.1.markdown

    # list item heading 1
    | <- markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.1.markdown  
    
    ## list item heading 2
    | <- markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.2.markdown
    

list item heading

| <- markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.1.markdown

# list item heading
| <- markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
|^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.1.markdown  

- 

  # list item heading 1
  | <- markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
  |^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.1.markdown  

  ## list item heading 2
  | <- markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.begin.markdown
  |^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown markup.heading.2.markdown
  1. list item

global heading

| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown - markup.list |^^^^^^^^^^^^^^^^ markup.heading.1.markdown - markup.list

  1. list item

global heading (matched as list item heading)

| <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown

  1. list item

    list item heading

    | <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown

    1. list item

      list item heading

      | <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown
      1. list item

        list item heading

        | <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown
    2. list item

      list item heading

      | <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown
      1. list item

        list item heading

        | <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown
  2. list item heading

    | <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown 1.

    list item heading

    | <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown 1. # list item heading | <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown

      ## list item heading 2
      | <- markup.list.numbered.markdown markup.heading.2.markdown punctuation.definition.heading.begin.markdown
      |^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.2.markdown
    

list item heading

| <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown

  # list item heading
  | <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
  |^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown

  1. 

     # list item heading 1
     | <- markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
     |^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown

     ## list item heading 2
     | <- markup.list.numbered.markdown markup.heading.2.markdown punctuation.definition.heading.begin.markdown
     |^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.2.markdown
  • list item global heading === | <- markup.list.unnumbered.markdown meta.paragraph.list.markdown |^^^ markup.list.unnumbered.markdown meta.paragraph.list.markdown

  • list item global heading (matched as list item heading) === | <- markup.list.unnumbered.markdown meta.paragraph.list.markdown |^^^ markup.list.unnumbered.markdown meta.paragraph.list.markdown

  • list item heading

    | <- markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.setext.markdown |^^ markup.list.unnumbered.markdown markup.heading.1.markdown punctuation.definition.heading.setext.markdown

    • list item

    list item heading

    | <- markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^ markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.setext.markdown

    • list item

      list item heading

      | <- markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^ markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.setext.markdown

    • heading

      | <- markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^^ markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.setext.markdown

    • should not be a heading, but we can't handle it yet -- | <- markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.setext.markdown |^ markup.list.unnumbered.markdown markup.heading.2.markdown punctuation.definition.heading.setext.markdown

    • list item

    | <- markup.list.unnumbered.markdown markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown

    • list item = | <- markup.list.unnumbered.markdown meta.paragraph.list.markdown
  • foo

|^^^ markup.list.unnumbered.markdown meta.code-fence.definition.begin.xml.markdown-gfm punctuation.definition.raw.code-fence.begin.markdown | ^^ markup.list.unnumbered.markdown meta.code-fence.definition.begin.xml.markdown-gfm constant.other.language-name.markdown |^^^^^ markup.list.unnumbered.markdown markup.raw.code-fence.xml.markdown-gfm text.xml meta.tag.xml ``` |^^^ markup.list.unnumbered.markdown meta.code-fence.definition.end.xml.markdown-gfm punctuation.definition.raw.code-fence.end.markdown

  • list item

    *no-markdown*

    |^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.disable-markdown - meta.paragraph | ^^^^ meta.tag
    • sub item

      *no-markdown*

      |^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.disable-markdown - meta.paragraph | ^^^^ meta.tag <style> h1 { font-family: Helvetica; |^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.disable-markdown source.css.embedded.html meta.property-list.css } p { font-family: "Ubuntu Sans"; |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.disable-markdown source.css.embedded.html meta.property-list.css } </style>

      | <- markup.list.unnumbered.markdown meta.disable-markdown meta.tag.style.end.html punctuation.definition.tag.begin.html |^^^^^^^ markup.list.unnumbered.markdown meta.disable-markdown meta.tag.style.end.html | ^ markup.list.unnumbered.markdown meta.disable-markdown - mata.tag

      Further sub item text. | <- markup.list.unnumbered.markdown |^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown

    • sub item

      | <- markup.list.unnumbered.markdown meta.disable-markdown meta.tag |^^ markup.list.unnumbered.markdown meta.disable-markdown meta.tag *no-markodwn* |^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.disable-markdown - markup.italic

      - not a list item | <- markup.list.unnumbered.markdown meta.disable-markdown - punctuation |^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.disable-markdown - punctuation
  • list item ref | ^^^^^ markup.list.unnumbered.markdown meta.link.reference.description.markdown

    • sub item ref | ^^^^^ markup.list.unnumbered.markdown meta.link.reference.description.markdown

      | <- markup.list.unnumbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.unnumbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

      • sub item ref | ^^^^^ markup.list.unnumbered.markdown meta.link.reference.description.markdown

        | <- markup.list.unnumbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.unnumbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

        | <- markup.list.unnumbered.markdown meta.link.reference.def.markdown markup.underline.link.markdown |^^^ markup.list.unnumbered.markdown meta.link.reference.def.markdown markup.underline.link.markdown

        | <- markup.list.unnumbered.markdown meta.link.reference.def.markdown meta.string.title.markdown string.quoted.double.markdown |^^^^^^ markup.list.unnumbered.markdown meta.link.reference.def.markdown meta.string.title.markdown string.quoted.double.markdown

        no title | <- markup.list.unnumbered.markdown meta.paragraph.list.markdown - meta.link |^^^^^^^^ markup.list.unnumbered.markdown meta.paragraph.list.markdown - meta.link

    | <- markup.list.unnumbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.unnumbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

  1. list item ref | ^^^^^ markup.list.numbered.markdown meta.link.reference.description.markdown

    1. sub item ref | ^^^^^ markup.list.numbered.markdown meta.link.reference.description.markdown

      | <- markup.list.numbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.numbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

      1. sub item ref | ^^^^^ markup.list.numbered.markdown meta.link.reference.description.markdown

        | <- markup.list.numbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.numbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

        | <- markup.list.numbered.markdown meta.link.reference.def.markdown markup.underline.link.markdown |^^^ markup.list.numbered.markdown meta.link.reference.def.markdown markup.underline.link.markdown

        | <- markup.list.numbered.markdown meta.link.reference.def.markdown meta.string.title.markdown string.quoted.double.markdown |^^^^^^ markup.list.numbered.markdown meta.link.reference.def.markdown meta.string.title.markdown string.quoted.double.markdown

        no title | <- markup.list.numbered.markdown meta.paragraph.list.markdown - meta.link |^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown - meta.link

    | <- markup.list.numbered.markdown meta.link.reference.def.markdown punctuation.definition.reference.begin.markdown |^^^^^^^^^^^ markup.list.numbered.markdown meta.link.reference.def.markdown |^^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown | ^^^^ markup.underline.link.markdown

  1. list item

    • sub item
      • sub item 1

  2. list item

    • sub item
      • sub item 1

        ^^^^^^ markup.list.numbered.markdown meta.link.reference.def.footnote.markdown-extra ^ punctuation.definition.reference.begin.markdown ^^ entity.name.reference.link.markdown ^ punctuation.definition.reference.end.markdown ^ punctuation.separator.key-value.markdown

  3. list item

    • sub item
      • sub item 1

        header

|^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.heading.1.markdown

  1. list item
    • sub item
      • sub item 1

      • sub item |^^^^^^^^^^^^^^ markup.list.numbered.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown

  • list item second line | <- markup.list.unnumbered.markdown
    • subitem second line | <- markup.list.unnumbered.markdown
      • subitem second line | <- markup.list.unnumbered.markdown
        • subitem second line | <- markup.list.unnumbered.markdown

paragraph | <- meta.paragraph.markdown

  1. list item second line | <- markup.list.numbered.markdown 2. subitem second line | <- markup.list.numbered.markdown 3. subitem second line | <- markup.list.numbered.markdown 4. subitem second line | <- markup.list.numbered.markdown

paragraph | <- meta.paragraph.markdown

  1. list item second line | <- markup.list.numbered.markdown
    • subitem second line | <- markup.list.numbered.markdown
      • subitem second line | <- markup.list.numbered.markdown
        • subitem second line | <- markup.list.numbered.markdown

paragraph | <- meta.paragraph.markdown

  • list item

    This is a blockquote. | <- markup.list.unnumbered markup.quote punctuation.definition.blockquote

    • subitem

      This is a blockquote. | <- markup.list.unnumbered markup.quote punctuation.definition.blockquote

      • subitem

        This is a blockquote. | <- markup.list.unnumbered markup.quote punctuation.definition.blockquote

        • subitem

          This is a blockquote. | <- markup.list.unnumbered markup.quote punctuation.definition.blockquote

    This is a paragraph still part of the list item |^^^^^^^^^^ markup.list.unnumbered.markdown - meta.paragraph meta.paragraph

  1. list item

    This is a blockquote. | <- markup.list.numbered.markdown markup.quote.markdown punctuation.definition.blockquote.markdown

    1. subitem

      This is a blockquote. | <- markup.list.numbered.markdown markup.quote.markdown punctuation.definition.blockquote.markdown

      1. subitem

        This is a blockquote. | <- markup.list.numbered.markdown markup.quote.markdown punctuation.definition.blockquote.markdown

    This is a paragraph still part of the list item |^^^^^^^^^ markup.list.numbered.markdown - meta.paragraph meta.paragraph

  1. item
    • item
      • item

        Block quote followed by heading

        heading

        | <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown |^^^^^^^^^ markup.heading.1.markdown - meta.quote | ^^^^^^^ entity.name.section.markdown

        Block quote followed by unordered list

        • list item | <- markup.list.numbered.markdown markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^^^^^^^^ markup.list.numbered.markdown - meta.quote

        Block quote followed by unordered list

        • list item | <- markup.list.numbered.markdown markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^^^^^^^^ markup.list.numbered.markdown - meta.quote

        Block quote followed by unordered list

        • list item | <- markup.list.numbered.markdown markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^^^^^^^^ markup.list.numbered.markdown - meta.quote

        Block quote followed by ordered list

        1. list item | <- markup.list.numbered.markdown markup.list.numbered.bullet.markdown |^ markup.list.numbered.markdown markup.list.numbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^^^^^^ markup.list.numbered.markdown - meta.quote

        Block quote followed by ordered list

        1. list item | <- markup.list.numbered.bullet.markdown - punctuation |^ markup.list.numbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^^^^^^ markup.list.numbered.markdown - meta.quote

        Block quote followed by invalid list 1234567890. no list item | <- markup.list.numbered.markdown markup.quote.markdown markup.paragraph.markdown |^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown markup.paragraph.markdown

        Block quote followed by html block

        *no-markdown

        | <- meta.disable-markdown meta.tag.block |^^^^^^^^^^^^^^^^^^^ meta.disable-markdown
  1. item
    • item
      • item

        Foo

        | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.quote.markdown - markup.heading | ^^^^^^ markup.quote.markdown markup.heading.1.markdown | ^ punctuation.definition.heading.begin.markdown | ^^^ entity.name.section.markdown

        Foo

        bar | <- meta.paragraph.list.markdown - markup.quote |^^ meta.paragraph.list.markdown - markup.quote

        Foo

        bar | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown

        Foo

        bar baz | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown

        Foo

        | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^^ markup.quote.markdown markup.heading.1.markdown |^ punctuation.definition.heading.begin.markdown | ^^^ entity.name.section.markdown

        Foo

        bar | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^ markup.quote.markdown

        Foo

        bar baz | <- markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^ markup.quote.markdown

  1. item
    • item
      • item

        foo 1 foo 2 |^^^^^^ markup.list.numbered.markdown markup.quote.markdown markup.paragraph.markdown

        foo 1 foo 2 | ^^^^^^ markup.list.numbered.markdown markup.quote.markdown markup.paragraph.markdown

        foo 1 foo 2 | ^^^^^^^ markup.list.numbered.markdown markup.quote.markdown markup.paragraph.markdown

        foo 1 foo 2 | ^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown markup.paragraph.markdown

          foo 1
          foo 2
        

        | ^^^^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown markup.raw.block.markdown

  1. item
    • item
      • item

        Nested block quote | <- markup.quote punctuation.definition.blockquote | ^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown |^ - punctuation | ^ punctuation.definition.blockquote | ^ - punctuation

        Nested quote Followed by more quoted text that is not nested | <- markup.quote punctuation.definition.blockquote - markup.quote markup.quote

        this is a nested quote but no code in a block quote | <- punctuation.definition.blockquote | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown

        this is a nested quote but no code in a block quote > with a second line of content | <- punctuation.definition.blockquote |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.paragraph.markdown | ^ - punctuation

        > this is code in a block quote, not a nested quote
        

        | <- punctuation.definition.blockquote | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.raw.block - markup.quote markup.quote

  1. item
    • item
      • item

        Block

        1. item | <- markup.list.numbered.markdown markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown | ^^ markup.list.numbered.bullet.markdown

        Block

        1. item
          • item | <- markup.list.numbered.markdown markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown markup.list.numbered.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown

        Block

        1. item
          • item
            • item | <- markup.list.numbered.markdown markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown markup.list.numbered.markdown | ^ markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown

        Block

        1. item
          • item
            • item

              quote quote | <- markup.list.numbered.markdown markup.quote.markdown punctuation.definition.blockquote.markdown |^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown markup.list.numbered.markdown meta.paragraph.list.markdown | ^ punctuation.definition.blockquote.markdown

        Block

        1. item
          • item
            • item

            heading

           | <- markup.list.numbered.markdown markup.quote.markdown markup.list.numbered.markdown markup.heading.1.markdown punctuation.definition.heading.begin.markdown
        

        heading

        | <- markup.list.numbered.markdown markup.quote.markdown punctuation.definition.blockquote.markdown |^ markup.list.numbered.markdown markup.quote.markdown - markup.heading | ^^^^^^^^^^ markup.list.numbered.markdown markup.quote.markdown markup.heading.1.markdown | ^ punctuation.definition.heading.begin.markdown | ^^^^^^^ entity.name.section.markdown

        • list item ```math equation | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown meta.paragraph.list.markdown - markup.raw

          • list item ```math equation | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown meta.paragraph.list.markdown - markup.raw
          • list item math</code> equation | ^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown meta.paragraph.list.markdown - markup.raw | ^^^^^^^^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown meta.paragraph.list.markdown markup.raw.inline.markdown | ^^^^^^^^^^ markup.quote.markdown markup.list.unnumbered.markdown meta.paragraph.list.markdown - markup.raw
  • <foo> | <bar> (foo/bar.baz)
  • <foo> | <my-bar> | (foo/bar-baz.foo) | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown - markup.table
  1. Open Command Palette using menu item Tools → Command Palette... | ^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.raw.inline.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.raw.inline.markdown
  2. Choose Package Control: Install Package | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown markup.raw.inline.markdown
  • test testing blah | ^ markup.list.unnumbered markup.italic punctuation.definition.italic.end
  • fgh
  • *ghgh | ^ markup.list.unnumbered markup.italic punctuation.definition.italic.begin
  • fgfg | <- markup.list.unnumbered.bullet punctuation.definition.list_item
  • _test

| <- markup.list.unnumbered markup.italic invalid.illegal.non-terminated.bold-italic still a list item | ^^^^^^^^^^^^^^^^^^ markup.list.unnumbered

  • code - | <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown | ^^^^^^ markup.raw.inline.markdown | ^ punctuation.definition.raw.begin.markdown | ^ punctuation.definition.raw.end.markdown | ^ - punctuation | ^^^^^^^^^^^^^^^^^^^ meta.tag.inline

  • list item

    no-markdown |^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.paragraph.list.markdown | ^^^^^^^ meta.tag

    • list item

      no-markdown |^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.paragraph.list.markdown | ^^^^^^^ meta.tag

      • list item

        no-markdown |^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.paragraph.list.markdown | ^^^^^^^ meta.tag

  • list item ```math equation | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.paragraph.list.markdown - markup.raw

    • list item ```math equation | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.paragraph.list.markdown - markup.raw
    • list item math</code> equation | ^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.paragraph.list.markdown - markup.raw | ^^^^^^^^^^^^^^^^^ markup.list.unnumbered.markdown meta.paragraph.list.markdown markup.raw.inline.markdown | ^^^^^^^^^^ markup.list.unnumbered.markdown meta.paragraph.list.markdown - markup.raw
  1. see demo | <- markup.list.numbered.markdown meta.link.inline.description.markdown punctuation.definition.link.begin.markdown |^^^^^^^^^^^ markup.list.numbered.markdown meta.link.inline.description.markdown | ^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.link.inline.metadata.markdown | ^ punctuation.definition.metadata.begin.markdown | ^ punctuation.definition.string.begin.markdown | ^ punctuation.definition.string.end.markdown | ^ punctuation.definition.metadata.end.markdown

    see demo | <- markup.list.numbered.markdown meta.link.inline.description.markdown punctuation.definition.link.begin.markdown |^^^^^^^^^^^ markup.list.numbered.markdown meta.link.inline.description.markdown | ^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.link.inline.metadata.markdown | ^ punctuation.definition.metadata.begin.markdown | ^ punctuation.definition.string.begin.markdown | ^ punctuation.definition.string.end.markdown | ^ punctuation.definition.metadata.end.markdown

    see demo | <- markup.list.numbered.markdown meta.link.inline.description.markdown punctuation.definition.link.begin.markdown |^^^^^^^^^^^ markup.list.numbered.markdown meta.link.inline.description.markdown | ^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.link.inline.metadata.markdown | ^ punctuation.definition.metadata.begin.markdown | ^ punctuation.definition.string.begin.markdown | ^ punctuation.definition.string.end.markdown | ^ punctuation.definition.metadata.end.markdown

    Here is a example image. | ^^^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.image.inline.description.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.image.inline.metadata.markdown | ^^ markup.list.numbered.markdown - meta.image | ^^ punctuation.definition.image.begin.markdown | ^ punctuation.definition.image.end.markdown | ^ punctuation.definition.metadata.begin.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown | ^^^^^^^^^^^^^^^^^ string.quoted.double.markdown | ^ punctuation.definition.string.begin.markdown | ^ punctuation.definition.string.end.markdown | ^ punctuation.definition.metadata.end.markdown

    Here is a example image. | ^^^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.image.inline.description.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.image.inline.metadata.markdown | ^^ markup.list.numbered.markdown - meta.image | ^^ punctuation.definition.image.begin.markdown | ^ punctuation.definition.image.end.markdown | ^ punctuation.definition.metadata.begin.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown | ^^^^^^^^^^^^^^^^^ string.quoted.single.markdown | ^ punctuation.definition.string.begin.markdown | ^ punctuation.definition.string.end.markdown | ^ punctuation.definition.metadata.end.markdown

    Here is a example image. | ^^^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.image.inline.description.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.image.inline.metadata.markdown | ^^ markup.list.numbered.markdown - meta.image | ^^ punctuation.definition.image.begin.markdown | ^ punctuation.definition.image.end.markdown | ^ punctuation.definition.metadata.begin.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown | ^^^^^^^^^^^^^^^^^ string.quoted.other.markdown | ^ punctuation.definition.string.begin.markdown | ^ punctuation.definition.string.end.markdown | ^ punctuation.definition.metadata.end.markdown

    Complex image $\ce{H2O}$.{#fig:image6 height=12.09cm } | ^^^^^^^^^^^^^^^^^^^^ meta.image.inline.description.markdown | ^^ punctuation.definition.image.begin.markdown | ^^^^^^^^^^ markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar.latex | ^ punctuation.definition.image.end.markdown | ^^^^^^^^^^^^^^^^^^ meta.image.inline.metadata.markdown | ^ punctuation.definition.metadata.begin.markdown | ^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown | ^ punctuation.definition.metadata.end.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.image.inline.attributes.markdown | ^ punctuation.definition.attributes.begin.markdown | ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.markdown | ^^^^^^^^^^^ entity.other.attribute-name.markdown | ^^^^^^ entity.other.attribute-name.markdown | ^ punctuation.separator.key-value.markdown | ^^^^^^^ string.unquoted.markdown | ^ punctuation.definition.attributes.end.markdown

TEST: CODE SPANS

testing``123 | <- punctuation.definition.raw.begin | ^^ - punctuation | ^^^ punctuation.definition.raw.end

```testing``123```` | <- punctuation.definition.raw.begin | ^ - punctuation | ^^^^ - punctuation

| <- punctuation.definition.raw.end

``testing`123````
| <- punctuation.definition.raw.begin
|        ^ - punctuation
|            ^^^^ - punctuation
more text``
|        ^^ punctuation.definition.raw.end

``text
| <- meta.paragraph.markdown - markup.raw
|^^^^^^ meta.paragraph.markdown - markup.raw

text
| <- - markup.raw

## https://spec.commonmark.org/0.30/#example-327

`hi`lo`
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^ markup.raw.inline.markdown
|  ^ punctuation.definition.raw.end.markdown
|   ^^ - markup.raw

## https://spec.commonmark.org/0.30/#example-328

`foo`
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^^ meta.paragraph.markdown markup.raw.inline.markdown
|   ^ punctuation.definition.raw.end.markdown

## https://spec.commonmark.org/0.30/#example-329

`` foo ` bar  ``
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^^^^^^^^^^^^^ markup.raw.inline.markdown
|^ punctuation.definition.raw.begin.markdown
|      ^ - punctuation
|             ^^ punctuation.definition.raw.end.markdown

## https://spec.commonmark.org/0.30/#example-330

` `` `
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^^^ markup.raw.inline.markdown
| ^^ - punctuation
|    ^ punctuation.definition.raw.end.markdown

## https://spec.commonmark.org/0.30/#example-331

`  ``  `
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^^^^^ markup.raw.inline.markdown
|  ^^ - punctuation
|      ^ punctuation.definition.raw.end.markdown

## https://spec.commonmark.org/0.30/#example-332

` a`
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^ markup.raw.inline.markdown
|  ^ punctuation.definition.raw.end.markdown

## https://spec.commonmark.org/0.30/#example-333

` b `
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^^ markup.raw.inline.markdown
|   ^ punctuation.definition.raw.end.markdown

## https://spec.commonmark.org/0.30/#example-334

` `
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^ markup.raw.inline.markdown
| ^ punctuation.definition.raw.end.markdown
|  ^ - markup 

`  `
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^ markup.raw.inline.markdown
|  ^ punctuation.definition.raw.end.markdown
|   ^ - markup 

## https://spec.commonmark.org/0.30/#example-335

``
foo
bar  
baz
``
| <- markup.raw.inline.markdown punctuation.definition.raw.end.markdown
|^ markup.raw.inline.markdown punctuation.definition.raw.end.markdown

## https://spec.commonmark.org/0.30/#example-336

``
foo 
``
| <- markup.raw.inline.markdown punctuation.definition.raw.end.markdown
|^ markup.raw.inline.markdown punctuation.definition.raw.end.markdown

## https://spec.commonmark.org/0.30/#example-337

`foo   bar
  baz`
|^^^^^ markup.raw.inline.markdown
|    ^ punctuation.definition.raw.end.markdown

## https://spec.commonmark.org/0.30/#example-338

`foo\`bar`
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^^^ markup.raw.inline.markdown
|     ^^^ - markup.raw

## https://spec.commonmark.org/0.30/#example-339

``foo`bar``
| <- meta.paragraph.markdown markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^^^^^^^^ meta.paragraph.markdown markup.raw.inline.markdown
|^ punctuation.definition.raw.begin.markdown
| ^^^^^^^ - punctuation
|        ^^ punctuation.definition.raw.end.markdown

````bar```` baz
|^^^^^^^^^^ markup.raw.inline.markdown
|          ^^^^^ - markup.raw

## https://spec.commonmark.org/0.30/#example-340

`foo `` bar`
| <- markup.raw.inline.markdown punctuation.definition.raw.begin.markdown
|^^^^^^^^^^ markup.raw.inline.markdown - punctuation
|          ^ markup.raw.inline.markdown punctuation.definition.raw.end.markdown

## https://spec.commonmark.org/0.30/#example-341

*foo`*`
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|   ^^^ markup.italic.markdown markup.raw.inline.markdown

| <- invalid.illegal.non-terminated.bold-italic

## https://spec.commonmark.org/0.30/#example-342

[not a `link](/foo`)
|^^^^^^^^^^^^^^^^^^^ - meta.link
|      ^^^^^^^^^^^^ markup.raw.inline.markdown

## https://spec.commonmark.org/0.30/#example-343

`<a href="`">`
|^^^^^^^^^^ markup.raw.inline.markdown
|          ^^^^ - markup.raw - punctuation

## https://spec.commonmark.org/0.30/#example-344

<a href="`">`
| ^^^^^^^^^^ meta.tag.inline
|           ^^ - meta.tag - markup.raw - punctuation

## https://spec.commonmark.org/0.30/#example-345

`<http://foo.bar.`baz>`
|^^^^^^^^^^^^^^^^^ markup.raw.inline
|                 ^^^^^^ - meta.tag - markup.raw - punctuation

## https://spec.commonmark.org/0.30/#example-346

<http://foo.bar.`baz>`
|^^^^^^^^^^^^^^^^^^^ markup.underline.link
|                    ^ - markup.raw - punctuation


# TEST: EMPHASIS ##############################################################

## https://spec.commonmark.org/0.30/#example-350

*foo bar*
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^ markup.italic.markdown
|       ^ punctuation.definition.italic.end

## https://spec.commonmark.org/0.30/#example-351

This is not emphasis, because the opening `*` is followed by whitespace, and hence not part of a left-flanking delimiter run:

a * foo bar*
| ^^^^^^^^^^^ - markup.italic - punctuation

## https://spec.commonmark.org/0.30/#example-352

a*"foo"*
| <- - markup.italic - punctuation
|^^^^^^^ - markup.italic - punctuation

## https://spec.commonmark.org/0.30/#example-353

* a *
| <- markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown - markup.italic
|^^^^^ markup.list.unnumbered.markdown - markup.italic - punctuation

## https://spec.commonmark.org/0.30/#example-354

Intraword emphasis with `*` is permitted:

foo*bar*
| <- - markup.italic
|^^ - markup.italic
|  ^^^^^ markup.italic.markdown
|  ^ punctuation.definition.italic.begin.markdown
|      ^ punctuation.definition.italic.end.markdown

## https://spec.commonmark.org/0.30/#example-355

5*6*78
| <- - markup.italic
|^^^ markup.italic.markdown
|^ punctuation.definition.italic.begin.markdown
|  ^ punctuation.definition.italic.end.markdown
|   ^^ - markup.italic

## https://spec.commonmark.org/0.30/#example-356

_foo bar_
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^ meta.paragraph.markdown markup.italic.markdown
|       ^ punctuation.definition.italic.end.markdown

## https://spec.commonmark.org/0.30/#example-357

This is not emphasis, because the opening `_` is followed by whitespace:

_ foo bar_
| <- - markup.italic - punctuation
|^^^^^^^^^ - markup.italic - punctuation

## https://spec.commonmark.org/0.30/#example-358

This is not emphasis, because the opening `_` is preceded by an alphanumeric and followed by punctuation:

a_"foo"_
| <- - markup.italic - punctuation
|^^^^^^^ - markup.italic - punctuation

## https://spec.commonmark.org/0.30/#example-359

Emphasis with `_` is not allowed inside words:

foo_bar_
| <- - markup.italic - punctuation
|^^^^^^^ - markup.italic - punctuation

## https://spec.commonmark.org/0.30/#example-360

5_6_78
| <- - markup.italic - punctuation
|^^^^^ - markup.italic - punctuation

## https://spec.commonmark.org/0.30/#example-361

пристаням_стремятся_
| <- - markup.italic - punctuation
|^^^^^^^^^^^^^^^^^^^ - markup.italic - punctuation

## https://spec.commonmark.org/0.30/#example-362

Here `_` does not generate emphasis, because the first delimiter run is right-flanking
and the second left-flanking:

aa_"bb"_cc
| <- - markup.italic - punctuation
|^^^^^^ - markup.italic - punctuation

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-363

This is emphasis, even though the opening delimiter is both left- and right-flanking,
because it is preceded by punctuation:

foo-_(bar)_
| <- - markup.italic - punctuation
|^^^ - markup.italic - punctuation
|   ^^^^^^^ markup.italic.markdown
|   ^ punctuation.definition.italic.begin.markdown
|         ^ punctuation.definition.italic.end.markdown

## https://spec.commonmark.org/0.30/#example-365

This is not emphasis, because the closing `*` is preceded by whitespace:

*foo bar *
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^^^ markup.italic.markdown

| <- markup.italic.markdown invalid.illegal.non-terminated.bold-italic.markdown

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-366

A line ending also counts as whitespace:

*foo bar *
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^^^ markup.italic.markdown
|        ^ - punctuation
*
| <- markup.italic.markdown - punctuation
abc*
| <- markup.italic.markdown
|^^^ meta.paragraph.markdown markup.italic.markdown
|  ^ punctuation.definition.italic.end.markdown
|   ^ - markup.italic

## https://spec.commonmark.org/0.30/#example-367

This is not emphasis, because the second `*` is preceded by punctuation and followed
by an alphanumeric (hence it is not part of a right-flanking delimiter run):

*(*foo)

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-368

The point of this restriction is more easily appreciated with this example:

*(*foo*)*

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-369

Intraword emphasis with `*` is allowed:

*foo*bar
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^ markup.italic.markdown
|   ^ punctuation.definition.italic.end.markdown
|    ^^^^ - markup.italic

## https://spec.commonmark.org/0.30/#example-370

This is not emphasis, because the closing `_` is preceded by whitespace:

_foo bar _
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^^^ markup.italic.markdown
|        ^ - punctuation

| <- markup.italic.markdown invalid.illegal.non-terminated.bold-italic.markdown

> Note: Needs ST4's branching to get it right!

_foo bar _
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^^^ markup.italic.markdown
|        ^ - punctuation
_
| <- markup.italic.markdown - punctuation
abc_
| <- markup.italic.markdown
|^^^ markup.italic.markdown
|  ^ punctuation.definition.italic.end
|   ^ - markup.italic

## https://spec.commonmark.org/0.30/#example-371

This is not emphasis, because the second `_` is preceded by punctuation and followed
by an alphanumeric (hence it is not part of a right-flanking delimiter run):

_(_foo)

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-371

The point of this restriction is more easily appreciated with this example:

_(_foo_)_

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-373

Intraword emphasis is disallowed for `_`:

_foo_bar
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^ markup.italic.markdown
|   ^ - punctuation
abc_
| <- markup.italic.markdown
|^^^ markup.italic.markdown
|  ^ punctuation.definition.italic.end.markdown
|   ^ - markup.italic

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-374

Intraword emphasis is disallowed for `_`:

_пристаням_стремятся
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^^^^^^^^^^^^^ markup.italic.markdown

| <- markup.italic.markdown invalid.illegal.non-terminated.bold-italic.markdown

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-375

_foo_bar_baz_
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^^^^^ markup.italic.markdown
|   ^^^^^ - punctuation
|           ^ punctuation.definition.italic.end.markdown

## https://spec.commonmark.org/0.30/#example-376

This is emphasis, even though the closing delimiter is both left- and right-flanking,
because it is followed by punctuation:

_(bar)_.
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^ markup.italic.markdown
|     ^ punctuation.definition.italic.end.markdown
|      ^^ - markup.italic

## https://spec.commonmark.org/0.30/#example-377

**foo bar**
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^^^^^ markup.bold.markdown
|^ punctuation.definition.bold.begin.markdown
|        ^^ punctuation.definition.bold.end.markdown

## https://spec.commonmark.org/0.30/#example-378

** foo bar**
| <- - markup - punctuation
|^^^^^^^^^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-379

This is not strong emphasis, because the opening `**` is preceded by an alphanumeric
and followed by punctuation, and hence not part of a left-flanking delimiter run:

a**"foo"**
| <- - markup - punctuation
|^^^^^^^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-380

Intraword strong emphasis with `**` is permitted:

foo**bar**
| <- - markup
|^^ - markup
|  ^^^^^^^ meta.paragraph.markdown markup.bold.markdown
|  ^^ punctuation.definition.bold.begin.markdown
|       ^^ punctuation.definition.bold.end.markdown
|         ^ - markup

## https://spec.commonmark.org/0.30/#example-381

__foo bar__
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^^^^^ markup.bold.markdown
|^ punctuation.definition.bold.begin.markdown
|        ^^ punctuation.definition.bold.end.markdown

## https://spec.commonmark.org/0.30/#example-382

This is not strong emphasis, because the opening delimiter is followed by whitespace:
__ foo bar__
| <- - markup - punctuation
|^^^^^^^^^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-383

__
| <- - punctuation
|^ - punctuation

## https://spec.commonmark.org/0.30/#example-384

a__"foo"__
| <- - markup - punctuation
|^^^^^^^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-385

Intraword strong emphasis is forbidden with `__`:
foo__bar__
| <- - markup - punctuation
|^^^^^^^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-386

5__6__78
| <- - markup - punctuation
|^^^^^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-387

пристаням__стремятся__
| <- - markup - punctuation
|^^^^^^^^^^^^^^^^^^^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-389

foo-__(bar)__
| <- - markup
|^^^ - markup
|   ^^^^^^^^^ markup.bold.markdown
|   ^^ punctuation.definition.bold.begin.markdown
|          ^^ punctuation.definition.bold.end.markdown
|            ^ - markup

## https://spec.commonmark.org/0.30/#example-390

**foo bar **
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^^^^^^^ markup.bold.markdown
|^ punctuation.definition.bold.begin.markdown 
|         ^^ - punctuation

| <- markup.bold.markdown invalid.illegal.non-terminated.bold-italic.markdown

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-394

**foo "*bar*" foo**
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^ markup.bold.markdown - markup.italic
|^ punctuation.definition.bold.begin.markdown
|      ^^^^^ markup.bold.markdown markup.italic.markdown
|      ^ punctuation.definition.italic.begin.markdown
|          ^ punctuation.definition.italic.end.markdown
|           ^^^^^^^ markup.bold.markdown - markup.italic
|                ^^ punctuation.definition.bold.end.markdown
|                  ^ - markup

## https://spec.commonmark.org/0.30/#example-395

Intraword emphasis:
 
**foo**bar
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^ markup.bold.markdown
|    ^^ punctuation.definition.bold.end.markdown
|      ^^^^ - markup

## https://spec.commonmark.org/0.30/#example-396

__foo bar __
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^^^^^^^ markup.bold.markdown
|^ punctuation.definition.bold.begin.markdown 
|         ^^ - punctuation

| <- markup.bold.markdown invalid.illegal.non-terminated.bold-italic.markdown

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-397

This is not strong emphasis, because the second `__` 
is preceded by punctuation and followed by an alphanumeric:

__(__foo)

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-398

_(__foo__)_
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
| ^^^^^^^ markup.italic.markdown markup.bold.markdown
| ^^ punctuation.definition.bold.begin.markdown
|      ^^ punctuation.definition.bold.end.markdown
|         ^ punctuation.definition.italic.end.markdown

## https://spec.commonmark.org/0.30/#example-399

Intraword strong emphasis is forbidden with `__`:
__foo__bar
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^^^^^ markup.bold.markdown
|^ punctuation.definition.bold.begin.markdown 
|    ^^ - punctuation

| <- markup.bold.markdown invalid.illegal.non-terminated.bold-italic.markdown

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-400

__пристаням__стремятся
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^^^^^^^^^^^^^^^^^ markup.bold.markdown
|^ punctuation.definition.bold.begin.markdown 
|          ^^ - punctuation

| <- markup.bold.markdown invalid.illegal.non-terminated.bold-italic.markdown

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-401

__foo__bar__baz__
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^^^^^^^^^^^ markup.bold.markdown
|^ punctuation.definition.bold.begin.markdown 
|    ^^^^^^^ - punctuation
|              ^^ punctuation.definition.bold.end.markdown

## https://spec.commonmark.org/0.30/#example-402

This is strong emphasis, even though the closing delimiter is both left- and right-flanking,
because it is followed by punctuation:

__(bar)__.
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^^^ markup.bold.markdown
|^ punctuation.definition.bold.begin.markdown 
|      ^^ punctuation.definition.bold.end.markdown
|        ^^ - markup

## https://spec.commonmark.org/0.30/#example-403

Any nonempty sequence of inline elements can be the contents of an emphasized span.

*foo [bar](/url)*
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^^^^^^^^^ markup.italic.markdown
|    ^^^^^^^^^^^ meta.link.inline
|               ^ punctuation.definition.italic.end.markdown

## https://spec.commonmark.org/0.30/#example-404

*foo
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^ markup.italic.markdown
bar*
| <- markup.italic.markdown
|^^^ markup.italic.markdown
|  ^ punctuation.definition.italic.end
|   ^ - markup

## https://spec.commonmark.org/0.30/#example-405

_foo __bar__ baz_
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^ markup.italic.markdown - markup markup
|    ^^ punctuation.definition.bold.begin.markdown
|    ^^^^^^^ markup.italic.markdown markup.bold.markdown
|         ^^ punctuation.definition.bold.end.markdown
|           ^^^^^ markup.italic.markdown - markup markup
|               ^ punctuation.definition.italic.end.markdown
|                ^ - markup

## https://spec.commonmark.org/0.30/#example-418

*foo [*bar*](/url)*
| <-  markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^ markup.italic.markdown - markup.italic markup.italic
|    ^^^^^^^^^^^^^ meta.link.inline
|     ^^^^^ markup.italic.markdown markup.italic.markdown
|          ^^^^^^^ markup.italic.markdown - markup.italic markup.italic

*foo [_bar_](/url)*
| <-  markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^ markup.italic.markdown - markup.italic markup.italic
|    ^^^^^^^^^^^^^ meta.link.inline
|     ^^^^^ markup.italic.markdown markup.italic.markdown
|          ^^^^^^^ markup.italic.markdown - markup.italic markup.italic

_foo [_bar_](/url)_
| <-  markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^ markup.italic.markdown - markup.italic markup.italic
|    ^^^^^^^^^^^^^ meta.link.inline
|     ^^^^^ markup.italic.markdown markup.italic.markdown
|          ^^^^^^^ markup.italic.markdown - markup.italic markup.italic

_foo [**bar**](/url)_
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^ markup.italic.markdown - markup.italic markup.bold
|    ^^^^^^^^^^^^^^^ meta.link.inline
|     ^^ punctuation.definition.bold.begin.markdown
|     ^^^^^^^ markup.italic.markdown markup.bold.markdown
|          ^^ punctuation.definition.bold.end.markdown
|            ^^^^^^^^ markup.italic.markdown - markup.italic markup.bold
|                   ^ punctuation.definition.italic.end.markdown

_foo [__bar__](/url)_
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^ markup.italic.markdown - markup.italic markup.bold
|    ^^^^^^^^^^^^^^^ meta.link.inline
|     ^^ punctuation.definition.bold.begin.markdown
|     ^^^^^^^ markup.italic.markdown markup.bold.markdown
|          ^^ punctuation.definition.bold.end.markdown
|            ^^^^^^^^ markup.italic.markdown - markup.italic markup.bold
|                   ^ punctuation.definition.italic.end.markdown

## https://spec.commonmark.org/0.30/#example-419

** is not an empty emphasis
| <- - punctuation
|^ - punctuation

## https://spec.commonmark.org/0.30/#example-420

**** is not an empty strong emphasis
| <- - punctuation
|^^^ - punctuation

## https://spec.commonmark.org/0.30/#example-421

**foo [bar](/url)**
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^^^^^^^^^^^^^ markup.bold.markdown
|^ punctuation.definition.bold.begin.markdown
|     ^^^^^^^^^^^ meta.link.inline
|                ^^ punctuation.definition.bold.end.markdown

## https://spec.commonmark.org/0.30/#example-422

**foo
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^ markup.bold.markdown
|^ punctuation.definition.bold.begin.markdown
bar**
| <- markup.bold.markdown
|^^^^ markup.bold.markdown
|  ^^ punctuation.definition.bold.end
|    ^ - markup

## https://spec.commonmark.org/0.30/#example-423

__foo _bar_ baz__
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^ markup.bold.markdown - markup markup
|^ punctuation.definition.bold.begin.markdown
|     ^ punctuation.definition.italic.begin.markdown
|     ^^^^^ markup.bold.markdown markup.italic.markdown
|         ^ punctuation.definition.italic.end.markdown
|          ^^^^^^ markup.bold.markdown - markup markup
|               ^ punctuation.definition.bold.end.markdown
|                ^ - markup

## https://spec.commonmark.org/0.30/#example-432

**foo [*bar*](/url)**
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^ markup.bold.markdown - markup.bold markup.italic
|     ^^^^^^^^^^^^^ meta.link.inline
|^ punctuation.definition.bold.begin.markdown
|      ^ punctuation.definition.italic.begin.markdown
|      ^^^^^ markup.bold.markdown markup.italic.markdown
|          ^ punctuation.definition.italic.end.markdown
|           ^^^^^^^^^ markup.bold.markdown - markup.bold markup.italic
|                  ^^ punctuation.definition.bold.end.markdown

**foo [_bar_](/url)**
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^ markup.bold.markdown - markup.bold markup.italic
|     ^^^^^^^^^^^^^ meta.link.inline
|^ punctuation.definition.bold.begin.markdown
|      ^ punctuation.definition.italic.begin.markdown
|      ^^^^^ markup.bold.markdown markup.italic.markdown
|          ^ punctuation.definition.italic.end.markdown
|           ^^^^^^^^^ markup.bold.markdown - markup.bold markup.italic
|                  ^^ punctuation.definition.bold.end.markdown

## https://spec.commonmark.org/0.30/#example-433

__ is not an empty emphasis
| <- - markup - punctuation
|^^^^^^^^^^^^^^^^^^^^^^^^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-434

____ is not an empty strong emphasis
| <- - markup - punctuation
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-435

foo ***
|   ^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-436

foo *\**
|^^^ - markup
|   ^^^^ markup.italic.markdown
|   ^ punctuation.definition.italic.begin.markdown
|    ^^ constant.character.escape.markdown
|      ^ punctuation.definition.italic.end.markdown
|       ^ - markup

## https://spec.commonmark.org/0.30/#example-437

foo *_*
|^^^ - markup
|   ^^^ markup.italic.markdown
|   ^punctuation.definition.italic.begin.markdown
|     ^ punctuation.definition.italic.end.markdown
|      ^ - markup

## https://spec.commonmark.org/0.30/#example-439

foo **\***
|^^^ - markup
|   ^^^^^^ markup.bold.markdown
|   ^^ punctuation.definition.bold.begin.markdown
|     ^^ constant.character.escape.markdown
|       ^^ punctuation.definition.bold.end.markdown
|         ^ - markup

## https://spec.commonmark.org/0.30/#example-440

foo **_**
|^^^ - markup
|   ^^^^^ markup.bold.markdown
|   ^^punctuation.definition.bold.begin.markdown
|      ^^ punctuation.definition.bold.end.markdown
|        ^ - markup

## https://spec.commonmark.org/0.30/#example-441

**foo*

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-442

*foo**

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-443

***foo**

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-444

****foo*

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-445

**foo***
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^^^^^^ markup.bold.markdown
|^ punctuation.definition.bold.begin.markdown
|    ^^ punctuation.definition.bold.end.markdown
|      ^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-446

*foo****

> Note: Needs ST4's branching to get it right!

## https://spec.commonmark.org/0.30/#example-447

foo ___
|   ^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-448

foo _\__
|^^^ - markup
|   ^^^^ markup.italic.markdown
|   ^ punctuation.definition.italic.begin.markdown
|    ^^ constant.character.escape.markdown
|      ^ punctuation.definition.italic.end.markdown
|       ^ - markup

## https://spec.commonmark.org/0.30/#example-449

foo _*_
|^^^ - markup
|   ^^^ markup.italic.markdown
|   ^punctuation.definition.italic.begin.markdown
|     ^ punctuation.definition.italic.end.markdown
|      ^ - markup

## https://spec.commonmark.org/0.30/#example-450

foo _____
|   ^^^^^ - markup - punctuation

## https://spec.commonmark.org/0.30/#example-451

foo __\___
|^^^ - markup
|   ^^^^^^ markup.bold.markdown
|   ^^ punctuation.definition.bold.begin.markdown
|     ^^ constant.character.escape.markdown
|       ^^ punctuation.definition.bold.end.markdown
|         ^ - markup

## https://spec.commonmark.org/0.30/#example-452

foo __*__
|^^^ - markup
|   ^^^^^ markup.bold.markdown
|   ^^punctuation.definition.bold.begin.markdown
|      ^^ punctuation.definition.bold.end.markdown
|        ^ - markup

## https://custom-tests/emphasis

This text is _italic_, but this__text__is neither bold_nor_italic
|            ^ punctuation.definition.italic
|             ^^^^^^ markup.italic
|                   ^ punctuation.definition.italic
|                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - markup.bold - markup.italic

the following is italic *and doesn't end here * but does end here*
|                       ^ punctuation.definition.italic.begin
|                                             ^ - punctuation.definition.italic
|                                                                ^ punctuation.definition.italic.end

the following is bold **and doesn't end here ** but does end here**
|                     ^^ punctuation.definition.bold.begin
|                                            ^^ - punctuation.definition.bold
|                                                                ^^ punctuation.definition.bold.end

the following is not bold ** test ****
|                         ^^ - punctuation.definition.bold.begin
|                                 ^^^^ - punctuation.definition.bold

the following is not italic _ test ____
|                           ^ - punctuation.definition.italic.begin
|                                  ^^^^ - punctuation.definition.italic

more **tests *** ** here**
|    ^^ punctuation.definition.bold.begin
|            ^^^^^^ - punctuation.definition
|                       ^^ punctuation.definition.bold.end

more __tests *** ** example __ here__
|    ^^ punctuation.definition.bold.begin
|            ^^^^^^^^^^^^^^^^^^^^^^ - punctuation.definition
|                                  ^^ punctuation.definition.bold.end

more _tests <span class="test_">here</span>_
|    ^ punctuation.definition.italic.begin
|                            ^ - punctuation.definition
|                                          ^ punctuation.definition.italic.end

more _tests <span class="test_">_here</span>_
|    ^ punctuation.definition.italic.begin
|                            ^ - punctuation.definition
|                               ^ - punctuation
|                                           ^ punctuation.definition.italic.end

_more `tests_` here_
| <- punctuation.definition.italic.begin
|     ^^^^^^^^ markup.raw.inline
|                  ^ punctuation.definition.italic.end

__more `tests__` here__
| <- punctuation.definition.bold.begin
|      ^^^^^^^^^ markup.raw.inline
|                    ^^ punctuation.definition.bold.end

**more `tests__` here**
| <- punctuation.definition.bold.begin
|      ^^^^^^^^^ markup.raw.inline
|                    ^^ punctuation.definition.bold.end

**more `tests**` here**
| <- punctuation.definition.bold.begin
|      ^^^^^^^^^ markup.raw.inline
|                    ^^ punctuation.definition.bold.end

*more `tests__` here**
| <- punctuation.definition.italic.begin
|                   ^^ - punctuation
abc*
|  ^ punctuation.definition.italic.end

This is ***bold italic***
|       ^^^^^^^^^^^^^^^^^ markup.bold
|       ^^ punctuation.definition.bold.begin
|         ^ punctuation.definition.italic.begin
|         ^^^^^^^^^^^^^ markup.italic
|                     ^ punctuation.definition.italic.end
|                      ^^ punctuation.definition.bold.end

This is ***bold italic* and just bold**
|       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.bold
|       ^^ punctuation.definition.bold.begin
|         ^ punctuation.definition.italic.begin
|         ^^^^^^^^^^^^^ markup.italic
|                     ^ punctuation.definition.italic.end
|                      ^^^^^^^^^^^^^^^^ - markup.italic
|                                    ^^ punctuation.definition.bold.end

The next scope overlap funny because we have to pick one order
to scope three indicators in a row
This is ***bold italic** and just italic*
|       ^^^^^^^^^^^^^^^^ markup.bold
|       ^^ punctuation.definition.bold.begin
|         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.italic
|         ^ punctuation.definition.italic.begin
|                     ^^ punctuation.definition.bold.end
|                       ^^^^^^^^^^^^^^^^^ - markup.bold
|                                       ^ punctuation.definition.italic.end

This is **_bold italic_**
|       ^^^^^^^^^^^^^^^^^ markup.bold
|       ^^ punctuation.definition.bold.begin
|         ^ punctuation.definition.italic.begin
|         ^^^^^^^^^^^^^ markup.italic
|                     ^ punctuation.definition.italic.end
|                      ^^ punctuation.definition.bold.end

This is __*bold italic*__
|       ^^^^^^^^^^^^^^^^^ markup.bold
|       ^^ punctuation.definition.bold.begin
|         ^ punctuation.definition.italic.begin
|         ^^^^^^^^^^^^^ markup.italic
|                     ^ punctuation.definition.italic.end
|                      ^^ punctuation.definition.bold.end

This is ___bold italic___
|       ^^^^^^^^^^^^^^^^^ markup.bold
|       ^^ punctuation.definition.bold.begin
|         ^ punctuation.definition.italic.begin
|         ^^^^^^^^^^^^^ markup.italic
|                     ^ punctuation.definition.italic.end
|                      ^^ punctuation.definition.bold.end

This is ___bold italic_ and just bold__
|       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.bold
|       ^^ punctuation.definition.bold.begin
|         ^ punctuation.definition.italic.begin
|         ^^^^^^^^^^^^^ markup.italic
|                     ^ punctuation.definition.italic.end
|                      ^^^^^^^^^^^^^^^^ - markup.italic
|                                    ^^ punctuation.definition.bold.end

The next scope overlap funny because we have to pick one order
to scope three indicators in a row
This is ___bold italic__ and just italic_
|       ^^^^^^^^^^^^^^^ markup.bold
|       ^^ punctuation.definition.bold.begin
|         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.italic
|         ^ punctuation.definition.italic.begin
|                     ^^ punctuation.definition.bold.end
|                       ^^^^^^^^^^^^^^^^^ - markup.bold
|                                       ^ punctuation.definition.italic.end

This is _**italic bold**_
|       ^^^^^^^^^^^^^^^^^ markup.italic
|       ^ punctuation.definition.italic.begin
|        ^^^^^^^^^^^^^^^ markup.bold
|        ^^ punctuation.definition.bold.begin
|                     ^^ punctuation.definition.bold.end
|                       ^ punctuation.definition.italic.end

This is *__italic bold__*
|       ^^^^^^^^^^^^^^^^^ markup.italic
|       ^ punctuation.definition.italic.begin
|        ^^^^^^^^^^^^^^^ markup.bold
|        ^^ punctuation.definition.bold.begin
|                     ^^ punctuation.definition.bold.end
|                       ^ punctuation.definition.italic.end

**test!_test** Issue 1163
|^^^^^^^^^^^^^ markup.bold
|      ^ - punctuation.definition.italic
|           ^^ punctuation.definition.bold.end

__test!*test__ Issue 1163
|^^^^^^^^^^^^^ markup.bold
|      ^ - punctuation.definition.italic
|           ^^ punctuation.definition.bold.end

*test

| <- invalid.illegal.non-terminated.bold-italic
abc*
|  ^ - punctuation

_test

| <- invalid.illegal.non-terminated.bold-italic
abc_
|  ^ - punctuation

**test

| <- invalid.illegal.non-terminated.bold-italic
abc**
|  ^^ - punctuation

__test

| <- invalid.illegal.non-terminated.bold-italic
abc__
|  ^^ - punctuation

__test\
|     ^ meta.hard-line-break constant.character.escape
testing__

*italic text <span>HTML element</span> end of italic text*
| <- punctuation.definition.italic
|                                                        ^ punctuation.definition.italic
|            ^^^^^^ meta.tag.inline
|                              ^^^^^^^ meta.tag.inline

_italic text <SPAN>HTML element</SPAN> end of italic text_
| <- punctuation.definition.italic
|                                                        ^ punctuation.definition.italic
|            ^^^^^^ meta.tag.inline
|                              ^^^^^^^ meta.tag.inline

**bold text <span>HTML element</span> end of bold text**
| <- punctuation.definition.bold
|                                                     ^^ punctuation.definition.bold
|           ^^^^^^ meta.tag.inline
|                             ^^^^^^^ meta.tag.inline

__bold text <span>HTML element</span> end of bold text__
| <- punctuation.definition.bold
|                                                     ^^ punctuation.definition.bold
|           ^^^^^^ meta.tag.inline
|                             ^^^^^^^ meta.tag.inline

*italic text <span>HTML element</span> end of italic text*
| <- punctuation.definition.italic
|                                                        ^ punctuation.definition.italic
|            ^^^^^^ meta.tag.inline
|                              ^^^^^^^ meta.tag.inline

_italic text <span>HTML element</span> end of italic text_
| <- punctuation.definition.italic
|                                                        ^ punctuation.definition.italic
|            ^^^^^^ meta.tag.inline
|                              ^^^^^^^ meta.tag.inline

_test <span>text_ foobar</span>
| <- punctuation
|               ^ punctuation.definition.italic.end

__test <span>text__ not formatted</span>
| <- punctuation
|                ^^ punctuation.definition.bold.end

*test <span>text* not formatted</span>
| <- punctuation
|               ^ punctuation.definition.italic.end

**test <span>text** not formatted</span>
| <- punctuation
|                ^^ punctuation.definition.bold.end

_test <span>text **formatted**</span>_
| <- punctuation
|                ^^ punctuation
|                           ^^ punctuation
|                                    ^ punctuation

*test <span>text __formatted__</span>*
| <- punctuation
|                ^^ punctuation
|                           ^^ punctuation
|                                    ^ punctuation

*test <span>text __formatted__</span>* **more** _text_
| <- punctuation
|                ^^ punctuation
|                           ^^ punctuation
|                                    ^ punctuation
|                                      ^^ punctuation
|                                            ^^ punctuation
|                                               ^ punctuation
|                                                    ^ punctuation

*test <span>text* __formatted</span>__
| <- punctuation
|               ^ punctuation
|                 ^^ punctuation
|                                   ^^ punctuation

__test <span>text__ *formatted</span>*
| <- punctuation
|                ^^ punctuation
|                   ^ punctuation
|                                    ^ punctuation

# TEST: HIGHLIGHT #############################################################

__==bold highlight==__
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^ markup.bold.markdown - markup.highlight
| ^^^^^^^^^^^^^^^^^^ markup.bold.markdown markup.highlight.markdown
|                   ^^ markup.bold.markdown - markup.highlight
|^ punctuation.definition.bold.begin.markdown
| ^^ punctuation.definition.highlight.begin.markdown
|                 ^^ punctuation.definition.highlight.end.markdown 
|                   ^^ punctuation.definition.bold.end.markdown

**==bold highlight==**
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^ markup.bold.markdown - markup.highlight
| ^^^^^^^^^^^^^^^^^^ markup.bold.markdown markup.highlight.markdown
|                   ^^ markup.bold.markdown - markup.highlight
|^ punctuation.definition.bold.begin.markdown
| ^^ punctuation.definition.highlight.begin.markdown
|                 ^^ punctuation.definition.highlight.end.markdown 
|                   ^^ punctuation.definition.bold.end.markdown

_==italic highlight==_
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^^^^^^^^^^^^^ markup.italic.markdown markup.highlight.markdown
|                    ^ markup.italic.markdown - markup.highlight
|^^ punctuation.definition.highlight.begin.markdown
|                  ^^ punctuation.definition.highlight.end.markdown 
|                    ^ punctuation.definition.italic.end.markdown

*==italic highlight==*
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^^^^^^^^^^^^^ markup.italic.markdown markup.highlight.markdown
|                    ^ markup.italic.markdown - markup.highlight
|^^ punctuation.definition.highlight.begin.markdown
|                  ^^ punctuation.definition.highlight.end.markdown 
|                    ^ punctuation.definition.italic.end.markdown

___==bold italic highlight==___
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^ markup.bold.markdown - markup.italic - markup.highlight
| ^ markup.bold.markdown markup.italic.markdown - markup.highlight
|  ^^^^^^^^^^^^^^^^^^^^^^^^^ markup.bold.markdown markup.italic.markdown markup.highlight.markdown
|                           ^ markup.bold.markdown markup.italic.markdown - markup.highlight
|                            ^^ markup.bold.markdown - markup.italic - markup.highlight
|^ punctuation.definition.bold.begin.markdown
| ^ punctuation.definition.italic.begin.markdown
|  ^^ punctuation.definition.highlight.begin.markdown
|                         ^^ punctuation.definition.highlight.end.markdown 
|                           ^ punctuation.definition.italic.end.markdown
|                            ^^ punctuation.definition.bold.end.markdown

***==bold italic highlight==***
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^ markup.bold.markdown - markup.italic - markup.highlight
| ^ markup.bold.markdown markup.italic.markdown - markup.highlight
|  ^^^^^^^^^^^^^^^^^^^^^^^^^ markup.bold.markdown markup.italic.markdown markup.highlight.markdown
|                           ^ markup.bold.markdown markup.italic.markdown - markup.highlight
|                            ^^ markup.bold.markdown - markup.italic - markup.highlight
|^ punctuation.definition.bold.begin.markdown
| ^ punctuation.definition.italic.begin.markdown
|  ^^ punctuation.definition.highlight.begin.markdown
|                         ^^ punctuation.definition.highlight.end.markdown 
|                           ^ punctuation.definition.italic.end.markdown
|                            ^^ punctuation.definition.bold.end.markdown

=Hi= Hello, world!
| <- - punctuation.definition.highlight
|^^^^^^^^^^^^^^^^^ meta.paragraph - markup
|  ^ - punctuation.definition.highlight

This =text==== is ====curious=.
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph - markup
|    ^ - punctuation.definition.highlight
|         ^^^^ - punctuation.definition.highlight
|                 ^^^^ - punctuation.definition.highlight
|                            ^ - punctuation.definition.highlight

This ==text==== is ====curious==.
|^^^^ meta.paragraph - markup
|    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph markup.highlight
|                               ^^ meta.paragraph - markup
|    ^^ punctuation.definition.highlight.begin
|          ^^^^ - punctuation.definition.highlight
|                  ^^^^ - punctuation.definition.highlight
|                             ^^ punctuation.definition.highlight.end

This ==is ==highlighted== inline text
|^^^^ - markup.highlight
|    ^^^^^^^^^^^^^^^^^^^^ markup.highlight.markdown
|                        ^^^^^^^^^^^^ - markup.highlight

This ==has a
|    ^^^^^^^^ meta.paragraph markup.highlight

| <- meta.paragraph markup.highlight invalid.illegal.non-terminated.bold-italic
new paragraph==.
|            ^^ meta.paragraph markup.highlight punctuation.definition.highlight.begin

| <- invalid.illegal.non-terminated.bold-italic

A ==[highlight](https://link-url)==
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown markup.highlight.markdown

A ==![highlight](https://image-url)==
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown markup.highlight.markdown

A ==[![highlight](image-url)](link-url)==
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown markup.highlight.markdown

A ==![image $\ce{H2O}$.](./img/image6.png){#fig:image6 height=12.09cm }==
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.highlight.markdown
| ^^ punctuation.definition.highlight.begin.markdown
|   ^^^^^^^^^^^^^^^^^^^^ meta.image.inline.description.markdown
|   ^^ punctuation.definition.image.begin.markdown
|           ^^^^^^^^^^ markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar.latex
|                      ^ punctuation.definition.image.end.markdown
|                       ^^^^^^^^^^^^^^^^^^ meta.image.inline.metadata.markdown
|                       ^ punctuation.definition.metadata.begin.markdown
|                        ^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown
|                                        ^ punctuation.definition.metadata.end.markdown
|                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.image.inline.attributes.markdown
|                                         ^ punctuation.definition.attributes.begin.markdown
|                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.markdown
|                                          ^^^^^^^^^^^ entity.other.attribute-name.markdown
|                                                      ^^^^^^ entity.other.attribute-name.markdown
|                                                            ^ punctuation.separator.key-value.markdown
|                                                             ^^^^^^^ string.unquoted.markdown
|                                                                     ^ punctuation.definition.attributes.end.markdown
|                                                                      ^^ punctuation.definition.highlight.end.markdown


# TEST: STRIKETHROUGH #########################################################

__~~bold striked~~__
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^ markup.bold.markdown - markup.strikethrough
| ^^^^^^^^^^^^^^^^ markup.bold.markdown markup.strikethrough.markdown-gfm
|                 ^^ markup.bold.markdown - markup.strikethrough
|^ punctuation.definition.bold.begin.markdown
| ^^ punctuation.definition.strikethrough.begin.markdown
|               ^^ punctuation.definition.strikethrough.end.markdown 
|                 ^^ punctuation.definition.bold.end.markdown

**~~bold striked~~**
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^ markup.bold.markdown - markup.strikethrough
| ^^^^^^^^^^^^^^^^ markup.bold.markdown markup.strikethrough.markdown-gfm
|                 ^^ markup.bold.markdown - markup.strikethrough
|^ punctuation.definition.bold.begin.markdown
| ^^ punctuation.definition.strikethrough.begin.markdown
|               ^^ punctuation.definition.strikethrough.end.markdown 
|                 ^^ punctuation.definition.bold.end.markdown

_~~italic striked~~_
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^^^^^^^^^^^ markup.italic.markdown markup.strikethrough.markdown-gfm
|                  ^ markup.italic.markdown - markup.strikethrough
|^^ punctuation.definition.strikethrough.begin.markdown
|                ^^ punctuation.definition.strikethrough.end.markdown 
|                  ^ punctuation.definition.italic.end.markdown

*~~italic striked~~*
| <- markup.italic.markdown punctuation.definition.italic.begin.markdown
|^^^^^^^^^^^^^^^^^^ markup.italic.markdown markup.strikethrough.markdown-gfm
|                  ^ markup.italic.markdown - markup.strikethrough
|^^ punctuation.definition.strikethrough.begin.markdown
|                ^^ punctuation.definition.strikethrough.end.markdown 
|                  ^ punctuation.definition.italic.end.markdown

___~~bold italic striked~~___
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^ markup.bold.markdown - markup.italic - markup.strikethrough
| ^ markup.bold.markdown markup.italic.markdown - markup.strikethrough
|  ^^^^^^^^^^^^^^^^^^^^^^^ markup.bold.markdown markup.italic.markdown markup.strikethrough.markdown-gfm
|                         ^ markup.bold.markdown markup.italic.markdown - markup.strikethrough
|                          ^^ markup.bold.markdown - markup.italic - markup.strikethrough
|^ punctuation.definition.bold.begin.markdown
| ^ punctuation.definition.italic.begin.markdown
|  ^^ punctuation.definition.strikethrough.begin.markdown
|                       ^^ punctuation.definition.strikethrough.end.markdown 
|                         ^ punctuation.definition.italic.end.markdown
|                          ^^ punctuation.definition.bold.end.markdown

***~~bold italic striked~~***
| <- markup.bold.markdown punctuation.definition.bold.begin.markdown
|^ markup.bold.markdown - markup.italic - markup.strikethrough
| ^ markup.bold.markdown markup.italic.markdown - markup.strikethrough
|  ^^^^^^^^^^^^^^^^^^^^^^^ markup.bold.markdown markup.italic.markdown markup.strikethrough.markdown-gfm
|                         ^ markup.bold.markdown markup.italic.markdown - markup.strikethrough
|                          ^^ markup.bold.markdown - markup.italic - markup.strikethrough
|^ punctuation.definition.bold.begin.markdown
| ^ punctuation.definition.italic.begin.markdown
|  ^^ punctuation.definition.strikethrough.begin.markdown
|                       ^^ punctuation.definition.strikethrough.end.markdown 
|                         ^ punctuation.definition.italic.end.markdown
|                          ^^ punctuation.definition.bold.end.markdown

~Hi~ Hello, world!
| <- - punctuation.definition.strikethrough
|^^^^^^^^^^^^^^^^^ meta.paragraph - markup
|  ^ - punctuation.definition.strikethrough

This ~text~~~~ is ~~~~curious~.
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph - markup
|    ^ - punctuation.definition.strikethrough
|         ^^^^ - punctuation.definition.strikethrough
|                 ^^^^ - punctuation.definition.strikethrough
|                            ^ - punctuation.definition.strikethrough

This ~~text~~~~ is ~~~~curious~~.
|^^^^ meta.paragraph - markup
|    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph markup.strikethrough
|                               ^^ meta.paragraph - markup
|    ^^ punctuation.definition.strikethrough.begin
|          ^^^^ - punctuation.definition.strikethrough
|                  ^^^^ - punctuation.definition.strikethrough
|                             ^^ punctuation.definition.strikethrough.end

This ~~is ~~striked~~ inline text
|^^^^ - markup.strikethrough
|    ^^^^^^^^^^^^^^^^ markup.strikethrough.markdown-gfm
|                    ^^^^^^^^^^^^^ - markup.strikethrough

This ~~has a
|    ^^^^^^^^ meta.paragraph markup.strikethrough

| <- meta.paragraph markup.strikethrough invalid.illegal.non-terminated.bold-italic
new paragraph~~.
|            ^^ meta.paragraph markup.strikethrough punctuation.definition.strikethrough.begin

| <- invalid.illegal.non-terminated.bold-italic

A ~~[highlight](https://link-url)~~
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown markup.strikethrough.markdown-gfm

A ~~![highlight](https://image-url)~~
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown markup.strikethrough.markdown-gfm

A ~~[![highlight](image-url)](link-url)~~
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown markup.strikethrough.markdown-gfm

A ~~![image $\ce{H2O}$.](./img/image6.png){#fig:image6 height=12.09cm }~~
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.strikethrough.markdown-gfm
| ^^ punctuation.definition.strikethrough.begin.markdown
|   ^^^^^^^^^^^^^^^^^^^^ meta.image.inline.description.markdown
|   ^^ punctuation.definition.image.begin.markdown
|           ^^^^^^^^^^ markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar.latex
|                      ^ punctuation.definition.image.end.markdown
|                       ^^^^^^^^^^^^^^^^^^ meta.image.inline.metadata.markdown
|                       ^ punctuation.definition.metadata.begin.markdown
|                        ^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown
|                                        ^ punctuation.definition.metadata.end.markdown
|                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.image.inline.attributes.markdown
|                                         ^ punctuation.definition.attributes.begin.markdown
|                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.markdown
|                                          ^^^^^^^^^^^ entity.other.attribute-name.markdown
|                                                      ^^^^^^ entity.other.attribute-name.markdown
|                                                            ^ punctuation.separator.key-value.markdown
|                                                             ^^^^^^^ string.unquoted.markdown
|                                                                     ^ punctuation.definition.attributes.end.markdown
|                                                                      ^^ punctuation.definition.strikethrough.end.markdown


# TEST: LINKS #################################################################

A [link](https://example.com){ :_attr = value }, *italic text* and **bold**.
| ^^^^^^ meta.link.inline.description.markdown
| ^ punctuation.definition.link.begin
|      ^ punctuation.definition.link.end
|       ^ punctuation.definition.metadata
|        ^^^^^^^^^^^^^^^^^^^ markup.underline.link
|                           ^ punctuation.definition.metadata
|                            ^ punctuation.definition.attributes.begin.markdown
|                              ^^^^^^^^^^^^^^ meta.attribute-with-value.markdown
|                              ^^^^^^ entity.other.attribute-name.markdown
|                                     ^ punctuation.separator.key-value.markdown
|                                       ^^^^^ string.unquoted.markdown
|                                             ^ punctuation.definition.attributes.end.markdown
|                                                ^^^^^^^^^^^^^ markup.italic
|                                                ^ punctuation.definition.italic
|                                                            ^ punctuation.definition.italic
|                                                                  ^^ punctuation.definition.bold
|                                                                  ^^^^^^^^ markup.bold
|                                                                        ^^ punctuation.definition.bold

Here is a [](https://example.com).
|         ^^ meta.link.inline
|         ^ punctuation.definition.link.begin
|          ^ punctuation.definition.link.end
|           ^ punctuation.definition.metadata
|            ^^^^^^^^^^^^^^^^^^^ markup.underline.link
|                               ^ punctuation.definition.metadata

Here is a [](https://example.com){_attr="value"}.
|         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inline
|         ^ punctuation.definition.link.begin
|          ^ punctuation.definition.link.end
|           ^ punctuation.definition.metadata
|            ^^^^^^^^^^^^^^^^^^^ markup.underline.link
|                               ^ punctuation.definition.metadata
|                                ^ punctuation.definition.attributes.begin.markdown
|                                 ^^^^^^^^^^^^^ meta.attribute-with-value.markdown
|                                 ^^^^^ entity.other.attribute-name.markdown
|                                      ^ punctuation.separator.key-value.markdown
|                                       ^^^^^^^ string.quoted.double.markdown
|                                              ^ punctuation.definition.attributes.end.markdown

Here is a [link](#with_(parens/inside)_urls).
|         ^^^^^^ meta.link.inline.description.markdown
|               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inline.metadata.markdown
|                                           ^^ - meta.link
|               ^ punctuation.definition.metadata.begin.markdown
|                ^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.markdown
|                                          ^ punctuation.definition.metadata.end.markdown

Here is a [link](\(foo\)).
|         ^^^^^^ meta.link.inline.description.markdown
|               ^^^^^^^^^ meta.link.inline.metadata.markdown
|                        ^^ - meta.link
|               ^ punctuation.definition.metadata.begin.markdown
|                ^^^^^^^ markup.underline.link.markdown
|                ^^ constant.character.escape.markdown
|                     ^^ constant.character.escape.markdown
|                       ^ punctuation.definition.metadata.end.markdown

Here is a [link](foo\)\:).
|         ^^^^^^ meta.link.inline.description.markdown
|               ^^^^^^^^^ meta.link.inline.metadata.markdown
|                        ^^ - meta.link
|               ^ punctuation.definition.metadata.begin.markdown
|                ^^^^^^^ markup.underline.link.markdown
|                   ^^ constant.character.escape.markdown
|                       ^ punctuation.definition.metadata.end.markdown

Here is a [link](<foo(and(bar)>).
|         ^^^^^^ meta.link.inline.description.markdown
|               ^^^^^^^^^^^^^^^^ meta.link.inline.metadata.markdown
|                               ^^ - meta.link
|               ^ punctuation.definition.metadata.begin.markdown
|                ^ punctuation.definition.link.begin.markdown
|                 ^^^^^^^^^^^^ markup.underline.link.markdown
|                             ^ punctuation.definition.link.end.markdown
|                              ^ punctuation.definition.metadata.end.markdown

Here is a [link](http://example.com?foo=3#frag).
|         ^^^^^^ meta.link.inline.description.markdown
|               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inline.metadata.markdown
|                                              ^^ - meta.link
|               ^ punctuation.definition.metadata.begin.markdown
|                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.markdown
|                    ^^^ punctuation.separator.path.markdown
|                                  ^ punctuation.separator.path.markdown
|                                        ^ punctuation.separator.path.markdown
|                                             ^ punctuation.definition.metadata.end.markdown

Not a [link] (url) due to space.
|     ^^^^^^ meta.link.reference.description.markdown
|           ^^^^^^^^^^^^^^^^^^^^^ - meta.link

Here is a [reference link][name].
|         ^^^^^^^^^^^^^^^^ meta.link.reference.description.markdown
|                         ^^^^^^ meta.link.reference.metadata.markdown
|         ^ punctuation.definition.link.begin.markdown
|                        ^ punctuation.definition.link.end.markdown
|                         ^ punctuation.definition.metadata.begin.markdown
|                          ^^^^ markup.underline.link.markdown
|                              ^ punctuation.definition.metadata.end.markdown

Here is a [reference link][name]{_attr='value' :att2}.
|         ^^^^^^^^^^^^^^^^ meta.link.reference.description.markdown
|                         ^^^^^^ meta.link.reference.metadata.markdown
|                               ^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.attributes.markdown
|                                ^^^^^^^^^^^^^ meta.attribute-with-value.markdown
|                                             ^ - meta.attribute-with-value
|                                              ^^^^^ meta.attribute-with-value.markdown
|         ^ punctuation.definition.link.begin.markdown
|                        ^ punctuation.definition.link.end.markdown
|                         ^ punctuation.definition.metadata.begin.markdown
|                          ^^^^ markup.underline.link.markdown
|                              ^ punctuation.definition.metadata.end.markdown
|                               ^ punctuation.definition.attributes.begin.markdown
|                                ^^^^^ entity.other.attribute-name.markdown
|                                     ^ punctuation.separator.key-value.markdown
|                                      ^^^^^^^ string.quoted.single.markdown
|                                              ^^^^^ entity.other.attribute-name.markdown
|                                                   ^ punctuation.definition.attributes.end.markdown

Here is a [blank reference link][]{}.
|         ^^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.literal.description.markdown
|                               ^^ meta.link.reference.literal.metadata.markdown
|                                 ^^ meta.link.reference.literal.attributes.markdown
|         ^ punctuation.definition.link.begin.markdown
|                              ^ punctuation.definition.link.end.markdown
|                               ^ punctuation.definition.metadata.begin.markdown
|                                ^ punctuation.definition.metadata.end.markdown
|                                 ^ punctuation.definition.attributes.begin.markdown
|                                  ^ punctuation.definition.attributes.end.markdown

now you can access the [The Ever Cool Site: Documentation about Sites](
  www.thecoolsite.com.ca/documentations/about/cool ) for more information about...
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inline markup.underline.link
|                                                 ^ - invalid
|                                                  ^ meta.link.inline punctuation.definition.metadata.end

now you can access the [The Ever Cool Site: Documentation about Sites](
  www.thecoolsite.com.ca /documentations/about/cool ) for more information about...
| ^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inline markup.underline.link
|                       ^ meta.paragraph meta.link.inline - markup.underline.link
|                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph - meta.link.inline

now you can access the [The Ever Cool Site: Documentation about Sites](
  www.thecoolsite.com.ca/documentations/about/cool
  (title)) for more information about...
| ^^^^^^^^ meta.paragraph meta.link.inline
|        ^ punctuation.definition.metadata.end
| ^^^^^^^ string.quoted.other.markdown

link with a single underscore inside the text : [@_test](http://example.com)
|                                                ^^^^^^ meta.paragraph meta.link.inline.description - punctuation.definition
|                                                      ^ meta.paragraph meta.link.inline punctuation.definition.link.end

[foo]
|<- meta.link.reference punctuation.definition.link.begin
|^^^ meta.paragraph meta.link.reference
|   ^ meta.link.reference punctuation.definition.link.end

This is literal [Foo*bar\]] but [ref][Foo*bar\]]
|               ^^^^^^^^^^^ meta.link.reference.description.markdown
|               ^ punctuation.definition.link.begin.markdown
|                ^^^^^^^ - constant
|                       ^^ constant.character.escape.markdown
|                         ^ punctuation.definition.link.end.markdown
|                               ^^^^^ meta.link.reference.description.markdown
|                                    ^^^^^^^^^^^ meta.link.reference.metadata.markdown

[**Read more &#8594;**][details]
|^^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.description.markdown
|                      ^^^^^^^^^ meta.link.reference.metadata.markdown
|^^ punctuation.definition.bold.begin.markdown
|            ^^^^^^^ constant.character.entity.decimal.html
|                   ^^ punctuation.definition.bold.end.markdown
|                       ^^^^^^^ markup.underline.link.markdown

[Read more &#8594;][details]
|^^^^^^^^^^^^^^^^^^ meta.link.reference.description.markdown
|                  ^^^^^^^^^ meta.link.reference.metadata.markdown
|          ^^^^^^^ constant.character.entity.decimal.html
|                   ^^^^^^^ markup.underline.link

[Read more <span style="font-weight: bold;">&#8594;</span>][details]
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.description.markdown
|                                                          ^^^^^^^^^ meta.link.reference.metadata.markdown
|          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.tag
|                       ^^^^^^^^^^^^^^^^^^ source.css
|                                           ^^^^^^^ constant.character.entity.decimal.html - meta.tag
|                                                  ^^^^^^^ meta.tag
|                                                           ^^^^^^^ markup.underline.link

[![Cool ★ Image - Click to Enlarge][img-example]][img-example]
| <- meta.link.reference.description.markdown punctuation.definition.link.begin.markdown
|^^ meta.link.reference.description.markdown meta.image.reference.description.markdown
|  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.description.markdown meta.image.reference.description.markdown
|                                  ^^^^^^^^^^^^^^ meta.link.reference.description.markdown
|                                                ^^^^^^^^^^^^^ meta.link.reference.metadata.markdown
|^^ punctuation.definition.image.begin.markdown
|                                 ^ punctuation.definition.image.end.markdown
|                                  ^ punctuation.definition.metadata.begin.markdown
|                                   ^^^^^^^^^^^ markup.underline.link
|                                              ^ punctuation.definition.metadata.end.markdown
|                                               ^ punctuation.definition.link.end.markdown
|                                                ^ punctuation.definition.metadata.begin.markdown
|                                                 ^^^^^^^^^^^ markup.underline.link
|                                                            ^ punctuation.definition.metadata.end.markdown

[![Cool ★ Image - Click to Enlarge](http://www.sublimetext.com/anim/rename2_packed.png)](http://www.sublimetext.com/anim/rename2_packed.png)
| <- meta.paragraph.markdown meta.link.inline.description.markdown punctuation.definition.link.begin.markdown
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown meta.link.inline.description.markdown meta.image.inline.description.markdown
|                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown meta.link.inline.description.markdown meta.image.inline.metadata.markdown
|                                                                                      ^ meta.paragraph.markdown meta.link.inline.description.markdown
|                                                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown meta.link.inline.metadata.markdown
|^^ punctuation.definition.image.begin.markdown
|                                 ^ punctuation.definition.image.end.markdown
|                                  ^ punctuation.definition.metadata.begin.markdown
|                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown
|                                                                                     ^ punctuation.definition.metadata.end.markdown
|                                                                                      ^ punctuation.definition.link.end.markdown
|                                                                                       ^ punctuation.definition.metadata.begin.markdown
|                                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.markdown
|                                                                                                                                          ^ punctuation.definition.metadata.end.markdown

[link [containing] [square] brackets](#backticks)
|<- punctuation.definition.link.begin
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inline.description
|                                   ^ punctuation.definition.link.end

[link `containing square] brackets] in backticks`[]](#wow)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inline.description
|     ^ punctuation.definition.raw.begin
|                                               ^ punctuation.definition.raw.end
|                                                  ^ punctuation.definition.link.end

[link ``containing square]` brackets[[][] in backticks``](#wow)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inline.description
|     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.raw.inline
|     ^^ punctuation.definition.raw.begin
|                                                     ^^ punctuation.definition.raw.end
|                                                       ^ punctuation.definition.link.end

This is a [reference] ()
|         ^^^^^^^^^^^ meta.link.reference
|                    ^^^^ - meta.link

This is a [reference] (followed by parens)
|         ^^^^^^^^^^^ meta.link.reference
|                    ^^^^^^^^^^^^^^^^^^^^^ - meta.link

This is a [reference] []
|         ^^^^^^^^^^^ meta.link.reference
|                    ^ - meta.link
|                     ^^ meta.link.reference

This is a ![reference] ()
|         ^^^^^^^^^^^^^^^ - meta.image
|          ^^^^^^^^^^^ meta.link.reference
|                     ^^^^ - meta.link

This is a ![reference] (followed by parens)
|         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.image
|          ^^^^^^^^^^^ meta.link.reference
|                     ^^^^^^^^^^^^^^^^^^^^^ - meta.link

This is a ![reference] []
|         ^^^^^^^^^^^^^^^ - meta.image
|          ^^^^^^^^^^^ meta.link.reference
|                     ^ - meta.link
|                      ^^ meta.link.reference


# TEST: IMAGES ################################################################

Here is a ![](https://example.com/cat.gif).
|         ^^^ meta.image.inline.description.markdown
|            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.image.inline.metadata.markdown
|                                         ^^ - meta.image
|         ^^ punctuation.definition.image.begin.markdown
|           ^ punctuation.definition.image.end.markdown - string
|            ^ punctuation.definition.metadata.begin.markdown
|             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown
|                                        ^ punctuation.definition.metadata.end.markdown

Here is a ![](https://example.com/cat.gif){_at"r=value :att2}.
|         ^^^ meta.image.inline.description.markdown
|            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.image.inline.metadata.markdown
|                                         ^^^^^^^^^^^^^^^^^^^ meta.image.inline.attributes.markdown
|                                                            ^^ - meta.image
|         ^^ punctuation.definition.image.begin.markdown
|           ^ punctuation.definition.image.end.markdown - string
|            ^ punctuation.definition.metadata.begin.markdown
|             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown
|                                        ^ punctuation.definition.metadata
|                                         ^ punctuation.definition.attributes.begin.markdown
|                                          ^^^^^ entity.other.attribute-name.markdown
|                                             ^ invalid.illegal.attribute-name.markdown
|                                               ^ punctuation.separator.key-value.markdown
|                                                ^^^^^ string.unquoted.markdown
|                                                      ^^^^^ entity.other.attribute-name.markdown
|                                                           ^ punctuation.definition.attributes.end.markdown

Here is a ![Image Alt Text](https://example.com/cat.gif).
|         ^^^^^^^^^^^^^^^^^ meta.image.inline.description.markdown
|                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.image.inline.metadata.markdown
|                                                       ^^ - meta.image
|         ^^ punctuation.definition.image.begin.markdown
|                         ^ punctuation.definition.image.end.markdown - string
|                          ^ punctuation.definition.metadata.begin.markdown
|                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown
|                                                      ^ punctuation.definition.metadata.end.markdown

Here is a ![Image Alt Text](  https://example.com/cat.gif  ).
|         ^^^^^^^^^^^^^^^^^ meta.image.inline.description.markdown
|                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.image.inline.metadata.markdown
|                                                           ^^ - meta.image
|         ^^ punctuation.definition.image.begin.markdown
|                         ^ punctuation.definition.image.end - string
|                          ^ punctuation.definition.metadata.begin.markdown
|                           ^^ - markup.underline
|                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown
|                                                        ^^ - markup.underline
|                                                          ^ punctuation.definition.metadata.end.markdown

Here is a ![Image Alt Text](
  https://example.com/cat.gif  ).
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown
|                              ^ punctuation.definition.metadata.end.markdown

Here is a ![Image Alt Text](
  https://example.com/cat.gif
 "hello"   ).
|^^^^^^^ meta.image.inline string.quoted.double
|       ^^^^ meta.image.inline
|          ^ punctuation.definition.metadata.end

Here is a ![Image Alt Text](
  <https://example.com/cat.gif> "hello"   ).
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown meta.image.inline.metadata.markdown
|                                          ^^ meta.paragraph.markdown - meta.image
| ^ punctuation.definition.link.begin.markdown
|  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown
|                             ^ punctuation.definition.link.end.markdown
|                               ^^^^^^^ string.quoted.double.markdown
|                               ^ punctuation.definition.string.begin.markdown
|                                     ^ punctuation.definition.string.end.markdown
|                                         ^ punctuation.definition.metadata.end.markdown

Here is a ![Image Alt Text](
  <https://example .com /cat.gif> (hello)   ).
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown meta.image.inline.metadata.markdown
|                                            ^^ meta.paragraph.markdown - meta.image
| ^ punctuation.definition.link.begin.markdown
|  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown
|                               ^ punctuation.definition.link.end.markdown
|                                 ^^^^^^^ string.quoted.other.markdown
|                                 ^ punctuation.definition.string.begin.markdown
|                                       ^ punctuation.definition.string.end.markdown
|                                           ^ punctuation.definition.metadata.end.markdown

Here is a ![Image Alt Text](
  https://example .com /cat.gif (hello)   ).
|^ meta.paragraph.markdown meta.image.inline.metadata.markdown - markup.underline
| ^^^^^^^^^^^^^^^ meta.paragraph.markdown meta.image.inline.metadata.markdown markup.underline.link.image.markdown
|                ^ meta.paragraph.markdown meta.image.inline.metadata.markdown - markup.underline
|                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown - meta.image - markup.underline

Here is a ![Image Ref Alt][1].
|         ^^^^^^^^^^^^^^^^ meta.image.reference.description.markdown
|                         ^^^ meta.image.reference.metadata.markdown
|         ^^ punctuation.definition.image.begin.markdown
|                        ^ punctuation.definition.image.end.markdown
|                         ^ punctuation.definition.metadata.begin.markdown
|                          ^ markup.underline.link.markdown
|                           ^ punctuation.definition.metadata.end.markdown

A complex ![image $\ce{H2O}$.](./img/image6.png){#fig:image6 height=12.09cm }
|         ^^^^^^^^^^^^^^^^^^^^ meta.image.inline.description.markdown
|         ^^ punctuation.definition.image.begin.markdown
|                 ^^^^^^^^^^ markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar.latex
|                            ^ punctuation.definition.image.end.markdown
|                             ^^^^^^^^^^^^^^^^^^ meta.image.inline.metadata.markdown
|                             ^ punctuation.definition.metadata.begin.markdown
|                              ^^^^^^^^^^^^^^^^ markup.underline.link.image.markdown
|                                              ^ punctuation.definition.metadata.end.markdown
|                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.image.inline.attributes.markdown
|                                               ^ punctuation.definition.attributes.begin.markdown
|                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.markdown
|                                                ^^^^^^^^^^^ entity.other.attribute-name.markdown
|                                                            ^^^^^^ entity.other.attribute-name.markdown
|                                                                  ^ punctuation.separator.key-value.markdown
|                                                                   ^^^^^^^ string.unquoted.markdown
|                                                                           ^ punctuation.definition.attributes.end.markdown

With codepsan ![`a`b]()
|             ^^^^^^^ meta.image.inline.description.markdown
|             ^^ punctuation.definition.image.begin.markdown
|               ^^^ markup.raw.inline.markdown
|               ^ punctuation.definition.raw.begin.markdown
|                 ^ punctuation.definition.raw.end.markdown
|                   ^ punctuation.definition.image.end.markdown
|                    ^^ meta.image.inline.metadata.markdown
|                    ^ punctuation.definition.metadata.begin.markdown
|                     ^ punctuation.definition.metadata.end.markdown

With codepsan ![``a`b``]()
|             ^^^^^^^^^^ meta.image.inline.description.markdown
|             ^^ punctuation.definition.image.begin.markdown
|               ^^^^^^^ markup.raw.inline.markdown
|               ^^ punctuation.definition.raw.begin.markdown
|                    ^^ punctuation.definition.raw.end.markdown
|                      ^ punctuation.definition.image.end.markdown
|                       ^^ meta.image.inline.metadata.markdown
|                       ^ punctuation.definition.metadata.begin.markdown
|                        ^ punctuation.definition.metadata.end.markdown

With codepsan ![` `]()
|             ^^^^^^ meta.image.inline.description.markdown
|             ^^ punctuation.definition.image.begin.markdown
|               ^^^ markup.raw.inline.markdown
|               ^ punctuation.definition.raw.begin.markdown
|                 ^ punctuation.definition.raw.end.markdown
|                  ^ punctuation.definition.image.end.markdown
|                   ^^ meta.image.inline.metadata.markdown
|                   ^ punctuation.definition.metadata.begin.markdown
|                    ^ punctuation.definition.metadata.end.markdown

With codepsan ![`` ` ``]()
|             ^^^^^^^^^^ meta.image.inline.description.markdown
|             ^^ punctuation.definition.image.begin.markdown
|               ^^^^^^^ markup.raw.inline.markdown
|               ^^ punctuation.definition.raw.begin.markdown
|                    ^^ punctuation.definition.raw.end.markdown
|                      ^ punctuation.definition.image.end.markdown
|                       ^^ meta.image.inline.metadata.markdown
|                       ^ punctuation.definition.metadata.begin.markdown
|                        ^ punctuation.definition.metadata.end.markdown

With codepsan ![``` `` ```]()
|             ^^^^^^^^^^^^^ meta.image.inline.description.markdown
|             ^^ punctuation.definition.image.begin.markdown
|               ^^^^^^^^^^ markup.raw.inline.markdown
|               ^^^ punctuation.definition.raw.begin.markdown
|                      ^^^ punctuation.definition.raw.end.markdown
|                         ^ punctuation.definition.image.end.markdown
|                          ^^ meta.image.inline.metadata.markdown
|                          ^ punctuation.definition.metadata.begin.markdown
|                           ^ punctuation.definition.metadata.end.markdown
 
With codepsan ![```` ``` ````]()
|             ^^^^^^^^^^^^^^^^ meta.image.inline.description.markdown
|             ^^ punctuation.definition.image.begin.markdown
|               ^^^^^^^^^^^^^ markup.raw.inline.markdown
|               ^^^^ punctuation.definition.raw.begin.markdown
|                        ^^^^ punctuation.definition.raw.end.markdown
|                            ^ punctuation.definition.image.end.markdown
|                             ^^ meta.image.inline.metadata.markdown
|                             ^ punctuation.definition.metadata.begin.markdown
|                              ^ punctuation.definition.metadata.end.markdown


# TEST: FOOTNOTES #############################################################

## https://michelf.ca/projects/php-markdown/extra/#footnotes

That's some text with a footnote.[^1]
|                                ^^^^ meta.paragraph meta.link.reference.footnote.markdown-extra
|                                ^ punctuation.definition.link.begin
|                                 ^^ meta.link.reference.literal.footnote-id
|                                   ^ punctuation.definition.link.end

Here is a footnote[^1][link][] or long[^longnote][link][].
|                 ^^^^ meta.link.reference.footnote.markdown-extra
|                     ^^^^^^ meta.link.reference.literal.description.markdown
|                           ^^ meta.link.reference.literal.metadata.markdown
|                                     ^^^^^^^^^^^ meta.link.reference.footnote.markdown-extra
|                                                ^^^^^^^^ meta.link.reference.literal

Here is a footnote [^footnote](not_link_dest).
|                  ^^^^^^^^^^^ meta.paragraph.markdown meta.link.reference.footnote.markdown-extra
|                  ^ punctuation.definition.link.begin.markdown
|                   ^^^^^^^^^ meta.link.reference.literal.footnote-id.markdown
|                            ^ punctuation.definition.link.end.markdown
|                             ^^^^^^^^^^^^^^^ meta.paragraph.markdown - meta.link


# TEST: COMMONMARK AUTOLINKS ##################################################

<mailto:test+test@test.com>
| <- meta.link.email.markdown punctuation.definition.link.begin.markdown - markup.underline
|^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.email.markdown markup.underline.link.markdown
|                         ^ meta.link.email.markdown - markup.underline
|      ^ punctuation.separator.path.markdown
|                ^ punctuation.separator.path.markdown
|                         ^ punctuation.definition.link.end.markdown

<foo#bar?@mail.test.com>
| <- meta.link.email.markdown punctuation.definition.link.begin.markdown - markup.underline
|^^^^^^^^^^^^^^^^^^^^^^ meta.link.email.markdown markup.underline.link.markdown
|                      ^ meta.link.email.markdown - markup.underline
|        ^ punctuation.separator.path.markdown
|                      ^ punctuation.definition.link.end.markdown

<http://www.test.com/>
| <- meta.link.inet.markdown punctuation.definition.link.begin.markdown - markup.underline
|^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link.markdown
|                    ^ meta.link.inet.markdown - markup.underline
|    ^^^ punctuation.separator.path.markdown
|                   ^ punctuation.separator.path.markdown
|                    ^ punctuation.definition.link.end.markdown

<https://test.com/>
| <- meta.link.inet.markdown punctuation.definition.link.begin.markdown - markup.underline
|^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link.markdown
|                 ^ meta.link.inet.markdown - markup.underline
|     ^^^ punctuation.separator.path.markdown
|                ^ punctuation.separator.path.markdown
|                 ^ punctuation.definition.link.end.markdown

<ftp://test.com/>
| <- meta.link.inet.markdown punctuation.definition.link.begin.markdown - markup.underline
|^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link.markdown
|               ^ meta.link.inet.markdown - markup.underline
|   ^^^ punctuation.separator.path.markdown
|              ^ punctuation.separator.path.markdown
|               ^ punctuation.definition.link.end.markdown

<irc://foo%20bar.com:2233/baz>
| <- meta.link.inet.markdown punctuation.definition.link.begin.markdown - markup.underline
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link.markdown
|                            ^ meta.link.inet.markdown - markup.underline
|   ^^^ punctuation.separator.path.markdown
|         ^ constant.character.escape.url.markdown punctuation.definition.escape.markdown
|          ^^ constant.character.escape.url.markdown - punctuation
|                        ^ punctuation.separator.path.markdown

<a+b+c:d>
| <- meta.link.inet.markdown punctuation.definition.link.begin.markdown
|^^^^^^^ meta.link.inet.markdown markup.underline.link.markdown
|       ^ meta.paragraph.markdown meta.link.inet.markdown punctuation.definition.link.end.markdown

<made-up-scheme://foo,bar>
| <- meta.paragraph.markdown meta.link.inet.markdown punctuation.definition.link.begin.markdown
|^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown meta.link.inet.markdown markup.underline.link.markdown
|                        ^ meta.paragraph.markdown meta.link.inet.markdown punctuation.definition.link.end.markdown
|              ^^^ punctuation.separator.path.markdown

<http://../>
| <- meta.link.inet.markdown punctuation.definition.link.begin.markdown
|^^^^^^^^^^ meta.link.inet.markdown markup.underline.link.markdown
|          ^ meta.paragraph.markdown meta.link.inet.markdown punctuation.definition.link.end.markdown
|    ^^^ punctuation.separator.path.markdown
|         ^ punctuation.separator.path.markdown

<localhost:5001/foo>
| <- meta.link.inet.markdown punctuation.definition.link.begin.markdown
|^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link.markdown
|                  ^ meta.paragraph.markdown meta.link.inet.markdown punctuation.definition.link.end.markdown
|         ^ punctuation.separator.path.markdown
|              ^ punctuation.separator.path.markdown

<http://foo.bar/baz bim>
| <- meta.link.inet.markdown punctuation.definition.link.begin.markdown
|^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link.markdown
|                  ^^^^^^ - meta.link
|    ^^^ punctuation.separator.path.markdown
|              ^ punctuation.separator.path.markdown

<http://example.com/\[\>
| <- meta.link.inet.markdown punctuation.definition.link.begin.markdown
|^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link.markdown
|                      ^ meta.paragraph.markdown meta.link.inet.markdown punctuation.definition.link.end.markdown
|    ^^^ punctuation.separator.path.markdown
|                  ^ punctuation.separator.path.markdown


# TEST: GFM AUTOLINKS #########################################################

Visit ftp://intra%20net
|     ^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|        ^^^ punctuation.separator.path.markdown
|               ^ - constant
|                ^ constant.character.escape.url.markdown punctuation.definition.escape.markdown
|                 ^^ constant.character.escape.url.markdown - punctuation
|                   ^^^ - constant

Visit http://intra%20net
|     ^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|         ^^^ punctuation.separator.path.markdown
|                ^ - constant
|                 ^ constant.character.escape.url.markdown punctuation.definition.escape.markdown
|                  ^^ constant.character.escape.url.markdown - punctuation
|                    ^^^ - constant

Visit https://intra%20net
|     ^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|          ^^^ punctuation.separator.path.markdown
|                 ^ - constant
|                  ^ constant.character.escape.url.markdown punctuation.definition.escape.markdown
|                   ^^ constant.character.escape.url.markdown - punctuation
|                     ^^^ - constant

Visit www.intra%20net
|     ^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|             ^ - constant
|              ^ constant.character.escape.url.markdown punctuation.definition.escape.markdown
|               ^^ constant.character.escape.url.markdown - punctuation
|                 ^^^ - constant

Visit www.commonmark.org/help for more information.
|     ^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|                       ^ punctuation.separator.path.markdown
|                            ^^^^^^^^^^^^^^^^^^^^^^^ - markup.underline.link

Visit www.commonmark.org.
|     ^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                       ^^ - markup.underline.link

Visit www.commonmark.org/a.b.
|     ^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                           ^ - markup.underline.link
|                       ^ punctuation.separator.path.markdown

Visit www.commonmark.org?
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                       ^ - markup.underline.link

Visit www.commonmark.org!
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                       ^ - markup.underline.link

Visit www.commonmark.org:
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                       ^ - markup.underline.link

Visit www.commonmark.org;
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                       ^ - markup.underline.link

Visit www.commonmark.org*
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                       ^ - markup.underline.link

Visit www.commonmark.org_
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                       ^ - markup.underline.link

Visit www.commonmark.org~
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                       ^ - markup.underline.link

Visit 'www.commonmark.org'
|     ^ - markup.underline.link
|      ^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                        ^ - markup.underline.link

Visit "www.commonmark.org"
|     ^ - markup.underline.link
|      ^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                        ^ - markup.underline.link

Visit "www.commonmark.org/q'uo"te"
|     ^ - markup.underline.link
|      ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                                ^ - markup.underline.link
Visit www.commonmark.org=
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                        ^ - markup.underline.link

Visit www.commonmark.org&
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                        ^ - markup.underline.link

Visit www.commonmark.org%
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                        ^ - markup.underline.link

Visit www.commonmark.org$
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                        ^ - markup.underline.link

Visit www.commonmark.org#
|    ^ - markup.underline.link
|     ^^^^^^^^^^^^^^^^^^^ meta.paragraph meta.link.inet.markdown markup.underline.link
|                        ^ - markup.underline.link

www.google.com/search?q=(business'
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|             ^ punctuation.separator.path.markdown
|                    ^ punctuation.separator.path.markdown
|                                ^ - markup.underline.link

www.google.com/search?q=(business"
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|             ^ punctuation.separator.path.markdown
|                    ^ punctuation.separator.path.markdown
|                                ^ - markup.underline.link

www.google.com/search?q=(business))+ok
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|             ^ punctuation.separator.path.markdown
|                    ^ punctuation.separator.path.markdown
|                                     ^ - markup.underline.link

www.google.com/search?q=Markup+(business)
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|             ^ punctuation.separator.path.markdown
|                    ^ punctuation.separator.path.markdown

www.commonmark.org/he<lp>
|^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|                 ^ punctuation.separator.path.markdown
|                    ^ - markup.underline.link

http://commonmark.org
|^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|   ^^^ punctuation.separator.path.markdown

www.google.com/search?q=commonmark&hl=en
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|             ^ punctuation.separator.path.markdown
|                    ^ punctuation.separator.path.markdown
|                                 ^ punctuation.separator.path.markdown
|                                       ^ - markup.underline.link

www.google.com/search?q=commonmark&hl;
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|             ^ punctuation.separator.path.markdown
|                    ^ punctuation.separator.path.markdown
|                                 ^^^^ constant.character.entity.named.html - markup.underline.link

www.google.com/search?q=commonmark&hl;&hl;
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|             ^ punctuation.separator.path.markdown
|                    ^ punctuation.separator.path.markdown
|                                 ^^^^^^^^ constant.character.entity.named.html - markup.underline.link

www.google.com/search?q=commonmark&hl;!
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|                                 ^^^^^^ - meta.link
|             ^ punctuation.separator.path.markdown
|                    ^ punctuation.separator.path.markdown
|                                 ^^^^ constant.character.entity.named.html - markup.underline.link

www.google.com/search?q=commonmark&hl;f
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|                                      ^ - meta.link
|             ^ punctuation.separator.path.markdown
|                    ^ punctuation.separator.path.markdown
|                                 ^^^^ - constant.character

(Visit https://encrypted.google.com/search?q=Markup+(business))
|      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|           ^^^ punctuation.separator.path.markdown
|                                  ^ punctuation.separator.path.markdown
|                                         ^ punctuation.separator.path.markdown
|                                                             ^^ - markup.underline.link

Anonymous FTP is available at ftp://foo.bar.baz.
|                             ^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|                                ^^^ punctuation.separator.path.markdown
|                                              ^^ - markup.underline.link

(see http://www.google.com/search?q=commonmark&hl=en)
|    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.inet.markdown markup.underline.link
|        ^^^ punctuation.separator.path.markdown
|                         ^ punctuation.separator.path.markdown
|                                ^ punctuation.separator.path.markdown
|                                             ^ punctuation.separator.path.markdown
|                                                   ^^ - markup.underline.link

foo@bar.baz
| <- meta.link.email.markdown markup.underline.link.markdown
|^^^^^^^^^^ meta.link.email.markdown markup.underline.link.markdown
|  ^ punctuation.separator.path.markdown
|          ^ - meta.link - markup.underline.link

hello@mail+xyz.example isn't valid, but hello+xyz@mail.example is.
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.link - markup.underline.link
|                                       ^^^^^^^^^^^^^^^^^^^^^^ meta.link.email.markdown markup.underline.link.markdown

 test@test.test.me
| <- - meta.link - markup.underline
|^^^^^^^^^^^^^^^^^ meta.link.email.markdown markup.underline.link.markdown
|    ^ punctuation.separator.path.markdown
|                 ^ - meta.link - markup.underline.link

 a.b-c_d@a.b
| <- - meta.link - markup.underline
|^^^^^^^^^^^ meta.link.email.markdown markup.underline.link.markdown
|       ^ punctuation.separator.path.markdown
|           ^ - meta.link - markup.underline.link

a.b-c_d@a.b.
|^^^^^^^^^^ markup.underline.link
|          ^^ - markup.underline.link

 a.b-c_d@a.b-
| <- - meta.link - markup.underline
|^^^^^^^^^^^^^ - meta.link - markup.underline.link

 a.b-c_d@a.b_
| <- - meta.link - markup.underline
|^^^^^^^^^^^^^ - meta.link - markup.underline.link


# TEST: HARD LINE BREAKS ######################################################

hard line break  
|              ^^ meta.hard-line-break punctuation.definition.hard-line-break
hard line break\
|              ^ meta.hard-line-break constant.character.escape
hard line break     
|              ^^^^^ meta.hard-line-break punctuation.definition.hard-line-break
soft line break 
|              ^^ - meta.hard-line-break
soft line break
|             ^^ - meta.hard-line-break

### foo  
|      ^^^ - meta.hard-line-break
### foo\
|      ^ - meta.hard-line-break

`inline code with trailing spaces  
|                                ^^^ - meta.hard-line-break
not a hard line break`


# TEST: CRITIC MARKUP #########################################################

This is an {++additional++} word in {++**bold**++}.
|          ^^^^^^^^^^^^^^^^ markup.critic.addition.markdown
|          ^^^ punctuation.definition.critic.begin.markdown - markup.inserted
|             ^^^^^^^^^^ markup.inserted.critic.markdown
|                       ^^^ punctuation.definition.critic.end.markdown - markup.inserted
|                                   ^^^ markup.critic.addition.markdown - markup.inserted - markup.bold
|                                      ^^^^^^^^ markup.critic.addition.markdown markup.inserted.critic.markdown markup.bold.markdown
|                                              ^^^ markup.critic.addition.markdown - markup.inserted
|                                   ^^^ punctuation.definition.critic.begin.markdown
|                                      ^^ punctuation.definition.bold.begin.markdown
|                                            ^^ punctuation.definition.bold.end.markdown 
|                                              ^^^ punctuation.definition.critic.end.markdown

This is an {++ multiline
addition ++} test.
| <- markup.critic.addition.markdown
|^^^^^^^^ markup.critic.addition.markdown markup.inserted.critic.markdown
|        ^^^ markup.critic.addition.markdown - markup.inserted
|        ^^^ punctuation.definition.critic.end.markdown
|           ^^^^^^ - markup.critic

Additional {++[Link](https://foo.bar)++} and {++![Image](images/image.png)++}.
| ^^^^^^^^^ - markup.critic
|          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.critic.addition.markdown
|                                        ^^^^ - markup.critic
|                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.critic.addition.markdown
|                                                                            ^^ - markup.critic
|          ^^^ punctuation.definition.critic.begin.markdown
|             ^^^^^^ meta.link.inline.description.markdown
|                   ^^^^^^^^^^^^^^^^^ meta.link.inline.metadata.markdown
|                                    ^^^ punctuation.definition.critic.end.markdown
|                                            ^^^ punctuation.definition.critic.begin.markdown
|                                               ^^^^^^^^ meta.image.inline.description.markdown
|                                                       ^^^^^^^^^^^^^^^^^^ meta.image.inline.metadata.markdown
|                                                                         ^^^ punctuation.definition.critic.end.markdown

This is a {-- deletion --} and {~~substitute~>with~~striked~~text~~} or {~~~~old~~~>~~new~~~~}.
|         ^^^^^^^^^^^^^^^^ markup.critic.deletion.markdown
|         ^^^ punctuation.definition.critic.begin.markdown - markup.deleted
|            ^^^^^^^^^^ markup.deleted.critic.markdown
|                      ^^^ punctuation.definition.critic.end.markdown - markup.deleted
|                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.critic.substitution.markdown
|                                                                    ^^^ - markup.critic
|                                                                       ^^^^^^^^^^^^^^^^^^^^^^ markup.critic.substitution.markdown
|                                                                                             ^^ - markup.critic
|                              ^^^ punctuation.definition.critic.begin.markdown - markup.deleted
|                                 ^^^^^^^^^^ markup.deleted.critic.markdown
|                                           ^^ punctuation.separator.critic.markdown - markup.deleted - markup.inserted
|                                              ^^^^^^^^^^^^^^^^^^ markup.inserted.critic.markdown
|                                                  ^^^^^^^^^^ markup.strikethrough.markdown-gfm
|                                                                ^^^ punctuation.definition.critic.end.markdown - markup.inserted
|                                                                       ^^^ punctuation.definition.critic.begin.markdown
|                                                                          ^^ punctuation.definition.strikethrough.begin.markdown
|                                                                          ^^^^^^^ markup.deleted.critic.markdown markup.strikethrough.markdown-gfm
|                                                                               ^^ punctuation.definition.strikethrough.end.markdown
|                                                                                 ^^ punctuation.separator.critic.markdown
|                                                                                   ^^ punctuation.definition.strikethrough.begin.markdown
|                                                                                   ^^^^^^^ markup.inserted.critic.markdown markup.strikethrough.markdown-gfm
|                                                                                        ^^ punctuation.definition.strikethrough.end.markdown
|                                                                                          ^^^ punctuation.definition.critic.end.markdown

No striked {~~~>~~} critics.
|          ^^^^^^^^ markup.critic.substitution.markdown
|          ^^^ punctuation.definition.critic.begin.markdown
|             ^^ punctuation.separator.critic.markdown
|               ^^^ punctuation.definition.critic.end.markdown
|                  ^^^^^^^^^^ - markup.critic

No striked {~~~~>~~~} critics.
|          ^^^^^^^^^^ markup.critic.substitution.markdown
|          ^^^ punctuation.definition.critic.begin.markdown
|             ^ - punctuation
|              ^^ punctuation.separator.critic.markdown
|                ^ - punctuation
|                 ^^^ punctuation.definition.critic.end.markdown
|                    ^^^^^^^^^^ - markup.critic

No striked {~~~~~>~~~~} critics.
|          ^^^^^^^^^^^^ markup.critic.substitution.markdown
|          ^^^ punctuation.definition.critic.begin.markdown
|             ^^ - punctuation
|               ^^ punctuation.separator.critic.markdown
|                 ^^ - punctuation
|                   ^^^ punctuation.definition.critic.end.markdown
|                      ^^^^^^^^^^ - markup.critic

No striked {~~~~~~>~~~~~} critics.
|          ^^^^^^^^^^^^^^ markup.critic.substitution.markdown
|          ^^^ punctuation.definition.critic.begin.markdown
|             ^^^ - punctuation
|                ^^ punctuation.separator.critic.markdown
|                  ^^^ - punctuation
|                     ^^^ punctuation.definition.critic.end.markdown
|                        ^^^^^^^^^^ - markup.critic

No striked {~~~~~~~>~~~~~~} critics.
|          ^^^^^^^^^^^^^^^^ markup.critic.substitution.markdown
|          ^^^ punctuation.definition.critic.begin.markdown
|             ^^^^ - punctuation
|                 ^^ punctuation.separator.critic.markdown
|                   ^^^^ - punctuation
|                       ^^^ punctuation.definition.critic.end.markdown
|                          ^^^^^^^^^^ - markup.critic

This is a {>> comment <<}.
|         ^^^^^^^^^^^^^^^ markup.critic.comment.markdown
|         ^^^ punctuation.definition.critic.begin.markdown - comment
|            ^^^^^^^^^ comment.critic.markdown
|                     ^^^ punctuation.definition.critic.end.markdown - comment
|                        ^ - markup.critic

This is an {== information ==}{>> comment <<}.
|          ^^^^^^^^^^^^^^^^^^^ markup.critic.highlight.markdown
|                             ^^^^^^^^^^^^^^^ markup.critic.comment.markdown
|          ^^^ punctuation.definition.critic.begin.markdown -  markup.info
|             ^^^^^^^^^^^^^ markup.info.critic.markdown
|                          ^^^ punctuation.definition.critic.end.markdown -  markup.info
|                             ^^^ punctuation.definition.critic.begin.markdown - comment
|                                ^^^^^^^^^ comment.critic.markdown
|                                         ^^^ punctuation.definition.critic.end.markdown - comment
|                                            ^^ - markup.critic

This is a [[wiki link]].
|         ^^^^^^^^^^^^^ meta.link.reference.wiki.description.markdown
|         ^^ punctuation.definition.link.begin.markdown
|                    ^^ punctuation.definition.link.end.markdown

# TEST: GITHUB ALERTS #########################################################

>[!CAUTION]
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^ markup.quote.alert.caution.markdown
|^^^^^^^^^^ markup.heading.alert.caution.markdown
|^ punctuation.definition.heading.begin.markdown
|         ^ punctuation.definition.heading.end.markdown

> [!CAUTION]
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^ markup.quote.alert.caution.markdown
| ^^^^^^^^^^ markup.heading.alert.caution.markdown
| ^ punctuation.definition.heading.begin.markdown
|          ^ punctuation.definition.heading.end.markdown

>  [!CAUTION]
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^ markup.quote.alert.caution.markdown
|  ^^^^^^^^^^ markup.heading.alert.caution.markdown
|  ^ punctuation.definition.heading.begin.markdown
|           ^ punctuation.definition.heading.end.markdown

>   [!CAUTION]
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^^ markup.quote.alert.caution.markdown
|   ^^^^^^^^^^ markup.heading.alert.caution.markdown
|   ^ punctuation.definition.heading.begin.markdown
|            ^ punctuation.definition.heading.end.markdown

>    [!CAUTION]
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^^^ markup.quote.alert.caution.markdown
|    ^^^^^^^^^^ markup.heading.alert.caution.markdown
|    ^ punctuation.definition.heading.begin.markdown
|             ^ punctuation.definition.heading.end.markdown

>     [!CAUTION]
| <- markup.quote.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^^^^ markup.quote.markdown
| ^^^^^^^^^^^^^^^ markup.raw.block.markdown

---

>	[!CAUTION]
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^ markup.quote.alert.caution.markdown
| ^^^^^^^^^^ markup.heading.alert.caution.markdown
| ^ punctuation.definition.heading.begin.markdown
|          ^ punctuation.definition.heading.end.markdown

> 	[!CAUTION]
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^ markup.quote.alert.caution.markdown
|  ^^^^^^^^^^ markup.heading.alert.caution.markdown
|  ^ punctuation.definition.heading.begin.markdown
|           ^ punctuation.definition.heading.end.markdown

> 		[!CAUTION]
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^^ markup.quote.alert.caution.markdown
|   ^^^^^^^^^^ markup.heading.alert.caution.markdown
|   ^ punctuation.definition.heading.begin.markdown
|            ^ punctuation.definition.heading.end.markdown

> 			[!CAUTION]
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^^^ markup.quote.alert.caution.markdown
|    ^^^^^^^^^^ markup.heading.alert.caution.markdown
|    ^ punctuation.definition.heading.begin.markdown
|             ^ punctuation.definition.heading.end.markdown

---

> [!CAUTION]
> 
> Text
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^ markup.quote.alert.caution.markdown - markup.paragraph
| ^^^^^ markup.quote.alert.caution.markdown markup.paragraph.markdown

> [!CAUTION]
> 
> Paragraph 1
> 
> Paragraph 2
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^ markup.quote.alert.caution.markdown - markup.paragraph
| ^^^^^^^^^^^ markup.quote.alert.caution.markdown markup.paragraph.markdown

> [!CAUTION]
> 
> - list item
> 
> - list item
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^ markup.quote.alert.caution.markdown
| ^ markup.quote.alert.caution.markdown markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown
|  ^^^^^^^^^^^ markup.quote.alert.caution.markdown markup.list.unnumbered.markdown

> [!CAUTION]
> 
> 1. list item
> 
> 2. list item
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^ markup.quote.alert.caution.markdown
| ^^ markup.quote.alert.caution.markdown markup.list.numbered.bullet.markdown
|  ^ punctuation.definition.list_item.markdown
|   ^^^^^^^^^^ markup.quote.alert.caution.markdown markup.list.numbered.markdown

> [!CAUTION]
> 
> 1. list item
> 
> 2. list item paragraph 1
> 
>    list item paragraph 2
| <- markup.quote.alert.caution.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.alert.caution.markdown markup.list.numbered.markdown

> [!CAUTION]
> 
> Paragraph 1
> 
> # Heading
>
> Paragraph 2
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^ markup.quote.alert.caution.markdown

> [!CAUTION]
> 
> ```
> fenced code
> ```
>
> Paragraph 2
| <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^ markup.quote.alert.caution.markdown

> [!WARNING]
| <- markup.quote.alert.warning.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^ markup.quote.alert.warning.markdown
| ^^^^^^^^^^ markup.heading.alert.warning.markdown
| ^ punctuation.definition.heading.begin.markdown
|          ^ punctuation.definition.heading.end.markdown

> [!WARNING]
> 
> Text
| <- markup.quote.alert.warning.markdown punctuation.definition.blockquote.markdown
|^ markup.quote.alert.warning.markdown - markup.paragraph
| ^^^^^ markup.quote.alert.warning.markdown markup.paragraph.markdown

> [!IMPORTANT]
| <- markup.quote.alert.important.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^^ markup.quote.alert.important.markdown
| ^^^^^^^^^^^^ markup.heading.alert.important.markdown
| ^ punctuation.definition.heading.begin.markdown
|            ^ punctuation.definition.heading.end.markdown

> [!IMPORTANT]
> 
> Text
| <- markup.quote.alert.important.markdown punctuation.definition.blockquote.markdown
|^ markup.quote.alert.important.markdown - markup.paragraph
| ^^^^^ markup.quote.alert.important.markdown markup.paragraph.markdown

> [!NOTE]
| <- markup.quote.alert.note.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^ markup.quote.alert.note.markdown
| ^^^^^^^ markup.heading.alert.note.markdown
| ^ punctuation.definition.heading.begin.markdown
|       ^ punctuation.definition.heading.end.markdown

> [!NOTE]
> 
> Text
| <- markup.quote.alert.note.markdown punctuation.definition.blockquote.markdown
|^ markup.quote.alert.note.markdown - markup.paragraph
| ^^^^^ markup.quote.alert.note.markdown markup.paragraph.markdown

> [!TIP]
| <- markup.quote.alert.tip.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^ markup.quote.alert.tip.markdown
| ^^^^^^ markup.heading.alert.tip.markdown
| ^ punctuation.definition.heading.begin.markdown
|      ^ punctuation.definition.heading.end.markdown

> [!TIP]
> 
> Text
| <- markup.quote.alert.tip.markdown punctuation.definition.blockquote.markdown
|^ markup.quote.alert.tip.markdown - markup.paragraph
| ^^^^^ markup.quote.alert.tip.markdown markup.paragraph.markdown

   
1. list item   
   > [!CAUTION]
   | <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
   |^^^^^^^^^^^^ markup.quote.alert.caution.markdown
   | ^^^^^^^^^^ markup.heading.alert.caution.markdown
   | ^ punctuation.definition.heading.begin.markdown
   |          ^ punctuation.definition.heading.end.markdown

   > [!CAUTION]
   > 
   > Text
   | <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
   |^ markup.quote.alert.caution.markdown - markup.paragraph
   | ^^^^^ markup.quote.alert.caution.markdown markup.paragraph.markdown

   > [!CAUTION]
   > 
   > Paragraph 1
   > 
   > Paragraph 2
   | <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
   |^ markup.quote.alert.caution.markdown - markup.paragraph
   | ^^^^^^^^^^^ markup.quote.alert.caution.markdown markup.paragraph.markdown
   
   > [!CAUTION]
   > 
   > - list item
   > 
   > - list item
   | <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
   |^ markup.quote.alert.caution.markdown
   | ^ markup.quote.alert.caution.markdown markup.list.unnumbered.bullet.markdown punctuation.definition.list_item.markdown
   |  ^^^^^^^^^^^ markup.quote.alert.caution.markdown markup.list.unnumbered.markdown
   
   > [!CAUTION]
   > 
   > 1. list item
   > 
   > 2. list item
   | <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
   |^ markup.quote.alert.caution.markdown
   | ^^ markup.quote.alert.caution.markdown markup.list.numbered.bullet.markdown
   |  ^ punctuation.definition.list_item.markdown
   |   ^^^^^^^^^^ markup.quote.alert.caution.markdown markup.list.numbered.markdown
   
   > [!CAUTION]
   > 
   > 1. list item
   > 
   > 2. list item paragraph 1
   > 
   >    list item paragraph 2
   | <- markup.quote.alert.caution.markdown markup.list.numbered.markdown punctuation.definition.blockquote.markdown
   |^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.quote.alert.caution.markdown markup.list.numbered.markdown
   
   > [!CAUTION]
   > 
   > Paragraph 1
   > 
   > # Heading
   >
   > Paragraph 2
   | <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
   |^^^^^^^^^^^^^ markup.quote.alert.caution.markdown

   > [!CAUTION]
   > 
   > ```
   > fenced code
   > ```
   >
   > Paragraph 2
   | <- markup.quote.alert.caution.markdown punctuation.definition.blockquote.markdown
   |^^^^^^^^^^^^^ markup.quote.alert.caution.markdown

1. list item   
   > [!WARNING]
   | <- markup.quote.alert.warning.markdown punctuation.definition.blockquote.markdown
   |^^^^^^^^^^^^ markup.quote.alert.warning.markdown
   | ^^^^^^^^^^ markup.heading.alert.warning.markdown
   | ^ punctuation.definition.heading.begin.markdown
   |          ^ punctuation.definition.heading.end.markdown

   > [!WARNING]
   > 
   > Text
   | <- markup.quote.alert.warning.markdown punctuation.definition.blockquote.markdown
   |^ markup.quote.alert.warning.markdown - markup.paragraph
   | ^^^^^ markup.quote.alert.warning.markdown markup.paragraph.markdown

1. list item   
   > [!IMPORTANT]
   | <- markup.quote.alert.important.markdown punctuation.definition.blockquote.markdown
   |^^^^^^^^^^^^^^ markup.quote.alert.important.markdown
   | ^^^^^^^^^^^^ markup.heading.alert.important.markdown
   | ^ punctuation.definition.heading.begin.markdown
   |            ^ punctuation.definition.heading.end.markdown

   > [!IMPORTANT]
   > 
   > Text
   | <- markup.quote.alert.important.markdown punctuation.definition.blockquote.markdown
   |^ markup.quote.alert.important.markdown - markup.paragraph
   | ^^^^^ markup.quote.alert.important.markdown markup.paragraph.markdown

1. list item   
   > [!NOTE]
   | <- markup.quote.alert.note.markdown punctuation.definition.blockquote.markdown
   |^^^^^^^^^ markup.quote.alert.note.markdown
   | ^^^^^^^ markup.heading.alert.note.markdown
   | ^ punctuation.definition.heading.begin.markdown
   |       ^ punctuation.definition.heading.end.markdown

   > [!NOTE]
   > 
   > Text
   | <- markup.quote.alert.note.markdown punctuation.definition.blockquote.markdown
   |^ markup.quote.alert.note.markdown - markup.paragraph
   | ^^^^^ markup.quote.alert.note.markdown markup.paragraph.markdown
   
1. list item   
   > [!TIP]
   | <- markup.quote.alert.tip.markdown punctuation.definition.blockquote.markdown
   |^^^^^^^^ markup.quote.alert.tip.markdown
   | ^^^^^^ markup.heading.alert.tip.markdown
   | ^ punctuation.definition.heading.begin.markdown
   |      ^ punctuation.definition.heading.end.markdown

   > [!TIP]
   > 
   > Text
   | <- markup.quote.alert.tip.markdown punctuation.definition.blockquote.markdown
   |^ markup.quote.alert.tip.markdown - markup.paragraph
   | ^^^^^ markup.quote.alert.tip.markdown markup.paragraph.markdown

# TEST: MATHJAX BLOCKS MARKUP #################################################

  $$
|^^^^ meta.paragraph.markdown - markup.math

  $$ 1+1
|^^^^^^^^ meta.paragraph.markdown - markup.math

  $$ 1+1 
  $$
| ^^ markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.end

  $$ 1+1 $$
|^ meta.paragraph.markdown markup.math.block.markdown - text.tex
| ^^^^^^^^^ meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|          ^ meta.paragraph.markdown markup.math.block.markdown - text.tex
| ^^ punctuation.definition.math.begin
|        ^^ punctuation.definition.math.end

  $$ 1+1 $$ followed by text
|^ meta.paragraph.markdown - markup.math
| ^^^^^^^^^ meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|          ^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown - markup.math
| ^^ punctuation.definition.math.begin
|        ^^ punctuation.definition.math.end
  
  $$ 1+1 
|^ meta.paragraph.markdown - markup.math
| ^^^^^^^ meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
| ^^ punctuation.definition.math.begin
  $$ followed by text
| ^^ meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.end
|   ^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown - markup.math

  Paragraph $$ 1+1 $$
| ^^^^^^^^^^ meta.paragraph.markdown - markup.math
|           ^^^^^^^^^ meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|                    ^ meta.paragraph.markdown - markup.math

  Paragraph $$ 1+1 
| ^^^^^^^^^^ meta.paragraph.markdown - markup.math
|           ^^^^^^^ meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
  $$
|^^^ meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|   ^ meta.paragraph.markdown - markup.math

$$
1+1
# Heading
| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown
|^^^^^^^^^ markup.heading.1.markdown

$$ SeText heading 1
===
$$
| <- meta.paragraph.markdown - markup.math

$$ SeText heading 2
| <- markup.heading.2.markdown entity.name.section.markdown
---
$$
| <- meta.paragraph.markdown - markup.math

$$ SeText heading 2
| <- markup.heading.2.markdown entity.name.section.markdown
---
$$
| <- meta.paragraph.markdown - markup.math

Math blocks don't terminate paragraphs, but MathJax renders them as such
 $$
 1+1
 $$
| <- meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|^^ meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.end
|  ^ meta.paragraph.markdown markup.math.block.markdown - text.tex

   $$
| <- meta.paragraph.markdown markup.math.block.markdown - text.tex
|^^ meta.paragraph.markdown markup.math.block.markdown - text.tex
|  ^^^ meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|  ^^ punctuation.definition.math.begin
   1+1
   $$
| <- meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|^^^^ meta.paragraph.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|  ^^ punctuation.definition.math.end
|    ^ meta.paragraph.markdown markup.math.block.markdown - text.tex

$$
| <- markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.begin
|^^ markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|^ punctuation.definition.math.begin
| ^ - punctuation
foo = 1 + 2 * \sqrt{a^2+b^2}
| <- markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar variable.other.math
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|   ^ keyword.operator
|     ^ constant.numeric
|       ^ keyword.operator
|         ^ constant.numeric
|           ^ keyword.operator
|             ^^^^^ support.function.math
|                  ^^^^^^^^^ meta.group.brace
|                  ^ punctuation.definition.group.brace.begin
|                   ^ variable.other.math
|                    ^ keyword.operator, punctuation.separator.superscript
|                     ^ constant.numeric
|                      ^ keyword.operator
|                       ^ variable.other.math
|                        ^ keyword.operator, punctuation.separator.superscript
|                         ^ constant.numeric
|                          ^ punctuation.definition.group.brace.end
$$
| <- markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.end
|^ markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.end
| ^ markup.math.block.markdown - text.tex

    $$
| <- markup.raw.block.markdown
|^^^^^^ markup.raw.block.markdown

1. Numbered List

   $$
   | <- markup.list.numbered.markdown - markup.math
   |^^ markup.list.numbered.markdown - markup.math

   $$ 1+1
   | <- markup.list.numbered.markdown - markup.math
   |^^^^^^ markup.list.numbered.markdown - markup.math

   $$ 1+1 $$
   | <- markup.list.numbered.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.begin
   |^^^^^^^^ markup.list.numbered.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
   |^ punctuation.definition.math.begin
   |      ^^ punctuation.definition.math.end

    $$ 1+1 $$ followed by text
   | <- markup.list.numbered.markdown meta.paragraph.list.markdown - meta.math
   |^^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
   |         ^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown - markup.math
   |^^ punctuation.definition.math.begin
   |       ^^ punctuation.definition.math.end
    
    $$
    1+1
    # Heading
    | <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown
    |^^^^^^^^^ markup.heading.1.markdown
    
    $$ SeText heading 1
    ===
    $$
    | <- meta.paragraph.list.markdown - markup.math
    
    $$ SeText heading 2
    | <- markup.heading.2.markdown entity.name.section.markdown
    ---
    $$
    | <- meta.paragraph.list.markdown - markup.math
    
    $$ SeText heading 2
    | <- markup.heading.2.markdown entity.name.section.markdown
    ---
    $$
    | <- meta.paragraph.list.markdown - markup.math

    $$ 1+1
   | <- markup.list.numbered.markdown meta.paragraph.list.markdown - meta.math
   |^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
   |^^ punctuation.definition.math.begin
    $$ followed by text
   |^^ markup.list.numbered.markdown meta.paragraph.list.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
   |  ^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown - markup.math
  
   Paragraph $$ 1+1 $$
   |^^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown - markup.math
   |         ^^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
   |                  ^ markup.list.numbered.markdown meta.paragraph.list.markdown - markup.math
  
   Paragraph $$ 1+1 
   |^^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown - markup.math
   |         ^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
    $$
   |^^ markup.list.numbered.markdown meta.paragraph.list.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
   |  ^ markup.list.numbered.markdown meta.paragraph.list.markdown - markup.math

   Math blocks don't terminate paragraphs, but MathJax renders them as such
   $$
   1+1
   $$
   | <- markup.list.numbered.markdown meta.paragraph.list.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.end
   |^ markup.list.numbered.markdown meta.paragraph.list.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.end
   | ^ markup.list.numbered.markdown meta.paragraph.list.markdown - text.tex

   $$
   | <- markup.list.numbered.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.begin
   |^ markup.list.numbered.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.begin
   foo = 1 + 2
   | <- markup.list.numbered.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar variable.other.math
   $$
   | <- markup.list.numbered.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.end
   |^ markup.list.numbered.markdown markup.math.block.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar punctuation.definition.math.end

# TEST: MATHJAX INLINE MARKUP #################################################

# Math $1+1$ atx heading
| <- markup.heading.1.markdown punctuation.definition.heading.begin.markdown
|^^^^^^^^^^^^^^^^^^^^^^^^ markup.heading.1.markdown
|      ^^^^^ markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar

Math $1+1$ setext heading
| <- markup.heading.1.markdown
|^^^^^^^^^^^^^^^^^^^^^^^^^ markup.heading.1.markdown
|    ^^^^^ markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
===
| <- markup.heading.1.markdown punctuation.definition.heading.setext.markdown

Math $1+1$ setext heading
| <- markup.heading.2.markdown
|^^^^^^^^^^^^^^^^^^^^^^^^^ markup.heading.2.markdown
|    ^^^^^ markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
---
| <- markup.heading.2.markdown punctuation.definition.heading.setext.markdown

This is math $1+1$ expression, but $ 1+1 $ ,$ 1+1$, $1+1 $ and 1+1$ or $1+1 are not.
|            ^^^^^ meta.paragraph.markdown markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|            ^ punctuation.definition.math.begin
|             ^ constant.numeric
|              ^ keyword.operator
|               ^ constant.numeric
|                ^ punctuation.definition.math.end
|                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown - markup.math

Math with -$1$() $2$-$3$a or $4$_
|          ^^^ meta.paragraph.markdown markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|             ^^^ meta.paragraph.markdown - markup.math
|                ^^^ meta.paragraph.markdown markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|                   ^^^^^^^^^^^^^^ meta.paragraph.markdown - markup.math

Use `\$` to display a dollar sign: $\sqrt{\$4}$
|   ^^^^ meta.paragraph.markdown markup.raw.inline.markdown
|                                  ^^^^^^^^^^^^ meta.paragraph.markdown markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|                                  ^ punctuation.definition.math.begin
|                                   ^^^^^ support.function.math
|                                        ^ punctuation.definition.group
|                                         ^^ constant.character.escape
|                                           ^ constant.numeric
|                                            ^ punctuation.definition
|                                             ^ punctuation.definition.math.end

No math <span>$</span>1+1$ or $1+1<span>$</span>
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown - markup.math

No math $<br>1+1$ or $1+1<br>$
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.paragraph.markdown - markup.math

Math $a<b$ but $a<b>a$ $a <b 10$ text
|    ^^^^^ markup.math.inline.markdown
|         ^^^^^^^^^^^^^ - markup.math
|                      ^^^^^^^^^ markup.math.inline.markdown
|                               ^^^^^^ - markup.math - meta.tag

This is no $1+
b$ math.
| <- meta.paragraph.markdown - markup.math
|^^^^^^^^ meta.paragraph.markdown - markup.math

Handle incomplete $\sqrt{b$ expressions well.
|                 ^^^^^^^^^ meta.paragraph.markdown markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
|                 ^ punctuation.definition.math.begin
|                  ^^^^^ support.function.math
|                       ^^ meta.group.brace
|                         ^ punctuation.definition.math.end - meta.group
|                          ^ meta.paragraph.markdown - markup.math

1. ordered list $\sqrt{b}$ equation $1+
   |            ^^^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
   |                      ^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown - markup.math

   Math $1+1$ in paragraph.
   |    ^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar

   No math <span>$</span>1+1$ or $1+1<span>$</span>
   |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown - markup.math
  
   No math $<br>1+1$ or $1+1<br>$
   |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown - markup.math
   
   Math $a<b$ but $a<b>a$ $a <b 10$ text
   |    ^^^^^ markup.math.inline.markdown
   |         ^^^^^^^^^^^^^ - markup.math
   |                      ^^^^^^^^^ markup.math.inline.markdown
   |                               ^^^^^^ - markup.math - meta.tag

   +  unordered $\sqrt{b}$ equation
      |         ^^^^^^^^^^ markup.list.numbered.markdown meta.paragraph.list.markdown markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar

   Handle incomplete $\sqrt{b$ expressions well.
   |                 ^^^^^^^^^ meta.paragraph.list.markdown markup.math.inline.markdown text.tex.latex.embedded.markdown meta.environment.math.block.dollar
   |                 ^ punctuation.definition.math.begin
   |                  ^^^^^ support.function.math
   |                       ^^ meta.group.brace
   |                         ^ punctuation.definition.math.end - meta.group
   |                          ^ meta.paragraph.list.markdown - markup.math

# TEST: PANDOC FENCED DIVS ####################################################

::: class
| <- meta.div.markdown punctuation.section.div.begin.markdown
|^^^^^^^^ meta.div.markdown
|^^ punctuation.section.div.begin.markdown
|   ^^^^^ meta.attribute-with-value.markdown entity.other.attribute-name.markdown
- list
|^^^^^ markup.list.unnumbered.markdown
| ^^^^ meta.paragraph.list.markdown
- list
|^^^^^ markup.list.unnumbered.markdown
| ^^^^ meta.paragraph.list.markdown
:::
| <- meta.div.markdown punctuation.section.div.end.markdown
|^^ meta.div.markdown punctuation.section.div.end.markdown

---

::: {.class #id} :::
|^^^^^^^^^^^^^^^^^^^ meta.div.markdown
|^^ punctuation.section.div.begin.markdown
|   ^^^^^^^^^^^^ meta.attributes.markdown
|   ^ punctuation.definition.attributes.begin.markdown
|    ^^^^^^ meta.attribute-with-value.markdown entity.other.attribute-name.markdown
|           ^^^ meta.attribute-with-value.markdown entity.other.attribute-name.markdown
|              ^ punctuation.definition.attributes.end.markdown
|                ^^^ punctuation.section.div.markdown
::: inner
|^^^^^^^^ meta.div.markdown
|^^ punctuation.section.div.begin.markdown
|   ^^^^^ meta.attribute-with-value.markdown entity.other.attribute-name.markdown
paragraph
|^^^^^^^^ meta.paragraph.markdown
:::
|^^ meta.div.markdown punctuation.section.div.end.markdown
|  ^ meta.div.markdown - punctuation
:::
|^^ meta.div.markdown punctuation.section.div.end.markdown
|  ^ meta.div.markdown - punctuation

---

::: block-quote
> quoted block
|^^^^^^^^^^^^^ markup.quote.markdown
| ^^^^^^^^^^^^ markup.paragraph.markdown
> > nested quote
| <- markup.quote.markdown markup.paragraph.markdown punctuation.definition.blockquote.markdown
|^^^^^^^^^^^^^^^ markup.quote.markdown markup.paragraph.markdown
| ^ punctuation.definition.blockquote.markdown
:::
| <- meta.div.markdown punctuation.section.div.end.markdown
|^^ meta.div.markdown punctuation.section.div.end.markdown

---

::: code-block
```css
|^^^^^ meta.code-fence.definition.begin.css.markdown-gfm
|^^ punctuation.definition.raw.code-fence.begin.markdown
|  ^^^ constant.other.language-name.markdown

::: | <- meta.div.markdown punctuation.section.div.end.markdown |^^ meta.div.markdown punctuation.section.div.end.markdown


::: table

column column
foo bar
<- meta.table.markdown-gfm punctuation.separator.table-cell.markdown
:::
<- meta.div.markdown punctuation.section.div.end.markdown
^^ punctuation.section.div.end.markdown

  1. ordered list item

    ::: div | <- markup.list.numbered.markdown meta.div.markdown punctuation.section.div.begin.markdown |^^^^^^ markup.list.numbered.markdown meta.div.markdown |^^ punctuation.section.div.begin.markdown | ^^^ meta.attribute-with-value.markdown entity.other.attribute-name.markdown ::: | <- markup.list.numbered.markdown meta.div.markdown punctuation.section.div.end.markdown |^^^ markup.list.numbered.markdown meta.div.markdown |^^ punctuation.section.div.end.markdown


  • unordered list item

    ::: div | <- markup.list.unnumbered.markdown meta.div.markdown punctuation.section.div.begin.markdown |^^^^^^ markup.list.unnumbered.markdown meta.div.markdown |^^ punctuation.section.div.begin.markdown | ^^^ meta.attribute-with-value.markdown entity.other.attribute-name.markdown ::: |^^^ markup.list.unnumbered.markdown meta.div.markdown |^^ punctuation.section.div.end.markdown


::: indendet-code-block

| <- markup.raw.block.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.raw.block.markdown

::: indendet-code-block
code
:::

|<- markup.raw.block.markdown |^^^^^^^ markup.raw.block.markdown

Footnotes

  1. And that's the footnote. |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.link.reference.def.footnote.markdown-extra |^ punctuation.definition.reference.begin.markdown | ^^ entity.name.reference.link.markdown | ^ punctuation.definition.reference.end.markdown | ^ punctuation.separator.key-value.markdown 2 3 4 5 6 7 8