diff --git a/angelscript.tmLanguage.json b/angelscript.tmLanguage.json new file mode 100644 index 00000000..a04be432 --- /dev/null +++ b/angelscript.tmLanguage.json @@ -0,0 +1,556 @@ +{ + "_license": "This file is a modified version of a file from https://github.com/Hazelight/vscode-unreal-angelscript, originally licensed under the MIT License.", + "name": "angelscript", + "scopeName": "source.angelscript", + "patterns": [ + { + "name": "keyword.declaration.angelscript", + "match": "\\b(class|struct|delegate|event|import|enum|namespace)\\b" + }, + { + "name": "keyword.statement.angelscript", + "match": "\\b(for|if|return|continue|break|default|else|while|case|switch|fallthrough)\\b" + }, + { + "name": "keyword.type.angelscript", + "match": "\\b(void|auto|const|property|final|override|mixin|local)\\b" + }, + { + "name": "keyword.code.angelscript", + "match": "\\b(Cast|Super)\\b" + }, + { + "name": "keyword.code.angelscript.NAME_None.name", + "match": "\\bNAME_None\\b" + }, + { + "name": "keyword.code.angelscript.null.reference", + "match": "\\bnull\\b" + }, + { + "name": "keyword.code.angelscript.this.reference", + "match": "\\bthis\\b" + }, + { + "name": "keyword.code.angelscript.true.boolean", + "match": "\\btrue\\b" + }, + { + "name": "keyword.code.angelscript.false.boolean", + "match": "\\bfalse\\b" + }, + { + "name": "keyword.access.angelscript", + "match": "\\b(private|protected|access)\\b" + }, + { + "name": "storage.type.primitive.angelscript", + "match": "\\b(int|float|double|bool|int32|int64|int16|int8|uint32|uint64|uint16|uint8|float32|float64)\\b" + }, + { + "match": "::", + "name": "punctuation.separator.namespace.access.angelscript" + }, + { + "name": "meta.preprocessor.angelsript", + "begin": "^\\s*#", + "end": "(?=\\n)" + }, + { + "begin": "f\"", + "beginCaptures": { + "0": { + "name": "keyword.operator.quantifier.regexp" + } + }, + "end": "\"", + "endCaptures": { + "0": { + "name": "keyword.operator.quantifier.regexp" + } + }, + "name": "string.quoted.double.angelscript", + "patterns": [ + { + "include": "#string_escaped_char" + }, + { + "match": "{{", + "name": "string.quoted.double.angelscript" + }, + { + "match": "}}", + "name": "string.quoted.double.angelscript" + }, + { + "begin": "{", + "beginCaptures": { + "0": { + "name": "keyword.formatexpression.angelscript" + } + }, + "patterns": [ + { + "include": "source.angelscript" + } + ], + "name": "meta.embedded.expression.angelscript", + "end": "=?\\s*(:(.?[=<>^])?[0-9dxXbconeEfFgG=,+-\\.^%#\\s]*)?(}|(?=\")|(?=\n))", + "endCaptures": { + "0": { + "name": "keyword.formatexpression.angelscript" + } + } + } + ] + }, + { + "include": "#comments" + }, + { + "include": "#numbers" + }, + { + "include": "#operators" + }, + { + "include": "#strings" + } + ], + "repository": { + "comments": { + "patterns": [ + { + "name": "comment.block.angelscript", + "begin": "(\\/\\*)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.comment.begin.angelscript" + } + }, + "end": "(\\*\\/)", + "endCaptures": { + "1": { + "name": "punctuation.definition.comment.end.angelscript" + } + } + }, + { + "name": "comment.line.double-slash.angelscript", + "begin": "(\\/\\/)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.comment.angelscript" + } + }, + "end": "(?=\\n)", + "patterns": [ + {} + ] + } + ] + }, + "numbers": { + "match": "(?>=|\\|=", + "name": "keyword.operator.assignment.compound.bitwise.angelscript" + }, + { + "match": "<<|>>", + "name": "keyword.operator.bitwise.shift.angelscript" + }, + { + "match": "!=|<=|>=|==|<|>", + "name": "keyword.operator.comparison.angelscript" + }, + { + "match": "&&|!|\\|\\|", + "name": "keyword.operator.logical.angelscript" + }, + { + "match": "&|\\||\\^|~", + "name": "keyword.operator.angelscript" + }, + { + "match": "=", + "name": "keyword.operator.assignment.angelscript" + }, + { + "match": "%|\\*|/|-|\\+", + "name": "keyword.operator.angelscript" + }, + { + "begin": "(\\?)", + "beginCaptures": { + "1": { + "name": "keyword.operator.ternary.angelscript" + } + }, + "end": "(:)", + "endCaptures": { + "1": { + "name": "keyword.operator.ternary.angelscript" + } + }, + "patterns": [ + { + "include": "$base" + } + ] + } + ] + }, + "macro_parens": { + "begin": "\\(", + "end": "\\)", + "patterns": [ + { + "include": "#strings" + }, + { + "include": "#numbers" + } + ] + } + } +} \ No newline at end of file diff --git a/package.json b/package.json index 91b1d3ca..51fefd2d 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,19 @@ "description": "Traces the communication between VS Code and the language server." } } - } + }, + "grammars": [ + { + "language": "angelscript", + "scopeName": "source.angelscript", + "path": "./angelscript.tmLanguage.json" + }, + { + "language": "angelscript-predefined", + "scopeName": "source.angelscript", + "path": "./angelscript.tmLanguage.json" + } + ] }, "scripts": { "vscode:prepublish": "npm run compile", @@ -162,4 +174,4 @@ "ts-node": "^10.9.2", "typescript": "^5.3.3" } -} +} \ No newline at end of file