{ "scopeName": "etc", "patterns": [ { "include": "#comma" }, { "include": "#comment" }, { "include": "#esc" }, { "include": "#float" }, { "include": "#int" }, { "include": "#str" }, { "include": "#colon" }, { "include": "#eql" }, { "include": "#dot" } ], "repository": { "bareword": { "name": "string.unquoted.bareword", "match": "[^\"\\s][\\S]*" }, "bool": { "name": "constant.logical.bool.boolean.${1:/downcase}", "match": "\\b(true|false|TRUE|FALSE)\\b" }, "bracket": { "patterns": [ { "name": "punctuation.definition.bracket.curly.brace.begin", "match": "\\{" }, { "name": "punctuation.definition.bracket.curly.brace.end", "match": "\\}" }, { "name": "punctuation.definition.bracket.square.begin", "match": "\\[" }, { "name": "punctuation.definition.bracket.square.end", "match": "\\]" }, { "name": "punctuation.definition.bracket.round.parenthesis.begin", "match": "\\(" }, { "name": "punctuation.definition.bracket.round.parenthesis.end", "match": "\\)" }, { "name": "punctuation.definition.bracket.angle.begin", "match": "\u003c" }, { "name": "punctuation.definition.bracket.angle.end", "match": "\u003e" } ] }, "colon": { "name": "keyword.operator.assignment.key-value.colon", "match": ":" }, "comma": { "name": "punctuation.separator.delimiter.comma", "match": "," }, "comment": { "patterns": [ { "include": "#commentHash" } ] }, "commentHash": { "name": "comment.line.number-sign", "begin": "#", "end": "$", "beginCaptures": { "0": { "name": "punctuation.definition.comment" } } }, "commentSemi": { "name": "comment.line.semicolon", "begin": ";+", "end": "$", "beginCaptures": { "0": { "name": "punctuation.definition.comment" } } }, "commentSlash": { "name": "comment.line.double-slash", "begin": "//", "end": "$", "beginCaptures": { "0": { "name": "punctuation.definition.comment" } } }, "dash": { "name": "punctuation.delimiter.separator.dash.hyphen", "match": "-" }, "dot": { "name": "punctuation.delimiter.separator.property.period.dot", "match": "\\." }, "dotPair": { "name": "keyword.operator.punctuation.dots.splat.range.spread.rest", "match": "\\.\\.|‥" }, "dotTrail": { "name": "punctuation.delimiter.separator.dotted.border.leader.dots", "match": "\\.{4,}" }, "dots": { "patterns": [ { "include": "#ellipsis" }, { "include": "#dotPair" }, { "include": "#dot" } ] }, "ellipsis": { "name": "keyword.operator.punctuation.ellipsis.splat.range.spread.rest", "match": "\\.{3}|…" }, "eql": { "name": "keyword.operator.assignment.key-value.equals-sign", "match": "=" }, "esc": { "name": "constant.character.escape.backslash", "match": "(\\\\).", "captures": { "1": { "name": "punctuation.definition.escape.backslash" } } }, "float": { "patterns": [ { "include": "#floatExp" }, { "include": "#floatNoExp" } ] }, "floatExp": { "name": "constant.numeric.float.real.decimal.dec.exponential.scientific", "match": "[-+]?(?:[0-9]*\\.[0-9]+|[0-9]+\\.)(?:[eE][-+]?[0-9]+)++" }, "floatNoExp": { "name": "constant.numeric.float.real.decimal.dec", "match": "[-+]?(?:[0-9]*\\.[0-9]+|[0-9]+\\.)++" }, "hex": { "name": "constant.numeric.integer.int.hexadecimal.hex", "match": "[-+]?[A-Fa-f0-9]+" }, "hexNoSign": { "name": "constant.numeric.integer.int.hexadecimal.hex", "match": "[A-Fa-f0-9]+" }, "int": { "patterns": [ { "include": "#intExp" }, { "include": "#intNoExp" } ] }, "intExp": { "name": "constant.numeric.integer.int.decimal.dec.exponential.scientific", "match": "[-+]?[0-9]+[eE][-+]?[0-9]+" }, "intNoExp": { "name": "constant.numeric.integer.int.decimal.dec", "match": "[-+]?[0-9]+" }, "ip": { "name": "constant.numeric.other.ip-address", "match": "(?:\\d+\\.){3,}\\d+(?=\\s|$)", "captures": { "0": { "patterns": [ { "include": "#dot" } ] } } }, "num": { "patterns": [ { "include": "#float" }, { "include": "#int" } ] }, "str": { "patterns": [ { "include": "#strDouble" }, { "include": "#strSingle" } ] }, "strDouble": { "name": "string.quoted.double", "begin": "\"", "end": "\"|(?=$)", "patterns": [ { "include": "#esc" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end" } } }, "strSingle": { "name": "string.quoted.single", "begin": "'", "end": "'|(?=$)", "patterns": [ { "include": "#esc" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end" } } }, "url": { "patterns": [ { "match": "(?x)\n(\"|'|\\b)\n(\n\t# Protocol\n\t( https?\n\t| s?ftp\n\t| ftps\n\t| file\n\t| wss?\n\t| smb\n\t| git (?:\\+https?)?\n\t| ssh\n\t| rsync\n\t| afp\n\t| nfs\n\t| (?:x-)?man(?:-page)?\n\t| gopher\n\t| txmt\n\t| issue\n\t| atom\n\t) ://\n\t\n\t# Path specifier\n\t(?:\n\t\t(?! \\#\\w*\\#)\n\t\t(?: [-:\\@\\w.,~%+_/?=\u0026\\#;|!])\n\t)+\n\t\n\t# Don't include trailing punctuation\n\t(?\u003c![-.,?:\\#;])\n)\n(\\1)", "captures": { "1": { "name": "punctuation.definition.link.begin.url" }, "2": { "name": "constant.other.reference.link.underline.$3.url" }, "4": { "name": "punctuation.definition.link.end.url" } } }, { "match": "(?x)\n(\"|'|\\b)\n(\n\tmailto (:)\n\t(?:\n\t\t(?! \\#\\w*\\#)\n\t\t(?: [-:@\\w.,~%+_/?=\u0026\\#;|!])\n\t)+\n\t(?\u003c![-.,?:\\#;])\n)\n(\\1)", "captures": { "1": { "name": "punctuation.definition.link.begin.url" }, "2": { "name": "constant.other.reference.link.underline.mailto.url" }, "3": { "name": "punctuation.separator.delimiter.scheme.url" }, "4": { "name": "punctuation.definition.link.end.url" } } } ] }, "version": { "name": "constant.other.version-string", "match": "(?x)\n(\"|'|\\b)\n([vV]?)\n(0 | [1-9]\\d*) (\\.)\n(0 | [1-9]\\d*) (\\.)\n(0 | [1-9]\\d*)\n(?:\n\t(-)\n\t(\n\t\t(?: 0\n\t\t| [1-9]\\d*\n\t\t| \\d*[a-zA-Z-][0-9a-zA-Z-]*\n\t\t)\n\t\t\n\t\t(?:\n\t\t\t\\.\n\t\t\t(?: 0\n\t\t\t| [1-9]\\d*\n\t\t\t| \\d*[a-zA-Z-][0-9a-zA-Z-]*\n\t\t\t)\n\t\t)*\n\t)\n)?\n(?:\n\t(\\+)\n\t(\n\t\t[0-9a-zA-Z-]+\n\t\t(?:\\.[0-9a-zA-Z-]+)*\n\t)\n)?\n(\\1)", "captures": { "1": { "name": "punctuation.definition.version-string.begin" }, "10": { "name": "punctuation.delimiter.separator.plus" }, "11": { "name": "meta.build-metadata", "patterns": [ { "include": "#dot" } ] }, "12": { "name": "punctuation.definition.version-string.end" }, "2": { "name": "punctuation.definition.version-prefix" }, "3": { "name": "meta.major.release-number" }, "4": { "patterns": [ { "include": "#dot" } ] }, "5": { "name": "meta.minor.release-number" }, "6": { "patterns": [ { "include": "#dot" } ] }, "7": { "name": "meta.patch.release-number" }, "8": { "patterns": [ { "include": "#dash" } ] }, "9": { "name": "meta.prerelease.release-number", "patterns": [ { "include": "#dot" } ] } } } } }