Browse Source

Added more language grammars

main
Dustin Wilson 3 years ago
parent
commit
86b96565f5
  1. 1384
      data/source.applescript.json
  2. 1955
      data/source.c.json
  3. 1319
      data/source.coffee.json
  4. 461
      data/source.cpp.json
  5. 599
      data/source.graphql.json
  6. 85
      data/source.java-properties.json
  7. 100
      data/source.java.el.json
  8. 1853
      data/source.java.json
  9. 182
      data/source.json.json
  10. 668
      data/source.litcoffee.json
  11. 145
      data/source.lua.json
  12. 2805
      data/source.python.json
  13. 178
      data/source.regexp.python.json
  14. 27
      data/source.ruby.gemfile.json
  15. 2829
      data/source.ruby.json
  16. 5408
      data/source.ts.json
  17. 5661
      data/source.tsx.json
  18. 154
      data/text.html.erb.json
  19. 1202
      data/text.html.jsp.json
  20. 201
      data/text.html.smarty.json
  21. 271
      data/text.html.textile.json
  22. 90
      data/text.junit-test-report.json
  23. 4313
      data/text.md.json
  24. 25
      data/text.python.console.json
  25. 46
      data/text.python.traceback.json
  26. 58
      run

1384
data/source.applescript.json

File diff suppressed because it is too large

1955
data/source.c.json

File diff suppressed because it is too large

1319
data/source.coffee.json

File diff suppressed because it is too large

461
data/source.cpp.json

@ -0,0 +1,461 @@
{
"scopeName": "source.cpp",
"fileTypes": [
"cc",
"cpp",
"cp",
"cxx",
"c++",
"cu",
"cuh",
"h",
"hh",
"hpp",
"hxx",
"h++",
"inl",
"ino",
"ipp",
"tcc",
"tpp"
],
"firstLineMatch": "(?i)-\\*-[^*]*(Mode:\\s*)?C\\+\\+(\\s*;.*?)?\\s*-\\*-",
"name": "C++",
"patterns": [
{
"include": "#special_block"
},
{
"include": "#strings"
},
{
"match": "\\b(friend|explicit|virtual|override|final|noexcept)\\b",
"name": "storage.modifier.cpp"
},
{
"match": "\\b(private:|protected:|public:)",
"name": "storage.modifier.cpp"
},
{
"match": "\\b(catch|operator|try|throw|using)\\b",
"name": "keyword.control.cpp"
},
{
"match": "\\bdelete\\b(\\s*\\[\\])?|\\bnew\\b(?!])",
"name": "keyword.control.cpp"
},
{
"match": "\\b(f|m)[A-Z]\\w*\\b",
"name": "variable.other.readwrite.member.cpp"
},
{
"match": "\\bthis\\b",
"name": "variable.language.this.cpp"
},
{
"match": "\\bnullptr\\b",
"name": "constant.language.cpp"
},
{
"match": "\\btemplate\\b\\s*",
"name": "storage.type.template.cpp"
},
{
"match": "\\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\\b\\s*",
"name": "keyword.operator.cast.cpp"
},
{
"match": "::",
"name": "punctuation.separator.namespace.access.cpp"
},
{
"match": "\\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\b",
"name": "keyword.operator.cpp"
},
{
"match": "\\b(class|decltype|wchar_t|char16_t|char32_t)\\b",
"name": "storage.type.cpp"
},
{
"match": "\\b(constexpr|export|mutable|typename|thread_local)\\b",
"name": "storage.modifier.cpp"
},
{
"begin": "(?x)\n(?:\n ^ | # beginning of line\n (?:(?<!else|new|=)) # or word + space before name\n)\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\n\\s*(\\() # opening bracket",
"beginCaptures": {
"1": {
"name": "entity.name.function.cpp"
},
"2": {
"name": "punctuation.definition.parameters.begin.c"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.parameters.end.c"
}
},
"name": "meta.function.destructor.cpp",
"patterns": [
{
"include": "$base"
}
]
},
{
"begin": "(?x)\n(?:\n ^ | # beginning of line\n (?:(?<!else|new|=)) # or word + space before name\n)\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\n\\s*(\\() # opening bracket",
"beginCaptures": {
"1": {
"name": "entity.name.function.cpp"
},
"2": {
"name": "punctuation.definition.parameters.begin.c"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.parameters.end.c"
}
},
"name": "meta.function.destructor.prototype.cpp",
"patterns": [
{
"include": "$base"
}
]
},
{
"include": "source.c"
}
],
"repository": {
"angle_brackets": {
"begin": "<",
"end": ">",
"name": "meta.angle-brackets.cpp",
"patterns": [
{
"include": "#angle_brackets"
},
{
"include": "$base"
}
]
},
"block": {
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.section.block.begin.bracket.curly.c"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.section.block.end.bracket.curly.c"
}
},
"name": "meta.block.cpp",
"patterns": [
{
"captures": {
"1": {
"name": "support.function.any-method.c"
},
"2": {
"name": "punctuation.definition.parameters.c"
}
},
"match": "(?x)\n(\n (?!while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\n (?:\\b[A-Za-z_][A-Za-z0-9_]*+\\b|::)*+ # actual name\n)\n\\s*(\\() # opening bracket",
"name": "meta.function-call.c"
},
{
"include": "$base"
}
]
},
"constructor": {
"patterns": [
{
"begin": "(?x)\n(?:^\\s*) # beginning of line\n((?!while|for|do|if|else|switch|catch|enumerate|r?iterate)[A-Za-z_][A-Za-z0-9_:]*) # actual name\n\\s*(\\() # opening bracket",
"beginCaptures": {
"1": {
"name": "entity.name.function.cpp"
},
"2": {
"name": "punctuation.definition.parameters.begin.c"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.parameters.end.c"
}
},
"name": "meta.function.constructor.cpp",
"patterns": [
{
"include": "$base"
}
]
},
{
"begin": "(?x)\n(:)\n(\n (?=\n \\s*[A-Za-z_][A-Za-z0-9_:]* # actual name\n \\s* (\\() # opening bracket\n )\n)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.parameters.c"
}
},
"end": "(?=\\{)",
"name": "meta.function.constructor.initializer-list.cpp",
"patterns": [
{
"include": "$base"
}
]
}
]
},
"special_block": {
"patterns": [
{
"begin": "\\b(using)\\b\\s*(namespace)\\b\\s*((?:[_A-Za-z][_A-Za-z0-9]*\\b(::)?)*)",
"beginCaptures": {
"1": {
"name": "keyword.control.cpp"
},
"2": {
"name": "storage.type.cpp"
},
"3": {
"name": "entity.name.type.cpp"
}
},
"end": "(;)",
"name": "meta.using-namespace-declaration.cpp"
},
{
"begin": "\\b(namespace)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+",
"beginCaptures": {
"1": {
"name": "storage.type.cpp"
},
"2": {
"name": "entity.name.type.cpp"
}
},
"captures": {
"1": {
"name": "keyword.control.namespace.$2"
}
},
"end": "(?<=\\})|(?=(;|,|\\(|\\)|>|\\[|\\]|=))",
"name": "meta.namespace-block.cpp",
"patterns": [
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.scope.cpp"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.scope.cpp"
}
},
"patterns": [
{
"include": "#special_block"
},
{
"include": "#constructor"
},
{
"include": "$base"
}
]
},
{
"include": "$base"
}
]
},
{
"begin": "\\b(class|struct)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*:\\s*(public|protected|private)\\s*([_A-Za-z][_A-Za-z0-9]*\\b)((\\s*,\\s*(public|protected|private)\\s*[_A-Za-z][_A-Za-z0-9]*\\b)*))?",
"beginCaptures": {
"1": {
"name": "storage.type.cpp"
},
"2": {
"name": "entity.name.type.cpp"
},
"4": {
"name": "storage.type.modifier.cpp"
},
"5": {
"name": "entity.name.type.inherited.cpp"
},
"6": {
"patterns": [
{
"match": "(public|protected|private)",
"name": "storage.type.modifier.cpp"
},
{
"match": "[_A-Za-z][_A-Za-z0-9]*",
"name": "entity.name.type.inherited.cpp"
}
]
}
},
"end": "(?<=\\})|(?=(;|\\(|\\)|>|\\[|\\]|=))",
"name": "meta.class-struct-block.cpp",
"patterns": [
{
"include": "#angle_brackets"
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.section.block.begin.bracket.curly.cpp"
}
},
"end": "(\\})(\\s*\\n)?",
"endCaptures": {
"1": {
"name": "punctuation.section.block.end.bracket.curly.cpp"
},
"2": {
"name": "invalid.illegal.you-forgot-semicolon.cpp"
}
},
"patterns": [
{
"include": "#special_block"
},
{
"include": "#constructor"
},
{
"include": "$base"
}
]
},
{
"include": "$base"
}
]
},
{
"begin": "\\b(extern)(?=\\s*\")",
"beginCaptures": {
"1": {
"name": "storage.modifier.cpp"
}
},
"end": "(?<=\\})|(?=\\w)|(?=\\s*#\\s*endif\\b)",
"name": "meta.extern-block.cpp",
"patterns": [
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.section.block.begin.bracket.curly.c"
}
},
"end": "\\}|(?=\\s*#\\s*endif\\b)",
"endCaptures": {
"0": {
"name": "punctuation.section.block.end.bracket.curly.c"
}
},
"patterns": [
{
"include": "#special_block"
},
{
"include": "$base"
}
]
},
{
"include": "$base"
}
]
}
]
},
"strings": {
"patterns": [
{
"begin": "(u|u8|U|L)?\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.cpp"
},
"1": {
"name": "meta.encoding.cpp"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.cpp"
}
},
"name": "string.quoted.double.cpp",
"patterns": [
{
"match": "\\\\u\\h{4}|\\\\U\\h{8}",
"name": "constant.character.escape.cpp"
},
{
"match": "\\\\['\"?\\\\abfnrtv]",
"name": "constant.character.escape.cpp"
},
{
"match": "\\\\[0-7]{1,3}",
"name": "constant.character.escape.cpp"
},
{
"match": "\\\\x\\h+",
"name": "constant.character.escape.cpp"
},
{
"include": "source.c#string_placeholder"
}
]
},
{
"begin": "(u|u8|U|L)?R\"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.cpp"
},
"1": {
"name": "meta.encoding.cpp"
},
"3": {
"name": "invalid.illegal.delimiter-too-long.cpp"
}
},
"end": "\\)\\2(\\3)\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.cpp"
},
"1": {
"name": "invalid.illegal.delimiter-too-long.cpp"
}
},
"name": "string.quoted.double.raw.cpp"
}
]
}
}
}

