1198 lines
28 KiB
JSON
1198 lines
28 KiB
JSON
{
|
|
"fileTypes": ["nix"],
|
|
"name": "nix",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
],
|
|
"repository": {
|
|
"attribute-bind": {
|
|
"patterns": [
|
|
{
|
|
"include": "#attribute-name"
|
|
},
|
|
{
|
|
"include": "#attribute-bind-from-equals"
|
|
}
|
|
]
|
|
},
|
|
"attribute-bind-from-equals": {
|
|
"begin": "\\=",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.operator.bind.nix"
|
|
}
|
|
},
|
|
"end": "\\;",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.terminator.bind.nix"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
},
|
|
"attribute-inherit": {
|
|
"begin": "\\binherit\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.other.inherit.nix"
|
|
}
|
|
},
|
|
"end": "\\;",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.terminator.inherit.nix"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.section.function.arguments.nix"
|
|
}
|
|
},
|
|
"end": "(?=\\;)",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\)",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.section.function.arguments.nix"
|
|
}
|
|
},
|
|
"end": "(?=\\;)",
|
|
"patterns": [
|
|
{
|
|
"include": "#bad-reserved"
|
|
},
|
|
{
|
|
"include": "#attribute-name-single"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=[a-zA-Z\\_])",
|
|
"end": "(?=\\;)",
|
|
"patterns": [
|
|
{
|
|
"include": "#bad-reserved"
|
|
},
|
|
{
|
|
"include": "#attribute-name-single"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"attribute-name": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
|
|
"name": "entity.other.attribute-name.multipart.nix"
|
|
},
|
|
{
|
|
"match": "\\."
|
|
},
|
|
{
|
|
"include": "#string-quoted"
|
|
},
|
|
{
|
|
"include": "#interpolation"
|
|
}
|
|
]
|
|
},
|
|
"attribute-name-single": {
|
|
"match": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
|
|
"name": "entity.other.attribute-name.single.nix"
|
|
},
|
|
"attrset-contents": {
|
|
"patterns": [
|
|
{
|
|
"include": "#attribute-inherit"
|
|
},
|
|
{
|
|
"include": "#bad-reserved"
|
|
},
|
|
{
|
|
"include": "#attribute-bind"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"attrset-definition": {
|
|
"begin": "(?=\\{)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"begin": "(\\{)",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.attrset.nix"
|
|
}
|
|
},
|
|
"end": "(\\})",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.attrset.nix"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#attrset-contents"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?<=\\})",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"attrset-definition-brace-opened": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(?<=\\})",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=.?)",
|
|
"end": "\\}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.attrset.nix"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#attrset-contents"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"attrset-for-sure": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(?=\\brec\\b)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\brec\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.other.nix"
|
|
}
|
|
},
|
|
"end": "(?=\\{)",
|
|
"patterns": [
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#attrset-definition"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=\\{\\s*(\\}|[^,?]*(=|;)))",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#attrset-definition"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"attrset-or-function": {
|
|
"begin": "\\{",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.attrset-or-function.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"begin": "(?=(\\s*\\}|\\\"|\\binherit\\b|\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*(\\s*\\.|\\s*=[^=])))",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#attrset-definition-brace-opened"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=(\\.\\.\\.|\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*\\s*[,?]))",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-definition-brace-opened"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#bad-reserved"
|
|
},
|
|
{
|
|
"begin": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "variable.parameter.function.maybe.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"begin": "(?=\\.)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#attrset-definition-brace-opened"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(\\,)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.operator.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-definition-brace-opened"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=\\=)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#attribute-bind-from-equals"
|
|
},
|
|
{
|
|
"include": "#attrset-definition-brace-opened"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=\\?)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-parameter-default"
|
|
},
|
|
{
|
|
"begin": "\\,",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.operator.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-definition-brace-opened"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"bad-reserved": {
|
|
"match": "\\b(if|then|else|assert|with|let|in|rec|inherit)\\b",
|
|
"name": "invalid.illegal.reserved.nix"
|
|
},
|
|
"comment": {
|
|
"patterns": [
|
|
{
|
|
"begin": "/\\*([^*]|\\*[^\\/])*",
|
|
"end": "\\*\\/",
|
|
"name": "comment.block.nix",
|
|
"patterns": [
|
|
{
|
|
"include": "#comment-remark"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\#",
|
|
"end": "$",
|
|
"name": "comment.line.number-sign.nix",
|
|
"patterns": [
|
|
{
|
|
"include": "#comment-remark"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"comment-remark": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "markup.bold.comment.nix"
|
|
}
|
|
},
|
|
"match": "(TODO|FIXME|BUG|\\!\\!\\!):?"
|
|
},
|
|
"constants": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\b(builtins|true|false|null)\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "constant.language.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\b(scopedImport|import|isNull|abort|throw|baseNameOf|dirOf|removeAttrs|map|toString|derivationStrict|derivation)\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "support.function.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\b[0-9]+\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "constant.numeric.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"expression": {
|
|
"patterns": [
|
|
{
|
|
"include": "#parens-and-cont"
|
|
},
|
|
{
|
|
"include": "#list-and-cont"
|
|
},
|
|
{
|
|
"include": "#string"
|
|
},
|
|
{
|
|
"include": "#interpolation"
|
|
},
|
|
{
|
|
"include": "#with-assert"
|
|
},
|
|
{
|
|
"include": "#function-for-sure"
|
|
},
|
|
{
|
|
"include": "#attrset-for-sure"
|
|
},
|
|
{
|
|
"include": "#attrset-or-function"
|
|
},
|
|
{
|
|
"include": "#let"
|
|
},
|
|
{
|
|
"include": "#if"
|
|
},
|
|
{
|
|
"include": "#operator-unary"
|
|
},
|
|
{
|
|
"include": "#constants"
|
|
},
|
|
{
|
|
"include": "#bad-reserved"
|
|
},
|
|
{
|
|
"include": "#parameter-name-and-cont"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"expression-cont": {
|
|
"begin": "(?=.?)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#parens"
|
|
},
|
|
{
|
|
"include": "#list"
|
|
},
|
|
{
|
|
"include": "#string"
|
|
},
|
|
{
|
|
"include": "#interpolation"
|
|
},
|
|
{
|
|
"include": "#function-for-sure"
|
|
},
|
|
{
|
|
"include": "#attrset-for-sure"
|
|
},
|
|
{
|
|
"include": "#attrset-or-function"
|
|
},
|
|
{
|
|
"match": "(\\bor\\b|\\.|==|!=|!|\\<\\=|\\<|\\>\\=|\\>|&&|\\|\\||-\\>|//|\\?|\\+\\+|-|\\*|/(?=([^*]|$))|\\+)",
|
|
"name": "keyword.operator.nix"
|
|
},
|
|
{
|
|
"include": "#constants"
|
|
},
|
|
{
|
|
"include": "#bad-reserved"
|
|
},
|
|
{
|
|
"include": "#parameter-name"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"function-body": {
|
|
"begin": "(@\\s*([a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)\\s*)?(\\:)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
},
|
|
"function-body-from-colon": {
|
|
"begin": "(\\:)",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.function.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
},
|
|
"function-contents": {
|
|
"patterns": [
|
|
{
|
|
"include": "#bad-reserved"
|
|
},
|
|
{
|
|
"include": "#function-parameter"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"function-definition": {
|
|
"begin": "(?=.?)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-body-from-colon"
|
|
},
|
|
{
|
|
"begin": "(?=.?)",
|
|
"end": "(?=\\:)",
|
|
"patterns": [
|
|
{
|
|
"begin": "(\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "variable.parameter.function.4.nix"
|
|
}
|
|
},
|
|
"end": "(?=\\:)",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\@",
|
|
"end": "(?=\\:)",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-header-until-colon-no-arg"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=\\{)",
|
|
"end": "(?=\\:)",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-header-until-colon-with-arg"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"function-definition-brace-opened": {
|
|
"begin": "(?=.?)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-body-from-colon"
|
|
},
|
|
{
|
|
"begin": "(?=.?)",
|
|
"end": "(?=\\:)",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-header-close-brace-with-arg"
|
|
},
|
|
{
|
|
"begin": "(?=.?)",
|
|
"end": "(?=\\})",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-contents"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"function-for-sure": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(?=(\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*\\s*[:@]|\\{[^}]*\\}\\s*:|\\{[^#}\"'/=]*[,\\?]))",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-definition"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"function-header-close-brace-no-arg": {
|
|
"begin": "\\}",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.entity.function.nix"
|
|
}
|
|
},
|
|
"end": "(?=\\:)",
|
|
"patterns": [
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"function-header-close-brace-with-arg": {
|
|
"begin": "\\}",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.entity.function.nix"
|
|
}
|
|
},
|
|
"end": "(?=\\:)",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-header-terminal-arg"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"function-header-open-brace": {
|
|
"begin": "\\{",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.entity.function.2.nix"
|
|
}
|
|
},
|
|
"end": "(?=\\})",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-contents"
|
|
}
|
|
]
|
|
},
|
|
"function-header-terminal-arg": {
|
|
"begin": "(?=@)",
|
|
"end": "(?=\\:)",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\@",
|
|
"end": "(?=\\:)",
|
|
"patterns": [
|
|
{
|
|
"begin": "(\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)",
|
|
"end": "(?=\\:)",
|
|
"name": "variable.parameter.function.3.nix"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"function-header-until-colon-no-arg": {
|
|
"begin": "(?=\\{)",
|
|
"end": "(?=\\:)",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-header-open-brace"
|
|
},
|
|
{
|
|
"include": "#function-header-close-brace-no-arg"
|
|
}
|
|
]
|
|
},
|
|
"function-header-until-colon-with-arg": {
|
|
"begin": "(?=\\{)",
|
|
"end": "(?=\\:)",
|
|
"patterns": [
|
|
{
|
|
"include": "#function-header-open-brace"
|
|
},
|
|
{
|
|
"include": "#function-header-close-brace-with-arg"
|
|
}
|
|
]
|
|
},
|
|
"function-parameter": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(\\.\\.\\.)",
|
|
"end": "(,|(?=\\}))",
|
|
"name": "keyword.operator.nix",
|
|
"patterns": [
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "variable.parameter.function.1.nix"
|
|
}
|
|
},
|
|
"end": "(,|(?=\\}))",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "keyword.operator.nix"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#whitespace"
|
|
},
|
|
{
|
|
"include": "#comment"
|
|
},
|
|
{
|
|
"include": "#function-parameter-default"
|
|
},
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
"function-parameter-default": {
|
|
"begin": "\\?",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.operator.nix"
|
|
}
|
|
},
|
|
"end": "(?=[,}])",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
},
|
|
"if": {
|
|
"begin": "(?=\\bif\\b)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\bif\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.other.nix"
|
|
}
|
|
},
|
|
"end": "\\bth(?=en\\b)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "keyword.other.nix"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?<=th)en\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.other.nix"
|
|
}
|
|
},
|
|
"end": "\\bel(?=se\\b)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "keyword.other.nix"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?<=el)se\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.other.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "keyword.other.nix"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"illegal": {
|
|
"match": ".",
|
|
"name": "invalid.illegal"
|
|
},
|
|
"interpolation": {
|
|
"begin": "\\$\\{",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.section.embedded.begin.nix"
|
|
}
|
|
},
|
|
"end": "\\}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.section.embedded.end.nix"
|
|
}
|
|
},
|
|
"name": "markup.italic",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
},
|
|
"let": {
|
|
"begin": "(?=\\blet\\b)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\blet\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.other.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(in|else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"begin": "(?=\\{)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\{",
|
|
"end": "\\}",
|
|
"patterns": [
|
|
{
|
|
"include": "#attrset-contents"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(^|(?<=\\}))",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#attrset-contents"
|
|
},
|
|
{
|
|
"include": "#others"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\bin\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.other.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"list": {
|
|
"begin": "\\[",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.list.nix"
|
|
}
|
|
},
|
|
"end": "\\]",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.list.nix"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
},
|
|
"list-and-cont": {
|
|
"begin": "(?=\\[)",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#list"
|
|
},
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
},
|
|
"operator-unary": {
|
|
"match": "(!|-)",
|
|
"name": "keyword.operator.unary.nix"
|
|
},
|
|
"others": {
|
|
"patterns": [
|
|
{
|
|
"include": "#whitespace"
|
|
},
|
|
{
|
|
"include": "#comment"
|
|
},
|
|
{
|
|
"include": "#illegal"
|
|
}
|
|
]
|
|
},
|
|
"parameter-name": {
|
|
"captures": {
|
|
"0": {
|
|
"name": "variable.parameter.name.nix"
|
|
}
|
|
},
|
|
"match": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*"
|
|
},
|
|
"parameter-name-and-cont": {
|
|
"begin": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "variable.parameter.name.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
},
|
|
"parens": {
|
|
"begin": "\\(",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.expression.nix"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.expression.nix"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
},
|
|
"parens-and-cont": {
|
|
"begin": "(?=\\()",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#parens"
|
|
},
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
},
|
|
"string": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(?=\\'\\')",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\'\\'",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.other.start.nix"
|
|
}
|
|
},
|
|
"end": "\\'\\'(?!\\$|\\'|\\\\.)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.other.end.nix"
|
|
}
|
|
},
|
|
"name": "string.quoted.other.nix",
|
|
"patterns": [
|
|
{
|
|
"match": "\\'\\'(\\$|\\'|\\\\.)",
|
|
"name": "constant.character.escape.nix"
|
|
},
|
|
{
|
|
"include": "#interpolation"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=\\\")",
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#string-quoted"
|
|
},
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z0-9\\.\\_\\-\\+]*(\\/[a-zA-Z0-9\\.\\_\\-\\+]+)+)",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "string.unquoted.path.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(\\<[a-zA-Z0-9\\.\\_\\-\\+]+(\\/[a-zA-Z0-9\\.\\_\\-\\+]+)*\\>)",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "string.unquoted.spath.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "([a-zA-Z][a-zA-Z0-9\\+\\-\\.]*\\:[a-zA-Z0-9\\%\\/\\?\\:\\@\\&\\=\\+\\$\\,\\-\\_\\.\\!\\~\\*\\']+)",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "string.unquoted.url.nix"
|
|
}
|
|
},
|
|
"end": "(?=([\\])};,]|\\b(else|then)\\b))",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression-cont"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"string-quoted": {
|
|
"begin": "\\\"",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.double.start.nix"
|
|
}
|
|
},
|
|
"end": "\\\"",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.double.end.nix"
|
|
}
|
|
},
|
|
"name": "string.quoted.double.nix",
|
|
"patterns": [
|
|
{
|
|
"match": "\\\\.",
|
|
"name": "constant.character.escape.nix"
|
|
},
|
|
{
|
|
"include": "#interpolation"
|
|
}
|
|
]
|
|
},
|
|
"whitespace": {
|
|
"match": "\\s+"
|
|
},
|
|
"with-assert": {
|
|
"begin": "\\b(with|assert)\\b",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.other.nix"
|
|
}
|
|
},
|
|
"end": "\\;",
|
|
"patterns": [
|
|
{
|
|
"include": "#expression"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"scopeName": "source.nix",
|
|
"uuid": "0514fd5f-acb6-436d-b42c-7643e6d36c8f"
|
|
}
|