tm-grammars
Version:
Collecton of TextMate grammars in JSON
337 lines (336 loc) • 8.55 kB
JSON
{
"displayName": "BibTeX",
"name": "bibtex",
"patterns": [
{
"captures": {
"0": {
"name": "punctuation.definition.comment.bibtex"
}
},
"match": "@(?i:comment)(?=[({\\s])",
"name": "comment.block.at-sign.bibtex"
},
{
"include": "#preamble"
},
{
"include": "#string"
},
{
"include": "#entry"
},
{
"begin": "[^\\n@]",
"end": "(?=@)",
"name": "comment.block.bibtex"
}
],
"repository": {
"entry": {
"patterns": [
{
"begin": "((@)[-!$\\&*+./:;<>-z|~][!$\\&*+\\--<>-z|~]*)\\s*(\\{)\\s*([^,}\\s]*)",
"beginCaptures": {
"1": {
"name": "keyword.other.entry-type.bibtex"
},
"2": {
"name": "punctuation.definition.keyword.bibtex"
},
"3": {
"name": "punctuation.section.entry.begin.bibtex"
},
"4": {
"name": "entity.name.type.entry-key.bibtex"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.section.entry.end.bibtex"
}
},
"name": "meta.entry.braces.bibtex",
"patterns": [
{
"begin": "([-!$\\&*+./:;<>-z|~][!$\\&*+\\--<>-z|~]*)\\s*(=)",
"beginCaptures": {
"1": {
"name": "support.function.key.bibtex"
},
"2": {
"name": "punctuation.separator.key-value.bibtex"
}
},
"end": "(?=[,}])",
"name": "meta.key-assignment.bibtex",
"patterns": [
{
"include": "#field_value"
}
]
}
]
},
{
"begin": "((@)[-!$\\&*+./:;<>-z|~][!$\\&*+\\--<>-z|~]*)\\s*(\\()\\s*([^,\\s]*)",
"beginCaptures": {
"1": {
"name": "keyword.other.entry-type.bibtex"
},
"2": {
"name": "punctuation.definition.keyword.bibtex"
},
"3": {
"name": "punctuation.section.entry.begin.bibtex"
},
"4": {
"name": "entity.name.type.entry-key.bibtex"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.section.entry.end.bibtex"
}
},
"name": "meta.entry.parenthesis.bibtex",
"patterns": [
{
"begin": "([-!$\\&*+./:;<>-z|~][!$\\&*+\\--<>-z|~]*)\\s*(=)",
"beginCaptures": {
"1": {
"name": "support.function.key.bibtex"
},
"2": {
"name": "punctuation.separator.key-value.bibtex"
}
},
"end": "(?=[),])",
"name": "meta.key-assignment.bibtex",
"patterns": [
{
"include": "#field_value"
}
]
}
]
}
]
},
"field_value": {
"patterns": [
{
"include": "#string_content"
},
{
"include": "#integer"
},
{
"include": "#string_var"
},
{
"match": "#",
"name": "keyword.operator.bibtex"
}
]
},
"integer": {
"captures": {
"1": {
"name": "constant.numeric.bibtex"
}
},
"match": "\\s*(\\d+)\\s*"
},
"nested_braces": {
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.group.begin.bibtex"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.definition.group.end.bibtex"
}
},
"patterns": [
{
"include": "#nested_braces"
}
]
},
"preamble": {
"patterns": [
{
"begin": "((@)(?i:preamble))\\s*(\\{)\\s*",
"beginCaptures": {
"1": {
"name": "keyword.other.preamble.bibtex"
},
"2": {
"name": "punctuation.definition.keyword.bibtex"
},
"3": {
"name": "punctuation.section.preamble.begin.bibtex"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.section.preamble.end.bibtex"
}
},
"name": "meta.preamble.braces.bibtex",
"patterns": [
{
"include": "#field_value"
}
]
},
{
"begin": "((@)(?i:preamble))\\s*(\\()\\s*",
"beginCaptures": {
"1": {
"name": "keyword.other.preamble.bibtex"
},
"2": {
"name": "punctuation.definition.keyword.bibtex"
},
"3": {
"name": "punctuation.section.preamble.begin.bibtex"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.section.preamble.end.bibtex"
}
},
"name": "meta.preamble.parenthesis.bibtex",
"patterns": [
{
"include": "#field_value"
}
]
}
]
},
"string": {
"patterns": [
{
"begin": "((@)(?i:string))\\s*(\\{)\\s*([-!$\\&*+./:;<>-z|~][!$\\&*+\\--<>-z|~]*)",
"beginCaptures": {
"1": {
"name": "keyword.other.string-constant.bibtex"
},
"2": {
"name": "punctuation.definition.keyword.bibtex"
},
"3": {
"name": "punctuation.section.string-constant.begin.bibtex"
},
"4": {
"name": "variable.other.bibtex"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.section.string-constant.end.bibtex"
}
},
"name": "meta.string-constant.braces.bibtex",
"patterns": [
{
"include": "#field_value"
}
]
},
{
"begin": "((@)(?i:string))\\s*(\\()\\s*([-!$\\&*+./:;<>-z|~][!$\\&*+\\--<>-z|~]*)",
"beginCaptures": {
"1": {
"name": "keyword.other.string-constant.bibtex"
},
"2": {
"name": "punctuation.definition.keyword.bibtex"
},
"3": {
"name": "punctuation.section.string-constant.begin.bibtex"
},
"4": {
"name": "variable.other.bibtex"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.section.string-constant.end.bibtex"
}
},
"name": "meta.string-constant.parenthesis.bibtex",
"patterns": [
{
"include": "#field_value"
}
]
}
]
},
"string_content": {
"patterns": [
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.bibtex"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.bibtex"
}
},
"patterns": [
{
"include": "#nested_braces"
}
]
},
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.bibtex"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.bibtex"
}
},
"patterns": [
{
"include": "#nested_braces"
}
]
}
]
},
"string_var": {
"captures": {
"0": {
"name": "support.variable.bibtex"
}
},
"match": "[-!$\\&*+./:;<>-z|~][!$\\&*+\\--<>-z|~]*"
}
},
"scopeName": "text.bibtex"
}