{ "name": "BibTeX", "scopeName": "text.bibtex", "patterns": [ { "name": "comment.line.at-sign.bibtex", "begin": "@Comment", "end": "$\\n?", "beginCaptures": { "0": { "name": "punctuation.definition.comment.bibtex" } } }, { "name": "meta.string-constant.braces.bibtex", "begin": "((@)String)\\s*(\\{)\\s*([a-zA-Z]*)", "end": "\\}", "patterns": [ { "include": "#string_content" } ], "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" } }, "endCaptures": { "0": { "name": "punctuation.section.string-constant.end.bibtex" } } }, { "name": "meta.string-constant.parenthesis.bibtex", "begin": "((@)String)\\s*(\\()\\s*([a-zA-Z]*)", "end": "\\)", "patterns": [ { "include": "#string_content" } ], "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" } }, "endCaptures": { "0": { "name": "punctuation.section.string-constant.end.bibtex" } } }, { "name": "meta.entry.braces.bibtex", "begin": "((@)[a-zA-Z]+)\\s*(\\{)\\s*([^\\s,]*)", "end": "\\}", "patterns": [ { "name": "meta.key-assignment.bibtex", "begin": "([a-zA-Z0-9\\!\\$\\\u0026\\*\\+\\-\\.\\/\\:\\;\\\u003c\\\u003e\\?\\[\\]\\^\\_\\`\\|]+)\\s*(\\=)", "end": "(?=[,}])", "patterns": [ { "include": "#string_content" }, { "include": "#integer" } ], "beginCaptures": { "1": { "name": "string.unquoted.key.bibtex" }, "2": { "name": "punctuation.separator.key-value.bibtex" } } } ], "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" } }, "endCaptures": { "0": { "name": "punctuation.section.entry.end.bibtex" } } }, { "name": "meta.entry.parenthesis.bibtex", "begin": "((@)[a-zA-Z]+)\\s*(\\()\\s*([^\\s,]*)", "end": "\\)", "patterns": [ { "name": "meta.key-assignment.bibtex", "begin": "([a-zA-Z0-9\\!\\$\\\u0026\\*\\+\\-\\.\\/\\:\\;\\\u003c\\\u003e\\?\\[\\]\\^\\_\\`\\|]+)\\s*(\\=)", "end": "(?=[,)])", "patterns": [ { "include": "#string_content" }, { "include": "#integer" } ], "beginCaptures": { "1": { "name": "string.unquoted.key.bibtex" }, "2": { "name": "punctuation.separator.key-value.bibtex" } } } ], "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" } }, "endCaptures": { "0": { "name": "punctuation.section.entry.end.bibtex" } } }, { "name": "comment.block.bibtex", "begin": "[^@\\n]", "end": "(?=@)" } ], "repository": { "integer": { "name": "constant.numeric.bibtex", "match": "\\d+" }, "nested_braces": { "begin": "\\{", "end": "\\}", "patterns": [ { "include": "#nested_braces" } ], "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.bibtex" } }, "endCaptures": { "0": { "name": "punctuation.definition.group.end.bibtex" } } }, "string_content": { "patterns": [ { "name": "string.quoted.double.bibtex", "begin": "\"", "end": "\"", "patterns": [ { "include": "#nested_braces" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.bibtex" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.bibtex" } } }, { "name": "string.quoted.other.braces.bibtex", "begin": "\\{", "end": "\\}", "patterns": [ { "name": "invalid.illegal.at-sign.bibtex", "match": "@" }, { "include": "#nested_braces" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.bibtex" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.bibtex" } } } ] } } }