599
data/source.graphql.json

@ -0,0 +1,599 @@
{
"name": "GraphQL",
"scopeName": "source.graphql",
"foldingStartMarker": "(/\\*|{|\\()",
"foldingEndMarker": "(\\*/|\\}|\\))",
"fileTypes": [
"prisma",
"graphqls",
"graphql",
"gql"
],
"patterns": [
{ "include": "#graphql" }
],
"repository": {
"graphql": {
"patterns": [
{ "include": "#graphql-fragment-definition" },
{ "include": "#graphql-type-interface" },
{ "include": "#graphql-enum" },
{ "include": "#graphql-scalar" },
{ "include": "#graphql-union" },
{ "include": "#graphql-schema" },
{ "include": "#graphql-operation-def" },
{ "include": "#graphql-comment" },
{ "include": "#graphql-directive" },
{ "include": "#graphql-blockstring-value"},
{ "include": "#graphql-string-value"}
]
},
"graphql-operation-def": {
"patterns": [
{ "include": "#graphql-query-mutation" },
{ "include": "#graphql-name" },
{ "include": "#graphql-variable-definitions" },
{ "include": "#graphql-directive" },
{ "include": "#graphql-selection-set" }
]
},
"graphql-fragment-definition": {
"name": "meta.fragment.graphql",
"begin": "\\s*(?:(\\bfragment\\b)\\s*(?!\\bon\\b)([_A-Za-z][_0-9A-Za-z]*)\\s*(?:(\\bon\\b)\\s*([_A-Za-z][_0-9A-Za-z]*)))",
"end": "(?<=})",
"captures": {
"1": { "name": "keyword.fragment.graphql" },
"2": { "name": "entity.name.fragment.graphql" },
"3": { "name": "keyword.on.graphql" },
"4": { "name": "support.type.graphql" }
},
"patterns": [
{ "include": "#graphql-comment" },
{ "include": "#graphql-selection-set" },
{ "include": "#graphql-directive" },
{ "include": "#graphql-skip-newlines" }
]
},
"graphql-query-mutation": {
"match": "\\s*\\b(query|mutation)\\b",
"captures": {
"1": { "name": "keyword.operation.graphql" }
}
},
"graphql-type-interface": {
"name": "meta.type.interface.graphql",
"begin": "\\s*\\b(?:(extends)?\\b\\s*\\b(type)|(interface)|(input))\\b\\s*([_A-Za-z][_0-9A-Za-z]*)?",
"end": "(?<=})",
"captures": {
"1": { "name": "keyword.type.graphql"},
"2": { "name": "keyword.type.graphql"},
"3": { "name": "keyword.interface.graphql"},
"4": { "name": "keyword.input.graphql"},
"5": { "name": "support.type.graphql"}
},
"patterns": [
{
"match": "\\s*(?:\\b(implements)\\b|(&))\\s*([_A-Za-z][_0-9A-Za-z]*)",
"captures": {
"1": { "name": "keyword.implements.graphql" },
"2": { "name": "keyword.implements.graphql" },
"3": { "name": "support.type.graphql" }
}
},
{ "include": "#graphql-comment" },
{ "include": "#graphql-directive" },
{ "include": "#graphql-type-object" }
]
},
"graphql-type-object": {
"name": "meta.type.object.graphql",
"begin": "\\s*({)",
"end": "\\s*(})",
"beginCaptures": {
"1": { "name": "punctuation.operation.graphql"}
},
"endCaptures": {
"1": { "name": "punctuation.operation.graphql"}
},
"patterns": [
{ "include": "#graphql-object-type" },
{ "include": "#graphql-comment" },
{ "include": "#graphql-type-definition" },
{ "include": "#graphql-blockstring-value"},
{ "include": "#graphql-string-value"}
]
},
"graphql-type-definition": {
"comment": "key (optionalArgs): Type",
"begin": "\\s*([_A-Za-z][_0-9A-Za-z]*)(?=\\s*\\(|:)",
"end": "(?=\\s*(([_A-Za-z][_0-9A-Za-z]*)\\s*(\\(|:)|(})))|\\s*(,)",
"beginCaptures": {
"1": { "name": "variable.graphql" }
},
"endCaptures": {
"5": { "name": "punctuation.comma.graphql" }
},
"patterns": [
{ "include": "#graphql-directive" },
{ "include": "#graphql-comment" },
{ "include": "#graphql-variable-definitions" },
{ "include": "#graphql-type-object" },
{ "include": "#graphql-colon"},
{ "include": "#graphql-input-types"}
]
},
"graphql-schema": {
"begin": "\\s*\\b(schema)\\b",
"end": "(?<=})",
"beginCaptures": {
"1": { "name": "keyword.schema.graphql" }
},
"patterns": [
{
"begin": "\\s*({)",
"end": "\\s*(})",
"beginCaptures": {
"1": { "name": "punctuation.operation.graphql"}
},
"endCaptures": {
"1": { "name": "punctuation.operation.graphql"}
},
"patterns": [
{
"begin": "\\s*([_A-Za-z][_0-9A-Za-z]*)(?=\\s*\\(|:)",
"end": "(?=\\s*(([_A-Za-z][_0-9A-Za-z]*)\\s*(\\(|:)|(})))|\\s*(,)",
"beginCaptures": {
"1": { "name": "variable.arguments.graphql" }
},
"endCaptures": {
"5": { "name": "punctuation.comma.graphql" }
},
"patterns": [
{
"match": "\\s*([_A-Za-z][_0-9A-Za-z]*)",
"captures": {
"1": { "name": "support.type.graphql" }
}
},
{ "include": "#graphql-colon" },
{ "include": "#graphql-comment" },
{ "include": "#graphql-directive" },
{ "include": "#graphql-skip-newlines" }
]
},
{ "include": "#graphql-comment" },
{ "include": "#graphql-skip-newlines" }
]
},
{ "include": "#graphql-directive" },
{ "include": "#graphql-comment" },
{ "include": "#graphql-skip-newlines" }
]
},
"graphql-comment": {
"comment": "need to prefix comment space with a scope else Atom's reflow cmd doesn't work",
"name": "comment.line.graphql.js",
"match": "(\\s*)(#).*",
"captures": {
"1": { "name": "punctuation.whitespace.comment.leading.graphql" }
}
},
"graphql-variable-definitions": {
"begin": "\\s*(\\()",
"end": "\\s*(\\))",
"captures": {
"1": { "name": "meta.brace.round.graphql"}
},
"patterns": [
{ "include": "#graphql-comment" },
{ "include": "#graphql-variable-definition"},
{ "include": "#graphql-blockstring-value"},
{ "include": "#graphql-string-value"}
]
},
"graphql-variable-definition": {
"comment": "variable: type = value,.... which may be a list",
"name": "meta.variables.graphql",
"begin": "\\s*(\\$?[_A-Za-z][_0-9A-Za-z]*)(?=\\s*\\(|:)",
"end": "(?=\\s*((\\$?[_A-Za-z][_0-9A-Za-z]*)\\s*(\\(|:)|(}|\\))))|\\s*(,)",
"beginCaptures": {
"1": { "name": "variable.graphql" }
},
"endCaptures": {
"5": { "name": "punctuation.comma.graphql" }
},
"patterns": [
{ "include": "#graphql-comment" },
{ "include": "#graphql-colon" },
{ "include": "#graphql-input-types"},
{ "include": "#graphql-variable-assignment"},
{ "include": "#graphql-skip-newlines" }
]
},
"graphql-input-types": {
"patterns": [
{ "include": "#graphql-scalar-type" },
{
"match": "\\s*([_A-Za-z][_0-9A-Za-z]*)(?:\\s*(!))?",
"captures": {
"1": { "name": "support.type.graphql" },
"2": { "name": "keyword.operator.nulltype.graphql" }
}
},
{
"name": "meta.type.list.graphql",
"begin": "\\s*(\\[)",
"end": "\\s*(\\])(?:\\s*(!))?",
"captures": {
"1": { "name": "meta.brace.squart.graphql" },
"2": { "name": "keyword.operator.nulltype.graphql" }
},
"patterns": [
{ "include": "#graphql-input-types" },
{ "include": "#graphql-comment" },
{ "include": "#graphql-comma" }
]
}
]
},
"graphql-scalar": {
"match": "\\s*\\b(scalar)\\b\\s*([_A-Za-z][_0-9A-Za-z]*)",
"captures": {
"1": { "name": "keyword.scalar.graphql" },
"2": { "name": "entity.scalar.graphql" }
}
},
"graphql-scalar-type": {
"match": "\\s*\\b(Int|Float|String|Boolean|ID)\\b(?:\\s*(!))?",
"captures": {
"1": { "name": "support.type.builtin.graphql" },
"2": { "name": "keyword.operator.nulltype.graphql" }
}
},
"graphql-variable-assignment": {
"begin": "\\s(=)",
"end": "(?=.)",
"applyEndPatternLast": 1,
"beginCaptures": {
"1": { "name": "punctuation.assignment.graphql" }
},
"patterns": [
{ "include": "#graphql-value" }
]
},
"graphql-comma": {
"match": "\\s*(,)",
"captures": {
"1": { "name": "punctuation.comma.graphql" }
}
},
"graphql-colon": {
"match": "\\s*(:)",
"captures": {
"1": { "name": "punctuation.colon.graphql" }
}
},
"graphql-union-mark": {
"match": "\\s*(\\|)",
"captures": {
"1": { "name": "punctuation.union.graphql" }
}
},
"graphql-name": {
"match": "\\s*([_A-Za-z][_0-9A-Za-z]*)",
"captures": {
"1": { "name": "entity.name.function.graphql" }
}
},
"graphql-directive": {
"begin": "\\s*((@)\\s*([_A-Za-z][_0-9A-Za-z]*))",
"end": "(?=.)",
"applyEndPatternLast": 1,
"beginCaptures": {
"1": { "name": "entity.name.function.directive.graphql" }
},
"patterns": [
{ "include": "#graphql-arguments"},
{ "include": "#graphql-comment" },
{ "include": "#graphql-skip-newlines" }
]
},
"graphql-selection-set": {
"name": "meta.selectionset.graphql",
"begin": "\\s*({)",
"end": "\\s*(})",
"beginCaptures": {
"1": { "name": "punctuation.operation.graphql"}
},
"endCaptures": {
"1": { "name": "punctuation.operation.graphql"}
},
"patterns": [
{ "include": "#graphql-field" },
{ "include": "#graphql-fragment-spread" },
{ "include": "#graphql-inline-fragment" },
{ "include": "#graphql-comma" },
{ "include": "#graphql-comment" }
]
},
"graphql-field": {
"patterns": [
{
"match": "\\s*([_A-Za-z][_0-9A-Za-z]*)\\s*(:)",
"captures": {
"1": { "name": "string.unquoted.alias.graphql" },
"2": { "name": "punctuation.colon.graphql" }
}
},
{
"match": "\\s*([_A-Za-z][_0-9A-Za-z]*)",
"captures": {
"1": { "name": "variable.graphql" }
}
},
{ "include": "#graphql-arguments" },
{ "include": "#graphql-directive" },
{ "include": "#graphql-selection-set" },
{ "include": "#graphql-skip-newlines" }
]
},
"graphql-fragment-spread": {
"begin": "\\s*(\\.\\.\\.)\\s*(?!\\bon\\b)([_A-Za-z][_0-9A-Za-z]*)",
"end": "(?=.)",
"applyEndPatternLast": 1,
"captures": {
"1": { "name": "keyword.operator.spread.graphql" },
"2": { "name": "variable.fragment.graphql" }
},
"patterns": [
{ "include": "#graphql-comment" },
{ "include": "#graphql-selection-set" },
{ "include": "#graphql-directive" },
{ "include": "#graphql-skip-newlines" }
]
},
"graphql-inline-fragment": {
"begin": "\\s*(\\.\\.\\.)\\s*(?:(\\bon\\b)\\s*([_A-Za-z][_0-9A-Za-z]*))?",
"end": "(?=.)",
"applyEndPatternLast": 1,
"captures": {
"1": { "name": "keyword.operator.spread.graphql" },
"2": { "name": "keyword.on.graphql" },
"3": { "name": "support.type.graphql" }
},
"patterns": [
{ "include": "#graphql-comment" },
{ "include": "#graphql-selection-set" },
{ "include": "#graphql-directive" },
{ "include": "#graphql-skip-newlines" }
]
},
"graphql-arguments": {
"name": "meta.arguments.graphql",
"begin": "\\s*(\\()",
"end": "\\s*(\\))",
"beginCaptures": {
"1": { "name": "meta.brace.round.directive.graphql" }
},
"endCaptures": {
"1": { "name": "meta.brace.round.directive.graphql" }
},
"patterns": [
{ "include": "#graphql-comment" },
{
"begin": "\\s*([_A-Za-z][_0-9A-Za-z]*)(?:\\s*(:))?",
"end": "(?=\\s*(?:(?:([_A-Za-z][_0-9A-Za-z]*)\\s*(:))|\\)))|\\s*(,)",
"beginCaptures": {
"1": { "name": "variable.arguments.graphql" },
"2": { "name": "punctuation.colon.graphql" }
},
"endCaptures": {
"3": { "name": "punctuation.comma.graphql" }
},
"patterns": [
{ "include": "#graphql-value" },
{ "include": "#graphql-comment" },
{ "include": "#graphql-skip-newlines" }
]
}
]
},
"graphql-variable-name": {
"match": "\\s*(\\$[_A-Za-z][_0-9A-Za-z]*)",
"captures": {
"1": { "name": "variable.graphql" }
}
},
"graphql-int-value": {
"match": "\\s*((-)?(0|[1-9][0-9]*))",
"captures": {
"1": { "name": "constant.int.graphql" }
}
},
"graphql-float-value": {
"match": "\\s*((-)?(0|([1-9]\\d*)(\\.\\d*)?((e|E)(\\+|-)?\\d*)?))",
"captures": {
"1": { "name": "constant.float.graphql" }
}
},
"graphql-boolean-value": {
"match": "\\s*\\b(true|false)\\b",
"captures": {
"1": { "name": "constant.boolean.graphql" }
}
},
"graphql-blockstring-value": {
"contentName": "string.quoted.block.graphql",
"begin": "\\s*+((\"\"\"))",
"end": "\\s*+(?:((\"\"\")))",
"beginCaptures": {
"1": { "name": "string.quoted.block.graphql" },
"2": { "name": "punctuation.definition.string.begin.graphql" }
},
"endCaptures": {
"1": { "name": "string.quoted.block.graphql" },
"2": { "name": "punctuation.definition.string.end.graphql" }
},
"patterns": [
{ "include": "#graphql-string-content" }
]
},
"graphql-string-value": {
"contentName": "string.quoted.double.graphql",
"begin": "\\s*+((\"))",
"end": "\\s*+(?:((\"))|(\n))",
"beginCaptures": {
"1": { "name": "string.quoted.double.graphql" },
"2": { "name": "punctuation.definition.string.begin.graphql" }
},
"endCaptures": {
"1": { "name": "string.quoted.double.graphql" },
"2": { "name": "punctuation.definition.string.end.graphql" },
"3": { "name": "invalid.illegal.newline.graphql" }
},
"patterns": [
{ "include": "#graphql-string-content" }
]
},
"graphql-string-content": {
"patterns": [
{ "name": "constant.character.escape.graphql",
"match": "\\\\[/'\"\\\\nrtbf]"
},
{ "name": "constant.character.escape.graphql",
"match": "\\\\u([0-9a-fA-F]{4})"
}
]
},
"graphql-enum": {
"name": "meta.enum.graphql",
"begin": "\\s*+\\b(enum)\\b\\s*([_A-Za-z][_0-9A-Za-z]*)",
"end": "(?<=})",
"beginCaptures": {
"1": { "name": "keyword.enum.graphql" },
"2": { "name": "support.type.enum.graphql" }
},
"patterns": [
{
"name": "meta.type.object.graphql",
"begin": "\\s*({)",
"end": "\\s*(})",
"beginCaptures": {
"1": { "name": "punctuation.operation.graphql"}
},
"endCaptures": {
"1": { "name": "punctuation.operation.graphql"}
},
"patterns": [
{ "include": "#graphql-object-type" },
{ "include": "#graphql-comment" },
{ "include": "#graphql-enum-value" },
{ "include": "#graphql-blockstring-value"},
{ "include": "#graphql-string-value"}
]
}
]
},
"graphql-enum-value": {
"name": "constant.character.enum.graphql",
"match":"\\s*(?!=\\b(true|false|null)\\b)([_A-Za-z][_0-9A-Za-z]*)"
},
"graphql-value":{
"patterns": [
{ "include": "#graphql-variable-name" },
{ "include": "#graphql-float-value" },
{ "include": "#graphql-int-value" },
{ "include": "#graphql-blockstring-value" },
{ "include": "#graphql-string-value" },
{ "include": "#graphql-boolean-value" },
{ "include": "#graphql-enum-value" },
{ "include": "#graphql-list-value" },
{ "include": "#graphql-object-value" },
{ "include": "#graphql-comment" },
{ "include": "#literal-quasi-embedded" }
]
},
"graphql-list-value": {
"patterns": [
{
"name": "meta.listvalues.graphql",
"begin": "\\s*+(\\[)",
"end": "\\s*(\\])",
"endCaptures": {
"1": { "name": "meta.brace.square.graphql" }
},
"beginCaptures": {
"1": { "name": "meta.brace.square.graphql" }
},
"patterns": [
{ "include": "#graphql-value" }
]
}
]
},
"graphql-object-value": {
"patterns": [
{
"name": "meta.objectvalues.graphql",
"begin": "\\s*+({)",
"end": "\\s*(})",
"endCaptures": {
"1": { "name": "meta.brace.curly.graphql" }
},
"beginCaptures": {
"1": { "name": "meta.brace.curly.graphql" }
},
"patterns": [
{ "include": "#graphql-object-field" },
{ "include": "#graphql-value" }
]
}
]
},
"graphql-object-field": {
"match": "\\s*(([_A-Za-z][_0-9A-Za-z]*))\\s*(:)",
"captures": {
"1": { "name": "constant.object.key.graphql" },
"2": { "name": "string.unquoted.graphql" },
"3": { "name": "punctuation.graphql" }
}
},
"graphql-union": {
"begin": "\\s*\\b(union)\\b\\s*([_A-Za-z][_0-9A-Za-z]*)",
"end": "(?=.)",
"applyEndPatternLast": 1,
"captures": {
"1": { "name": "keyword.union.graphql" },
"2": { "name": "support.type.graphql" }
},
"patterns": [
{
"begin": "\\s*(=)\\s*([_A-Za-z][_0-9A-Za-z]*)",
"end": "(?=.)",
"applyEndPatternLast": 1,
"captures": {
"1": { "name": "punctuation.assignment.graphql" },
"2": { "name": "support.type.graphql" }
},
"patterns": [
{ "include": "#graphql-skip-newlines" },
{ "include": "#graphql-comment" },
{
"match": "\\s*(\\|)\\s*([_A-Za-z][_0-9A-Za-z]*)",
"captures": {
"1": { "name": "punctuation.or.graphql" },
"2": { "name": "support.type.graphql" }
}
}
]
},
{ "include": "#graphql-skip-newlines" },
{ "include": "#graphql-comment" },
{ "include": "#literal-quasi-embedded" }
]
},
"graphql-skip-newlines": {
"match": "\\s*\n"
}
}
}

