fileTypes md mdown markdown markdn keyEquivalent ^~M name Markdown patterns include #frontMatter include #block repository block patterns include #separator include #heading include #blockquote include #lists include #fenced_code_block_css include #fenced_code_block_basic include #fenced_code_block_ini include #fenced_code_block_java include #fenced_code_block_lua include #fenced_code_block_makefile include #fenced_code_block_perl include #fenced_code_block_r include #fenced_code_block_ruby include #fenced_code_block_php include #fenced_code_block_sql include #fenced_code_block_vs_net include #fenced_code_block_xml include #fenced_code_block_xsl include #fenced_code_block_yaml include #fenced_code_block_dosbatch include #fenced_code_block_clojure include #fenced_code_block_coffee include #fenced_code_block_c include #fenced_code_block_cpp include #fenced_code_block_diff include #fenced_code_block_dockerfile include #fenced_code_block_git_commit include #fenced_code_block_git_rebase include #fenced_code_block_go include #fenced_code_block_groovy include #fenced_code_block_jade include #fenced_code_block_js include #fenced_code_block_js_regexp include #fenced_code_block_json include #fenced_code_block_less include #fenced_code_block_objc include #fenced_code_block_scss include #fenced_code_block_perl6 include #fenced_code_block_powershell include #fenced_code_block_python include #fenced_code_block_regexp_python include #fenced_code_block_rust include #fenced_code_block_scala include #fenced_code_block_shell include #fenced_code_block_ts include #fenced_code_block_tsx include #fenced_code_block_csharp include #fenced_code_block_fsharp include #fenced_code_block_unknown include #raw_block include #link-def include #html include #paragraph repository blockquote begin (^|\G)[ ]{0,3}(>) ? captures 2 name beginning.punctuation.definition.quote.markdown name markup.quote.markdown patterns include #block while (^|\G)\s*(>) ? heading begin (?:^|\G)[ ]{0,3}(#{1,6})\s*(?=[\S[^#]]) captures 1 name punctuation.definition.heading.markdown contentName entity.name.section.markdown end \s*(#{1,6})?$\n? name markup.heading.markdown patterns include #inline heading-setext patterns match ^(={3,})(?=[ \t]*$\n?) name markup.heading.setext.1.markdown match ^(-{3,})(?=[ \t]*$\n?) name markup.heading.setext.2.markdown html patterns begin (^|\G)\s*(<!--) end (-->) name comment.block.html captures 1 name punctuation.definition.comment.html 2 name punctuation.definition.comment.html begin (^|\G)\s*(?=<(script|style|pre)(\s|$|>)(?!.*?</(script|style|pre)>)) patterns begin (\s*|$) patterns include text.html.basic while ^(?!.*</(script|style|pre)>) end (?=.*</(script|style|pre)>) begin (^|\G)\s*(?=</?(address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(\s|$|/?>)) patterns include text.html.basic while ^(?!\s*$) begin (^|\G)\s*(?=(<[a-zA-Z0-9\-](/?>|\s.*?>)|</[a-zA-Z0-9\-]>)\s*$) patterns include text.html.basic while ^(?!\s*$) link-def captures 1 name punctuation.definition.constant.markdown 10 name punctuation.definition.string.end.markdown 11 name string.other.link.description.title.markdown 12 name punctuation.definition.string.begin.markdown 13 name punctuation.definition.string.end.markdown 2 name constant.other.reference.link.markdown 3 name punctuation.definition.constant.markdown 4 name punctuation.separator.key-value.markdown 5 name punctuation.definition.link.markdown 6 name markup.underline.link.markdown 7 name punctuation.definition.link.markdown 8 name string.other.link.description.title.markdown 9 name punctuation.definition.string.begin.markdown match ^(?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 $ ) name meta.link.reference.def.markdown list_paragraph begin (^|\G)(?=\S)(?![*+->]\s|[0-9]+\.\s) name meta.paragraph.markdown patterns include #inline include text.html.basic include #heading-setext while (^|\G)(?!\s*$|#|[ ]{0,3}([-*_>][ ]{2,}){3,}[ \t]*$\n?|[ ]{0,3}[*+->]|[ ]{0,3}[0-9]+\.) lists patterns begin (^|\G)([ ]{0,3})([*+-])([ ]{1,3}|\t) beginCaptures 3 name beginning.punctuation.definition.list.markdown comment Currently does not support un-indented second lines. name markup.list.unnumbered.markdown patterns include #list_paragraph include #block while ((^|\G)([ ]{4}|\t))|(^[ \t]*$) begin (^|\G)([ ]{0,3})([0-9]+\.)([ ]{1,3}|\t) beginCaptures 3 name beginning.punctuation.definition.list.markdown name markup.list.numbered.markdown patterns include #list_paragraph include #block while ((^|\G)([ ]{4}|\t))|(^[ \t]*$) paragraph begin (^|\G)[ ]{0,3}(?=\S) name meta.paragraph.markdown patterns include #inline include text.html.basic include #heading-setext while (^|\G)((?=\s*[-=]{3,}\s*$)|[ ]{4,}(?=\S)) fenced_code_block_css begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(css|css.erb)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.css patterns include source.css fenced_code_block_basic begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(html|htm|shtml|xhtml|inc|tmpl|tpl)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.html patterns include text.html.basic fenced_code_block_ini begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(ini|conf)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.ini patterns include source.ini fenced_code_block_java begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(java|bsh)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.java patterns include source.java fenced_code_block_lua begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(lua)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.lua patterns include source.lua fenced_code_block_makefile begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(Makefile|makefile|GNUmakefile|OCamlMakefile)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.makefile patterns include source.makefile fenced_code_block_perl begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.perl patterns include source.perl fenced_code_block_r begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(R|r|s|S|Rprofile)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.r patterns include source.r fenced_code_block_ruby begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(ruby|rb|rbx|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.ruby patterns include source.ruby fenced_code_block_php begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(php|php3|php4|php5|phpt|phtml|aw|ctp)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.php patterns include text.html.basic include text.html.php#language fenced_code_block_sql begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(sql|ddl|dml)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.sql patterns include source.sql fenced_code_block_vs_net begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(vb)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.vs_net patterns include source.asp.vb.net fenced_code_block_xml begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.xml patterns include text.xml fenced_code_block_xsl begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(xsl|xslt)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.xsl patterns include text.xml.xsl fenced_code_block_yaml begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(yaml|yml)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.yaml patterns include source.yaml fenced_code_block_dosbatch begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(bat|batch)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.dosbatch patterns include source.dosbatch fenced_code_block_clojure begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(clj|cljs|clojure)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.clojure patterns include source.clojure fenced_code_block_coffee begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(coffee|Cakefile|coffee.erb)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.coffee patterns include source.coffee fenced_code_block_c begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(c|h)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.c patterns include source.c fenced_code_block_cpp begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(cpp|c\+\+|cxx)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.cpp patterns include source.cpp fenced_code_block_diff begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(patch|diff|rej)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.diff patterns include source.diff fenced_code_block_dockerfile begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(dockerfile|Dockerfile)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.dockerfile patterns include source.dockerfile fenced_code_block_git_commit begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(COMMIT_EDITMSG|MERGE_MSG)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.git_commit patterns include text.git-commit fenced_code_block_git_rebase begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(git-rebase-todo)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.git_rebase patterns include text.git-rebase fenced_code_block_go begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(go|golang)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.go patterns include source.go fenced_code_block_groovy begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(groovy|gvy)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.groovy patterns include source.groovy fenced_code_block_jade begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(jade|pug)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.jade patterns include text.jade fenced_code_block_js begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(js|jsx|javascript|es6|mjs)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.javascript patterns include source.js fenced_code_block_js_regexp begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(regexp)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.js_regexp patterns include source.js.regexp fenced_code_block_json begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(json|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.json patterns include source.json fenced_code_block_less begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(less)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.less patterns include source.css.less fenced_code_block_objc begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(objectivec|objective-c|mm|objc|obj-c|m|h)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.objc patterns include source.objc fenced_code_block_scss begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(scss)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.scss patterns include source.css.scss fenced_code_block_perl6 begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(perl6|p6|pl6|pm6|nqp)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.perl6 patterns include source.perl.6 fenced_code_block_powershell begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(powershell|ps1|psm1|psd1)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.powershell patterns include source.powershell fenced_code_block_python begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(python|py|py3|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gyp|gypi)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.python patterns include source.python fenced_code_block_regexp_python begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(re)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.regexp_python patterns include source.regexp.python fenced_code_block_rust begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(rust|rs)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.rust patterns include source.rust fenced_code_block_scala begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(scala|sbt)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.scala patterns include source.scala fenced_code_block_shell begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.shellscript patterns include source.shell fenced_code_block_ts begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(typescript|ts)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.typescript patterns include source.ts fenced_code_block_tsx begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(tsx)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.typescriptreact patterns include source.tsx fenced_code_block_csharp begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(cs|csharp|c#)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.csharp patterns include source.cs fenced_code_block_fsharp begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(fs|fsharp|f#)(\s+[^`~]*)?$) name markup.fenced_code.block.markdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 5 name fenced_code.block.language 6 name fenced_code.block.language.attributes endCaptures 3 name punctuation.definition.markdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.fsharp patterns include source.fsharp fenced_code_block_unknown name markup.fenced_code.block.markdown begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?=([^`~]*)?$) end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.markdown 4 name fenced_code.block.language endCaptures 3 name punctuation.definition.markdown raw_block begin (^|\G)([ ]{4}|\t) name markup.raw.block.markdown while (^|\G)([ ]{4}|\t) separator match (^|\G)[ ]{0,3}([*-_])([ ]{0,2}\2){2,}[ \t]*$\n? name meta.separator.markdown inline patterns include #ampersand include #bracket include #bold include #italic include #raw include #escape include #image-inline include #image-ref include #link-email include #link-inet include #link-inline include #link-ref include #link-ref-literal repository ampersand comment Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid. match &(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);) name meta.other.valid-ampersand.markdown bold begin (?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 whitespace <?(.*?)>? # URL [ \t]*+ # Optional whitespace ( # Optional Title (?<title>['"]) (.*?) \k<title> )? \) ) ) ) | (?!(?<=\S)\1). # Everything besides # style closer )++ (?<=\S)\1 # Close ) captures 1 name punctuation.definition.bold.markdown end (?<=\S)(\1) name markup.bold.markdown patterns applyEndPatternLast 1 begin (?=<[^>]*?>) end (?<=>) patterns include text.html.basic include #escape include #ampersand include #bracket include #raw include #italic include #image-inline include #link-inline include #link-inet include #link-email include #image-ref include #link-ref-literal include #link-ref bracket comment Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid. match <(?![a-z/?\$!]) name meta.other.valid-bracket.markdown escape match \\[-`*_#+.!(){}\[\]\\>] name constant.character.escape.markdown image-inline captures 1 name punctuation.definition.string.begin.markdown 9 name string.other.link.description.title.markdown 10 name punctuation.definition.string.markdown 11 name punctuation.definition.string.markdown 12 name string.other.link.description.title.markdown 13 name punctuation.definition.string.markdown 14 name punctuation.definition.string.markdown 15 name punctuation.definition.metadata.markdown 2 name string.other.link.description.markdown 4 name punctuation.definition.string.end.markdown 5 name punctuation.definition.metadata.markdown 6 name punctuation.definition.link.markdown 7 name markup.underline.link.image.markdown 8 name punctuation.definition.link.markdown match (?x: (\!\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\]) # Match the link text. (\() # Opening paren for url (<?)(\S+?)(>?) # The url [ \t]* # Optional whitespace (?: ((\().+?(\))) # Match title in parens… | ((").+?(")) # or in quotes. )? # Title is optional \s* # Optional whitespace (\)) ) name meta.image.inline.markdown image-ref captures 1 name punctuation.definition.string.begin.markdown 2 name string.other.link.description.markdown 4 name punctuation.definition.string.begin.markdown 5 name punctuation.definition.constant.markdown 6 name constant.other.reference.link.markdown 7 name punctuation.definition.constant.markdown match (\!\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])[ ]?(\[)(.*?)(\]) name meta.image.reference.markdown italic begin (?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 ) captures 1 name punctuation.definition.italic.markdown end (?<=\S)(\1)((?!\1)|(?=\1\1)) name markup.italic.markdown patterns applyEndPatternLast 1 begin (?=<[^>]*?>) end (?<=>) patterns include text.html.basic include #escape include #ampersand include #bracket include #raw include #bold include #image-inline include #link-inline include #link-inet include #link-email include #image-ref include #link-ref-literal include #link-ref link-email captures 1 name punctuation.definition.link.markdown 2 name markup.underline.link.markdown 4 name punctuation.definition.link.markdown match (<)((?:mailto:)?[-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(>) name meta.link.email.lt-gt.markdown link-inet captures 1 name punctuation.definition.link.markdown 2 name markup.underline.link.markdown 3 name punctuation.definition.link.markdown match (<)((?:https?|ftp)://.*?)(>) name meta.link.inet.markdown link-inline captures 1 name punctuation.definition.string.begin.markdown 9 name string.other.link.description.title.markdown 10 name punctuation.definition.string.begin.markdown 11 name punctuation.definition.string.end.markdown 12 name string.other.link.description.title.markdown 13 name punctuation.definition.string.begin.markdown 14 name punctuation.definition.string.end.markdown 15 name punctuation.definition.metadata.markdown 2 name string.other.link.title.markdown 4 name punctuation.definition.string.end.markdown 5 name punctuation.definition.metadata.markdown 6 name punctuation.definition.link.markdown 7 name markup.underline.link.markdown 8 name punctuation.definition.link.markdown match (?x: (\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\]) # Match the link text. (\() # Opening paren for url (<?)(.*?)(>?) # The url [ \t]* # Optional whitespace (?: ((\().+?(\))) # Match title in parens… | ((").+?(")) # or in quotes. )? # Title is optional \s* # Optional whitespace (\)) ) name meta.link.inline.markdown link-ref captures 1 name punctuation.definition.string.begin.markdown 2 name string.other.link.title.markdown 4 name punctuation.definition.string.end.markdown 5 name punctuation.definition.constant.begin.markdown 6 name constant.other.reference.link.markdown 7 name punctuation.definition.constant.end.markdown match (\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])(\[)([^\]]*+)(\]) name meta.link.reference.markdown link-ref-literal captures 1 name punctuation.definition.string.begin.markdown 2 name string.other.link.title.markdown 4 name punctuation.definition.string.end.markdown 5 name punctuation.definition.constant.begin.markdown 6 name punctuation.definition.constant.end.markdown match (\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])[ ]?(\[)(\]) name meta.link.reference.literal.markdown raw captures 1 name punctuation.definition.raw.markdown 3 name punctuation.definition.raw.markdown match (`+)([^`]|(?!(?<!`)\1(?!`))`)*+(\1) name markup.inline.raw.string.markdown frontMatter contentName meta.embedded.block.frontmatter begin \A-{3}\s*$ while ^(?!(-{3}|\.{3})\s*$) patterns include source.yaml scopeName text.html.markdown uuid 0A1D9874-B448-11D9-BD50-000D93B6E43C