1178 lines
28 KiB
Text
1178 lines
28 KiB
Text
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>fileTypes</key>
|
|
<array>
|
|
<string>mdown</string>
|
|
<string>markdown</string>
|
|
<string>markdn</string>
|
|
<string>md</string>
|
|
</array>
|
|
<key>foldingStartMarker</key>
|
|
<string>(?x)
|
|
(<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)\b.*?>
|
|
|<!--(?!.*-->)
|
|
|\{\s*($|\?>\s*$|//|/\*(.*\*/\s*$|(?!.*?\*/)))
|
|
)</string>
|
|
<key>foldingStopMarker</key>
|
|
<string>(?x)
|
|
(</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)>
|
|
|^\s*-->
|
|
|(^|\s)\}
|
|
)</string>
|
|
<key>keyEquivalent</key>
|
|
<string>^~M</string>
|
|
<key>name</key>
|
|
<string>Markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>(?x)^
|
|
(?= [ ]{,3}>.
|
|
| ([ ]{4}|\t)(?!$)
|
|
| [#]{1,6}\s*+
|
|
| [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$
|
|
)</string>
|
|
<key>comment</key>
|
|
<string>
|
|
We could also use an empty end match and set
|
|
applyEndPatternLast, but then we must be sure that the begin
|
|
pattern will only match stuff matched by the sub-patterns.
|
|
</string>
|
|
<key>end</key>
|
|
<string>(?x)^
|
|
(?! [ ]{,3}>.
|
|
| ([ ]{4}|\t)
|
|
| [#]{1,6}\s*+
|
|
| [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$
|
|
)</string>
|
|
<key>name</key>
|
|
<string>meta.block-level.markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#block_quote</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#block_raw</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#heading</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#separator</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>^[ ]{0,3}([*+-])(?=\s)</string>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.list_item.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>end</key>
|
|
<string>^(?=\S)</string>
|
|
<key>name</key>
|
|
<string>markup.list.unnumbered.markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#list-paragraph</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>^[ ]{0,3}[0-9]+(\.)(?=\s)</string>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.list_item.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>end</key>
|
|
<string>^(?=\S)</string>
|
|
<key>name</key>
|
|
<string>markup.list.numbered.markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#list-paragraph</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>^(?=<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b)(?!.*?</\1>)</string>
|
|
<key>comment</key>
|
|
<string>
|
|
Markdown formatting is disabled inside block-level tags.
|
|
</string>
|
|
<key>end</key>
|
|
<string>(?<=^</\1>$\n)</string>
|
|
<key>name</key>
|
|
<string>meta.disable-markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>text.html.basic</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>^(?=<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b)</string>
|
|
<key>comment</key>
|
|
<string>Same rule but for one line disables.</string>
|
|
<key>end</key>
|
|
<string>$\n?</string>
|
|
<key>name</key>
|
|
<string>meta.disable-markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>text.html.basic</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.constant.markdown</string>
|
|
</dict>
|
|
<key>10</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.end.markdown</string>
|
|
</dict>
|
|
<key>11</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>string.other.link.description.title.markdown</string>
|
|
</dict>
|
|
<key>12</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.begin.markdown</string>
|
|
</dict>
|
|
<key>13</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.end.markdown</string>
|
|
</dict>
|
|
<key>2</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>constant.other.reference.link.markdown</string>
|
|
</dict>
|
|
<key>3</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.constant.markdown</string>
|
|
</dict>
|
|
<key>4</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.separator.key-value.markdown</string>
|
|
</dict>
|
|
<key>5</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.link.markdown</string>
|
|
</dict>
|
|
<key>6</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>markup.underline.link.markdown</string>
|
|
</dict>
|
|
<key>7</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.link.markdown</string>
|
|
</dict>
|
|
<key>8</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>string.other.link.description.title.markdown</string>
|
|
</dict>
|
|
<key>9</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.begin.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>match</key>
|
|
<string>(?x:
|
|
\s* # Leading whitespace
|
|
(\[)(.+?)(\])(:) # Reference name
|
|
[ \t]* # Optional whitespace
|
|
(<?)(\S+?)(>?) # The url
|
|
[ \t]* # Optional whitespace
|
|
(?:
|
|
((\().+?(\))) # Match title in quotes…
|
|
| ((").+?(")) # or in parens.
|
|
)? # Title is optional
|
|
\s* # Optional whitespace
|
|
$
|
|
)</string>
|
|
<key>name</key>
|
|
<string>meta.link.reference.def.markdown</string>
|
|
</dict>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>^(?=\S)(?![=-]{3,}(?=$))</string>
|
|
<key>end</key>
|
|
<string>^(?:\s*$|(?=[ ]{,3}>.))|(?=[ \t]*\n)(?<=^===|^====|=====|^---|^----|-----)[ \t]*\n|(?=^#)</string>
|
|
<key>name</key>
|
|
<string>meta.paragraph.markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#inline</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>text.html.basic</string>
|
|
</dict>
|
|
<dict>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.heading.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>match</key>
|
|
<string>^(={3,})(?=[ \t]*$)</string>
|
|
<key>name</key>
|
|
<string>markup.heading.1.markdown</string>
|
|
</dict>
|
|
<dict>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.heading.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>match</key>
|
|
<string>^(-{3,})(?=[ \t]*$)</string>
|
|
<key>name</key>
|
|
<string>markup.heading.2.markdown</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
</array>
|
|
<key>repository</key>
|
|
<dict>
|
|
<key>ampersand</key>
|
|
<dict>
|
|
<key>comment</key>
|
|
<string>
|
|
Markdown will convert this for us. We match it so that the
|
|
HTML grammar will not mark it up as invalid.
|
|
</string>
|
|
<key>match</key>
|
|
<string>&(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);)</string>
|
|
<key>name</key>
|
|
<string>meta.other.valid-ampersand.markdown</string>
|
|
</dict>
|
|
<key>block_quote</key>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>\G[ ]{,3}(>)(?!$)[ ]?</string>
|
|
<key>beginCaptures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.blockquote.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>comment</key>
|
|
<string>
|
|
We terminate the block quote when seeing an empty line, a
|
|
separator or a line with leading > characters. The latter is
|
|
to “reset” the quote level for quoted lines.
|
|
</string>
|
|
<key>end</key>
|
|
<string>(?x)^
|
|
(?= \s*$
|
|
| [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$
|
|
| [ ]{,3}>.
|
|
)</string>
|
|
<key>name</key>
|
|
<string>markup.quote.markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>(?x)\G
|
|
(?= [ ]{,3}>.
|
|
)</string>
|
|
<key>end</key>
|
|
<string>^</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#block_quote</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>applyEndPatternLast</key>
|
|
<integer>1</integer>
|
|
<key>begin</key>
|
|
<string>(?x)\G
|
|
(?= ([ ]{4}|\t)
|
|
| [#]{1,6}\s*+
|
|
| [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$
|
|
)</string>
|
|
<key>end</key>
|
|
<string>^</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#block_raw</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#heading</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#separator</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>(?x)\G
|
|
(?! $
|
|
| [ ]{,3}>.
|
|
| ([ ]{4}|\t)
|
|
| [#]{1,6}\s*+
|
|
| [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$
|
|
)</string>
|
|
<key>end</key>
|
|
<string>$|(?<=\n)</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#inline</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<key>block_raw</key>
|
|
<dict>
|
|
<key>match</key>
|
|
<string>\G([ ]{4}|\t).*$\n?</string>
|
|
<key>name</key>
|
|
<string>markup.raw.block.markdown</string>
|
|
</dict>
|
|
<key>bold</key>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>(?x)
|
|
(\*\*|__)(?=\S) # Open
|
|
(?=
|
|
(
|
|
<[^>]*+> # HTML tags
|
|
| (?<raw>`+)([^`]|(?!(?<!`)\k<raw>(?!`))`)*+\k<raw>
|
|
# Raw
|
|
| \\[\\`*_{}\[\]()#.!+\->]?+ # Escapes
|
|
| \[
|
|
(
|
|
(?<square> # Named group
|
|
[^\[\]\\] # Match most chars
|
|
| \\. # Escaped chars
|
|
| \[ \g<square>*+ \] # Nested brackets
|
|
)*+
|
|
\]
|
|
(
|
|
( # Reference Link
|
|
[ ]? # Optional space
|
|
\[[^\]]*+\] # Ref name
|
|
)
|
|
| ( # Inline Link
|
|
\( # Opening paren
|
|
[ \t]*+ # Optional whtiespace
|
|
<?(.*?)>? # URL
|
|
[ \t]*+ # Optional whtiespace
|
|
( # Optional Title
|
|
(?<title>['"])
|
|
(.*?)
|
|
\k<title>
|
|
)?
|
|
\)
|
|
)
|
|
)
|
|
)
|
|
| (?!(?<=\S)\1). # Everything besides
|
|
# style closer
|
|
)++
|
|
(?<=\S)\1 # Close
|
|
)
|
|
</string>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.bold.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>end</key>
|
|
<string>(?<=\S)(\1)</string>
|
|
<key>name</key>
|
|
<string>markup.bold.markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>applyEndPatternLast</key>
|
|
<integer>1</integer>
|
|
<key>begin</key>
|
|
<string>(?=<[^>]*?>)</string>
|
|
<key>end</key>
|
|
<string>(?<=>)</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>text.html.basic</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#escape</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#ampersand</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#bracket</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#raw</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#italic</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#image-inline</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-inline</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-inet</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-email</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#image-ref</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-ref-literal</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-ref</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<key>bracket</key>
|
|
<dict>
|
|
<key>comment</key>
|
|
<string>
|
|
Markdown will convert this for us. We match it so that the
|
|
HTML grammar will not mark it up as invalid.
|
|
</string>
|
|
<key>match</key>
|
|
<string><(?![a-z/?\$!])</string>
|
|
<key>name</key>
|
|
<string>meta.other.valid-bracket.markdown</string>
|
|
</dict>
|
|
<key>escape</key>
|
|
<dict>
|
|
<key>match</key>
|
|
<string>\\[-`*_#+.!(){}\[\]\\>]</string>
|
|
<key>name</key>
|
|
<string>constant.character.escape.markdown</string>
|
|
</dict>
|
|
<key>heading</key>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>\G(#{1,6})(?!#)\s*(?=\S)</string>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.heading.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>contentName</key>
|
|
<string>entity.name.section.markdown</string>
|
|
<key>end</key>
|
|
<string>\s*(#*)$\n?</string>
|
|
<key>name</key>
|
|
<string>markup.heading.markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#inline</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<key>image-inline</key>
|
|
<dict>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.begin.markdown</string>
|
|
</dict>
|
|
<key>10</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>string.other.link.description.title.markdown</string>
|
|
</dict>
|
|
<key>11</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.markdown</string>
|
|
</dict>
|
|
<key>12</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.markdown</string>
|
|
</dict>
|
|
<key>13</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>string.other.link.description.title.markdown</string>
|
|
</dict>
|
|
<key>14</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.markdown</string>
|
|
</dict>
|
|
<key>15</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.markdown</string>
|
|
</dict>
|
|
<key>16</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.metadata.markdown</string>
|
|
</dict>
|
|
<key>2</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>string.other.link.description.markdown</string>
|
|
</dict>
|
|
<key>3</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.end.markdown</string>
|
|
</dict>
|
|
<key>5</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>invalid.illegal.whitespace.markdown</string>
|
|
</dict>
|
|
<key>6</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.metadata.markdown</string>
|
|
</dict>
|
|
<key>7</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.link.markdown</string>
|
|
</dict>
|
|
<key>8</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>markup.underline.link.image.markdown</string>
|
|
</dict>
|
|
<key>9</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.link.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>match</key>
|
|
<string>(?x:
|
|
\! # Images start with !
|
|
(\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])
|
|
# Match the link text.
|
|
([ ])? # Space not allowed
|
|
(\() # Opening paren for url
|
|
(<?)(\S+?)(>?) # The url
|
|
[ \t]* # Optional whitespace
|
|
(?:
|
|
((\().+?(\))) # Match title in parens…
|
|
| ((").+?(")) # or in quotes.
|
|
)? # Title is optional
|
|
\s* # Optional whitespace
|
|
(\))
|
|
)</string>
|
|
<key>name</key>
|
|
<string>meta.image.inline.markdown</string>
|
|
</dict>
|
|
<key>image-ref</key>
|
|
<dict>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.begin.markdown</string>
|
|
</dict>
|
|
<key>2</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>string.other.link.description.markdown</string>
|
|
</dict>
|
|
<key>4</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.begin.markdown</string>
|
|
</dict>
|
|
<key>5</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.constant.markdown</string>
|
|
</dict>
|
|
<key>6</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>constant.other.reference.link.markdown</string>
|
|
</dict>
|
|
<key>7</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.constant.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>match</key>
|
|
<string>\!(\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])[ ]?(\[)(.*?)(\])</string>
|
|
<key>name</key>
|
|
<string>meta.image.reference.markdown</string>
|
|
</dict>
|
|
<key>inline</key>
|
|
<dict>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#escape</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#ampersand</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#bracket</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#raw</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#bold</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#italic</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#line-break</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#image-inline</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-inline</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-inet</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-email</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#image-ref</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-ref-literal</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-ref</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<key>italic</key>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>(?x)
|
|
(\*|_)(?=\S) # Open
|
|
(?=
|
|
(
|
|
<[^>]*+> # HTML tags
|
|
| (?<raw>`+)([^`]|(?!(?<!`)\k<raw>(?!`))`)*+\k<raw>
|
|
# Raw
|
|
| \\[\\`*_{}\[\]()#.!+\->]?+ # Escapes
|
|
| \[
|
|
(
|
|
(?<square> # Named group
|
|
[^\[\]\\] # Match most chars
|
|
| \\. # Escaped chars
|
|
| \[ \g<square>*+ \] # Nested brackets
|
|
)*+
|
|
\]
|
|
(
|
|
( # Reference Link
|
|
[ ]? # Optional space
|
|
\[[^\]]*+\] # Ref name
|
|
)
|
|
| ( # Inline Link
|
|
\( # Opening paren
|
|
[ \t]*+ # Optional whtiespace
|
|
<?(.*?)>? # URL
|
|
[ \t]*+ # Optional whtiespace
|
|
( # Optional Title
|
|
(?<title>['"])
|
|
(.*?)
|
|
\k<title>
|
|
)?
|
|
\)
|
|
)
|
|
)
|
|
)
|
|
| \1\1 # Must be bold closer
|
|
| (?!(?<=\S)\1). # Everything besides
|
|
# style closer
|
|
)++
|
|
(?<=\S)\1 # Close
|
|
)
|
|
</string>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.italic.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>end</key>
|
|
<string>(?<=\S)(\1)((?!\1)|(?=\1\1))</string>
|
|
<key>name</key>
|
|
<string>markup.italic.markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>applyEndPatternLast</key>
|
|
<integer>1</integer>
|
|
<key>begin</key>
|
|
<string>(?=<[^>]*?>)</string>
|
|
<key>end</key>
|
|
<string>(?<=>)</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>text.html.basic</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#escape</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#ampersand</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#bracket</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#raw</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#bold</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#image-inline</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-inline</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-inet</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-email</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#image-ref</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-ref-literal</string>
|
|
</dict>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#link-ref</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<key>line-break</key>
|
|
<dict>
|
|
<key>match</key>
|
|
<string> {2,}$</string>
|
|
<key>name</key>
|
|
<string>meta.dummy.line-break</string>
|
|
</dict>
|
|
<key>link-email</key>
|
|
<dict>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.link.markdown</string>
|
|
</dict>
|
|
<key>2</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>markup.underline.link.markdown</string>
|
|
</dict>
|
|
<key>4</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.link.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>match</key>
|
|
<string>(<)((?:mailto:)?[-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(>)</string>
|
|
<key>name</key>
|
|
<string>meta.link.email.lt-gt.markdown</string>
|
|
</dict>
|
|
<key>link-inet</key>
|
|
<dict>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.link.markdown</string>
|
|
</dict>
|
|
<key>2</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>markup.underline.link.markdown</string>
|
|
</dict>
|
|
<key>3</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.link.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>match</key>
|
|
<string>(<)((?:https?|ftp)://.*?)(>)</string>
|
|
<key>name</key>
|
|
<string>meta.link.inet.markdown</string>
|
|
</dict>
|
|
<key>link-inline</key>
|
|
<dict>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.begin.markdown</string>
|
|
</dict>
|
|
<key>10</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>string.other.link.description.title.markdown</string>
|
|
</dict>
|
|
<key>11</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.begin.markdown</string>
|
|
</dict>
|
|
<key>12</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.end.markdown</string>
|
|
</dict>
|
|
<key>13</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>string.other.link.description.title.markdown</string>
|
|
</dict>
|
|
<key>14</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.begin.markdown</string>
|
|
</dict>
|
|
<key>15</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.end.markdown</string>
|
|
</dict>
|
|
<key>16</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.metadata.markdown</string>
|
|
</dict>
|
|
<key>2</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>string.other.link.title.markdown</string>
|
|
</dict>
|
|
<key>4</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.end.markdown</string>
|
|
</dict>
|
|
<key>5</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>invalid.illegal.whitespace.markdown</string>
|
|
</dict>
|
|
<key>6</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.metadata.markdown</string>
|
|
</dict>
|
|
<key>7</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.link.markdown</string>
|
|
</dict>
|
|
<key>8</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>markup.underline.link.markdown</string>
|
|
</dict>
|
|
<key>9</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.link.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>match</key>
|
|
<string>(?x:
|
|
(\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])
|
|
# Match the link text.
|
|
([ ])? # Space not allowed
|
|
(\() # Opening paren for url
|
|
(<?)(.*?)(>?) # The url
|
|
[ \t]* # Optional whitespace
|
|
(?:
|
|
((\().+?(\))) # Match title in parens…
|
|
| ((").+?(")) # or in quotes.
|
|
)? # Title is optional
|
|
\s* # Optional whitespace
|
|
(\))
|
|
)</string>
|
|
<key>name</key>
|
|
<string>meta.link.inline.markdown</string>
|
|
</dict>
|
|
<key>link-ref</key>
|
|
<dict>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.begin.markdown</string>
|
|
</dict>
|
|
<key>2</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>string.other.link.title.markdown</string>
|
|
</dict>
|
|
<key>4</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.end.markdown</string>
|
|
</dict>
|
|
<key>5</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.constant.begin.markdown</string>
|
|
</dict>
|
|
<key>6</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>constant.other.reference.link.markdown</string>
|
|
</dict>
|
|
<key>7</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.constant.end.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>match</key>
|
|
<string>(\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])[ ]?(\[)([^\]]*+)(\])</string>
|
|
<key>name</key>
|
|
<string>meta.link.reference.markdown</string>
|
|
</dict>
|
|
<key>link-ref-literal</key>
|
|
<dict>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.begin.markdown</string>
|
|
</dict>
|
|
<key>2</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>string.other.link.title.markdown</string>
|
|
</dict>
|
|
<key>4</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.string.end.markdown</string>
|
|
</dict>
|
|
<key>5</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.constant.begin.markdown</string>
|
|
</dict>
|
|
<key>6</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.constant.end.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>match</key>
|
|
<string>(\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])[ ]?(\[)(\])</string>
|
|
<key>name</key>
|
|
<string>meta.link.reference.literal.markdown</string>
|
|
</dict>
|
|
<key>list-paragraph</key>
|
|
<dict>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>begin</key>
|
|
<string>\G\s+(?=\S)</string>
|
|
<key>end</key>
|
|
<string>^\s*$</string>
|
|
<key>name</key>
|
|
<string>meta.paragraph.list.markdown</string>
|
|
<key>patterns</key>
|
|
<array>
|
|
<dict>
|
|
<key>include</key>
|
|
<string>#inline</string>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
</array>
|
|
</dict>
|
|
<key>raw</key>
|
|
<dict>
|
|
<key>captures</key>
|
|
<dict>
|
|
<key>1</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.raw.markdown</string>
|
|
</dict>
|
|
<key>3</key>
|
|
<dict>
|
|
<key>name</key>
|
|
<string>punctuation.definition.raw.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>match</key>
|
|
<string>(`+)([^`]|(?!(?<!`)\1(?!`))`)*+(\1)</string>
|
|
<key>name</key>
|
|
<string>markup.raw.inline.markdown</string>
|
|
</dict>
|
|
<key>separator</key>
|
|
<dict>
|
|
<key>match</key>
|
|
<string>\G[ ]{,3}([-*_])([ ]{,2}\1){2,}[ \t]*$\n?</string>
|
|
<key>name</key>
|
|
<string>meta.separator.markdown</string>
|
|
</dict>
|
|
</dict>
|
|
<key>scopeName</key>
|
|
<string>text.html.markdown</string>
|
|
<key>uuid</key>
|
|
<string>0A1D9874-B448-11D9-BD50-000D93B6E43C</string>
|
|
</dict>
|
|
</plist>
|