@wooorm/starry-night
Version:
Syntax highlighting, like GitHub
1,270 lines (1,269 loc) • 59.9 kB
JavaScript
/**
* @import {Grammar} from '@wooorm/starry-night'
*/
/** @type {Grammar} */
const grammar = {
extensions: [],
names: [],
patterns: [{include: '#frontMatter'}, {include: '#block'}],
repository: {
ampersand: {
match: '&(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);)',
name: 'meta.other.valid-ampersand.markdown'
},
block: {
patterns: [
{include: '#separator'},
{include: '#heading'},
{include: '#blockquote'},
{include: '#lists'},
{include: '#fenced_code_block'},
{include: '#raw_block'},
{include: '#link-def'},
{include: '#html'},
{include: '#inline'},
{include: '#heading-setext'},
{include: '#paragraphb'}
]
},
blockquote: {
begin: '(^)[ ]{0,3}(>) ?',
captures: {2: {name: 'punctuation.definition.quote.begin.markdown'}},
name: 'markup.quote.markdown',
patterns: [{include: '#block'}],
while: '(^|\\G)\\s*(>) ?'
},
bold: {
begin:
'(?x) (\\*\\*(?=\\w)|(?<!\\w)\\*\\*|(?<!\\w)\\b__)(?=\\S) (?=\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 whitespace\n <?(.*?)>? # URL\n [ \\t]*+ # Optional whitespace\n ( # Optional Title\n (?<title>[\'"])\n (.*?)\n \\k<title>\n )?\n \\)\n )\n )\n )\n | (?!(?<=\\S)\\1). # Everything besides\n # style closer\n )++\n (?<=\\S)(?=__\\b|\\*\\*)\\1 # Close\n)\n',
captures: {1: {name: 'punctuation.definition.bold.markdown'}},
end: '(?<=\\S)(\\1)',
name: 'markup.bold.markdown',
patterns: [
{
applyEndPatternLast: true,
begin: '(?=<[^>]*?>)',
end: '(?<=>)',
patterns: []
},
{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: {
match: '<(?![a-zA-Z/?\\$!])',
name: 'meta.other.valid-bracket.markdown'
},
escape: {
match: '\\\\[-`*_#+.!(){}\\[\\]\\\\>]',
name: 'constant.character.escape.markdown'
},
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_markdown'},
{include: '#fenced_code_block_log'},
{include: '#fenced_code_block_unknown'}
]
},
fenced_code_block_basic: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(html|htm|shtml|xhtml|inc|tmpl|tpl)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.html',
patterns: [{include: 'text.html.basic'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_c: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(c|h)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.c',
patterns: [{include: 'source.c'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_clojure: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(clj|cljs|clojure)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.clojure',
patterns: [{include: 'source.clojure'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_coffee: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(coffee|Cakefile|coffee.erb)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.coffee',
patterns: [{include: 'source.coffee'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_cpp: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(cpp|c\\+\\+|cxx)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.cpp source.cpp',
patterns: [{include: 'source.c++'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_csharp: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(cs|csharp|c#)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.csharp',
patterns: [{include: 'source.cs'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_css: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(css|css.erb)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.css',
patterns: [{include: 'source.css'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_dart: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(dart)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.dart',
patterns: [{include: 'source.dart'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_diff: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(patch|diff|rej)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.diff',
patterns: [{include: 'source.diff'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_dockerfile: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(dockerfile|Dockerfile)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.dockerfile',
patterns: [{include: 'source.dockerfile'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_dosbatch: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(bat|batch)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.dosbatch',
patterns: [{include: 'source.batchfile'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_fsharp: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(fs|fsharp|f#)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.fsharp',
patterns: [{include: 'source.fsharp'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_git_commit: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(COMMIT_EDITMSG|MERGE_MSG)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.git_commit',
patterns: [],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_git_rebase: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(git-rebase-todo)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.git_rebase',
patterns: [],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_go: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(go|golang)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.go',
patterns: [{include: 'source.go'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_groovy: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(groovy|gvy)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.groovy',
patterns: [{include: 'source.groovy'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_handlebars: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(handlebars|hbs)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.handlebars',
patterns: [{include: 'text.html.handlebars'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_ini: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(ini|conf)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.ini',
patterns: [{include: 'source.ini'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_java: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(java|bsh)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.java',
patterns: [{include: 'source.java'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_js: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(js|jsx|javascript|es6|mjs|cjs|\\{\\.js.+?\\})((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.javascript',
patterns: [{include: 'source.js'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_js_regexp: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(regexp)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.js_regexp',
patterns: [{include: 'source.js.regexp'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_json: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(json|json5|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.json',
patterns: [{include: 'source.json'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_jsonc: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(jsonc)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.jsonc',
patterns: [{include: 'source.json.comments'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_less: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(less)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.less',
patterns: [{include: 'source.css.less'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_log: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(log)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.log',
patterns: [],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_lua: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(lua)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.lua',
patterns: [{include: 'source.lua'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_makefile: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(Makefile|makefile|GNUmakefile|OCamlMakefile)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.makefile',
patterns: [{include: 'source.makefile'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_markdown: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(markdown|md)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.markdown',
patterns: [{include: 'source.gfm'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_objc: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|m|h)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.objc',
patterns: [{include: 'source.objc'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_perl: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.perl',
patterns: [{include: 'source.perl'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_perl6: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.perl6',
patterns: [{include: 'source.perl.6'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_php: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(php|php3|php4|php5|phpt|phtml|aw|ctp)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.php',
patterns: [{include: 'text.html.basic'}, {include: 'text.html.php'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_powershell: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(powershell|ps1|psm1|psd1)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.powershell',
patterns: [{include: 'source.powershell'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_pug: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(jade|pug)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.pug',
patterns: [{include: 'text.jade'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_python: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(python|py|py3|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gyp|gypi|\\{\\.python.+?\\})((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.python',
patterns: [{include: 'source.python'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_r: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(R|r|s|S|Rprofile|\\{\\.r.+?\\})((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.r',
patterns: [{include: 'source.r'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_regexp_python: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(re)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.regexp_python',
patterns: [{include: 'source.regexp.python'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_ruby: {
begin:
'(^)(\\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+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.ruby',
patterns: [{include: 'source.ruby'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_rust: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(rust|rs|\\{\\.rust.+?\\})((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.rust',
patterns: [{include: 'source.rust'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_scala: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(scala|sbt)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.scala',
patterns: [{include: 'source.scala'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_scss: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(scss)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.scss',
patterns: [{include: 'source.css.scss'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_shell: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\{\\.bash.+?\\})((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.shellscript',
patterns: [{include: 'source.shell'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_sql: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(sql|ddl|dml)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.sql',
patterns: [{include: 'source.sql'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_swift: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(swift)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.swift',
patterns: [{include: 'source.swift'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_ts: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(typescript|ts)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.typescript',
patterns: [{include: 'source.ts'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_tsx: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(tsx)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.typescriptreact',
patterns: [{include: 'source.tsx'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_unknown: {
begin: '(^)(\\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'
},
fenced_code_block_vs_net: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(vb)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.vs_net',
patterns: [],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_xml: {
begin:
'(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.xml',
patterns: [{include: 'text.xml'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_xsl: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(xsl|xslt)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.xsl',
patterns: [{include: 'text.xml.xsl'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
fenced_code_block_yaml: {
begin: '(^)(\\s*)(`{3,}|~{3,})\\s*(?i:(yaml|yml)((\\s+|:|\\{)[^`~]*)?$)',
beginCaptures: {
3: {name: 'punctuation.definition.markdown'},
4: {name: 'fenced_code.block.language.markdown'},
5: {name: 'fenced_code.block.language.attributes.markdown'}
},
end: '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*(?=-/|$)',
endCaptures: {3: {name: 'punctuation.definition.markdown'}},
name: 'markup.fenced_code.block.markdown',
patterns: [
{
begin: '(^|\\G)(\\s*)(.*)',
contentName: 'meta.embedded.block.yaml',
patterns: [{include: 'source.yaml'}],
while: '(^|\\G)(?!\\s*([`~]{3,})\\s*(-/|$))'
}
]
},
frontMatter: {
begin: '\\A-{3}\\s*$',
contentName: 'meta.embedded.block.frontmatter',
end: '(^|\\G)-{3}|\\.{3}\\s*$',
patterns: [{include: 'source.yaml'}]
},
heading: {
captures: {
1: {
patterns: [
{
captures: {
1: {name: 'punctuation.definition.heading.markdown'},
2: {name: 'entity.name.section.markdown'},
3: {name: 'punctuation.definition.heading.markdown'}
},
match: '(#{6})\\s+(?=[\\S[^#]])(.*?)\\s*(\\s+#+)?$\\n?',
name: 'heading.6.markdown'
},
{
captures: {
1: {name: 'punctuation.definition.heading.markdown'},
2: {name: 'entity.name.section.markdown'},
3: {name: 'punctuation.definition.heading.markdown'}
},
match: '(#{5})\\s+(?=[\\S[^#]])(.*?)\\s*(\\s+#+)?$\\n?',
name: 'heading.5.markdown'
},
{
captures: {
1: {name: 'punctuation.definition.heading.markdown'},
2: {name: 'entity.name.section.markdown'},
3: {name: 'punctuation.definition.heading.markdown'}
},
match: '(#{4})\\s+(?=[\\S[^#]])(.*?)\\s*(\\s+#+)?$\\n?',
name: 'heading.4.markdown'
},
{
captures: {
1: {name: 'punctuation.definition.heading.markdown'},
2: {name: 'entity.name.section.markdown'},
3: {name: 'punctuation.definition.heading.markdown'}
},
match: '(#{3})\\s+(?=[\\S[^#]])(.*?)\\s*(\\s+#+)?$\\n?',
name: 'heading.3.markdown'
},
{
captures: {
1: {name: 'punctuation.definition.heading.markdown'},
2: {name: 'entity.name.section.markdown'},
3: {name: 'punctuation.definition.heading.markdown'}
},
match: '(#{2})\\s+(?=[\\S[^#]])(.*?)\\s*(\\s+#+)?$\\n?',
name: 'heading.2.markdown'
},
{
captures: {
1: {name: 'punctuation.definition.heading.markdown'},
2: {name: 'entity.name.section.markdown'},
3: {name: 'punctuation.definition.heading.markdown'}
},
match: '(#{1})\\s+(?=[\\S[^#]])(.*?)\\s*(\\s+#+)?$\\n?',
name: 'heading.1.markdown'
}
]
}
},
match:
'(?:^|\\G)[ ]{0,3}((#{1,6})\\s+(?=[\\S[^#]]).*?\\s*(#{1,6})?)((?=-/)|$\\n?)',
name: 'markup.heading.markdown',
patterns: [{include: '#inline'}]
},
'heading-setext': {
patterns: [
{
match: '^(={3,})(?=[ \\t]*$\\n?)',
name: 'markup.heading.setext.1.markdown'
},
{
match: '^(-{3,})(?=[ \\t]*$\\n?)',
name: 'markup.heading.setext.2.markdown'
}
]
},
html: {
patterns: [
{
begin: '(^|\\G)\\s*(<!--)',
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: []},
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: [],
while: '(?i)^(?!.*</(script|style|pre)>)'
}
]
},
{
begin: '(?i)(^|\\G)\\s*(?=</?[a-zA-Z]+[^\\s/>]*(\\s|$|/?>))',
patterns: [],
while: '^(?!\\s*$)'
},
{
begin:
'(^|\\G)\\s*(?=(<[a-zA-Z0-9\\-](/?>|\\s.*?>)|</[a-zA-Z0-9\\-]>)\\s*$)',
patterns: [],
while: '^(?!\\s*$)'
}
]
},
'image-inline': {
captures: {
1: {name: 'punctuation.definition.string.begin.markdown'},
10: {name: 'punctuation.definition.string.markdown'},
11: {name: 'punctuation.definition.string.markdown'},
12: {name: 'string.other.link.description.title.markdown'},
13: {name: 'punctuation.definition.string.markdown'},
14: {name: 'punctuation.definition.string.markdown'},
15: {name: 'punctuation.definition.metadata.markdown'},
2: {name: 'string.other.link.description.markdown'},
4: {name: 'punctuation.definition.string.end.markdown'},
5: {name: 'punctuation.definition.metadata.markdown'},
6: {name: 'punctuation.definition.link.markdown'},
7: {name: 'markup.underline.link.image.markdown'},
8: {name: 'punctuation.definition.link.markdown'},
9: {name: 'string.other.link.description.title.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 quotes.\n )? # Title is optional\n \\s* # Optional whitespace\n (\\))\n',
name: 'meta.image.inline.markdown'
},
'image-ref': {
captures: {
1: {name: 'punctuation.definition.string.begin.markdown'},
2: {name: 'string.other.link.desc