fileTypes sd sdown snekdown keyEquivalent ^~M name Snekdown patterns include #frontMatter include #block repository block patterns include #separator include #heading include #blockquote include #lists include #fenced_code_block include #raw_block include #link-def include #html include #paragraph blockquote begin (^|\G)[ ]{0,3}(>) ? captures 2 name punctuation.definition.quote.begin.snekdown name markup.quote.snekdown patterns include #block while (^|\G)\s*(>) ? fenced_code_block_css begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(css|css.erb)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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|\{\.r.+?\})((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.php patterns include text.html.basic include source.php fenced_code_block_sql begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(sql|ddl|dml)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.dosbatch patterns include source.batchfile fenced_code_block_clojure begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(clj|cljs|clojure)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.cpp source.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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.groovy patterns include source.groovy fenced_code_block_pug begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(jade|pug)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.pug patterns include text.pug fenced_code_block_js begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(js|jsx|javascript|es6|mjs|cjs|\{\.js.+?\})((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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|json5|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.json patterns include source.json fenced_code_block_jsonc begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(jsonc)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.jsonc patterns include source.json.comments fenced_code_block_less begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(less)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.objc patterns include source.objc fenced_code_block_swift begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(swift)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.swift patterns include source.swift fenced_code_block_scss begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(scss)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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|\{\.python.+?\})((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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|\{\.rust.+?\})((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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|\{\.bash.+?\})((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown 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.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.fsharp patterns include source.fsharp fenced_code_block_dart begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(dart)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.dart patterns include source.dart fenced_code_block_handlebars begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(handlebars|hbs)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.handlebars patterns include text.html.handlebars fenced_code_block_markdown begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(markdown|md)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.snekdown patterns include text.html.snekdown fenced_code_block_log begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(log)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.log patterns include text.log fenced_code_block_erlang begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(erlang)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.erlang patterns include source.erlang fenced_code_block_elixir begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(elixir)((\s+|:|\{)[^`~]*)?$) name markup.fenced_code.block.snekdown end (^|\G)(\2|\s{0,3})(\3)\s*$ beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language.snekdown 5 name fenced_code.block.language.attributes.snekdown endCaptures 3 name punctuation.definition.snekdown patterns begin (^|\G)(\s*)(.*) while (^|\G)(?!\s*([`~]{3,})\s*$) contentName meta.embedded.block.elixir patterns include source.elixir fenced_code_block patterns 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_pug include #fenced_code_block_js include #fenced_code_block_js_regexp include #fenced_code_block_json include #fenced_code_block_jsonc include #fenced_code_block_less include #fenced_code_block_objc include #fenced_code_block_swift 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_dart include #fenced_code_block_handlebars include #fenced_code_block_snekdown include #fenced_code_block_log include #fenced_code_block_erlang include #fenced_code_block_elixir include #fenced_code_block_unknown fenced_code_block_unknown begin (^|\G)(\s*)(`{3,}|~{3,})\s*(?=([^`~]*)?$) beginCaptures 3 name punctuation.definition.snekdown 4 name fenced_code.block.language end (^|\G)(\2|\s{0,3})(\3)\s*$ endCaptures 3 name punctuation.definition.snekdown name markup.fenced_code.block.snekdown heading match (?:^|\G)[ ]{0,3}(#{1,6}\s+(.*?)(\s+#{1,6})?\s*)$ captures 1 patterns match (#{6})\s+(.*?)(?:\s+(#+))?\s*$ name heading.6.snekdown captures 1 name punctuation.definition.heading.snekdown 2 name entity.name.section.snekdown 3 name punctuation.definition.heading.snekdown match (#{5})\s+(.*?)(?:\s+(#+))?\s*$ name heading.5.snekdown captures 1 name punctuation.definition.heading.snekdown 2 name entity.name.section.snekdown 3 name punctuation.definition.heading.snekdown match (#{4})\s+(.*?)(?:\s+(#+))?\s*$ name heading.4.snekdown captures 1 name punctuation.definition.heading.snekdown 2 name entity.name.section.snekdown 3 name punctuation.definition.heading.snekdown match (#{3})\s+(.*?)(?:\s+(#+))?\s*$ name heading.3.snekdown captures 1 name punctuation.definition.heading.snekdown 2 name entity.name.section.snekdown 3 name punctuation.definition.heading.snekdown match (#{2})\s+(.*?)(?:\s+(#+))?\s*$ name heading.2.snekdown captures 1 name punctuation.definition.heading.snekdown 2 name entity.name.section.snekdown 3 name punctuation.definition.heading.snekdown match (#{1})\s+(.*?)(?:\s+(#+))?\s*$ name heading.1.snekdown captures 1 name punctuation.definition.heading.snekdown 2 name entity.name.section.snekdown 3 name punctuation.definition.heading.snekdown name markup.heading.snekdown patterns include #inline heading-setext patterns match ^(={3,})(?=[ \t]*$\n?) name markup.heading.setext.1.snekdown match ^(-{3,})(?=[ \t]*$\n?) name markup.heading.setext.2.snekdown html patterns begin (^|\G)\s*(<!--) captures 1 name punctuation.definition.comment.html 2 name punctuation.definition.comment.html end (-->) name comment.block.html begin (?i)(^|\G)\s*(?=<(script|style|pre)(\s|$|>)(?!.*?</(script|style|pre)>)) end (?i)(.*)((</)(script|style|pre)(>)) endCaptures 1 patterns include text.html.derivative 2 name meta.tag.structure.$4.end.html 3 name punctuation.definition.tag.begin.html 4 name entity.name.tag.html 5 name punctuation.definition.tag.end.html patterns begin (\s*|$) patterns include text.html.derivative while (?i)^(?!.*</(script|style|pre)>) begin (?i)(^|\G)\s*(?=</?[a-zA-Z]+[^\s/&gt;]*(\s|$|/?>)) patterns include text.html.derivative while ^(?!\s*$) begin (^|\G)\s*(?=(<[a-zA-Z0-9\-](/?>|\s.*?>)|</[a-zA-Z0-9\-]>)\s*$) patterns include text.html.derivative while ^(?!\s*$) link-def captures 1 name punctuation.definition.constant.snekdown 2 name constant.other.reference.link.snekdown 3 name punctuation.definition.constant.snekdown 4 name punctuation.separator.key-value.snekdown 5 name punctuation.definition.link.snekdown 6 name markup.underline.link.snekdown 7 name punctuation.definition.link.snekdown 8 name string.other.link.description.title.snekdown 9 name punctuation.definition.string.begin.snekdown 10 name punctuation.definition.string.end.snekdown 11 name string.other.link.description.title.snekdown 12 name punctuation.definition.string.begin.snekdown 13 name punctuation.definition.string.end.snekdown 14 name string.other.link.description.title.snekdown 15 name punctuation.definition.string.begin.snekdown 16 name punctuation.definition.string.end.snekdown match (?x) \s* # Leading whitespace (\[)([^]]+?)(\])(:) # Reference name [ \t]* # Optional whitespace (<?)(\S+?)(>?) # The url [ \t]* # Optional whitespace (?: ((\().+?(\))) # Match title in parens… | ((").+?(")) # or in double quotes… | ((').+?(')) # or in single quotes. )? # Title is optional \s* # Optional whitespace $ name meta.link.reference.def.snekdown list_paragraph begin (^|\G)(?=\S)(?![*+->]\s|[0-9]+\.\s) name meta.paragraph.snekdown patterns include #inline include text.html.derivative include #heading-setext while (^|\G)(?!\s*$|#|[ ]{0,3}([-*_>][ ]{2,}){3,}[ \t]*$\n?|[ ]{0,3}[*+->]|[ ]{0,3}[0-9]+\.) lists patterns begin (^|\G)([ ]{0,3})([*+-])([ \t]) beginCaptures 3 name punctuation.definition.list.begin.snekdown comment Currently does not support un-indented second lines. name markup.list.unnumbered.snekdown patterns include #block include #list_paragraph while ((^|\G)([ ]{2,4}|\t))|(^[ \t]*$) begin (^|\G)([ ]{0,3})([0-9]+\.)([ \t]) beginCaptures 3 name punctuation.definition.list.begin.snekdown name markup.list.numbered.snekdown patterns include #block include #list_paragraph while ((^|\G)([ ]{2,4}|\t))|(^[ \t]*$) paragraph begin (^|\G)[ ]{0,3}(?=\S) name meta.paragraph.snekdown patterns include #inline include text.html.derivative include #heading-setext while (^|\G)((?=\s*[-=]{3,}\s*$)|[ ]{4,}(?=\S)) raw_block begin (^|\G)([ ]{4}|\t) name markup.raw.block.snekdown while (^|\G)([ ]{4}|\t) separator match (^|\G)[ ]{0,3}([\*\-\_])([ ]{0,2}\2){2,}[ \t]*$\n? name meta.separator.snekdown frontMatter begin \A-{3}\s*$ contentName meta.embedded.block.frontmatter patterns include source.yaml end (^|\G)-{3}|\.{3}\s*$ 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 include #link-ref-shortcut ampersand comment snekdown 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.snekdown bold begin (?x) (?<open>(\*\*(?=\w)|(?<!\w)\*\*|(?<!\w)\b__))(?=\S) (?= ( <[^>]*+> # 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)\k<open>). # Everything besides # style closer )++ (?<=\S)(?=__\b|\*\*)\k<open> # Close ) captures 1 name punctuation.definition.bold.snekdown end (?<=\S)(\1) name markup.bold.snekdown patterns applyEndPatternLast 1 begin (?=<[^>]*?>) end (?<=>) patterns include text.html.derivative include #escape include #ampersand include #bracket include #raw include #bold include #italic include #image-inline include #link-inline include #link-inet include #link-email include #image-ref include #link-ref-literal include #link-ref include #link-ref-shortcut bracket comment snekdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid. match <(?![a-zA-Z/?\$!]) name meta.other.valid-bracket.snekdown escape match \\[-`*_#+.!(){}\[\]\\>] name constant.character.escape.snekdown image-inline captures 1 name punctuation.definition.string.begin.snekdown 2 name string.other.link.description.snekdown 4 name punctuation.definition.string.end.snekdown 5 name punctuation.definition.metadata.snekdown 6 name punctuation.definition.link.snekdown 7 name markup.underline.link.image.snekdown 8 name punctuation.definition.link.snekdown 9 name string.other.link.description.title.snekdown 10 name punctuation.definition.string.snekdown 11 name punctuation.definition.string.snekdown 12 name string.other.link.description.title.snekdown 13 name punctuation.definition.string.snekdown 14 name punctuation.definition.string.snekdown 15 name string.other.link.description.title.snekdown 16 name punctuation.definition.string.snekdown 17 name punctuation.definition.string.snekdown 18 name punctuation.definition.metadata.snekdown 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 double quotes… | ((').+?(')) # or in single quotes. )? # Title is optional \s* # Optional whitespace (\)) name meta.image.inline.snekdown image-ref captures 1 name punctuation.definition.string.begin.snekdown 2 name string.other.link.description.snekdown 4 name punctuation.definition.string.begin.snekdown 5 name punctuation.definition.constant.snekdown 6 name constant.other.reference.link.snekdown 7 name punctuation.definition.constant.snekdown match (\!\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])[ ]?(\[)(.*?)(\]) name meta.image.reference.snekdown italic begin (?x) (?<open>(\*(?=\w)|(?<!\w)\*|(?<!\w)\b_))(?=\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> )? \) ) ) ) | \k<open>\k<open> # Must be bold closer | (?!(?<=\S)\k<open>). # Everything besides # style closer )++ (?<=\S)(?=_\b|\*)\k<open> # Close ) captures 1 name punctuation.definition.italic.snekdown end (?<=\S)(\1)((?!\1)|(?=\1\1)) name markup.italic.snekdown patterns applyEndPatternLast 1 begin (?=<[^>]*?>) end (?<=>) patterns include text.html.derivative 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 include #link-ref-shortcut link-email captures 1 name punctuation.definition.link.snekdown 2 name markup.underline.link.snekdown 4 name punctuation.definition.link.snekdown match (<)((?:mailto:)?[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*)(>) name meta.link.email.lt-gt.snekdown link-inet captures 1 name punctuation.definition.link.snekdown 2 name markup.underline.link.snekdown 3 name punctuation.definition.link.snekdown match (<)((?:https?|ftp)://.*?)(>) name meta.link.inet.snekdown link-inline captures 1 name punctuation.definition.string.begin.snekdown 2 name string.other.link.title.snekdown 4 name punctuation.definition.string.end.snekdown 5 name punctuation.definition.metadata.snekdown 6 name punctuation.definition.link.snekdown 7 name markup.underline.link.snekdown 9 name punctuation.definition.link.snekdown 10 name string.other.link.description.title.snekdown 11 name punctuation.definition.string.begin.snekdown 12 name punctuation.definition.string.end.snekdown 13 name string.other.link.description.title.snekdown 14 name punctuation.definition.string.begin.snekdown 15 name punctuation.definition.string.end.snekdown 16 name string.other.link.description.title.snekdown 17 name punctuation.definition.string.begin.snekdown 18 name punctuation.definition.string.end.snekdown 19 name punctuation.definition.metadata.snekdown match (?x) (\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\]) # Match the link text. (\() # Opening paren for url (<?)((?<url>(?>[^\s()]+)|\(\g<url>*\))*)(>?) # The url [ \t]* # Optional whitespace (?: ((\().+?(\))) # Match title in parens… | ((").+?(")) # or in double quotes… | ((').+?(')) # or in single quotes. )? # Title is optional \s* # Optional whitespace (\)) name meta.link.inline.snekdown link-ref captures 1 name punctuation.definition.string.begin.snekdown 2 name string.other.link.title.snekdown 4 name punctuation.definition.string.end.snekdown 5 name punctuation.definition.constant.begin.snekdown 6 name constant.other.reference.link.snekdown 7 name punctuation.definition.constant.end.snekdown match (\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])(\[)([^\]]*+)(\]) name meta.link.reference.snekdown link-ref-literal captures 1 name punctuation.definition.string.begin.snekdown 2 name string.other.link.title.snekdown 4 name punctuation.definition.string.end.snekdown 5 name punctuation.definition.constant.begin.snekdown 6 name punctuation.definition.constant.end.snekdown match (\[)((?<square>[^\[\]\\]|\\.|\[\g<square>*+\])*+)(\])[ ]?(\[)(\]) name meta.link.reference.literal.snekdown link-ref-shortcut captures 1 name punctuation.definition.string.begin.snekdown 2 name string.other.link.title.snekdown 3 name punctuation.definition.string.end.snekdown match (\[)(\S+?)(\]) name meta.link.reference.snekdown raw captures 1 name punctuation.definition.raw.snekdown 3 name punctuation.definition.raw.snekdown match (`+)([^`]|(?!(?<!`)\1(?!`))`)*+(\1) name markup.inline.raw.string.snekdown scopeName text.html.snekdown uuid 0A1D9874-B448-11D9-BD50-000D93B6E43C