/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ /* eslint-disable local/no-unexternalized-strings */ import { LanguageInput } from 'shiki/core'; // This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/markdown-latex-combined.tmLanguage.json // If you want to provide a fix or improvement, please create a pull request against the original repository. // Once accepted there, we are happy to receive an update request. // version: https://github.com/jlelong/vscode-latex-basics/commit/002278bd5484c278587a2aa3cafc1616538a20bc export const markdownLatexCombined: LanguageInput = { name: 'markdown_latex_combined', scopeName: 'text.tex.markdown_latex_combined', patterns: [ { include: 'text.tex.latex', }, { include: '#frontMatter', }, { include: '#block', }, ], repository: { $self: {}, $base: {}, 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.markdown', }, }, name: 'markup.quote.markdown', 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.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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|\\{\\.r.+?\\})((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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: 'source.php', }, ], }, ], }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, 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.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, 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.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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_pug: { 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, 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|dataviewjs|\\{\\.js.+?\\})((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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|json5|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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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_jsonc: { begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jsonc)((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, 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.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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_swift: { begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(swift)((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, 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.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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|\\{\\.python.+?\\})((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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_julia: { begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(julia|\\{\\.julia.+?\\})((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, patterns: [ { begin: '(^|\\G)(\\s*)(.*)', while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)', contentName: 'meta.embedded.block.julia', patterns: [ { include: 'source.julia', }, ], }, ], }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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|\\{\\.rust.+?\\})((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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|\\{\\.bash.+?\\})((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, 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_dart: { begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(dart)((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, 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.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, 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.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, patterns: [ { begin: '(^|\\G)(\\s*)(.*)', while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)', contentName: 'meta.embedded.block.markdown', patterns: [ { include: 'text.html.markdown', }, ], }, ], }, fenced_code_block_log: { begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(log)((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, 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.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, 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.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, patterns: [ { begin: '(^|\\G)(\\s*)(.*)', while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)', contentName: 'meta.embedded.block.elixir', patterns: [ { include: 'source.elixir', }, ], }, ], }, fenced_code_block_latex: { begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(latex|tex)((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, patterns: [ { begin: '(^|\\G)(\\s*)(.*)', while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)', contentName: 'meta.embedded.block.latex', patterns: [ { include: 'text.tex.latex', }, ], }, ], }, fenced_code_block_bibtex: { begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(bibtex)((\\s+|:|,|\\{|\\?)[^`~]*)?$)', name: 'markup.fenced_code.block.markdown', end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language.markdown', }, '5': { name: 'fenced_code.block.language.attributes.markdown', }, }, endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, patterns: [ { begin: '(^|\\G)(\\s*)(.*)', while: '(^|\\G)(?!\\s*([`~]{3,})\\s*$)', contentName: 'meta.embedded.block.bibtex', patterns: [ { include: 'text.bibtex', }, ], }, ], }, 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_julia', }, { 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_markdown', }, { include: '#fenced_code_block_log', }, { include: '#fenced_code_block_erlang', }, { include: '#fenced_code_block_elixir', }, { include: '#fenced_code_block_latex', }, { include: '#fenced_code_block_bibtex', }, { include: '#fenced_code_block_unknown', }, ], }, fenced_code_block_unknown: { begin: '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?=([^`~]*)?$)', beginCaptures: { '3': { name: 'punctuation.definition.markdown', }, '4': { name: 'fenced_code.block.language', }, }, end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$', endCaptures: { '3': { name: 'punctuation.definition.markdown', }, }, name: 'markup.fenced_code.block.markdown', }, heading: { match: '(?:^|\\G)[ ]{0,3}(#{1,6}\\s+(.*?)(\\s+#{1,6})?\\s*)$', captures: { '1': { patterns: [ { match: '(#{6})\\s+(.*?)(?:\\s+(#+))?\\s*$', name: 'heading.6.markdown', captures: { '1': { name: 'punctuation.definition.heading.markdown', }, '2': { name: 'entity.name.section.markdown', patterns: [ { include: '#inline', }, { include: 'text.html.derivative', }, ], }, '3': { name: 'punctuation.definition.heading.markdown', }, }, }, { match: '(#{5})\\s+(.*?)(?:\\s+(#+))?\\s*$', name: 'heading.5.markdown', captures: { '1': { name: 'punctuation.definition.heading.markdown', }, '2': { name: 'entity.name.section.markdown', patterns: [ { include: '#inline', }, { include: 'text.html.derivative', }, ], }, '3': { name: 'punctuation.definition.heading.markdown', }, }, }, { match: '(#{4})\\s+(.*?)(?:\\s+(#+))?\\s*$', name: 'heading.4.markdown', captures: { '1': { name: 'punctuation.definition.heading.markdown', }, '2': { name: 'entity.name.section.markdown', patterns: [ { include: '#inline', }, { include: 'text.html.derivative', }, ], }, '3': { name: 'punctuation.definition.heading.markdown', }, }, }, { match: '(#{3})\\s+(.*?)(?:\\s+(#+))?\\s*$', name: 'heading.3.markdown', captures: { '1': { name: 'punctuation.definition.heading.markdown', }, '2': { name: 'entity.name.section.markdown', patterns: [ { include: '#inline', }, { include: 'text.html.derivative', }, ], }, '3': { name: 'punctuation.definition.heading.markdown', }, }, }, { match: '(#{2})\\s+(.*?)(?:\\s+(#+))?\\s*$', name: 'heading.2.markdown', captures: { '1': { name: 'punctuation.definition.heading.markdown', }, '2': { name: 'entity.name.section.markdown', patterns: [ { include: '#inline', }, { include: 'text.html.derivative', }, ], }, '3': { name: 'punctuation.definition.heading.markdown', }, }, }, { match: '(#{1})\\s+(.*?)(?:\\s+(#+))?\\s*$', name: 'heading.1.markdown', captures: { '1': { name: 'punctuation.definition.heading.markdown', }, '2': { name: 'entity.name.section.markdown', patterns: [ { include: '#inline', }, { include: 'text.html.derivative', }, ], }, '3': { name: 'punctuation.definition.heading.markdown', }, }, }, ], }, }, 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*()', name: 'comment.block.html', }, { begin: '(?i)(^|\\G)\\s*(?=<(script|style|pre)(\\s|$|>)(?!.*?))', end: '(?i)(.*)(())', 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)^(?!.*)', }, ], }, { begin: '(?i)(^|\\G)\\s*(?=))', patterns: [ { include: 'text.html.derivative', }, ], while: '^(?!\\s*$)', }, { begin: '(^|\\G)\\s*(?=(<[a-zA-Z0-9\\-](/?>|\\s.*?>)|)\\s*$)', patterns: [ { include: 'text.html.derivative', }, ], while: '^(?!\\s*$)', }, ], }, 'link-def': { captures: { '1': { name: 'punctuation.definition.constant.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: 'markup.underline.link.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: 'string.other.link.description.title.markdown', }, '16': { name: 'punctuation.definition.string.begin.markdown', }, '17': { name: 'punctuation.definition.string.end.markdown', }, }, match: '(?x)\n \\s* # Leading whitespace\n (\\[)([^]]+?)(\\])(:) # Reference name\n [ \\t]* # Optional whitespace\n (?:(<)([^\\>]+?)(>)|(\\S+?)) # The url\n [ \\t]* # Optional whitespace\n (?:\n ((\\().+?(\\))) # Match title in parens…\n | ((").+?(")) # or in double quotes…\n | ((\').+?(\')) # or in single quotes.\n )? # Title is optional\n \\s* # Optional whitespace\n $\n', 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.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.markdown', }, }, // comment: 'Currently does not support un-indented second lines.', name: 'markup.list.unnumbered.markdown', 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.markdown', }, }, name: 'markup.list.numbered.markdown', patterns: [ { include: '#block', }, { include: '#list_paragraph', }, ], while: '((^|\\G)([ ]{2,4}|\\t))|(^[ \\t]*$)', }, ], }, paragraph: { begin: '(^|\\G)[ ]{0,3}(?=\\S)', name: 'meta.paragraph.markdown', 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.markdown', while: '(^|\\G)([ ]{4}|\\t)', }, separator: { match: '(^|\\G)[ ]{0,3}([\\*\\-\\_])([ ]{0,2}\\2){2,}[ \\t]*$\\n?', name: 'meta.separator.markdown', }, frontMatter: { begin: '\\A-{3}\\s*$', contentName: 'meta.embedded.block.frontmatter', patterns: [ { include: 'source.yaml', }, ], end: '(^|\\G)-{3}|\\.{3}\\s*$', }, inline: { patterns: [ { include: 'text.tex.latex', }, { include: '#ampersand', }, { include: '#bracket', }, { include: '#bold', }, { include: '#italic', }, { include: '#raw', }, { include: '#strikethrough', }, { 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: '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) (?(\\*\\*(?=\\w)|(?]*+> # HTML tags\n | (?`+)([^`]|(?!(?(?!`))`)*+\\k\n # Raw\n | \\\\[\\\\`*_{}\\[\\]()#.!+\\->]?+ # Escapes\n | \\[\n (\n (? # Named group\n [^\\[\\]\\\\] # Match most chars\n | \\\\. # Escaped chars\n | \\[ \\g*+ \\] # Nested brackets\n )*+\n \\]\n (\n ( # Reference Link\n [ ]? # Optional space\n \\[[^\\]]*+\\] # Ref name\n )\n | ( # Inline Link\n \\( # Opening paren\n [ \\t]*+ # Optional whitespace\n ? # URL\n [ \\t]*+ # Optional whitespace\n ( # Optional Title\n (?[\'"])\n (.*?)\n \\k<title>\n )?\n \\)\n )\n )\n )\n | (?!(?<=\\S)\\k<open>). # Everything besides\n # style closer\n )++\n (?<=\\S)(?=__\\b|\\*\\*)\\k<open> # Close\n)\n', captures: { '1': { name: 'punctuation.definition.bold.markdown', }, }, end: '(?<=\\S)(\\1)', name: 'markup.bold.markdown', patterns: [ { applyEndPatternLast: true, 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', }, { include: '#strikethrough', }, ], }, 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-zA-Z/?\\$!])', name: 'meta.other.valid-bracket.markdown', }, escape: { match: '\\\\[-`*_#+.!(){}\\[\\]\\\\>]', name: 'constant.character.escape.markdown', }, 'image-inline': { captures: { '1': { name: 'punctuation.definition.link.description.begin.markdown', }, '2': { name: 'string.other.link.description.markdown', }, '4': { name: 'punctuation.definition.link.description.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', }, '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: 'string.other.link.description.title.markdown', }, '16': { name: 'punctuation.definition.string.markdown', }, '17': { name: 'punctuation.definition.string.markdown', }, '18': { name: 'punctuation.definition.metadata.markdown', }, }, match: '(?x)\n (\\!\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])\n # Match the link text.\n (\\() # Opening paren for url\n (<?)(\\S+?)(>?) # The url\n [ \\t]* # Optional whitespace\n (?:\n ((\\().+?(\\))) # Match title in parens…\n | ((").+?(")) # or in double quotes…\n | ((\').+?(\')) # or in single quotes.\n )? # Title is optional\n \\s* # Optional whitespace\n (\\))\n', name: 'meta.image.inline.markdown', }, 'image-ref': { captures: { '1': { name: 'punctuation.definition.link.description.begin.markdown', }, '2': { name: 'string.other.link.description.markdown', }, '4': { name: 'punctuation.definition.link.description.end.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) (?<open>(\\*(?=\\w)|(?<!\\w)\\*|(?<!\\w)\\b_))(?=\\S) # Open\n (?=\n (\n <[^>]*+> # HTML tags\n | (?<raw>`+)([^`]|(?!(?<!`)\\k<raw>(?!`))`)*+\\k<raw>\n # Raw\n | \\\\[\\\\`*_{}\\[\\]()#.!+\\->]?+ # Escapes\n | \\[\n (\n (?<square> # Named group\n [^\\[\\]\\\\] # Match most chars\n | \\\\. # Escaped chars\n | \\[ \\g<square>*+ \\] # Nested brackets\n )*+\n \\]\n (\n ( # Reference Link\n [ ]? # Optional space\n \\[[^\\]]*+\\] # Ref name\n )\n | ( # Inline Link\n \\( # Opening paren\n [ \\t]*+ # Optional whtiespace\n <?(.*?)>? # URL\n [ \\t]*+ # Optional whtiespace\n ( # Optional Title\n (?<title>[\'"])\n (.*?)\n \\k<title>\n )?\n \\)\n )\n )\n )\n | \\k<open>\\k<open> # Must be bold closer\n | (?!(?<=\\S)\\k<open>). # Everything besides\n # style closer\n )++\n (?<=\\S)(?=_\\b|\\*)\\k<open> # Close\n )\n', captures: { '1': { name: 'punctuation.definition.italic.markdown', }, }, end: '(?<=\\S)(\\1)((?!\\1)|(?=\\1\\1))', name: 'markup.italic.markdown', patterns: [ { applyEndPatternLast: true, 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', }, { include: '#strikethrough', }, ], }, 'link-email': { captures: { '1': { name: 'punctuation.definition.link.markdown', }, '2': { name: 'markup.underline.link.markdown', }, '4': { name: 'punctuation.definition.link.markdown', }, }, match: "(<)((?:mailto:)?[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)(>)", 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.link.title.begin.markdown', }, '2': { name: 'string.other.link.title.markdown', patterns: [ { include: '#raw', }, { include: '#bold', }, { include: '#italic', }, { include: '#strikethrough', }, { include: '#image-inline', }, ], }, '4': { name: 'punctuation.definition.link.title.end.markdown', }, '5': { name: 'punctuation.definition.metadata.markdown', }, '7': { name: 'punctuation.definition.link.markdown', }, '8': { name: 'markup.underline.link.markdown', }, '9': { name: 'punctuation.definition.link.markdown', }, '10': { name: 'markup.underline.link.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: 'string.other.link.description.title.markdown', }, '16': { name: 'punctuation.definition.string.begin.markdown', }, '17': { name: 'punctuation.definition.string.end.markdown', }, '18': { name: 'string.other.link.description.title.markdown', }, '19': { name: 'punctuation.definition.string.begin.markdown', }, '20': { name: 'punctuation.definition.string.end.markdown', }, '21': { name: 'punctuation.definition.metadata.markdown', }, }, match: '(?x)\n (\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])\n # Match the link text.\n (\\() # Opening paren for url\n # The url\n [ \\t]*\n (\n (<)([^<>\\n]*)(>)\n | ((?<url>(?>[^\\s()]+)|\\(\\g<url>*\\))*)\n )\n [ \\t]*\n # The title \n (?:\n ((\\()[^()]*(\\))) # Match title in parens…\n | ((")[^"]*(")) # or in double quotes…\n | ((\')[^\']*(\')) # or in single quotes.\n )? # Title is optional\n \\s* # Optional whitespace\n (\\))\n', name: 'meta.link.inline.markdown', }, 'link-ref': { captures: { '1': { name: 'punctuation.definition.link.title.begin.markdown', }, '2': { name: 'string.other.link.title.markdown', patterns: [ { include: '#raw', }, { include: '#bold', }, { include: '#italic', }, { include: '#strikethrough', }, { include: '#image-inline', }, ], }, '4': { name: 'punctuation.definition.link.title.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.link.title.begin.markdown', }, '2': { name: 'string.other.link.title.markdown', }, '4': { name: 'punctuation.definition.link.title.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', }, 'link-ref-shortcut': { captures: { '1': { name: 'punctuation.definition.link.title.begin.markdown', }, '2': { name: 'string.other.link.title.markdown', }, '3': { name: 'punctuation.definition.link.title.end.markdown', }, }, match: '(?<![\\]\\\\])(\\[)(\\S+?)(\\])', name: 'meta.link.reference.markdown', }, raw: { captures: { '1': { name: 'punctuation.definition.raw.markdown', }, '3': { name: 'punctuation.definition.raw.markdown', }, }, match: '(`+)((?:[^`]|(?!(?<!`)\\1(?!`))`)*+)(\\1)', name: 'markup.inline.raw.string.markdown', }, strikethrough: { captures: { '1': { name: 'punctuation.definition.strikethrough.markdown', }, '2': { patterns: [ { applyEndPatternLast: true, 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', }, ], }, '3': { name: 'punctuation.definition.strikethrough.markdown', }, }, match: '(?<!\\\\)(~{2,})((?:[^~]|(?!(?<![~\\\\])\\1(?!~))~)*+)(\\1)', name: 'markup.strikethrough.markdown', }, }, };