1104 lines
26 KiB
JSON
1104 lines
26 KiB
JSON
{
|
|
"displayName": "Rust",
|
|
"name": "rust",
|
|
"patterns": [
|
|
{
|
|
"begin": "(<)(\\[)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.brackets.angle.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.brackets.square.rust"
|
|
}
|
|
},
|
|
"end": ">",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.brackets.angle.rust"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#block-comments"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#gtypes"
|
|
},
|
|
{
|
|
"include": "#lvariables"
|
|
},
|
|
{
|
|
"include": "#lifetimes"
|
|
},
|
|
{
|
|
"include": "#punctuation"
|
|
},
|
|
{
|
|
"include": "#types"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.operator.macro.dollar.rust"
|
|
},
|
|
"3": {
|
|
"name": "keyword.other.crate.rust"
|
|
},
|
|
"4": {
|
|
"name": "entity.name.type.metavariable.rust"
|
|
},
|
|
"6": {
|
|
"name": "keyword.operator.key-value.rust"
|
|
},
|
|
"7": {
|
|
"name": "variable.other.metavariable.specifier.rust"
|
|
}
|
|
},
|
|
"match": "(\\$)((crate)|([A-Z]\\w*))(\\s*(:)\\s*(block|expr(?:_2021)?|ident|item|lifetime|literal|meta|pat(?:_param)?|path|stmt|tt|ty|vis)\\b)?",
|
|
"name": "meta.macro.metavariable.type.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#keywords"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.operator.macro.dollar.rust"
|
|
},
|
|
"2": {
|
|
"name": "variable.other.metavariable.name.rust"
|
|
},
|
|
"4": {
|
|
"name": "keyword.operator.key-value.rust"
|
|
},
|
|
"5": {
|
|
"name": "variable.other.metavariable.specifier.rust"
|
|
}
|
|
},
|
|
"match": "(\\$)([a-z]\\w*)(\\s*(:)\\s*(block|expr(?:_2021)?|ident|item|lifetime|literal|meta|pat(?:_param)?|path|stmt|tt|ty|vis)\\b)?",
|
|
"name": "meta.macro.metavariable.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#keywords"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.name.function.macro.rules.rust"
|
|
},
|
|
"3": {
|
|
"name": "entity.name.function.macro.rust"
|
|
},
|
|
"4": {
|
|
"name": "entity.name.type.macro.rust"
|
|
},
|
|
"5": {
|
|
"name": "punctuation.brackets.curly.rust"
|
|
}
|
|
},
|
|
"match": "\\b(macro_rules!)\\s+(([0-9_a-z]+)|([A-Z][0-9_a-z]*))\\s+(\\{)",
|
|
"name": "meta.macro.rules.rust"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "storage.type.rust"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.module.rust"
|
|
}
|
|
},
|
|
"match": "(mod)\\s+((?:r#(?!crate|[Ss]elf|super))?[a-z][0-9A-Z_a-z]*)"
|
|
},
|
|
{
|
|
"begin": "\\b(extern)\\s+(crate)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "storage.type.rust"
|
|
},
|
|
"2": {
|
|
"name": "keyword.other.crate.rust"
|
|
}
|
|
},
|
|
"end": ";",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.semi.rust"
|
|
}
|
|
},
|
|
"name": "meta.import.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#block-comments"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#punctuation"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\b(use)\\s",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.other.rust"
|
|
}
|
|
},
|
|
"end": ";",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.semi.rust"
|
|
}
|
|
},
|
|
"name": "meta.use.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#block-comments"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#namespaces"
|
|
},
|
|
{
|
|
"include": "#punctuation"
|
|
},
|
|
{
|
|
"include": "#types"
|
|
},
|
|
{
|
|
"include": "#lvariables"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#block-comments"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#attributes"
|
|
},
|
|
{
|
|
"include": "#lvariables"
|
|
},
|
|
{
|
|
"include": "#constants"
|
|
},
|
|
{
|
|
"include": "#gtypes"
|
|
},
|
|
{
|
|
"include": "#functions"
|
|
},
|
|
{
|
|
"include": "#types"
|
|
},
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#lifetimes"
|
|
},
|
|
{
|
|
"include": "#macros"
|
|
},
|
|
{
|
|
"include": "#namespaces"
|
|
},
|
|
{
|
|
"include": "#punctuation"
|
|
},
|
|
{
|
|
"include": "#strings"
|
|
},
|
|
{
|
|
"include": "#variables"
|
|
}
|
|
],
|
|
"repository": {
|
|
"attributes": {
|
|
"begin": "(#)(!?)(\\[)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.attribute.rust"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.brackets.attribute.rust"
|
|
}
|
|
},
|
|
"end": "]",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.brackets.attribute.rust"
|
|
}
|
|
},
|
|
"name": "meta.attribute.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#block-comments"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#lifetimes"
|
|
},
|
|
{
|
|
"include": "#punctuation"
|
|
},
|
|
{
|
|
"include": "#strings"
|
|
},
|
|
{
|
|
"include": "#gtypes"
|
|
},
|
|
{
|
|
"include": "#types"
|
|
}
|
|
]
|
|
},
|
|
"block-comments": {
|
|
"patterns": [
|
|
{
|
|
"match": "/\\*\\*/",
|
|
"name": "comment.block.rust"
|
|
},
|
|
{
|
|
"begin": "/\\*\\*",
|
|
"end": "\\*/",
|
|
"name": "comment.block.documentation.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#block-comments"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "/\\*(?!\\*)",
|
|
"end": "\\*/",
|
|
"name": "comment.block.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#block-comments"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"comments": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.definition.comment.rust"
|
|
}
|
|
},
|
|
"match": "(///).*$",
|
|
"name": "comment.line.documentation.rust"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.definition.comment.rust"
|
|
}
|
|
},
|
|
"match": "(//).*$",
|
|
"name": "comment.line.double-slash.rust"
|
|
}
|
|
]
|
|
},
|
|
"constants": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\b[A-Z]{2}[0-9A-Z_]*\\b",
|
|
"name": "constant.other.caps.rust"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "storage.type.rust"
|
|
},
|
|
"2": {
|
|
"name": "constant.other.caps.rust"
|
|
}
|
|
},
|
|
"match": "\\b(const)\\s+([A-Z][0-9A-Z_a-z]*)\\b"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.dot.decimal.rust"
|
|
},
|
|
"2": {
|
|
"name": "keyword.operator.exponent.rust"
|
|
},
|
|
"3": {
|
|
"name": "keyword.operator.exponent.sign.rust"
|
|
},
|
|
"4": {
|
|
"name": "constant.numeric.decimal.exponent.mantissa.rust"
|
|
},
|
|
"5": {
|
|
"name": "entity.name.type.numeric.rust"
|
|
}
|
|
},
|
|
"match": "\\b\\d[_\\d]*(\\.?)[_\\d]*(?:([Ee])([-+]?)([_\\d]+))?(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",
|
|
"name": "constant.numeric.decimal.rust"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.name.type.numeric.rust"
|
|
}
|
|
},
|
|
"match": "\\b0x[A-F_a-f\\d]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",
|
|
"name": "constant.numeric.hex.rust"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.name.type.numeric.rust"
|
|
}
|
|
},
|
|
"match": "\\b0o[0-7_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",
|
|
"name": "constant.numeric.oct.rust"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.name.type.numeric.rust"
|
|
}
|
|
},
|
|
"match": "\\b0b[01_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",
|
|
"name": "constant.numeric.bin.rust"
|
|
},
|
|
{
|
|
"match": "\\b(true|false)\\b",
|
|
"name": "constant.language.bool.rust"
|
|
}
|
|
]
|
|
},
|
|
"escapes": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "constant.character.escape.backslash.rust"
|
|
},
|
|
"2": {
|
|
"name": "constant.character.escape.bit.rust"
|
|
},
|
|
"3": {
|
|
"name": "constant.character.escape.unicode.rust"
|
|
},
|
|
"4": {
|
|
"name": "constant.character.escape.unicode.punctuation.rust"
|
|
},
|
|
"5": {
|
|
"name": "constant.character.escape.unicode.punctuation.rust"
|
|
}
|
|
},
|
|
"match": "(\\\\)(?:(x[0-7][A-Fa-f\\d])|(u(\\{)[A-Fa-f\\d]{4,6}(}))|.)",
|
|
"name": "constant.character.escape.rust"
|
|
},
|
|
"functions": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.other.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.brackets.round.rust"
|
|
}
|
|
},
|
|
"match": "\\b(pub)(\\()"
|
|
},
|
|
{
|
|
"begin": "\\b(fn)\\s+((?:r#(?!crate|[Ss]elf|super))?[0-9A-Z_a-z]+)((\\()|(<))",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.other.fn.rust"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.function.rust"
|
|
},
|
|
"4": {
|
|
"name": "punctuation.brackets.round.rust"
|
|
},
|
|
"5": {
|
|
"name": "punctuation.brackets.angle.rust"
|
|
}
|
|
},
|
|
"end": "(\\{)|(;)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.brackets.curly.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.semi.rust"
|
|
}
|
|
},
|
|
"name": "meta.function.definition.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#block-comments"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#lvariables"
|
|
},
|
|
{
|
|
"include": "#constants"
|
|
},
|
|
{
|
|
"include": "#gtypes"
|
|
},
|
|
{
|
|
"include": "#functions"
|
|
},
|
|
{
|
|
"include": "#lifetimes"
|
|
},
|
|
{
|
|
"include": "#macros"
|
|
},
|
|
{
|
|
"include": "#namespaces"
|
|
},
|
|
{
|
|
"include": "#punctuation"
|
|
},
|
|
{
|
|
"include": "#strings"
|
|
},
|
|
{
|
|
"include": "#types"
|
|
},
|
|
{
|
|
"include": "#variables"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "((?:r#(?!crate|[Ss]elf|super))?[0-9A-Z_a-z]+)(\\()",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.function.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.brackets.round.rust"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.brackets.round.rust"
|
|
}
|
|
},
|
|
"name": "meta.function.call.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#block-comments"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#attributes"
|
|
},
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#lvariables"
|
|
},
|
|
{
|
|
"include": "#constants"
|
|
},
|
|
{
|
|
"include": "#gtypes"
|
|
},
|
|
{
|
|
"include": "#functions"
|
|
},
|
|
{
|
|
"include": "#lifetimes"
|
|
},
|
|
{
|
|
"include": "#macros"
|
|
},
|
|
{
|
|
"include": "#namespaces"
|
|
},
|
|
{
|
|
"include": "#punctuation"
|
|
},
|
|
{
|
|
"include": "#strings"
|
|
},
|
|
{
|
|
"include": "#types"
|
|
},
|
|
{
|
|
"include": "#variables"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "((?:r#(?!crate|[Ss]elf|super))?[0-9A-Z_a-z]+)(?=::<.*>\\()",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.function.rust"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.brackets.round.rust"
|
|
}
|
|
},
|
|
"name": "meta.function.call.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#block-comments"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#attributes"
|
|
},
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#lvariables"
|
|
},
|
|
{
|
|
"include": "#constants"
|
|
},
|
|
{
|
|
"include": "#gtypes"
|
|
},
|
|
{
|
|
"include": "#functions"
|
|
},
|
|
{
|
|
"include": "#lifetimes"
|
|
},
|
|
{
|
|
"include": "#macros"
|
|
},
|
|
{
|
|
"include": "#namespaces"
|
|
},
|
|
{
|
|
"include": "#punctuation"
|
|
},
|
|
{
|
|
"include": "#strings"
|
|
},
|
|
{
|
|
"include": "#types"
|
|
},
|
|
{
|
|
"include": "#variables"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"gtypes": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\b(Some|None)\\b",
|
|
"name": "entity.name.type.option.rust"
|
|
},
|
|
{
|
|
"match": "\\b(Ok|Err)\\b",
|
|
"name": "entity.name.type.result.rust"
|
|
}
|
|
]
|
|
},
|
|
"interpolations": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.definition.interpolation.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.interpolation.rust"
|
|
}
|
|
},
|
|
"match": "(\\{)[^\"{}]*(})",
|
|
"name": "meta.interpolation.rust"
|
|
},
|
|
"keywords": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\b(await|break|continue|do|else|for|if|loop|match|return|try|while|yield)\\b",
|
|
"name": "keyword.control.rust"
|
|
},
|
|
{
|
|
"match": "\\b(extern|let|macro|mod)\\b",
|
|
"name": "keyword.other.rust storage.type.rust"
|
|
},
|
|
{
|
|
"match": "\\b(const)\\b",
|
|
"name": "storage.modifier.rust"
|
|
},
|
|
{
|
|
"match": "\\b(type)\\b",
|
|
"name": "keyword.declaration.type.rust storage.type.rust"
|
|
},
|
|
{
|
|
"match": "\\b(enum)\\b",
|
|
"name": "keyword.declaration.enum.rust storage.type.rust"
|
|
},
|
|
{
|
|
"match": "\\b(trait)\\b",
|
|
"name": "keyword.declaration.trait.rust storage.type.rust"
|
|
},
|
|
{
|
|
"match": "\\b(struct)\\b",
|
|
"name": "keyword.declaration.struct.rust storage.type.rust"
|
|
},
|
|
{
|
|
"match": "\\b(abstract|static)\\b",
|
|
"name": "storage.modifier.rust"
|
|
},
|
|
{
|
|
"match": "\\b(as|async|become|box|dyn|move|final|gen|impl|in|override|priv|pub|ref|typeof|union|unsafe|unsized|use|virtual|where)\\b",
|
|
"name": "keyword.other.rust"
|
|
},
|
|
{
|
|
"match": "\\bfn\\b",
|
|
"name": "keyword.other.fn.rust"
|
|
},
|
|
{
|
|
"match": "\\bcrate\\b",
|
|
"name": "keyword.other.crate.rust"
|
|
},
|
|
{
|
|
"match": "\\bmut\\b",
|
|
"name": "storage.modifier.mut.rust"
|
|
},
|
|
{
|
|
"match": "([\\^|]|\\|\\||&&|<<|>>|!)(?!=)",
|
|
"name": "keyword.operator.logical.rust"
|
|
},
|
|
{
|
|
"match": "&(?![\\&=])",
|
|
"name": "keyword.operator.borrow.and.rust"
|
|
},
|
|
{
|
|
"match": "((?:[-%\\&*+/^|]|<<|>>)=)",
|
|
"name": "keyword.operator.assignment.rust"
|
|
},
|
|
{
|
|
"match": "(?<![<>])=(?![=>])",
|
|
"name": "keyword.operator.assignment.equal.rust"
|
|
},
|
|
{
|
|
"match": "(=(=)?(?!>)|!=|<=|(?<!=)>=)",
|
|
"name": "keyword.operator.comparison.rust"
|
|
},
|
|
{
|
|
"match": "(([%+]|(\\*(?!\\w)))(?!=))|(-(?!>))|(/(?!/))",
|
|
"name": "keyword.operator.math.rust"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.brackets.round.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.brackets.square.rust"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.brackets.curly.rust"
|
|
},
|
|
"4": {
|
|
"name": "keyword.operator.comparison.rust"
|
|
},
|
|
"5": {
|
|
"name": "punctuation.brackets.round.rust"
|
|
},
|
|
"6": {
|
|
"name": "punctuation.brackets.square.rust"
|
|
},
|
|
"7": {
|
|
"name": "punctuation.brackets.curly.rust"
|
|
}
|
|
},
|
|
"match": "(?:\\b|(?:(\\))|(])|(})))[\\t ]+([<>])[\\t ]+(?:\\b|(?:(\\()|(\\[)|(\\{)))"
|
|
},
|
|
{
|
|
"match": "::",
|
|
"name": "keyword.operator.namespace.rust"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.operator.dereference.rust"
|
|
}
|
|
},
|
|
"match": "(\\*)(?=\\w+)"
|
|
},
|
|
{
|
|
"match": "@",
|
|
"name": "keyword.operator.subpattern.rust"
|
|
},
|
|
{
|
|
"match": "\\.(?!\\.)",
|
|
"name": "keyword.operator.access.dot.rust"
|
|
},
|
|
{
|
|
"match": "\\.{2}([.=])?",
|
|
"name": "keyword.operator.range.rust"
|
|
},
|
|
{
|
|
"match": ":(?!:)",
|
|
"name": "keyword.operator.key-value.rust"
|
|
},
|
|
{
|
|
"match": "->|<-",
|
|
"name": "keyword.operator.arrow.skinny.rust"
|
|
},
|
|
{
|
|
"match": "=>",
|
|
"name": "keyword.operator.arrow.fat.rust"
|
|
},
|
|
{
|
|
"match": "\\$",
|
|
"name": "keyword.operator.macro.dollar.rust"
|
|
},
|
|
{
|
|
"match": "\\?",
|
|
"name": "keyword.operator.question.rust"
|
|
}
|
|
]
|
|
},
|
|
"lifetimes": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.definition.lifetime.rust"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.type.lifetime.rust"
|
|
}
|
|
},
|
|
"match": "(')([A-Z_a-z][0-9A-Z_a-z]*)(?!')\\b"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.operator.borrow.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.lifetime.rust"
|
|
},
|
|
"3": {
|
|
"name": "entity.name.type.lifetime.rust"
|
|
}
|
|
},
|
|
"match": "(&)(')([A-Z_a-z][0-9A-Z_a-z]*)(?!')\\b"
|
|
}
|
|
]
|
|
},
|
|
"lvariables": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\b[Ss]elf\\b",
|
|
"name": "variable.language.self.rust"
|
|
},
|
|
{
|
|
"match": "\\bsuper\\b",
|
|
"name": "variable.language.super.rust"
|
|
}
|
|
]
|
|
},
|
|
"macros": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"2": {
|
|
"name": "entity.name.function.macro.rust"
|
|
},
|
|
"3": {
|
|
"name": "entity.name.type.macro.rust"
|
|
}
|
|
},
|
|
"match": "(([_a-z][0-9A-Z_a-z]*!)|([A-Z_][0-9A-Z_a-z]*!))",
|
|
"name": "meta.macro.rust"
|
|
}
|
|
]
|
|
},
|
|
"namespaces": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.name.namespace.rust"
|
|
},
|
|
"2": {
|
|
"name": "keyword.operator.namespace.rust"
|
|
}
|
|
},
|
|
"match": "(?<![0-9A-Z_a-z])([0-9A-Z_a-z]+)((?<!s(?:uper|elf))::)"
|
|
}
|
|
]
|
|
},
|
|
"punctuation": {
|
|
"patterns": [
|
|
{
|
|
"match": ",",
|
|
"name": "punctuation.comma.rust"
|
|
},
|
|
{
|
|
"match": "[{}]",
|
|
"name": "punctuation.brackets.curly.rust"
|
|
},
|
|
{
|
|
"match": "[()]",
|
|
"name": "punctuation.brackets.round.rust"
|
|
},
|
|
{
|
|
"match": ";",
|
|
"name": "punctuation.semi.rust"
|
|
},
|
|
{
|
|
"match": "[]\\[]",
|
|
"name": "punctuation.brackets.square.rust"
|
|
},
|
|
{
|
|
"match": "(?<!=)[<>]",
|
|
"name": "punctuation.brackets.angle.rust"
|
|
}
|
|
]
|
|
},
|
|
"strings": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(b?)(\")",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "string.quoted.byte.raw.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.string.rust"
|
|
}
|
|
},
|
|
"end": "\"",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.rust"
|
|
}
|
|
},
|
|
"name": "string.quoted.double.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#escapes"
|
|
},
|
|
{
|
|
"include": "#interpolations"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(b?r)(#*)(\")",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "string.quoted.byte.raw.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.string.raw.rust"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.string.rust"
|
|
}
|
|
},
|
|
"end": "(\")(\\2)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.string.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.string.raw.rust"
|
|
}
|
|
},
|
|
"name": "string.quoted.double.rust"
|
|
},
|
|
{
|
|
"begin": "(b)?(')",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "string.quoted.byte.raw.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.char.rust"
|
|
}
|
|
},
|
|
"end": "'",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.char.rust"
|
|
}
|
|
},
|
|
"name": "string.quoted.single.char.rust",
|
|
"patterns": [
|
|
{
|
|
"include": "#escapes"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"types": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.name.type.numeric.rust"
|
|
}
|
|
},
|
|
"match": "(?<![A-Za-z])(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)\\b"
|
|
},
|
|
{
|
|
"begin": "\\b(_?[A-Z][0-9A-Z_a-z]*)(<)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.type.rust"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.brackets.angle.rust"
|
|
}
|
|
},
|
|
"end": ">",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.brackets.angle.rust"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#block-comments"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#lvariables"
|
|
},
|
|
{
|
|
"include": "#lifetimes"
|
|
},
|
|
{
|
|
"include": "#punctuation"
|
|
},
|
|
{
|
|
"include": "#types"
|
|
},
|
|
{
|
|
"include": "#variables"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": "\\b(bool|char|str)\\b",
|
|
"name": "entity.name.type.primitive.rust"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.declaration.trait.rust storage.type.rust"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.type.trait.rust"
|
|
}
|
|
},
|
|
"match": "\\b(trait)\\s+(_?[A-Z][0-9A-Z_a-z]*)\\b"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.declaration.struct.rust storage.type.rust"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.type.struct.rust"
|
|
}
|
|
},
|
|
"match": "\\b(struct)\\s+(_?[A-Z][0-9A-Z_a-z]*)\\b"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.declaration.enum.rust storage.type.rust"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.type.enum.rust"
|
|
}
|
|
},
|
|
"match": "\\b(enum)\\s+(_?[A-Z][0-9A-Z_a-z]*)\\b"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.declaration.type.rust storage.type.rust"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.type.declaration.rust"
|
|
}
|
|
},
|
|
"match": "\\b(type)\\s+(_?[A-Z][0-9A-Z_a-z]*)\\b"
|
|
},
|
|
{
|
|
"match": "\\b_?[A-Z][0-9A-Z_a-z]*\\b(?!!)",
|
|
"name": "entity.name.type.rust"
|
|
}
|
|
]
|
|
},
|
|
"variables": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\b(?<!(?<!\\.)\\.)(?:r#(?!(crate|[Ss]elf|super)))?[0-9_a-z]+\\b",
|
|
"name": "variable.other.rust"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"scopeName": "source.rust"
|
|
}
|