85
data/source.java-properties.json

@ -0,0 +1,85 @@
{
"scopeName": "source.java-properties",
"name": "Java Properties",
"fileTypes": [
"properties"
],
"foldingStartMarker": "^[a-zA-Z0-9.-_]+=.*\\\n",
"foldingStopMarker": "^(.*(?<!\\)\n)",
"patterns": [
{
"begin": "(^[ \\t]+)?(?=#)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.java-properties"
}
},
"end": "(?!\\G)",
"patterns": [
{
"begin": "#",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.java-properties"
}
},
"end": "\\n",
"name": "comment.line.number-sign.java-properties"
}
]
},
{
"begin": "(^[ \\t]+)?(?=!)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.java-properties"
}
},
"end": "(?!\\G)",
"patterns": [
{
"begin": "!",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.java-properties"
}
},
"end": "\\n",
"name": "comment.line.exclamation.java-properties"
}
]
},
{
"begin": "^\\s*(([\\S&&[^:=\\\\]]|\\\\.)+)\\s*([:=])?",
"beginCaptures": {
"1": {
"name": "support.constant.java-properties",
"patterns": [
{
"match": "\\\\([tnfr\"'\\\\ ]|u\\h{4})",
"name": "constant.character.escape.java-properties"
}
]
},
"3": {
"name": "punctuation.separator.key-value.java-properties"
}
},
"end": "\\n",
"name": "meta.key-pair.java-properties",
"patterns": [
{
"begin": "(?=\\S)",
"end": "(?<!\\\\)(?=\\n)",
"name": "string.unquoted.java-properties",
"patterns": [
{
"match": "\\\\([tnfr\"'\\\\]|u\\h{4}|)",
"name": "constant.character.escape.java-properties"
}
]
}
]
}
]
}

