886 lines
27 KiB
JSON
886 lines
27 KiB
JSON
{
|
|
"fileTypes": ["purs"],
|
|
"name": "purescript",
|
|
"scopeName": "source.purescript",
|
|
"macros": {
|
|
"functionNameOne": "[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
|
|
"classNameOne": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
|
|
"functionName": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
|
|
"className": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*",
|
|
"operatorChar": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]",
|
|
"operator": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+",
|
|
"operatorFun": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))",
|
|
"character": "(?:[ -\\[\\]-~]|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))",
|
|
"classConstraint": "(?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?)))",
|
|
"functionTypeDeclaration": "([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(::|∷)",
|
|
"ctorArgs": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)",
|
|
"ctor": "(?:(?:\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<ctorArgs>(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:\\s*(?:\\s+)\\s*\\g<ctorArgs>)?)?))",
|
|
"typeDecl": ".+?",
|
|
"indentChar": "[ \\t]",
|
|
"indentBlockEnd": "^(?!\\1[ \\t]|[ \\t]*$)",
|
|
"maybeBirdTrack": "^"
|
|
},
|
|
"patterns": [
|
|
{
|
|
"name": "keyword.operator.function.infix.purescript",
|
|
"match": "(`)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(`)",
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.definition.entity.purescript"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.entity.purescript"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "meta.declaration.module.purescript",
|
|
"begin": "^\\s*\\b(module)(?!')\\b",
|
|
"end": "(where)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.other.purescript"
|
|
}
|
|
},
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.other.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#module_name"
|
|
},
|
|
{
|
|
"include": "#module_exports"
|
|
},
|
|
{
|
|
"name": "invalid.purescript",
|
|
"match": "[a-z]+"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "meta.declaration.typeclass.purescript",
|
|
"begin": "^\\s*\\b(class)(?!')\\b",
|
|
"end": "\\b(where)\\b|$",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "storage.type.class.purescript"
|
|
}
|
|
},
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.other.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#type_signature"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "meta.declaration.instance.purescript",
|
|
"begin": "^\\s*\\b(else\\s+)?(derive\\s+)?(newtype\\s+)?(instance)(?!')\\b",
|
|
"end": "\\b(where)\\b|$",
|
|
"contentName": "meta.type-signature.purescript",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.other.purescript"
|
|
},
|
|
"2": {
|
|
"name": "keyword.other.purescript"
|
|
},
|
|
"3": {
|
|
"name": "keyword.other.purescript"
|
|
},
|
|
"4": {
|
|
"name": "keyword.other.purescript"
|
|
}
|
|
},
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.other.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#type_signature"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "meta.foreign.data.purescript",
|
|
"begin": "^(\\s*)(foreign)\\s+(import)\\s+(data)\\s+([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)",
|
|
"end": "^(?!\\1[ \\t]|[ \\t]*$)",
|
|
"contentName": "meta.kind-signature.purescript",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "keyword.other.purescript"
|
|
},
|
|
"3": {
|
|
"name": "keyword.other.purescript"
|
|
},
|
|
"4": {
|
|
"name": "keyword.other.purescript"
|
|
},
|
|
"5": {
|
|
"name": "entity.name.type.purescript"
|
|
},
|
|
"6": {
|
|
"name": "keyword.other.double-colon.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#double_colon"
|
|
},
|
|
{
|
|
"include": "#kind_signature"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "meta.foreign.purescript",
|
|
"begin": "^(\\s*)(foreign)\\s+(import)\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)",
|
|
"end": "^(?!\\1[ \\t]|[ \\t]*$)",
|
|
"contentName": "meta.type-signature.purescript",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "keyword.other.purescript"
|
|
},
|
|
"3": {
|
|
"name": "keyword.other.purescript"
|
|
},
|
|
"4": {
|
|
"name": "entity.name.function.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#double_colon"
|
|
},
|
|
{
|
|
"include": "#type_signature"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "meta.import.purescript",
|
|
"begin": "^\\s*\\b(import)(?!')\\b",
|
|
"end": "($|(?=--))",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.other.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#module_name"
|
|
},
|
|
{
|
|
"include": "#module_exports"
|
|
},
|
|
{
|
|
"match": "\\b(as|hiding)\\b",
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.other.purescript"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "meta.declaration.type.data.purescript",
|
|
"begin": "^(\\s)*(data|newtype)\\s+(.+?)\\s*(?=\\=|$)",
|
|
"end": "^(?!\\1[ \\t]|[ \\t]*$)",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "storage.type.data.purescript"
|
|
},
|
|
"3": {
|
|
"name": "meta.type-signature.purescript",
|
|
"patterns": [
|
|
{
|
|
"include": "#type_signature"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"match": "=",
|
|
"captures": {
|
|
"0": {
|
|
"name": "keyword.operator.assignment.purescript"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"match": "(?:(?:\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<ctorArgs>(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:\\s*(?:\\s+)\\s*\\g<ctorArgs>)?)?))",
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#data_ctor"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "meta.type-signature.purescript",
|
|
"patterns": [
|
|
{
|
|
"include": "#type_signature"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"match": "\\|",
|
|
"captures": {
|
|
"0": {
|
|
"name": "punctuation.separator.pipe.purescript"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": "#record_types"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "meta.declaration.type.type.purescript",
|
|
"begin": "^(\\s)*(type)\\s+(.+?)\\s*(?=\\=|$)",
|
|
"end": "^(?!\\1[ \\t]|[ \\t]*$)",
|
|
"contentName": "meta.type-signature.purescript",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "storage.type.data.purescript"
|
|
},
|
|
"3": {
|
|
"name": "meta.type-signature.purescript",
|
|
"patterns": [
|
|
{
|
|
"include": "#type_signature"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"match": "=",
|
|
"captures": {
|
|
"0": {
|
|
"name": "keyword.operator.assignment.purescript"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": "#type_signature"
|
|
},
|
|
{
|
|
"include": "#record_types"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "keyword.other.purescript",
|
|
"match": "^\\s*\\b(derive|where|data|type|newtype|infix[lr]?|foreign(\\s+import)?(\\s+data)?)(?!')\\b"
|
|
},
|
|
{
|
|
"name": "entity.name.function.typed-hole.purescript",
|
|
"match": "\\?(?:[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)"
|
|
},
|
|
{
|
|
"name": "storage.type.purescript",
|
|
"match": "^\\s*\\b(data|type|newtype)(?!')\\b"
|
|
},
|
|
{
|
|
"name": "keyword.control.purescript",
|
|
"match": "\\b(do|ado|if|then|else|case|of|let|in)(?!('|\\s*(:|=)))\\b"
|
|
},
|
|
{
|
|
"name": "constant.numeric.hex.purescript",
|
|
"match": "\\b(?<!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)"
|
|
},
|
|
{
|
|
"name": "constant.numeric.decimal.purescript",
|
|
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9]+(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # 1.1E+3\n (?:\\b[0-9]+[eE][+-]?[0-9]+\\b)| # 1E+3\n (?:\\b[0-9]+(\\.)[0-9]+\\b)| # 1.1\n (?:\\b[0-9]+\\b(?!\\.)) # 1\n)(?!\\$)",
|
|
"captures": {
|
|
"0": {
|
|
"name": "constant.numeric.decimal.purescript"
|
|
},
|
|
"1": {
|
|
"name": "meta.delimiter.decimal.period.purescript"
|
|
},
|
|
"2": {
|
|
"name": "meta.delimiter.decimal.period.purescript"
|
|
},
|
|
"3": {
|
|
"name": "meta.delimiter.decimal.period.purescript"
|
|
},
|
|
"4": {
|
|
"name": "meta.delimiter.decimal.period.purescript"
|
|
},
|
|
"5": {
|
|
"name": "meta.delimiter.decimal.period.purescript"
|
|
},
|
|
"6": {
|
|
"name": "meta.delimiter.decimal.period.purescript"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "constant.language.boolean.purescript",
|
|
"match": "\\b(true|false)\\b"
|
|
},
|
|
{
|
|
"name": "constant.numeric.purescript",
|
|
"match": "\\b(([0-9]+_?)*[0-9]+|0([xX][0-9a-fA-F]+|[oO][0-7]+))\\b"
|
|
},
|
|
{
|
|
"name": "string.quoted.triple.purescript",
|
|
"begin": "\"\"\"",
|
|
"end": "\"\"\"",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.begin.purescript"
|
|
}
|
|
},
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.end.purescript"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "string.quoted.double.purescript",
|
|
"begin": "\"",
|
|
"end": "\"",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.begin.purescript"
|
|
}
|
|
},
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.end.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#characters"
|
|
},
|
|
{
|
|
"begin": "\\\\\\s",
|
|
"end": "\\\\",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "markup.other.escape.newline.begin.purescript"
|
|
}
|
|
},
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "markup.other.escape.newline.end.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"match": "\\S+",
|
|
"name": "invalid.illegal.character-not-allowed-here.purescript"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "markup.other.escape.newline.purescript",
|
|
"match": "\\\\$"
|
|
},
|
|
{
|
|
"name": "string.quoted.single.purescript",
|
|
"match": "(')((?:[ -\\[\\]-~]|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_])))(')",
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.definition.string.begin.purescript"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#characters"
|
|
}
|
|
]
|
|
},
|
|
"7": {
|
|
"name": "punctuation.definition.string.end.purescript"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": "#function_type_declaration"
|
|
},
|
|
{
|
|
"match": "\\((?<paren>(?:[^()]|\\(\\g<paren>\\))*)(::|∷)(?<paren2>(?:[^()]|\\(\\g<paren2>\\))*)\\)",
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "keyword.other.double-colon.purescript"
|
|
},
|
|
"3": {
|
|
"name": "meta.type-signature.purescript",
|
|
"patterns": [
|
|
{
|
|
"include": "#type_signature"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(?:(::|∷))",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "keyword.other.double-colon.purescript"
|
|
}
|
|
},
|
|
"end": "^(?!\\1[ \\t]*|[ \\t]*$)",
|
|
"patterns": [
|
|
{
|
|
"include": "#type_signature"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#data_ctor"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#infix_op"
|
|
},
|
|
{
|
|
"name": "keyword.other.arrow.purescript",
|
|
"match": "\\<-|-\\>"
|
|
},
|
|
{
|
|
"name": "keyword.operator.purescript",
|
|
"match": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+"
|
|
},
|
|
{
|
|
"name": "punctuation.separator.comma.purescript",
|
|
"match": ","
|
|
}
|
|
],
|
|
"repository": {
|
|
"block_comment": {
|
|
"patterns": [
|
|
{
|
|
"name": "comment.block.documentation.purescript",
|
|
"begin": "\\{-\\s*\\|",
|
|
"end": "-\\}",
|
|
"applyEndPatternLast": 1,
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.comment.documentation.purescript"
|
|
}
|
|
},
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.comment.documentation.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#block_comment"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "comment.block.purescript",
|
|
"begin": "\\{-",
|
|
"end": "-\\}",
|
|
"applyEndPatternLast": 1,
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.comment.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#block_comment"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"record_types": {
|
|
"patterns": [
|
|
{
|
|
"name": "meta.type.record.purescript",
|
|
"begin": "\\{",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "keyword.operator.type.record.begin.purescript"
|
|
}
|
|
},
|
|
"end": "\\}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "keyword.operator.type.record.end.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"name": "punctuation.separator.comma.purescript",
|
|
"match": ","
|
|
},
|
|
{
|
|
"include": "#record_field_declaration"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"comments": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(^[ \\t]+)?(?=--+\\s+\\|)",
|
|
"end": "(?!\\G)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.whitespace.comment.leading.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"name": "comment.line.double-dash.documentation.purescript",
|
|
"begin": "(--+)\\s+(\\|)",
|
|
"end": "\\n",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.comment.purescript"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.comment.documentation.purescript"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",
|
|
"end": "(?!\\G)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.whitespace.comment.leading.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"name": "comment.line.double-dash.purescript",
|
|
"begin": "--",
|
|
"end": "\\n",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.comment.purescript"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#block_comment"
|
|
}
|
|
]
|
|
},
|
|
"characters": {
|
|
"patterns": [
|
|
{
|
|
"match": "(?:[ -\\[\\]-~]|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))",
|
|
"captures": {
|
|
"1": {
|
|
"name": "constant.character.escape.purescript"
|
|
},
|
|
"2": {
|
|
"name": "constant.character.escape.octal.purescript"
|
|
},
|
|
"3": {
|
|
"name": "constant.character.escape.hexadecimal.purescript"
|
|
},
|
|
"4": {
|
|
"name": "constant.character.escape.control.purescript"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"infix_op": {
|
|
"patterns": [
|
|
{
|
|
"name": "entity.name.function.infix.purescript",
|
|
"match": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))"
|
|
}
|
|
]
|
|
},
|
|
"module_exports": {
|
|
"patterns": [
|
|
{
|
|
"name": "meta.declaration.exports.purescript",
|
|
"begin": "\\(",
|
|
"end": "\\)",
|
|
"patterns": [
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"name": "entity.name.function.purescript",
|
|
"match": "\\b(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"
|
|
},
|
|
{
|
|
"include": "#type_name"
|
|
},
|
|
{
|
|
"name": "punctuation.separator.comma.purescript",
|
|
"match": ","
|
|
},
|
|
{
|
|
"include": "#infix_op"
|
|
},
|
|
{
|
|
"name": "meta.other.constructor-list.purescript",
|
|
"match": "\\(.*?\\)"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"module_name": {
|
|
"patterns": [
|
|
{
|
|
"name": "support.other.module.purescript",
|
|
"match": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)*[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.?"
|
|
}
|
|
]
|
|
},
|
|
"function_type_declaration": {
|
|
"patterns": [
|
|
{
|
|
"name": "meta.function.type-declaration.purescript",
|
|
"begin": "^(\\s*)([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(?:(::|∷)(?!.*<-))",
|
|
"end": "^(?!\\1[ \\t]|[ \\t]*$)",
|
|
"contentName": "meta.type-signature.purescript",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "entity.name.function.purescript"
|
|
},
|
|
"3": {
|
|
"name": "keyword.other.double-colon.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#double_colon"
|
|
},
|
|
{
|
|
"include": "#type_signature"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"record_field_declaration": {
|
|
"patterns": [
|
|
{
|
|
"name": "meta.record-field.type-declaration.purescript",
|
|
"begin": "([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(::|∷)",
|
|
"end": "(?=([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(::|∷)|})",
|
|
"contentName": "meta.type-signature.purescript",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"name": "entity.other.attribute-name.purescript",
|
|
"match": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "keyword.other.double-colon.purescript"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#type_signature"
|
|
},
|
|
{
|
|
"include": "#record_types"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"kind_signature": {
|
|
"patterns": [
|
|
{
|
|
"name": "keyword.other.star.purescript",
|
|
"match": "\\*"
|
|
},
|
|
{
|
|
"name": "keyword.other.exclaimation-point.purescript",
|
|
"match": "!"
|
|
},
|
|
{
|
|
"name": "keyword.other.pound-sign.purescript",
|
|
"match": "#"
|
|
},
|
|
{
|
|
"name": "keyword.other.arrow.purescript",
|
|
"match": "->|→"
|
|
}
|
|
]
|
|
},
|
|
"type_signature": {
|
|
"patterns": [
|
|
{
|
|
"name": "meta.class-constraints.purescript",
|
|
"match": "(?:(?:\\()(?:(?<classConstraints>(?:(?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?))))(?:\\s*(?:,)\\s*\\g<classConstraints>)?))(?:\\))(?:\\s*(=>|<=|⇐|⇒)))",
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#class_constraint"
|
|
}
|
|
]
|
|
},
|
|
"4": {
|
|
"name": "keyword.other.big-arrow.purescript"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "meta.class-constraints.purescript",
|
|
"match": "((?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?))))\\s*(=>|<=|⇐|⇒)",
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#class_constraint"
|
|
}
|
|
]
|
|
},
|
|
"4": {
|
|
"name": "keyword.other.big-arrow.purescript"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "keyword.other.arrow.purescript",
|
|
"match": "->|→"
|
|
},
|
|
{
|
|
"name": "keyword.other.big-arrow.purescript",
|
|
"match": "=>|⇒"
|
|
},
|
|
{
|
|
"name": "keyword.other.big-arrow-left.purescript",
|
|
"match": "<=|⇐"
|
|
},
|
|
{
|
|
"name": "keyword.other.forall.purescript",
|
|
"match": "forall|∀"
|
|
},
|
|
{
|
|
"include": "#generic_type"
|
|
},
|
|
{
|
|
"include": "#type_name"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
}
|
|
]
|
|
},
|
|
"type_name": {
|
|
"patterns": [
|
|
{
|
|
"name": "entity.name.type.purescript",
|
|
"match": "\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*"
|
|
}
|
|
]
|
|
},
|
|
"data_ctor": {
|
|
"patterns": [
|
|
{
|
|
"name": "entity.name.tag.purescript",
|
|
"match": "\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*"
|
|
}
|
|
]
|
|
},
|
|
"generic_type": {
|
|
"patterns": [
|
|
{
|
|
"name": "variable.other.generic-type.purescript",
|
|
"match": "\\b(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"
|
|
}
|
|
]
|
|
},
|
|
"double_colon": {
|
|
"patterns": [
|
|
{
|
|
"name": "keyword.other.double-colon.purescript",
|
|
"match": "(?:::|∷)"
|
|
}
|
|
]
|
|
},
|
|
"class_constraint": {
|
|
"patterns": [
|
|
{
|
|
"name": "meta.class-constraint.purescript",
|
|
"match": "(?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?)))",
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"name": "entity.name.type.purescript",
|
|
"match": "\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*"
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#type_name"
|
|
},
|
|
{
|
|
"include": "#generic_type"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|