3154 lines
87 KiB
JSON
3154 lines
87 KiB
JSON
{
|
|
"displayName": "Go",
|
|
"name": "go",
|
|
"patterns": [
|
|
{
|
|
"include": "#statements"
|
|
}
|
|
],
|
|
"repository": {
|
|
"after_control_variables": {
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<=\\brange\\b|;|\\bif\\b|\\bfor\\b|[<>]|<=|>=|==|!=|\\w[-%*+/]|\\w[-%*+/]=|\\|\\||&&)\\s*((?![]\\[]+)[-\\]!%*+./:<=>\\[_[:alnum:]]+)\\s*(?=\\{)"
|
|
},
|
|
"brackets": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\{",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
}
|
|
},
|
|
"end": "}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\[",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
}
|
|
},
|
|
"end": "]",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"built_in_functions": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\b(append|cap|close|complex|copy|delete|imag|len|panic|print|println|real|recover|min|max|clear)\\b(?=\\()",
|
|
"name": "entity.name.function.support.builtin.go"
|
|
},
|
|
{
|
|
"begin": "\\b(new)\\b(\\()",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.function.support.builtin.go"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#functions"
|
|
},
|
|
{
|
|
"include": "#struct_variables_types"
|
|
},
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"include": "#generic_types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\b(make)\\b(\\()((?:(?:[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+(?:\\([^)]+\\))?)?[]*\\[]+{0,1}(?:(?!\\bmap\\b)[.\\w]+)?(\\[(?:\\S+(?:,\\s*\\S+)*)?])?,?)?",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.function.support.builtin.go"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"comments": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(/\\*)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.comment.go"
|
|
}
|
|
},
|
|
"end": "(\\*/)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.comment.go"
|
|
}
|
|
},
|
|
"name": "comment.block.go"
|
|
},
|
|
{
|
|
"begin": "(//)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.comment.go"
|
|
}
|
|
},
|
|
"end": "\\n|$",
|
|
"name": "comment.line.double-slash.go"
|
|
}
|
|
]
|
|
},
|
|
"const_assignment": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.constant.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#generic_types"
|
|
},
|
|
{
|
|
"match": "\\(",
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\)",
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<=\\bconst\\b)\\s*\\b([.\\w]+(?:,\\s*[.\\w]+)*)\\s*((?:(?:[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+(?:\\([^)]+\\))?)?(?![]*\\[]+{0,1}\\b(?:struct|func|map)\\b)(?:[]*.\\[\\w]+(?:,\\s*[]*.\\[\\w]+)*)?\\s*=?)?"
|
|
},
|
|
{
|
|
"begin": "(?<=\\bconst\\b)\\s*(\\()",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.constant.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#generic_types"
|
|
},
|
|
{
|
|
"match": "\\(",
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\)",
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "^\\s*\\b([.\\w]+(?:,\\s*[.\\w]+)*)\\s*((?:(?:[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+(?:\\([^)]+\\))?)?(?![]*\\[]+{0,1}\\b(?:struct|func|map)\\b)(?:[]*.\\[\\w]+(?:,\\s*[]*.\\[\\w]+)*)?\\s*=?)?"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"delimiters": {
|
|
"patterns": [
|
|
{
|
|
"match": ",",
|
|
"name": "punctuation.other.comma.go"
|
|
},
|
|
{
|
|
"match": "\\.(?!\\.\\.)",
|
|
"name": "punctuation.other.period.go"
|
|
},
|
|
{
|
|
"match": ":(?!=)",
|
|
"name": "punctuation.other.colon.go"
|
|
}
|
|
]
|
|
},
|
|
"double_parentheses_types": {
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"match": "\\(",
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\)",
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\{",
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "}",
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<!\\w)(\\([]*\\[]+{0,1}[.\\w]+(?:\\[(?:[]*.\\[{}\\w]+(?:,\\s*[]*.\\[{}\\w]+)*)?])?\\))(?=\\()"
|
|
},
|
|
"function_declaration": {
|
|
"begin": "^\\b(func)\\b\\s*(\\([^)]+\\)\\s*)?(?:(\\w+)(?=[(\\[]))?",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.function.go"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "variable.parameter.go"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(\\w+\\s+)?([*.\\w]+(?:\\[(?:[*.\\w]+(?:,\\s+)?)+{0,1}])?)"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\d\\w*",
|
|
"name": "invalid.illegal.identifier.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.function.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "(?<=\\))\\s*((?:[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}(?![]*\\[]+{0,1}\\b(?:struct|interface)\\b)[-\\]*.\\[\\w]+)?\\s*(?=\\{)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#function_param_types"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([*.\\w]+)?(\\[)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
}
|
|
},
|
|
"end": "]",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#generic_param_types"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<=\\))\\s*((?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}[-\\]*.<>\\[\\w]+\\s*(?:/[*/].*)?)$"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
"function_param_types": {
|
|
"patterns": [
|
|
{
|
|
"include": "#struct_variables_types"
|
|
},
|
|
{
|
|
"include": "#interface_variables_types"
|
|
},
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.parameter.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "((?:\\b\\w+,\\s*)+{0,1}\\b\\w+)\\s+(?=(?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}[]*\\[]+{0,1}\\b(?:struct|interface)\\b\\s*\\{)"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.parameter.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?:(?<=\\()|^\\s*)((?:\\b\\w+,\\s*)+(?:/[*/].*)?)$"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.parameter.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "((?:\\b\\w+,\\s*)+{0,1}\\b\\w+)\\s+((?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}(?:[]*.\\[\\w]+{0,1}(?:\\bfunc\\b\\([^)]+{0,1}\\)(?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}\\s*)+(?:[]*.\\[\\w]+|\\([^)]+{0,1}\\))?|(?:[]*\\[]+{0,1}[*.\\w]+(?:\\[[^]]+])?[*.\\w]+{0,1})+))"
|
|
},
|
|
{
|
|
"begin": "([*.\\w]+)?(\\[)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
}
|
|
},
|
|
"end": "]",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#generic_param_types"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#function_param_types"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "([.\\w]+)"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
"functions": {
|
|
"begin": "\\b(func)\\b(?=\\()",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.function.go"
|
|
}
|
|
},
|
|
"end": "(?<=\\))(\\s*(?:[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+)?(\\s*(?:[]*\\[]+{0,1}[*.\\w]+)?(?:\\[(?:[*.\\w]+{0,1}(?:\\[[^]]+{0,1}])?(?:,\\s+)?)+]|\\([^)]+{0,1}\\))?[*.\\w]+{0,1}\\s*(?=\\{)|\\s*(?:[]*\\[]+{0,1}(?!\\bfunc\\b)[*.\\w]+(?:\\[(?:[*.\\w]+{0,1}(?:\\[[^]]+{0,1}])?(?:,\\s+)?)+])?[*.\\w]+{0,1}|\\([^)]+{0,1}\\)))?",
|
|
"endCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
}
|
|
]
|
|
},
|
|
"functions_inline": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.function.go"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#function_param_types"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\{",
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "}",
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "\\b(func)\\b(\\([^/]*?\\)\\s+\\([^/]*?\\))\\s+(?=\\{)"
|
|
},
|
|
"generic_param_types": {
|
|
"patterns": [
|
|
{
|
|
"include": "#struct_variables_types"
|
|
},
|
|
{
|
|
"include": "#interface_variables_types"
|
|
},
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.parameter.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "((?:\\b\\w+,\\s*)+{0,1}\\b\\w+)\\s+(?=(?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}[]*\\[]+{0,1}\\b(?:struct|interface)\\b\\s*\\{)"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.parameter.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?:(?<=\\()|^\\s*)((?:\\b\\w+,\\s*)+(?:/[*/].*)?)$"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.parameter.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "((?:\\b\\w+,\\s*)+{0,1}\\b\\w+)\\s+((?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}(?:[]*.\\[\\w]+{0,1}(?:\\bfunc\\b\\([^)]+{0,1}\\)(?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}\\s*)+(?:[*.\\w]+|\\([^)]+{0,1}\\))?|(?:(?:[*.~\\w]+|\\[(?:[*.\\w]+{0,1}(?:\\[[^]]+{0,1}])?(?:,\\s+)?)+])[*.\\w]+{0,1})+))"
|
|
},
|
|
{
|
|
"begin": "([*.\\w]+)?(\\[)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
}
|
|
},
|
|
"end": "]",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#generic_param_types"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#function_param_types"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "\\b([.\\w]+)"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
"generic_types": {
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "([*.\\w]+)(\\[[^]]+{0,1}])"
|
|
},
|
|
"group-functions": {
|
|
"patterns": [
|
|
{
|
|
"include": "#function_declaration"
|
|
},
|
|
{
|
|
"include": "#functions_inline"
|
|
},
|
|
{
|
|
"include": "#functions"
|
|
},
|
|
{
|
|
"include": "#built_in_functions"
|
|
},
|
|
{
|
|
"include": "#support_functions"
|
|
}
|
|
]
|
|
},
|
|
"group-types": {
|
|
"patterns": [
|
|
{
|
|
"include": "#other_struct_interface_expressions"
|
|
},
|
|
{
|
|
"include": "#type_assertion_inline"
|
|
},
|
|
{
|
|
"include": "#struct_variables_types"
|
|
},
|
|
{
|
|
"include": "#interface_variables_types"
|
|
},
|
|
{
|
|
"include": "#single_type"
|
|
},
|
|
{
|
|
"include": "#multi_types"
|
|
},
|
|
{
|
|
"include": "#struct_interface_declaration"
|
|
},
|
|
{
|
|
"include": "#double_parentheses_types"
|
|
},
|
|
{
|
|
"include": "#switch_types"
|
|
},
|
|
{
|
|
"include": "#type-declarations"
|
|
}
|
|
]
|
|
},
|
|
"group-variables": {
|
|
"patterns": [
|
|
{
|
|
"include": "#const_assignment"
|
|
},
|
|
{
|
|
"include": "#var_assignment"
|
|
},
|
|
{
|
|
"include": "#variable_assignment"
|
|
},
|
|
{
|
|
"include": "#label_loop_variables"
|
|
},
|
|
{
|
|
"include": "#slice_index_variables"
|
|
},
|
|
{
|
|
"include": "#property_variables"
|
|
},
|
|
{
|
|
"include": "#switch_variables"
|
|
},
|
|
{
|
|
"include": "#other_variables"
|
|
}
|
|
]
|
|
},
|
|
"hover": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.property.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\binvalid\\b\\s+\\btype\\b",
|
|
"name": "invalid.field.go"
|
|
},
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<=^\\bfield\\b)\\s+([*.\\w]+)\\s+([\\s\\S]+)"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<=^\\breturns\\b)\\s+([\\s\\S]+)"
|
|
}
|
|
]
|
|
},
|
|
"import": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\b(import)\\s+",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.import.go"
|
|
}
|
|
},
|
|
"end": "(?!\\G)",
|
|
"patterns": [
|
|
{
|
|
"include": "#imports"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"imports": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.import.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "string.quoted.double.go"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.string.begin.go"
|
|
},
|
|
"4": {
|
|
"name": "entity.name.import.go"
|
|
},
|
|
"5": {
|
|
"name": "punctuation.definition.string.end.go"
|
|
}
|
|
},
|
|
"match": "(\\s*[.\\w]+)?\\s*((\")([^\"]*)(\"))"
|
|
},
|
|
{
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.imports.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.imports.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#imports"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
"interface_variables_types": {
|
|
"begin": "\\b(interface)\\b\\s*(\\{)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.interface.go"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
}
|
|
},
|
|
"end": "}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#interface_variables_types_field"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
"interface_variables_types_field": {
|
|
"patterns": [
|
|
{
|
|
"include": "#support_functions"
|
|
},
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"begin": "([*.\\w]+)?(\\[)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
}
|
|
},
|
|
"end": "]",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#generic_param_types"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#function_param_types"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "([.\\w]+)"
|
|
}
|
|
]
|
|
},
|
|
"keywords": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\b(break|case|continue|default|defer|else|fallthrough|for|go|goto|if|range|return|select|switch)\\b",
|
|
"name": "keyword.control.go"
|
|
},
|
|
{
|
|
"match": "\\bchan\\b",
|
|
"name": "keyword.channel.go"
|
|
},
|
|
{
|
|
"match": "\\bconst\\b",
|
|
"name": "keyword.const.go"
|
|
},
|
|
{
|
|
"match": "\\bvar\\b",
|
|
"name": "keyword.var.go"
|
|
},
|
|
{
|
|
"match": "\\bfunc\\b",
|
|
"name": "keyword.function.go"
|
|
},
|
|
{
|
|
"match": "\\binterface\\b",
|
|
"name": "keyword.interface.go"
|
|
},
|
|
{
|
|
"match": "\\bmap\\b",
|
|
"name": "keyword.map.go"
|
|
},
|
|
{
|
|
"match": "\\bstruct\\b",
|
|
"name": "keyword.struct.go"
|
|
},
|
|
{
|
|
"match": "\\bimport\\b",
|
|
"name": "keyword.control.import.go"
|
|
},
|
|
{
|
|
"match": "\\btype\\b",
|
|
"name": "keyword.type.go"
|
|
}
|
|
]
|
|
},
|
|
"label_loop_variables": {
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.label.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "^(\\s*\\w+:\\s*|\\s*\\b(?:break|goto|continue)\\b\\s+\\w+(?:\\s*/[*/]\\s*.*)?)$"
|
|
},
|
|
"language_constants": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "constant.language.boolean.go"
|
|
},
|
|
"2": {
|
|
"name": "constant.language.null.go"
|
|
},
|
|
"3": {
|
|
"name": "constant.language.iota.go"
|
|
}
|
|
},
|
|
"match": "\\b(?:(true|false)|(nil)|(iota))\\b"
|
|
},
|
|
"map_types": {
|
|
"begin": "\\b(map)\\b(\\[)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.map.go"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
}
|
|
},
|
|
"end": "(])((?:[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}(?![]*\\[]+{0,1}\\b(?:func|struct|map)\\b)[]*\\[]+{0,1}[.\\w]+(?:\\[(?:[]*.\\[{}\\w]+(?:,\\s*[]*.\\[{}\\w]+)*)?])?)?",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"include": "#functions"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\{",
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "}",
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "\\(",
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\)",
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"multi_types": {
|
|
"begin": "\\b(type)\\b\\s*(\\()",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.type.go"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#struct_variables_types"
|
|
},
|
|
{
|
|
"include": "#interface_variables_types"
|
|
},
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"numeric_literals": {
|
|
"captures": {
|
|
"0": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(?=.)",
|
|
"end": "\\n|$",
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "constant.numeric.decimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"10": {
|
|
"name": "keyword.other.unit.imaginary.go"
|
|
},
|
|
"11": {
|
|
"name": "constant.numeric.decimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"12": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"13": {
|
|
"name": "keyword.other.unit.exponent.decimal.go"
|
|
},
|
|
"14": {
|
|
"name": "keyword.operator.plus.exponent.decimal.go"
|
|
},
|
|
"15": {
|
|
"name": "keyword.operator.minus.exponent.decimal.go"
|
|
},
|
|
"16": {
|
|
"name": "constant.numeric.exponent.decimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"17": {
|
|
"name": "keyword.other.unit.imaginary.go"
|
|
},
|
|
"18": {
|
|
"name": "constant.numeric.decimal.point.go"
|
|
},
|
|
"19": {
|
|
"name": "constant.numeric.decimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"20": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"21": {
|
|
"name": "keyword.other.unit.exponent.decimal.go"
|
|
},
|
|
"22": {
|
|
"name": "keyword.operator.plus.exponent.decimal.go"
|
|
},
|
|
"23": {
|
|
"name": "keyword.operator.minus.exponent.decimal.go"
|
|
},
|
|
"24": {
|
|
"name": "constant.numeric.exponent.decimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"25": {
|
|
"name": "keyword.other.unit.imaginary.go"
|
|
},
|
|
"26": {
|
|
"name": "keyword.other.unit.hexadecimal.go"
|
|
},
|
|
"27": {
|
|
"name": "constant.numeric.hexadecimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"28": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"29": {
|
|
"name": "constant.numeric.hexadecimal.go"
|
|
},
|
|
"3": {
|
|
"name": "constant.numeric.decimal.point.go"
|
|
},
|
|
"30": {
|
|
"name": "constant.numeric.hexadecimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"31": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"32": {
|
|
"name": "keyword.other.unit.exponent.hexadecimal.go"
|
|
},
|
|
"33": {
|
|
"name": "keyword.operator.plus.exponent.hexadecimal.go"
|
|
},
|
|
"34": {
|
|
"name": "keyword.operator.minus.exponent.hexadecimal.go"
|
|
},
|
|
"35": {
|
|
"name": "constant.numeric.exponent.hexadecimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"36": {
|
|
"name": "keyword.other.unit.imaginary.go"
|
|
},
|
|
"37": {
|
|
"name": "keyword.other.unit.hexadecimal.go"
|
|
},
|
|
"38": {
|
|
"name": "constant.numeric.hexadecimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"39": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"4": {
|
|
"name": "constant.numeric.decimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"40": {
|
|
"name": "keyword.other.unit.exponent.hexadecimal.go"
|
|
},
|
|
"41": {
|
|
"name": "keyword.operator.plus.exponent.hexadecimal.go"
|
|
},
|
|
"42": {
|
|
"name": "keyword.operator.minus.exponent.hexadecimal.go"
|
|
},
|
|
"43": {
|
|
"name": "constant.numeric.exponent.hexadecimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"44": {
|
|
"name": "keyword.other.unit.imaginary.go"
|
|
},
|
|
"45": {
|
|
"name": "keyword.other.unit.hexadecimal.go"
|
|
},
|
|
"46": {
|
|
"name": "constant.numeric.hexadecimal.go"
|
|
},
|
|
"47": {
|
|
"name": "constant.numeric.hexadecimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"48": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"49": {
|
|
"name": "keyword.other.unit.exponent.hexadecimal.go"
|
|
},
|
|
"5": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"50": {
|
|
"name": "keyword.operator.plus.exponent.hexadecimal.go"
|
|
},
|
|
"51": {
|
|
"name": "keyword.operator.minus.exponent.hexadecimal.go"
|
|
},
|
|
"52": {
|
|
"name": "constant.numeric.exponent.hexadecimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"53": {
|
|
"name": "keyword.other.unit.imaginary.go"
|
|
},
|
|
"6": {
|
|
"name": "keyword.other.unit.exponent.decimal.go"
|
|
},
|
|
"7": {
|
|
"name": "keyword.operator.plus.exponent.decimal.go"
|
|
},
|
|
"8": {
|
|
"name": "keyword.operator.minus.exponent.decimal.go"
|
|
},
|
|
"9": {
|
|
"name": "constant.numeric.exponent.decimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "\\G(?:(?:(?:(?:(?:(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\h)_(?=\\h)))*)((?<=[0-9])\\.|\\.(?=[0-9]))([0-9](?:[0-9]|((?<=\\h)_(?=\\h)))*)?(?:(?<!_)([Ee])(\\+?)(-?)([0-9](?:[0-9]|(?<=\\h)_(?=\\h))*))?(i(?!\\w))?(?:\\n|$)|(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\h)_(?=\\h)))*)(?<!_)([Ee])(\\+?)(-?)([0-9](?:[0-9]|(?<=\\h)_(?=\\h))*)(i(?!\\w))?(?:\\n|$))|((?<=[0-9])\\.|\\.(?=[0-9]))([0-9](?:[0-9]|((?<=\\h)_(?=\\h)))*)(?:(?<!_)([Ee])(\\+?)(-?)([0-9](?:[0-9]|(?<=\\h)_(?=\\h))*))?(i(?!\\w))?(?:\\n|$))|(0[Xx])_?(\\h(?:\\h|((?<=\\h)_(?=\\h)))*)((?<=\\h)\\.|\\.(?=\\h))(\\h(?:\\h|((?<=\\h)_(?=\\h)))*)?(?<!_)([Pp])(\\+?)(-?)([0-9](?:[0-9]|(?<=\\h)_(?=\\h))*)(i(?!\\w))?(?:\\n|$))|(0[Xx])_?(\\h(?:\\h|((?<=\\h)_(?=\\h)))*)(?<!_)([Pp])(\\+?)(-?)([0-9](?:[0-9]|(?<=\\h)_(?=\\h))*)(i(?!\\w))?(?:\\n|$))|(0[Xx])((?<=\\h)\\.|\\.(?=\\h))(\\h(?:\\h|((?<=\\h)_(?=\\h)))*)(?<!_)([Pp])(\\+?)(-?)([0-9](?:[0-9]|(?<=\\h)_(?=\\h))*)(i(?!\\w))?(?:\\n|$))"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "constant.numeric.decimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"10": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"11": {
|
|
"name": "keyword.other.unit.imaginary.go"
|
|
},
|
|
"12": {
|
|
"name": "keyword.other.unit.hexadecimal.go"
|
|
},
|
|
"13": {
|
|
"name": "constant.numeric.hexadecimal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"14": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"15": {
|
|
"name": "keyword.other.unit.imaginary.go"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"3": {
|
|
"name": "keyword.other.unit.imaginary.go"
|
|
},
|
|
"4": {
|
|
"name": "keyword.other.unit.binary.go"
|
|
},
|
|
"5": {
|
|
"name": "constant.numeric.binary.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"6": {
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
},
|
|
"7": {
|
|
"name": "keyword.other.unit.imaginary.go"
|
|
},
|
|
"8": {
|
|
"name": "keyword.other.unit.octal.go"
|
|
},
|
|
"9": {
|
|
"name": "constant.numeric.octal.go",
|
|
"patterns": [
|
|
{
|
|
"match": "(?<=\\h)_(?=\\h)",
|
|
"name": "punctuation.separator.constant.numeric.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "\\G(?:(?:(?:(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\h)_(?=\\h)))*)(i(?!\\w))?(?:\\n|$)|(0[Bb])_?([01](?:[01]|((?<=\\h)_(?=\\h)))*)(i(?!\\w))?(?:\\n|$))|(0[Oo]?)_?((?:[0-7]|((?<=\\h)_(?=\\h)))+)(i(?!\\w))?(?:\\n|$))|(0[Xx])_?(\\h(?:\\h|((?<=\\h)_(?=\\h)))*)(i(?!\\w))?(?:\\n|$))"
|
|
},
|
|
{
|
|
"match": "(?:[.0-9A-Z_a-z]|(?<=[EPep])[-+])+",
|
|
"name": "invalid.illegal.constant.numeric.go"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<!\\w)\\.?\\d(?:[.0-9A-Z_a-z]|(?<=[EPep])[-+])*"
|
|
},
|
|
"operators": {
|
|
"patterns": [
|
|
{
|
|
"match": "(?<!\\w)[\\&*]+(?!\\d)(?=[]\\[\\w]|<-)",
|
|
"name": "keyword.operator.address.go"
|
|
},
|
|
{
|
|
"match": "<-",
|
|
"name": "keyword.operator.channel.go"
|
|
},
|
|
{
|
|
"match": "--",
|
|
"name": "keyword.operator.decrement.go"
|
|
},
|
|
{
|
|
"match": "\\+\\+",
|
|
"name": "keyword.operator.increment.go"
|
|
},
|
|
{
|
|
"match": "(==|!=|<=|>=|<(?!<)|>(?!>))",
|
|
"name": "keyword.operator.comparison.go"
|
|
},
|
|
{
|
|
"match": "(&&|\\|\\||!)",
|
|
"name": "keyword.operator.logical.go"
|
|
},
|
|
{
|
|
"match": "((?:|[-%*+/:^|]|<<|>>|&\\^?)=)",
|
|
"name": "keyword.operator.assignment.go"
|
|
},
|
|
{
|
|
"match": "([-%*+/])",
|
|
"name": "keyword.operator.arithmetic.go"
|
|
},
|
|
{
|
|
"match": "(&(?!\\^)|[\\^|]|&\\^|<<|>>|~)",
|
|
"name": "keyword.operator.arithmetic.bitwise.go"
|
|
},
|
|
{
|
|
"match": "\\.\\.\\.",
|
|
"name": "keyword.operator.ellipsis.go"
|
|
}
|
|
]
|
|
},
|
|
"other_struct_interface_expressions": {
|
|
"patterns": [
|
|
{
|
|
"include": "#after_control_variables"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\{",
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "}",
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "\\b(?!(?:struct|interface)\\b)([.\\w]+)(?<brackets>\\[(?:[^]\\[]|\\g<brackets>)*])?(?=\\{)"
|
|
}
|
|
]
|
|
},
|
|
"other_variables": {
|
|
"match": "\\w+",
|
|
"name": "variable.other.go"
|
|
},
|
|
"package_name": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\b(package)\\s+",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.package.go"
|
|
}
|
|
},
|
|
"end": "(?!\\G)",
|
|
"patterns": [
|
|
{
|
|
"match": "\\d\\w*",
|
|
"name": "invalid.illegal.identifier.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.package.go"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"parameter-variable-types": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\{",
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "}",
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
},
|
|
{
|
|
"begin": "([*.\\w]+)?(\\[)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
}
|
|
},
|
|
"end": "]",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#generic_param_types"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#function_param_types"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"property_variables": {
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.property.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "\\b([.\\w]+:(?!=))"
|
|
},
|
|
"raw_string_literals": {
|
|
"begin": "`",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.begin.go"
|
|
}
|
|
},
|
|
"end": "`",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.end.go"
|
|
}
|
|
},
|
|
"name": "string.quoted.raw.go",
|
|
"patterns": [
|
|
{
|
|
"include": "#string_placeholder"
|
|
}
|
|
]
|
|
},
|
|
"runes": {
|
|
"patterns": [
|
|
{
|
|
"begin": "'",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.begin.go"
|
|
}
|
|
},
|
|
"end": "'",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.end.go"
|
|
}
|
|
},
|
|
"name": "string.quoted.rune.go",
|
|
"patterns": [
|
|
{
|
|
"match": "\\G(\\\\([0-7]{3}|[\"'\\\\abfnrtv]|x\\h{2}|u\\h{4}|U\\h{8})|.)(?=')",
|
|
"name": "constant.other.rune.go"
|
|
},
|
|
{
|
|
"match": "[^']+",
|
|
"name": "invalid.illegal.unknown-rune.go"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"single_type": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.type.go"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#function_param_types"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"include": "#generic_types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "^\\s*\\b(type)\\b\\s*([*.\\w]+)\\s+(?!(?:=\\s*)?[]*\\[]+{0,1}\\b(?:struct|interface)\\b)([\\s\\S]+)"
|
|
},
|
|
{
|
|
"begin": "(?:^|\\s+)\\b(type)\\b\\s*([*.\\w]+)(?=\\[)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.type.go"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "(?<=])(\\s+(?:=\\s*)?(?:[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}(?![]*\\[]+{0,1}\\b(?:struct|interface|func)\\b)[-\\]*.\\[\\w]+(?:,\\s*[]*.\\[\\w]+)*)?",
|
|
"endCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#struct_variables_types"
|
|
},
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\{",
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "}",
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "\\(",
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\)",
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"slice_index_variables": {
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<=\\w\\[)((?:\\b[-%\\&*+./<>|\\w]+:|:\\b[-%\\&*+./<>|\\w]+)(?:\\b[-%\\&*+./<>|\\w]+)?(?::\\b[-%\\&*+./<>|\\w]+)?)(?=])"
|
|
},
|
|
"statements": {
|
|
"patterns": [
|
|
{
|
|
"include": "#package_name"
|
|
},
|
|
{
|
|
"include": "#import"
|
|
},
|
|
{
|
|
"include": "#syntax_errors"
|
|
},
|
|
{
|
|
"include": "#group-functions"
|
|
},
|
|
{
|
|
"include": "#group-types"
|
|
},
|
|
{
|
|
"include": "#group-variables"
|
|
},
|
|
{
|
|
"include": "#hover"
|
|
}
|
|
]
|
|
},
|
|
"storage_types": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\bbool\\b",
|
|
"name": "storage.type.boolean.go"
|
|
},
|
|
{
|
|
"match": "\\bbyte\\b",
|
|
"name": "storage.type.byte.go"
|
|
},
|
|
{
|
|
"match": "\\berror\\b",
|
|
"name": "storage.type.error.go"
|
|
},
|
|
{
|
|
"match": "\\b(complex(64|128)|float(32|64)|u?int(8|16|32|64)?)\\b",
|
|
"name": "storage.type.numeric.go"
|
|
},
|
|
{
|
|
"match": "\\brune\\b",
|
|
"name": "storage.type.rune.go"
|
|
},
|
|
{
|
|
"match": "\\bstring\\b",
|
|
"name": "storage.type.string.go"
|
|
},
|
|
{
|
|
"match": "\\buintptr\\b",
|
|
"name": "storage.type.uintptr.go"
|
|
},
|
|
{
|
|
"match": "\\bany\\b",
|
|
"name": "entity.name.type.any.go"
|
|
},
|
|
{
|
|
"match": "\\bcomparable\\b",
|
|
"name": "entity.name.type.comparable.go"
|
|
}
|
|
]
|
|
},
|
|
"string_escaped_char": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\\\([0-7]{3}|[\"'\\\\abfnrtv]|x\\h{2}|u\\h{4}|U\\h{8})",
|
|
"name": "constant.character.escape.go"
|
|
},
|
|
{
|
|
"match": "\\\\[^\"'0-7Uabfnrtuvx]",
|
|
"name": "invalid.illegal.unknown-escape.go"
|
|
}
|
|
]
|
|
},
|
|
"string_literals": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\"",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.begin.go"
|
|
}
|
|
},
|
|
"end": "\"",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.end.go"
|
|
}
|
|
},
|
|
"name": "string.quoted.double.go",
|
|
"patterns": [
|
|
{
|
|
"include": "#string_escaped_char"
|
|
},
|
|
{
|
|
"include": "#string_placeholder"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"string_placeholder": {
|
|
"patterns": [
|
|
{
|
|
"match": "%(\\[\\d+])?([- #+0]{0,2}((\\d+|\\*)?(\\.?(\\d+|\\*|(\\[\\d+])\\*?)?(\\[\\d+])?)?))?[%EFGTUXb-gopqstvwx]",
|
|
"name": "constant.other.placeholder.go"
|
|
}
|
|
]
|
|
},
|
|
"struct_interface_declaration": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.type.go"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "^\\s*\\b(type)\\b\\s*([.\\w]+)"
|
|
},
|
|
"struct_variable_types_fields_multi": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\b(\\w+(?:,\\s*\\b\\w+)*(?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}\\s*[]*\\[]+{0,1})\\b(struct)\\b\\s*(\\{)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.property.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "keyword.struct.go"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
}
|
|
},
|
|
"end": "}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#struct_variables_types_fields"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\b(\\w+(?:,\\s*\\b\\w+)*(?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}\\s*[]*\\[]+{0,1})\\b(interface)\\b\\s*(\\{)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.property.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "keyword.interface.go"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
}
|
|
},
|
|
"end": "}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#interface_variables_types_field"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\b(\\w+(?:,\\s*\\b\\w+)*(?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}\\s*[]*\\[]+{0,1})\\b(func)\\b\\s*(\\()",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.property.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "keyword.function.go"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#function_param_types"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
}
|
|
]
|
|
},
|
|
"struct_variables_types": {
|
|
"begin": "\\b(struct)\\b\\s*(\\{)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.struct.go"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
}
|
|
},
|
|
"end": "}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#struct_variables_types_fields"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
"struct_variables_types_fields": {
|
|
"patterns": [
|
|
{
|
|
"include": "#struct_variable_types_fields_multi"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<=\\{)\\s*((?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}[]*.\\[\\w]+)\\s*(?=})"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.property.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<=\\{)\\s*((?:\\w+,\\s*)+{0,1}\\w+\\s+)((?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}[]*.\\[\\w]+)\\s*(?=})"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.property.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "((?:\\w+,\\s*)+{0,1}\\w+\\s+)?((?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}[^/\\s]+;?)"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<=\\{)((?:\\s*(?:(?:\\w+,\\s*)+{0,1}\\w+\\s+)?(?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}[^/\\s]+;?)+)\\s*(?=})"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "((?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}[*.\\w]+\\s*)(?:(?=[\"/`])|$)"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.property.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#parameter-variable-types"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "\\b(\\w+(?:\\s*,\\s*\\b\\w+)*)\\s*([^\"/`]+)"
|
|
}
|
|
]
|
|
},
|
|
"support_functions": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.name.function.support.go"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\d\\w*",
|
|
"name": "invalid.illegal.identifier.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.function.support.go"
|
|
}
|
|
]
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\{",
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "}",
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?:((?<=\\.)\\b\\w+)|\\b(\\w+))(?<brackets>\\[(?:[^]\\[]|\\g<brackets>)*])?(?=\\()"
|
|
},
|
|
"switch_types": {
|
|
"begin": "(?<=\\bswitch\\b)\\s*(\\w+\\s*:=)?\\s*([-\\]%\\&(-+./<>\\[|\\w]+)(\\.\\(\\btype\\b\\)\\s*)(\\{)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#operators"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.assignment.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#support_functions"
|
|
},
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.go"
|
|
}
|
|
]
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"include": "#brackets"
|
|
},
|
|
{
|
|
"match": "\\btype\\b",
|
|
"name": "keyword.type.go"
|
|
}
|
|
]
|
|
},
|
|
"4": {
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
}
|
|
},
|
|
"end": "}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.control.go"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
"3": {
|
|
"name": "punctuation.other.colon.go"
|
|
},
|
|
"4": {
|
|
"patterns": [
|
|
{
|
|
"include": "#comments"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "^\\s*\\b(case)\\b\\s+([!*,.<=>\\w\\s]+)(:)(\\s*/[*/]\\s*.*)?$"
|
|
},
|
|
{
|
|
"begin": "\\bcase\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.control.go"
|
|
}
|
|
},
|
|
"end": ":",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.other.colon.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
"switch_variables": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.control.go"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"include": "#support_functions"
|
|
},
|
|
{
|
|
"include": "#variable_assignment"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "^\\s*\\b(case)\\b\\s+([\\s\\S]+:\\s*(?:/[*/].*)?)$"
|
|
},
|
|
{
|
|
"begin": "(?<=\\bswitch\\b)\\s*((?:[.\\w]+(?:\\s*[-!%\\&+,/:<=>|]+\\s*[.\\w]+)*\\s*[-!%\\&+,/:<=>|]+)?\\s*[-\\]%\\&(-+./<>\\[|\\w]+{0,1}\\s*(?:;\\s*[-\\]%\\&(-+./<>\\[|\\w]+\\s*)?)(\\{)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#support_functions"
|
|
},
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"include": "#variable_assignment"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
}
|
|
},
|
|
"end": "}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"begin": "\\bcase\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.control.go"
|
|
}
|
|
},
|
|
"end": ":",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.other.colon.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#support_functions"
|
|
},
|
|
{
|
|
"include": "#type-declarations"
|
|
},
|
|
{
|
|
"include": "#variable_assignment"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.go"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"syntax_errors": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "invalid.illegal.slice.go"
|
|
}
|
|
},
|
|
"match": "\\[](\\s+)"
|
|
},
|
|
{
|
|
"match": "\\b0[0-7]*[89]\\d*\\b",
|
|
"name": "invalid.illegal.numeric.go"
|
|
}
|
|
]
|
|
},
|
|
"terminators": {
|
|
"match": ";",
|
|
"name": "punctuation.terminator.go"
|
|
},
|
|
"type-declarations": {
|
|
"patterns": [
|
|
{
|
|
"include": "#language_constants"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#map_types"
|
|
},
|
|
{
|
|
"include": "#brackets"
|
|
},
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#operators"
|
|
},
|
|
{
|
|
"include": "#runes"
|
|
},
|
|
{
|
|
"include": "#storage_types"
|
|
},
|
|
{
|
|
"include": "#raw_string_literals"
|
|
},
|
|
{
|
|
"include": "#string_literals"
|
|
},
|
|
{
|
|
"include": "#numeric_literals"
|
|
},
|
|
{
|
|
"include": "#terminators"
|
|
}
|
|
]
|
|
},
|
|
"type-declarations-without-brackets": {
|
|
"patterns": [
|
|
{
|
|
"include": "#language_constants"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#map_types"
|
|
},
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#operators"
|
|
},
|
|
{
|
|
"include": "#runes"
|
|
},
|
|
{
|
|
"include": "#storage_types"
|
|
},
|
|
{
|
|
"include": "#raw_string_literals"
|
|
},
|
|
{
|
|
"include": "#string_literals"
|
|
},
|
|
{
|
|
"include": "#numeric_literals"
|
|
},
|
|
{
|
|
"include": "#terminators"
|
|
}
|
|
]
|
|
},
|
|
"type_assertion_inline": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.type.go"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"match": "\\(",
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\)",
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\{",
|
|
"name": "punctuation.definition.begin.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "}",
|
|
"name": "punctuation.definition.end.bracket.curly.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<=\\.\\()(?:\\b(type)\\b|((?:\\s*[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+{0,1}[]*\\[]+{0,1}[.\\w]+(?:\\[(?:[]*.\\[{}\\w]+(?:,\\s*[]*.\\[{}\\w]+)*)?])?))(?=\\))"
|
|
},
|
|
"var_assignment": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.assignment.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#generic_types"
|
|
},
|
|
{
|
|
"match": "\\(",
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\)",
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(?<=\\bvar\\b)\\s*\\b([.\\w]+(?:,\\s*[.\\w]+)*)\\s*((?:(?:[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+(?:\\([^)]+\\))?)?(?![]*\\[]+{0,1}\\b(?:struct|func|map)\\b)(?:[]*.\\[\\w]+(?:,\\s*[]*.\\[\\w]+)*)?\\s*=?)?"
|
|
},
|
|
{
|
|
"begin": "(?<=\\bvar\\b)\\s*(\\()",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.assignment.go"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type-declarations-without-brackets"
|
|
},
|
|
{
|
|
"include": "#generic_types"
|
|
},
|
|
{
|
|
"match": "\\(",
|
|
"name": "punctuation.definition.begin.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\)",
|
|
"name": "punctuation.definition.end.bracket.round.go"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "punctuation.definition.begin.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "]",
|
|
"name": "punctuation.definition.end.bracket.square.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "entity.name.type.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "^\\s*\\b([.\\w]+(?:,\\s*[.\\w]+)*)\\s*((?:(?:[]*\\[]+{0,1}(?:<-\\s*)?\\bchan\\b(?:\\s*<-)?\\s*)+(?:\\([^)]+\\))?)?(?![]*\\[]+{0,1}\\b(?:struct|func|map)\\b)(?:[]*.\\[\\w]+(?:,\\s*[]*.\\[\\w]+)*)?\\s*=?)?"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"variable_assignment": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"0": {
|
|
"patterns": [
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"match": "\\d\\w*",
|
|
"name": "invalid.illegal.identifier.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.assignment.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "\\b\\w+(?:,\\s*\\w+)*(?=\\s*:=)"
|
|
},
|
|
{
|
|
"captures": {
|
|
"0": {
|
|
"patterns": [
|
|
{
|
|
"include": "#delimiters"
|
|
},
|
|
{
|
|
"include": "#operators"
|
|
},
|
|
{
|
|
"match": "\\d\\w*",
|
|
"name": "invalid.illegal.identifier.go"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.other.assignment.go"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "\\b[*.\\w]+(?:,\\s*[*.\\w]+)*(?=\\s*=(?!=))"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"scopeName": "source.go"
|
|
}
|