100
data/source.java.el.json

@ -0,0 +1,100 @@
{
"scopeName": "source.java.el",
"patterns": [
{
"name": "keyword.control.ternary.java.el",
"match": "\\?|(?<=\\s):"
},
{
"name": "keyword.operator.comparison.java.el",
"match": "((==|!=|<=|>=|<|>)|\\b(eq|ne|le|ge|lt|gt)\\b)"
},
{
"name": "keyword.operator.empty.java.el",
"match": "\\b(empty)\\b"
},
{
"name": "keyword.operator.arithmetic.java.el",
"match": "(?:(\\-|\\+|\\*|\\/|%)|\\b(div|mod)\\b)"
},
{
"name": "keyword.operator.logical.java.el",
"match": "(?:(!|&&|\\|\\|)|\\b(not|and|or)\\b)"
},
{
"name": "namespace.java.el",
"match": "[a-zA-Z]+(:)",
"captures": {
"1": {
"name": "punctuation.separator.namespace.java.el"
}
}
},
{
"match": ",",
"name": "meta.delimiter.java.el"
},
{
"match": "\\(|\\)",
"name": "meta.brace.round.java.el"
},
{
"match": "\\[|\\]",
"name": "meta.brace.square.java.el"
},
{
"name": "constant.boolean.java.el",
"match": "\\b(true|false)\\b"
},
{
"name": "constant.null.java.el",
"match": "\\bnull\\b"
},
{
"name": "constant.numeric.java.el",
"match": "\\b([0-9]+\\.[0-9]+|[0-9]+)\\b"
},
{
"name": "string.quoted.single.java.el",
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.java.el"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.java.el"
}
},
"patterns": [
{
"name": "constant.character.escape.java.el",
"match": "\\\\."
}
]
},
{
"name": "string.quoted.double.java.el",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.java.el"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.java.el"
}
},
"patterns": [
{
"name": "constant.character.escape.java.el",
"match": "\\\\."
}
]
}
]
}

1853
data/source.java.json

File diff suppressed because it is too large

182
data/source.json.json

@ -0,0 +1,182 @@
{
"scopeName": "source.json",
"name": "JSON",
"fileTypes": [
"avsc",
"babelrc",
"bowerrc",
"composer.lock",
"geojson",
"gltf",
"htmlhintrc",
"ipynb",
"jscsrc",
"jshintrc",
"jslintrc",
"json",
"jsonl",
"jsonld",
"languagebabel",
"ldj",
"ldjson",
"Pipfile.lock",
"schema",
"stylintrc",
"template",
"tern-config",
"tern-project",
"tfstate",
"tfstate.backup",
"topojson",
"webapp",
"webmanifest"
],
"patterns": [
{
"include": "#value"
}
],
"repository": {
"array": {
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "punctuation.definition.array.begin.json"
}
},
"end": "(,)?[\\s\\n]*(\\])",
"endCaptures": {
"1": {
"name": "invalid.illegal.trailing-array-separator.json"
},
"2": {
"name": "punctuation.definition.array.end.json"
}
},
"name": "meta.structure.array.json",
"patterns": [
{
"include": "#value"
},
{
"match": ",",
"name": "punctuation.separator.array.json"
},
{
"match": "[^\\s\\]]",
"name": "invalid.illegal.expected-array-separator.json"
}
]
},
"constant": {
"match": "\\b(true|false|null)\\b",
"name": "constant.language.json"
},
"number": {
"match": "-?(?=[1-9]|0(?!\\d))\\d+(\\.\\d+)?([eE][+-]?\\d+)?",
"name": "constant.numeric.json"
},
"object": {
"begin": "{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.dictionary.begin.json"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.definition.dictionary.end.json"
}
},
"name": "meta.structure.dictionary.json",
"patterns": [
{
"begin": "(?=\")",
"end": "(?<=\")",
"name": "meta.structure.dictionary.key.json",
"patterns": [
{
"include": "#string"
}
]
},
{
"begin": ":",
"beginCaptures": {
"0": {
"name": "punctuation.separator.dictionary.key-value.json"
}
},
"end": "(,)(?=[\\s\\n]*})|(,)|(?=})",
"endCaptures": {
"1": {
"name": "invalid.illegal.trailing-dictionary-separator.json"
},
"2": {
"name": "punctuation.separator.dictionary.pair.json"
}
},
"name": "meta.structure.dictionary.value.json",
"patterns": [
{
"include": "#value"
},
{
"match": "[^\\s,]",
"name": "invalid.illegal.expected-dictionary-separator.json"
}
]
},
{
"match": "[^\\s}]",
"name": "invalid.illegal.expected-dictionary-separator.json"
}
]
},
"string": {
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.json"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.json"
}
},
"name": "string.quoted.double.json",
"patterns": [
{
"match": "(?x)\n\\\\ # a literal backslash\n( # followed by\n [\"\\\\/bfnrt] # one of these characters\n | # or\n u[0-9a-fA-F]{4} # a u and four hex digits\n)",
"name": "constant.character.escape.json"
},
{
"match": "\\\\.",
"name": "invalid.illegal.unrecognized-string-escape.json"
}
]
},
"value": {
"patterns": [
{
"include": "#constant"
},
{
"include": "#number"
},
{
"include": "#string"
},
{
"include": "#array"
},
{
"include": "#object"
}
]
}
}
}

668
data/source.litcoffee.json

@ -0,0 +1,668 @@
{
"comment": "CoffeeScript (Literate)",
"fileTypes": [
"litcoffee",
"litcoffee.erb",
"coffee.md"
],
"name": "CoffeeScript (Literate)",
"scopeName": "source.litcoffee",
"firstLineMatch": "(?x)\n# Hashbang\n^\\#!.*(?:\\s|\\/)\n coffee(?:\\s.+?)?\\s(?:-l|--literate)\n(?:\\s|$)\n|\n# Modeline\n(?i:\n # Emacs\n -\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*)\n litcoffee\n (?=[\\s;]|(?<![-*])-\\*-).*?-\\*-\n |\n # Vim\n (?:(?:\\s|^)vi(?:m[<=>]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s*set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*=\n litcoffee\n (?=\\s|:|$)\n)",
"patterns": [
{
"begin": "^(?=([ ]{4}|\\t)(?!$))",
"end": "^(?!([ ]{4}|\\t))",
"name": "markup.raw.block.markdown",
"patterns": [
{
"include": "#block_raw"
}
]
},
{
"begin": "(?x)^\n(?= [ ]{0,3}>.\n| [#]{1,6}\\s*+\n| [ ]{0,3}(?<marker>[-*_])([ ]{0,2}\\k<marker>){2,}[ \\t]*+$\n)",
"comment": "We could also use an empty end match and set applyEndPatternLast, but then we must be sure that the begin pattern will only match stuff matched by the sub-patterns.",
"end": "(?x)^\n(?! [ ]{0,3}>.\n| [#]{1,6}\\s*+\n| [ ]{0,3}(?<marker>[-*_])([ ]{0,2}\\k<marker>){2,}[ \\t]*+$\n)",
"name": "meta.block-level.markdown",
"patterns": [
{
"include": "#block_quote"
},
{
"include": "#heading"
},
{
"include": "#separator"
}
]
},
{
"begin": "^[ ]{0,3}([*+-])(?=\\s)",
"captures": {
"1": {
"name": "punctuation.definition.list_item.markdown"
}
},
"end": "^(?=\\S|[ ]{4,})|(?!\\G)",
"name": "markup.list.unnumbered.markdown",
"patterns": [
{
"include": "#list-paragraph"
}
]
},
{
"begin": "^[ ]{0,3}([0-9]+\\.)(?=\\s)",
"captures": {
"1": {
"name": "punctuation.definition.list_item.markdown"
}
},
"end": "^(?=\\S|[ ]{4,})|(?!\\G)",
"name": "markup.list.numbered.markdown",
"patterns": [
{
"include": "#list-paragraph"
}
]
},
{
"begin": "^(?=<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\\b)(?!.*?</\\1>)",
"comment": "Markdown formatting is disabled inside block-level tags.",
"end": "(?<=^</\\1>$\\n)",
"name": "meta.disable-markdown",
"patterns": [
{
"include": "text.html.basic"
}
]
},
{
"begin": "^(?=<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\\b)",
"comment": "Same rule but for one line disables.",
"end": "$\\n?",
"name": "meta.disable-markdown",
"patterns": [
{
"include": "text.html.basic"
}
]
},
{
"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": "string.other.link.description.title.markdown"
},
"9": {
"name": "punctuation.definition.string.begin.markdown"
},
"10": {
"name": "punctuation.definition.string.end.markdown"
},
"11": {
"name": "string.other.link.description.title.markdown"
},
"12": {
"name": "punctuation.definition.string.begin.markdown"
},
"13": {
"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 quotes…\n | ((\").+?(\")) # or in parens.\n)? # Title is optional\n\\s* # Optional whitespace\n$",
"name": "meta.link.reference.def.markdown"
},
{
"begin": "^(?=\\S)(?![=-]{3,}(?=$))",
"end": "^(?:\\s*$|(?=[ ]{0,3}>.))|(?=[ \\t]*\\n)(?<=^===|^====|=====|^---|^----|-----)[ \\t]*\\n|(?=^#)",
"name": "meta.paragraph.markdown",
"patterns": [
{
"include": "#inline"
},
{
"include": "text.html.basic"
},
{
"captures": {
"1": {
"name": "punctuation.definition.heading.markdown"
}
},
"match": "^(={3,})(?=[ \\t]*$)",
"name": "markup.heading.1.markdown"
},
{
"captures": {
"1": {
"name": "punctuation.definition.heading.markdown"
}
},
"match": "^(-{3,})(?=[ \\t]*$)",
"name": "markup.heading.2.markdown"
}
]
}
],
"repository": {
"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"
},
"block_quote": {
"begin": "\\G[ ]{0,3}(>)(?!$)[ ]?",
"beginCaptures": {
"1": {
"name": "punctuation.definition.blockquote.markdown"
}
},
"comment": " We terminate the block quote when seeing an empty line, a separator or a line with leading > characters. The latter is to “reset” the quote level for quoted lines.",
"end": "(?x)^\n(?= \\s*$\n| [ ]{0,3}(?<marker>[-*_])([ ]{0,2}\\k<marker>){2,}[ \\t]*+$\n| [ ]{0,3}>.\n)",
"name": "markup.quote.markdown",
"patterns": [
{
"begin": "(?x)\\G\n(?= [ ]{0,3}>.\n)",
"end": "^",
"patterns": [
{
"include": "#block_quote"
}
]
},
{
"applyEndPatternLast": 1,
"begin": "(?x)\\G\n(?= ([ ]{4}|\\t)\n| [#]{1,6}\\s*+\n| [ ]{0,3}(?<marker>[-*_])([ ]{0,2}\\k<marker>){2,}[ \\t]*+$\n)",
"end": "^",
"patterns": [
{
"include": "#block_raw"
},
{
"include": "#heading"
},
{
"include": "#separator"
}
]
},
{
"begin": "(?x)\\G\n(?! $\n| [ ]{0,3}>.\n| ([ ]{4}|\\t)\n| [#]{1,6}\\s*+\n| [ ]{0,3}(?<marker>[-*_])([ ]{0,2}\\k<marker>){2,}[ \\t]*+$\n)",
"end": "$|(?<=\\n)",
"patterns": [
{
"include": "#inline"
}
]
}
]
},
"block_raw": {
"name": "markup.raw.block.markdown",
"patterns": [
{
"include": "#coffee_script"
}
]
},
"bold": {
"begin": "(?x)\n(\\*\\*|__)(?=\\S) # Open\n(?=\n (\n <[^>]*+> # HTML tags\n | (?<raw>`+)([^`]|(?!(?<!`)\\k<raw>(?!`))`)*+\\k<raw> # 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 |\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 )++\n (?<=\\S)\\1 # Close\n)",
"captures": {
"1": {
"name": "punctuation.definition.bold.markdown"
}
},
"end": "(?<=\\S)(\\1)",
"name": "markup.bold.markdown",
"patterns": [
{
"applyEndPatternLast": 1,
"begin": "(?=<[^>]*?>)",
"end": "(?<=>)",
"patterns": [
{
"include": "text.html.basic"
}
]
},
{
"include": "#escape"
},
{
"include": "#ampersand"
},
{
"include": "#bracket"
},
{
"include": "#raw"
},
{
"include": "#italic"
},
{
"include": "#image-inline"
},
{
"include": "#link-inline"
},
{
"include": "#link-inet"
},
{
"include": "#link-email"
},
{
"include": "#image-ref"
},
{
"include": "#link-ref-literal"
},
{
"include": "#link-ref"
}
]
},
"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-z/?\\$!])",
"name": "meta.other.valid-bracket.markdown"
},
"coffee_script": {
"patterns": [
{
"include": "source.coffee"
}
]
},
"escape": {
"match": "\\\\[-`*_#+.!(){}\\[\\]\\\\>]",
"name": "constant.character.escape.markdown"
},
"heading": {
"begin": "\\G(#{1,6})(?!#)\\s*(?=\\S)",
"captures": {
"1": {
"name": "punctuation.definition.heading.markdown"
}
},
"contentName": "entity.name.section.markdown",
"end": "\\s*(#*)$\\n?",
"name": "markup.heading.markdown",
"patterns": [
{
"include": "#inline"
}
]
},
"image-inline": {
"captures": {
"1": {
"name": "punctuation.definition.string.begin.markdown"
},
"2": {
"name": "string.other.link.description.markdown"
},
"3": {
"name": "punctuation.definition.string.end.markdown"
},
"5": {
"name": "invalid.illegal.whitespace.markdown"
},
"6": {
"name": "punctuation.definition.metadata.markdown"
},
"7": {
"name": "punctuation.definition.link.markdown"
},
"8": {
"name": "markup.underline.link.image.markdown"
},
"9": {
"name": "punctuation.definition.link.markdown"
},
"10": {
"name": "string.other.link.description.title.markdown"
},
"11": {
"name": "punctuation.definition.string.markdown"
},
"12": {
"name": "punctuation.definition.string.markdown"
},
"13": {
"name": "string.other.link.description.title.markdown"
},
"14": {
"name": "punctuation.definition.string.markdown"
},
"15": {
"name": "punctuation.definition.string.markdown"
},
"16": {
"name": "punctuation.definition.metadata.markdown"
}
},
"match": "(?x)\n\\! # Images start with !\n(\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\]) # Match the link text\n([ ])? # Space not allowed\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(\\))",
"name": "meta.image.inline.markdown"
},
"image-ref": {
"captures": {
"1": {
"name": "punctuation.definition.string.begin.markdown"
},
"2": {
"name": "string.other.link.description.markdown"
},
"4": {
"name": "punctuation.definition.string.begin.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"
},
"inline": {
"patterns": [
{
"include": "#escape"
},
{
"include": "#ampersand"
},
{
"include": "#bracket"
},
{
"include": "#raw"
},
{
"include": "#bold"
},
{
"include": "#italic"
},
{
"include": "#line-break"
},
{
"include": "#image-inline"
},
{
"include": "#link-inline"
},
{
"include": "#link-inet"
},
{
"include": "#link-email"
},
{
"include": "#image-ref"
},
{
"include": "#link-ref-literal"
},
{
"include": "#link-ref"
}
]
},
"italic": {
"begin": "(?x)\n(\\*|_)(?=\\S) # Open\n(?=\n (\n <[^>]*+> # HTML tags\n | (?<raw>`+)([^`]|(?!(?<!`)\\k<raw>(?!`))`)*+\\k<raw> # 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 |\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 | \\1\\1 # Must be bold closer\n | (?!(?<=\\S)\\1). # Everything besides\n )++\n (?<=\\S)\\1 # Close\n)",
"captures": {
"1": {
"name": "punctuation.definition.italic.markdown"
}
},
"end": "(?<=\\S)(\\1)((?!\\1)|(?=\\1\\1))",
"name": "markup.italic.markdown",
"patterns": [
{
"applyEndPatternLast": 1,
"begin": "(?=<[^>]*?>)",
"end": "(?<=>)",
"patterns": [
{
"include": "text.html.basic"
}
]
},
{
"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"
}
]
},
"line-break": {
"match": " {2,}$",
"name": "meta.dummy.line-break"
},
"link-email": {
"captures": {
"1": {
"name": "punctuation.definition.link.markdown"
},
"2": {
"name": "markup.underline.link.markdown"
},
"4": {
"name": "punctuation.definition.link.markdown"
}
},
"match": "(<)((?:mailto:)?[-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(>)",
"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.string.begin.markdown"
},
"2": {
"name": "string.other.link.title.markdown"
},
"4": {
"name": "punctuation.definition.string.end.markdown"
},
"5": {
"name": "invalid.illegal.whitespace.markdown"
},
"6": {
"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": "string.other.link.description.title.markdown"
},
"11": {
"name": "punctuation.definition.string.begin.markdown"
},
"12": {
"name": "punctuation.definition.string.end.markdown"
},
"13": {
"name": "string.other.link.description.title.markdown"
},
"14": {
"name": "punctuation.definition.string.begin.markdown"
},
"15": {
"name": "punctuation.definition.string.end.markdown"
},
"16": {
"name": "punctuation.definition.metadata.markdown"
}
},
"match": "(?x)\n(\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\]) # Match the link text.\n([ ])? # Space not allowed\n(\\() # Opening paren for url\n(<?)(.*?)(>?) # 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(\\))",
"name": "meta.link.inline.markdown"
},
"link-ref": {
"captures": {
"1": {
"name": "punctuation.definition.string.begin.markdown"
},
"2": {
"name": "string.other.link.title.markdown"
},
"4": {
"name": "punctuation.definition.string.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.string.begin.markdown"
},
"2": {
"name": "string.other.link.title.markdown"
},
"4": {
"name": "punctuation.definition.string.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"
},
"list-paragraph": {
"patterns": [
{
"begin": "\\G\\s+(?=\\S)",
"end": "^\\s*$",
"name": "meta.paragraph.list.markdown",
"patterns": [
{
"include": "#inline"
},
{
"captures": {
"1": {
"name": "punctuation.definition.list_item.markdown"
}
},
"comment": "Match the list punctuation",
"match": "^\\s*([*+-]|[0-9]+\\.)"
}
]
}
]
},
"raw": {
"captures": {
"1": {
"name": "punctuation.definition.raw.markdown"
},
"3": {
"name": "punctuation.definition.raw.markdown"
}
},
"match": "(`+)([^`]|(?!(?<!`)\\1(?!`))`)*+(\\1)",
"name": "markup.raw.inline.markdown"
},
"separator": {
"match": "\\G[ ]{0,3}([-*_])([ ]{0,2}\\1){2,}[ \\t]*$\\n?",
"name": "meta.separator.markdown"
}
}
}

145
data/source.lua.json

@ -0,0 +1,145 @@
{
"scopeName": "source.lua",
"name": "Lua",
"fileTypes": [ "lua" ],
"patterns": [
{
"begin": "\\b(function)\\b\\s+([a-zA-Z_][a-zA-Z0-9_]*([.:][a-zA-Z0-9_]+)*)\\s*(\\()",
"beginCaptures": {
"1": { "name": "storage.type.function.lua" },
"2": { "name": "entity.name.function.lua" },
"4": { "name": "punctuation.definition.parameters.begin.lua" }
},
"end": "\\)",
"endCaptures": {
"0": { "name": "punctuation.definition.parameters.end.lua" }
},
"name": "meta.function.lua",
"patterns": [
{
"match": "[a-zA-Z_][a-zA-Z0-9_]*",
"name": "variable.parameter.lua"
}
]
},
{
"begin": "(?<!function)([a-zA-Z_][a-zA-Z0-9_]*([.:][a-zA-Z0-9_]+)*)\\s*(\\(|{)",
"beginCaptures": {
"1": { "name": "entity.name.function.lua" },
"3": { "name": "punctuation.definition.parameters.begin.lua" }
},
"end": "\\)|}",
"endCaptures": {
"0": { "name": "punctuation.definition.parameters.end.lua" }
},
"name": "meta.functioncall.lua",
"patterns": [
{
"include": "$self"
}
]
},
{
"match": "([a-zA-Z_][a-zA-Z0-9_]*([.:][a-zA-Z0-9_]+)*)\\s*('|\")((\\\\.)|[^']*)(\\3)",
"name": "meta.functioncall.lua",
"captures": {
"1": { "name": "entity.name.function.lua" },
"3": { "name": "punctuation.definition.string.begin.lua" },
"5": { "name": "constant.character.escape.lua" },
"6": { "name": "punctuation.definition.string.end.lua" }
}
},
{
"match": "(--)(?!\\s*\\[=*\\[).*",
"captures": {
"1": { "name": "punctuation.definition.comment.lua" }
},
"name": "comment.line.lua"
},
{
"begin": "--\\s*\\[(=*)\\[",
"beginCaptures": {
"0": { "name": "punctuation.definition.comment.begin.lua" }
},
"end": "\\]\\1\\]",
"endCaptures": {
"0": { "name": "punctuation.definition.comment.end.lua" }
},
"name": "comment.block.lua"
},
{
"match": "('|\")((\\\\.)|[^']*)(\\1)",
"name": "string.line.lua",
"captures": {
"1": { "name": "punctuation.definition.string.begin.lua" },
"3": { "name": "constant.character.escape.lua" },
"4": { "name": "punctuation.definition.string.end.lua" }
}
},
{
"begin": "(?!--\\s*)\\[(=*)\\[",
"beginCaptures": {
"0": { "name": "punctuation.definition.string.begin.lua" }
},
"end": "\\]\\1\\]",
"endCaptures": {
"0": { "name": "punctuation.definition.string.end.lua" }
},
"name": "string.block.lua"
},
{
"match": "(?<![0-9.])\\s0x[a-fA-F0-9]+|\\b[0-9]+(\\.[0-9]+)?([eE]-?[0-9]+)?|\\.[0-9]+([eE]-?[0-9]+)?",
"name": "constant.numeric.lua"
},
{
"match": "\\b(this|self|_G|_VERSION)\\b",
"name": "variable.language.lua"
},
{
"match": "\\b(nil|true|false)\\b",
"name": "constant.language.lua"
},
{
"match": "\\blocal\\b",
"name": "storage.type.lua"
},
{
"match": "::.*::",
"name": "storage.type.label.lua"
},
{
"match": "\\b(\\{)(\\})\\b",
"captures": {
"1": { "name": "punctuation.definition.table.begin.bracket.curly" },
"2": { "name": "punctuation.definition.table.end.bracket.curly" }
}
},
{
"match": "\\b(do|return|if|then|elseif|else|while|repeat|until|for|in|goto|end)\\b",
"name": "keyword.control.lua"
},
{
"match": "\\b(or|and|not)\\b",
"name": "keyword.operator.lua"
},
{
"match": "=|<|<=|==|~=|>=|>|\\||~|&|<<|>>|\\+|-|\\*|\\/|\\/\\/|%|(?<!\\.)\\.\\.(?!\\.)|\\^|#",
"name": "keyword.operator.lua"
},
{
"match": "\\.|,|;",
"name": "meta.delimiter.lua"
}
]
}

2805
data/source.python.json

File diff suppressed because it is too large

178
data/source.regexp.python.json

@ -0,0 +1,178 @@
{
"name": "Regular Expressions (Python)",
"scopeName": "source.regexp.python",
"foldingStartMarker": "(/\\*|\\{|\\()",
"foldingStopMarker": "(\\*/|\\}|\\))",
"fileTypes": [
"re"
],
"patterns": [
{
"match": "\\\\[bBAZzG]|\\^|\\$",
"name": "keyword.control.anchor.regexp"
},
{
"match": "\\\\[1-9][0-9]?",
"name": "keyword.other.back-reference.regexp"
},
{
"match": "\\\\.",
"name": "constant.character.escape.backslash.regexp"
},
{
"match": "[?+*][?+]?|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",
"name": "keyword.operator.quantifier.regexp"
},
{
"match": "\\|",
"name": "keyword.operator.or.regexp"
},
{
"begin": "\\(\\?\\#",
"end": "\\)",
"name": "comment.block.regexp"
},
{
"comment": "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.",
"match": "(?<=^|\\s)#\\s[[a-zA-Z0-9,. \\t?!-:][^\\x{00}-\\x{7F}]]*$",
"name": "comment.line.number-sign.regexp"
},
{
"match": "\\(\\?[iLmsux]+\\)",
"name": "keyword.other.option-toggle.regexp"
},
{
"match": "(\\()(\\?P=([a-zA-Z_][a-zA-Z_0-9]*\\w*))(\\))",
"name": "keyword.other.back-reference.named.regexp"
},
{
"begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
"beginCaptures": {
"1": {
"name": "punctuation.definition.group.regexp"
},
"2": {
"name": "punctuation.definition.group.assertion.regexp"
},
"3": {
"name": "meta.assertion.look-ahead.regexp"
},
"4": {
"name": "meta.assertion.negative-look-ahead.regexp"
},
"5": {
"name": "meta.assertion.look-behind.regexp"
},
"6": {
"name": "meta.assertion.negative-look-behind.regexp"
}
},
"end": "(\\))",
"endCaptures": {
"1": {
"name": "punctuation.definition.group.regexp"
}
},
"name": "meta.group.assertion.regexp",
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "(\\()(\\?\\(([1-9][0-9]?|[a-zA-Z_][a-zA-Z_0-9]*)\\))",
"beginCaptures": {
"1": {
"name": "punctuation.definition.group.regexp"
},
"2": {
"name": "punctuation.definition.group.assertion.conditional.regexp"
},
"3": {
"name": "entity.name.section.back-reference.regexp"
}
},
"comment": "we can make this more sophisticated to match the | character that separates yes-pattern from no-pattern, but it's not really necessary.",
"end": "(\\))",
"name": "meta.group.assertion.conditional.regexp",
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "(\\()((\\?P<)([a-z]\\w*)(>)|(\\?:))?",
"beginCaptures": {
"1": {
"name": "punctuation.definition.group.regexp"
},
"3": {
"name": "punctuation.definition.group.capture.regexp"
},
"4": {
"name": "entity.name.section.group.regexp"
},
"5": {
"name": "punctuation.definition.group.capture.regexp"
},
"6": {
"name": "punctuation.definition.group.no-capture.regexp"
}
},
"end": "(\\))",
"endCaptures": {
"1": {
"name": "punctuation.definition.group.regexp"
}
},
"name": "meta.group.regexp",
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "(\\[)(\\^)?",
"beginCaptures": {
"1": {
"name": "punctuation.definition.character-class.begin.regexp"
},
"2": {
"name": "keyword.operator.negation.regexp"
}
},
"end": "(?!\\G)\\]",
"endCaptures": {
"0": {
"name": "punctuation.definition.character-class.end.regexp"
}
},
"name": "constant.other.character-class.set.regexp",
"patterns": [
{
"match": "\\\\[wWsSdDhH]",
"name": "constant.character.character-class.regexp"
},
{
"match": "\\\\.",
"name": "constant.character.escape.backslash.regexp"
},
{
"captures": {
"2": {
"name": "constant.character.escape.backslash.regexp"
},
"4": {
"name": "constant.character.escape.backslash.regexp"
}
},
"match": "((\\\\.)|.)\\-((\\\\.)|[^\\]])",
"name": "constant.other.character-class.range.regexp"
}
]
}
]
}

27
data/source.ruby.gemfile.json

@ -0,0 +1,27 @@
{
"name": "Gemfile",
"scopeName": "source.ruby.gemfile",
"fileTypes": [
"Gemfile"
],
"patterns": [
{
"include": "source.ruby"
},
{
"begin": "\\b(?<!\\.|::)(gem|git|group|platforms|ruby|source)\\b(?![?!])",
"captures": {
"1": {
"name": "keyword.other.special-method.ruby.gemfile"
}
},
"end": "$|(?=#|})",
"name": "meta.declaration.ruby.gemfile",
"patterns": [
{
"include": "$self"
}
]
}
]
}

2829
data/source.ruby.json

File diff suppressed because it is too large

5408
data/source.ts.json

File diff suppressed because one or more lines are too long

5661
data/source.tsx.json

File diff suppressed because one or more lines are too long

154
data/text.html.erb.json

@ -0,0 +1,154 @@
{
"name": "HTML (Ruby - ERB)",
"scopeName": "text.html.erb",
"fileTypes": [
"rhtml",
"html.erb"
],
"injections": {
"text.html.erb - (meta.embedded.block.erb | meta.embedded.line.erb | meta.tag | comment), meta.tag string.quoted, L:source.js.embedded.html": {
"patterns": [
{
"begin": "(^\\s*)(?=<%+#(?![^%]*%>))",
"beginCaptures": {
"0": {
"name": "punctuation.whitespace.comment.leading.erb"
}
},
"end": "(?!\\G)(\\s*$\\n)?",
"endCaptures": {
"0": {
"name": "punctuation.whitespace.comment.trailing.erb"
}
},
"patterns": [
{
"include": "#comment"
}
]
},
{
"begin": "(^\\s*)(?=<%(?![^%]*%>))",
"beginCaptures": {
"0": {
"name": "punctuation.whitespace.embedded.leading.erb"
}
},
"end": "(?!\\G)(\\s*$\\n)?",
"endCaptures": {
"0": {
"name": "punctuation.whitespace.embedded.trailing.erb"
}
},
"patterns": [
{
"include": "#tags"
}
]
},
{
"include": "#comment"
},
{
"include": "#tags"
}
]
}
},
"patterns": [
{
"include": "text.html.basic"
}
],
"repository": {
"comment": {
"patterns": [
{
"begin": "<%+#",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.begin.erb"
}
},
"end": "%>",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.end.erb"
}
},
"name": "comment.block.erb"
}
]
},
"tags": {
"patterns": [
{
"begin": "<%+(?!>)[-=]?(?![^%]*%>)",
"beginCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.erb"
}
},
"contentName": "source.ruby.embedded.erb",
"end": "-?%>",
"endCaptures": {
"0": {
"name": "punctuation.section.embedded.end.erb"
},
"1": {
"name": "source.ruby"
}
},
"name": "meta.embedded.block.erb",
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.comment.erb"
}
},
"match": "(#).*?(?=-?%>)",
"name": "comment.line.number-sign.erb"
},
{
"include": "source.ruby"
}
]
},
{
"begin": "<%+(?!>)[-=]?",
"beginCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.erb"
}
},
"contentName": "source.ruby.embedded.erb",
"end": "-?%>",
"endCaptures": {
"0": {
"name": "punctuation.section.embedded.end.erb"
},
"1": {
"name": "source.ruby"
}
},
"name": "meta.embedded.line.erb",
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.comment.erb"
}
},
"match": "(#).*?(?=-?%>)",
"name": "comment.line.number-sign.erb"
},
{
"include": "source.ruby"
}
]
}
]
}
}
}

1202
data/text.html.jsp.json

File diff suppressed because it is too large

201
data/text.html.smarty.json

@ -0,0 +1,201 @@
{
"fileTypes": [
"tpl"
],
"scopeName": "text.html.smarty",
"foldingStartMarker": "\\{%?",
"foldingStopMarker": "%?\\}",
"name": "Smarty",
"patterns": [
{
"include": "#comments"
},
{
"include": "#blocks"
},
{
"include": "text.html.basic"
}
],
"repository": {
"blocks": {
"patterns": [
{
"begin": "(\\{%?)",
"beginCaptures": {
"1": {
"name": "punctuation.section.embedded.begin.smarty"
}
},
"end": "(%?\\})",
"endCaptures": {
"1": {
"name": "punctuation.section.embedded.end.smarty"
}
},
"name": "source.smarty",
"patterns": [
{
"include": "#strings"
},
{
"include": "#variables"
},
{
"include": "#lang"
}
]
}
]
},
"comments": {
"patterns": [
{
"begin": "(\\{%?)\\*",
"beginCaptures": {
"1": {
"name": "punctuation.definition.comment.smarty"
}
},
"end": "\\*(%?\\})",
"name": "comment.block.smarty",
"patterns": []
}
]
},
"lang": {
"patterns": [
{
"match": "(!==|!=|!|<=|>=|<|>|===|==|%|&&|\\|\\|)|\\b(and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\b",
"name": "keyword.operator.smarty"
},
{
"match": "\\b(TRUE|FALSE|true|false)\\b",
"name": "constant.language.smarty"
},
{
"match": "\\b(php|if|else|elseif|foreach|foreachelse|for|section|switch|case|break|default)\\b",
"name": "keyword.control.smarty"
},
{
"captures": {
"0": {
"name": "variable.parameter.smarty"
}
},
"match": "\\b([a-zA-Z]+)=",
"name": "meta.attribute.smarty"
},
{
"match": "\\b(capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\b",
"name": "support.function.built-in.smarty"
},
{
"match": "\\|(capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)",
"name": "support.function.variable-modifier.smarty"
}
]
},
"strings": {
"patterns": [
{
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.smarty"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.smarty"
}
},
"name": "string.quoted.single.smarty",
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.smarty"
}
]
},
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.smarty"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.smarty"
}
},
"name": "string.quoted.double.smarty",
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.smarty"
}
]
}
]
},
"variables": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.variable.smarty"
}
},
"match": "\\b(\\$)Smarty\\.",
"name": "variable.other.global.smarty"
},
{
"captures": {
"1": {
"name": "punctuation.definition.variable.smarty"
},
"2": {
"name": "variable.other.smarty"
}
},
"match": "(\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\b",
"name": "variable.other.smarty"
},
{
"captures": {
"1": {
"name": "keyword.operator.smarty"
},
"2": {
"name": "variable.other.property.smarty"
}
},
"match": "(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b",
"name": "variable.other.smarty"
},
{
"captures": {
"1": {
"name": "keyword.operator.smarty"
},
"2": {
"name": "meta.function-call.object.smarty"
},
"3": {
"name": "punctuation.definition.variable.smarty"
},
"4": {
"name": "punctuation.definition.variable.smarty"
}
},
"match": "(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\().*?(\\))",
"name": "variable.other.smarty"
}
]
}
}
}

271
data/text.html.textile.json

@ -0,0 +1,271 @@
{
"fileTypes": [
"textile"
],
"firstLineMatch": "textile",
"name": "Textile",
"patterns": [
{
"begin": "(^h[1-6]([<>=()]+)?)(\\([^)]*\\)|{[^}]*})*(\\.)",
"captures": {
"1": {
"name": "entity.name.tag.heading.textile"
},
"3": {
"name": "entity.name.type.textile"
},
"4": {
"name": "entity.name.tag.heading.textile"
}
},
"end": "^$",
"name": "markup.heading.textile",
"patterns": [
{
"include": "#inline"
},
{
"include": "text.html.basic"
}
]
},
{
"begin": "(^bq([<>=()]+)?)(\\([^)]*\\)|{[^}]*})*(\\.)",
"captures": {
"1": {
"name": "entity.name.tag.blockquote.textile"
},
"3": {
"name": "entity.name.type.textile"
},
"4": {
"name": "entity.name.tag.blockquote.textile"
}
},
"end": "^$",
"name": "markup.quote.textile",
"patterns": [
{
"include": "#inline"
},
{
"include": "text.html.basic"
}
]
},
{
"begin": "(^fn[0-9]+([<>=()]+)?)(\\([^)]*\\)|{[^}]*})*(\\.)",
"captures": {
"1": {
"name": "entity.name.tag.footnote.textile"
},
"3": {
"name": "entity.name.type.textile"
},
"4": {
"name": "entity.name.tag.footnote.textile"
}
},
"end": "^$",
"name": "markup.other.footnote.textile",
"patterns": [
{
"include": "#inline"
},
{
"include": "text.html.basic"
}
]
},
{
"begin": "(^table([<>=()]+)?)(\\([^)]*\\)|{[^}]*})*(\\.)",
"captures": {
"1": {
"name": "entity.name.tag.footnote.textile"
},
"3": {
"name": "entity.name.type.textile"
},
"4": {
"name": "entity.name.tag.footnote.textile"
}
},
"end": "^$",
"name": "markup.other.table.textile",
"patterns": [
{
"include": "#inline"
},
{
"include": "text.html.basic"
}
]
},
{
"begin": "^(?=\\S)",
"end": "^$",
"name": "meta.paragraph.textile",
"patterns": [
{
"captures": {
"1": {
"name": "entity.name.tag.paragraph.textile"
},
"3": {
"name": "entity.name.type.textile"
},
"4": {
"name": "entity.name.tag.paragraph.textile"
}
},
"match": "(^p([<>=()]+)?)(\\([^)]*\\)|{[^}]*})*(\\.)",
"name": "entity.name.section.paragraph.textile"
},
{
"include": "#inline"
},
{
"include": "text.html.basic"
}
]
},
{
"comment": "Since html is valid in Textile include the html patterns",
"include": "text.html.basic"
}
],
"repository": {
"inline": {
"patterns": [
{
"comment": "& is handled automagically by textile, so we match it to avoid text.html.basic from flagging it",
"match": "&(?![A-Za-z0-9]+;)",
"name": "text.html.textile"
},
{
"captures": {
"1": {
"name": "entity.name.type.textile"
}
},
"match": "^\\*+(\\([^)]*\\)|{[^}]*})*(\\s+|$)",
"name": "markup.list.unnumbered.textile"
},
{
"captures": {
"1": {
"name": "entity.name.type.textile"
}
},
"match": "^#+(\\([^)]*\\)|{[^}]*})*\\s+",
"name": "markup.list.numbered.textile"
},
{
"captures": {
"1": {
"name": "string.other.link.title.textile"
},
"2": {
"name": "string.other.link.description.title.textile"
},
"3": {
"name": "constant.other.reference.link.textile"
}
},
"match": "(?x)\n\t\t\t\t\t\t\t\t\"\t\t\t\t\t\t\t\t# Start name, etc\n\t\t\t\t\t\t\t\t\t(?:\t\t\t\t\t\t\t# Attributes\n\t\t\t\t\t\t\t\t\t\t# I swear, this is how the language is defined,\n\t\t\t\t\t\t\t\t\t\t# couldnt make it up if I tried.\n\t\t\t\t\t\t\t\t\t\t(?:\\([^)]+\\))?(?:\\{[^}]+\\})?(?:\\[[^\\]]+\\])?\n\t\t\t\t\t\t\t\t\t\t\t# Class, Style, Lang\n\t\t\t\t\t\t\t\t\t | (?:\\{[^}]+\\})?(?:\\[[^\\]]+\\])?(?:\\([^)]+\\))?\n\t\t\t\t\t\t\t\t\t\t\t# Style, Lang, Class\n\t\t\t\t\t\t\t\t\t | (?:\\[[^\\]]+\\])?(?:\\{[^}]+\\})?(?:\\([^)]+\\))?\n\t\t\t\t\t\t\t\t\t\t\t# Lang, Style, Class\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t([^\"]+?)\t\t\t\t\t# Link name\n\t\t\t\t\t\t\t\t\t\\s?\t\t\t\t\t\t\t# Optional whitespace\n\t\t\t\t\t\t\t\t\t(?:\\(([^)]+?)\\))?\n\t\t\t\t\t\t\t\t\":\t\t\t\t\t\t\t\t# End name\n\t\t\t\t\t\t\t\t(\\w[-\\w_]*)\t\t\t\t\t\t# Linkref\n\t\t\t\t\t\t\t\t(?=[^\\w\\/;]*?(<|\\s|$))\t\t\t# Catch closing punctuation\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# and end of meta.link\n\t\t\t\t\t",
"name": "meta.link.reference.textile"
},
{
"captures": {
"1": {
"name": "string.other.link.title.textile"
},
"2": {
"name": "string.other.link.description.title.textile"
},
"3": {
"name": "markup.underline.link.textile"
}
},
"match": "(?x)\n\t\t\t\t\t\t\t\t\"\t\t\t\t\t\t\t\t# Start name, etc\n\t\t\t\t\t\t\t\t\t(?:\t\t\t\t\t\t\t# Attributes\n\t\t\t\t\t\t\t\t\t\t# I swear, this is how the language is defined,\n\t\t\t\t\t\t\t\t\t\t# couldnt make it up if I tried.\n\t\t\t\t\t\t\t\t\t\t(?:\\([^)]+\\))?(?:\\{[^}]+\\})?(?:\\[[^\\]]+\\])?\n\t\t\t\t\t\t\t\t\t\t\t# Class, Style, Lang\n\t\t\t\t\t\t\t\t\t | (?:\\{[^}]+\\})?(?:\\[[^\\]]+\\])?(?:\\([^)]+\\))?\n\t\t\t\t\t\t\t\t\t\t\t# Style, Lang, Class\n\t\t\t\t\t\t\t\t\t | (?:\\[[^\\]]+\\])?(?:\\{[^}]+\\})?(?:\\([^)]+\\))?\n\t\t\t\t\t\t\t\t\t\t\t# Lang, Style, Class\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t([^\"]+?)\t\t\t\t\t# Link name\n\t\t\t\t\t\t\t\t\t\\s?\t\t\t\t\t\t\t# Optional whitespace\n\t\t\t\t\t\t\t\t\t(?:\\(([^)]+?)\\))?\n\t\t\t\t\t\t\t\t\":\t\t\t\t\t\t\t\t# End Name\n\t\t\t\t\t\t\t\t(\\S*?(?:\\w|\\/|;))\t\t\t\t# URL\n\t\t\t\t\t\t\t\t(?=[^\\w\\/;]*?(<|\\s|$))\t\t\t# Catch closing punctuation\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# and end of meta.link\n\t\t\t\t\t",
"name": "meta.link.inline.textile"
},
{
"captures": {
"2": {
"name": "markup.underline.link.image.textile"
},
"3": {
"name": "string.other.link.description.textile"
},
"4": {
"name": "markup.underline.link.textile"
}
},
"match": "(?x)\n\t\t\t\t\t\t\t\t\\!\t\t\t\t\t\t\t\t\t\t# Open image\n\t\t\t\t\t\t\t\t(\\<|\\=|\\>)?\t\t\t\t\t\t\t\t# Optional alignment\n\t\t\t\t\t\t\t\t(?:\t\t\t\t\t\t\t\t\t\t# Attributes\n\t\t\t\t\t\t\t\t\t# I swear, this is how the language is defined,\n\t\t\t\t\t\t\t\t\t# couldnt make it up if I tried.\n\t\t\t\t\t\t\t\t\t(?:\\([^)]+\\))?(?:\\{[^}]+\\})?(?:\\[[^\\]]+\\])?\n\t\t\t\t\t\t\t\t\t\t# Class, Style, Lang\n\t\t\t\t\t\t\t\t | (?:\\{[^}]+\\})?(?:\\[[^\\]]+\\])?(?:\\([^)]+\\))?\n\t\t\t\t\t\t\t\t\t\t# Style, Lang, Class\n\t\t\t\t\t\t\t\t | (?:\\[[^\\]]+\\])?(?:\\{[^}]+\\})?(?:\\([^)]+\\))?\n\t\t\t\t\t\t\t\t\t\t# Lang, Style, Class\n\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t(?:\\.[ ])? \t\t\t\t\t# Optional\n\t\t\t\t\t\t\t\t([^\\s(!]+?) \t\t\t\t\t# Image URL\n\t\t\t\t\t\t\t\t\\s? \t\t\t\t\t\t# Optional space\n\t\t\t\t\t\t\t\t(?:\\(((?:[^\\(\\)]|\\([^\\)]+\\))+?)\\))? \t# Optional title\n\t\t\t\t\t\t\t\t\\!\t\t\t\t\t\t\t\t\t\t# Close image\n\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t(\\S*?(?:\\w|\\/|;))\t\t\t\t\t# URL\n\t\t\t\t\t\t\t\t\t(?=[^\\w\\/;]*?(<|\\s|$))\t\t\t\t# Catch closing punctuation\n\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t",
"name": "meta.image.inline.textile"
},
{
"captures": {
"1": {
"name": "entity.name.type.textile"
}
},
"match": "\\|(\\([^)]*\\)|{[^}]*})*(\\\\\\||.)+\\|",
"name": "markup.other.table.cell.textile"
},
{
"captures": {
"3": {
"name": "entity.name.type.textile"
}
},
"match": "\\B(\\*\\*?)((\\([^)]*\\)|{[^}]*}|\\[[^]]+\\]){0,3})(\\S.*?\\S|\\S)\\1\\B",
"name": "markup.bold.textile"
},
{
"captures": {
"2": {
"name": "entity.name.type.textile"
}
},
"match": "\\B-((\\([^)]*\\)|{[^}]*}|\\[[^]]+\\]){0,3})(\\S.*?\\S|\\S)-\\B",
"name": "markup.deleted.textile"
},
{
"captures": {
"2": {
"name": "entity.name.type.textile"
}
},
"match": "\\B\\+((\\([^)]*\\)|{[^}]*}|\\[[^]]+\\]){0,3})(\\S.*?\\S|\\S)\\+\\B",
"name": "markup.inserted.textile"
},
{
"captures": {
"2": {
"name": "entity.name.type.textile"
}
},
"match": "(?:\\b|\\s)_((\\([^)]*\\)|{[^}]*}|\\[[^]]+\\]){0,3})(\\S.*?\\S|\\S)_(?:\\b|\\s)",
"name": "markup.italic.textile"
},
{
"captures": {
"3": {
"name": "entity.name.type.textile"
}
},
"match": "\\B([@\\^~%]|\\?\\?)((\\([^)]*\\)|{[^}]*}|\\[[^]]+\\]){0,3})(\\S.*?\\S|\\S)\\1",
"name": "markup.italic.phrasemodifiers.textile"
},
{
"comment": "Footnotes",
"match": "(?<!w)\\[[0-9+]\\]",
"name": "entity.name.tag.textile"
}
]
}
},
"scopeName": "text.html.textile"
}

90
data/text.junit-test-report.json

@ -0,0 +1,90 @@
{
"scopeName": "text.junit-test-report",
"name": "JUnit Test Report",
"firstLineMatch": "^Testsuite:",
"patterns": [
{
"captures": {
"1": {
"name": "meta.testsuite.label.junit-test-report"
},
"2": {
"name": "entity.name.testsuite.junit-test-report"
}
},
"match": "(Testsuite:) (.+)$\\n",
"name": "meta.testsuite.name.junit-test-report"
},
{
"captures": {
"1": {
"name": "meta.testcase.label.junit-test-report"
},
"2": {
"name": "entity.name.testcase.junit-test-report"
}
},
"match": "(Testcase:) (.+) took ([\\d\\.]+) sec$\\n",
"name": "meta.testcase.name.junit-test-report"
},
{
"begin": "at\\s+(?=.+?\\(.+?\\)$)",
"end": "$\\n",
"name": "meta.stackframe.junit-test-report",
"patterns": [
{
"match": "(?<=\\.)[^\\.]+?(?=\\()",
"name": "meta.stackframe.method.junit-test-report"
},
{
"captures": {
"1": {
"name": "meta.stackframe.source.junit-test-report"
},
"3": {
"name": "meta.stackframe.source.line.junit-test-report"
}
},
"match": "\\((.+)(:)(.+)\\)$"
}
]
},
{
"begin": "------------- Standard Output ---------------$\\n",
"end": "------------- ---------------- ---------------$\\n",
"name": "meta.section.output.junit-test-report",
"patterns": [
{
"begin": "--Output from (.+?)--$\\n",
"beginCaptures": {
"1": {
"name": "entity.name.testcase.junit-test-report"
}
},
"contentName": "meta.output.content.junit-test-report",
"end": "(?=--Output from|------------- ---------------- ---------------)",
"name": "meta.output.junit-test-report"
}
]
},
{
"begin": "------------- Standard Error -----------------$\\n",
"contentName": "meta.error.junit-test-report",
"end": "------------- ---------------- ---------------$\\n",
"name": "meta.section.error.junit-test-report",
"patterns": [
{
"begin": "--Output from (.+?)--$\\n",
"beginCaptures": {
"1": {
"name": "entity.name.testcase.junit-test-report"
}
},
"contentName": "meta.error.content.junit-test-report",
"end": "(?=--Output from|------------- ---------------- ---------------)",
"name": "meta.error.junit-test-report"
}
]
}
]
}

4313
data/text.md.json

File diff suppressed because one or more lines are too long

25
data/text.python.console.json

@ -0,0 +1,25 @@
{
"scopeName": "text.python.console",
"name": "Python Console",
"fileTypes": [
"doctest",
"pycon"
],
"patterns": [
{
"match": "^(>{3}|\\.{3}|In \\[\\d+\\]:) (.+)$",
"captures": {
"1": {
"name": "punctuation.separator.prompt.python.console"
},
"2": {
"patterns": [
{
"include": "source.python"
}
]
}
}
}
]
}

46
data/text.python.traceback.json

@ -0,0 +1,46 @@
{
"scopeName": "text.python.traceback",
"name": "Python Traceback",
"fileTypes": [
"pytb"
],
"patterns": [
{
"match": "^ File (\"[^\"]+\"), line (\\d+)(?:, in (.+))?$",
"captures": {
"1": {
"name": "string.python.traceback"
},
"2": {
"name": "constant.numeric.python.traceback"
},
"3": {
"name": "entity.name.function.python.traceback"
}
}
},
{
"match": "^ (.+)$",
"captures": {
"1": {
"patterns": [
{
"include": "source.python"
}
]
}
}
},
{
"match": "^([^\\s:]+):(?: (.+))?$",
"captures": {
"1": {
"name": "entity.name.type.class.python.traceback"
},
"2": {
"name": "string.python.traceback"
}
}
}
]
}

58
run

@ -80,6 +80,41 @@ fi
if (( $(which $awkcmd composer parallel yarn | wc -l) < 4 )); then fail; fi
case $1 in
init)
yarn install
mkdir -p "$cwd"/deps
rm -rf "$cwd"/deps/*
cd "$cwd"/deps
printf "franzheidl/atom-applescript
atom/language-c
atom/language-coffee-script
atom/language-css
rmosolgo/language-graphql
atom/language-html
atom/language-java
atom/language-javascript
atom/language-json
burodepeper/language-markdown
Azganoth/language-lua-plus
atom/language-php
atom/language-python
atom/language-ruby
atom/language-shellscript
MaxGiting/atom-language-smarty
atom/language-sql
al3x/atom-language-textile
atom/language-typescript
atom/language-xml" | parallel "git clone https://github.com/{}.git"
cd "$cwd"
;;
needed)
grep -Fxv -f <(cd "$cwd"/data && ls -1 *.json | sed -e 's/\.json$//g') <(cat "$cwd"/data/*.json | grep -E "\"include\"\s*:\s*\"[^#\$]+\"" | gawk '{ match($0, /"include": "(.+?)"/, arr); if(arr[1] != "") print arr[1] }' | sort -u)
;;
build | *)
rm -rf "$cwd"/data/*
@ -87,25 +122,10 @@ build | *)
ls -1 "$cwd"/deps/**/grammars/!(tree-sitter-*).cson | parallel "temp=\$(mktemp) &&
csonc --output=\$temp {}
mv \$temp \"$cwd\"/data/\$(grep -m1 scopeName \$temp |
$awkcmd '{ match(\$0, /\s*:\s*\"(.+?)\"/, arr); if(arr[1] != \"\") print arr[1] }').json"
;;
init)
yarn install
mkdir -p "$cwd"/deps
printf "css
html
javascript
php
shellscript
sql
typescript
xml" | parallel "git clone https://github.com/atom/language-{}.git \"$cwd\"/deps/{}"
;;
$awkcmd '{ match(\$0, /\s*:\s*\"(.+?)\"/, arr); if(arr[1] != \"\") print arr[1] }').json"
needed)
cat "$cwd"/data/*.json | grep -E "\"include\"\s*:\s*\"[^#\$]+\"" | gawk '{ match($0, /"in
clude": "(.+?)"/, arr); if(arr[1] != "") print arr[1] }' | sort -u
# Some packages use JSON files, so just rename them to their scopes
ls -1 "$cwd"/deps/**/grammars/!(tree-sitter-*).json | parallel "cp {} \"$cwd\"/data/\$(grep -m1 scopeName {} |
$awkcmd '{ match(\$0, /\s*:\s*\"(.+?)\"/, arr); if(arr[1] != \"\") print arr[1] }').json"
;;
esac
Loading…
Cancel
Save