diff --git a/Syntaxes/Zig.YAML-tmLanguage b/Syntaxes/Zig.YAML-tmLanguage index dab69ef..fd6a6a0 100644 --- a/Syntaxes/Zig.YAML-tmLanguage +++ b/Syntaxes/Zig.YAML-tmLanguage @@ -59,7 +59,7 @@ repository: '2': name: punctuation.separator.zig - end: '([a-zA-Z_][a-zA-Z0-9_.]*|@\".+\")(?:(,)|\s*(=)\s*|(?=\n|\r))' + end: '([a-zA-Z_][a-zA-Z0-9_.]*|@\".+\")\s*(?:(,)|(=)|(?=\n|\r))' endCaptures: '1': name: storage.type.zig diff --git a/Syntaxes/Zig.tmLanguage b/Syntaxes/Zig.tmLanguage index 7a79ade..0c36fd1 100644 --- a/Syntaxes/Zig.tmLanguage +++ b/Syntaxes/Zig.tmLanguage @@ -261,7 +261,7 @@ end - ([a-zA-Z_][a-zA-Z0-9_.]*|@\".+\")(?:(,)|\s*(=)\s*|(?=\n|\r)) + ([a-zA-Z_][a-zA-Z0-9_.]*|@\".+\")\s*(?:(,)|(=)|(?=\n|\r)) endCaptures 1 diff --git a/Syntaxes/Zig.tmLanguage.json b/Syntaxes/Zig.tmLanguage.json index 2ae7a8e..2ba8e3e 100644 --- a/Syntaxes/Zig.tmLanguage.json +++ b/Syntaxes/Zig.tmLanguage.json @@ -1,93 +1,77 @@ { + "scopeName": "source.zig", + "fileTypes": [ + "zig" + ], + "name": "Zig", "repository": { - "operators": { + "keywords": { "patterns": [ { - "match": "\\b!\\b", - "name": "keyword.operator.zig" - }, - { - "match": "(==|(?:!|>|<)=?)", - "name": "keyword.operator.logical.zig" - }, - { - "match": "\\b(and|or)\\b", - "name": "keyword.operator.word.zig" - }, - { - "match": "((?:(?:\\+|-|\\*)\\%?|/|%|<<|>>|&|\\|(?=[^\\|])|\\^)?=)", - "name": "keyword.operator.assignment.zig" - }, - { - "match": "((?:\\+|-|\\*)\\%?|/(?!/)|%)", - "name": "keyword.operator.arithmetic.zig" + "name": "keyword.control.zig", + "match": "\\b(while|for|break|return|continue|asm|defer|errdefer|unreachable)\\b" }, { - "match": "(<<|>>|&(?=[a-zA-Z_]|@\\\")|\\|(?=[^\\|])|\\^|~)", - "name": "keyword.operator.bitwise.zig" + "name": "keyword.control.async.zig", + "match": "\\b(noasync|async|await|suspend|resume|cancel)\\b" }, { - "match": "(\\+\\+|\\*\\*|->|\\.\\?|\\.\\*|&(?=[a-zA-Z_]|@\\\")|\\?|\\|\\||\\.{2,3})", - "name": "keyword.operator.other.zig" - } - ] - }, - "punctuation": { - "patterns": [ - { - "match": ",", - "name": "punctuation.separator.zig" - }, - { - "match": ";", - "name": "punctuation.terminator.zig" + "name": "keyword.control.conditional.zig", + "match": "\\b(if|else|switch|try|catch|orelse)\\b" }, { - "match": "(\\()", - "name": "punctuation.section.parens.begin.zig" + "name": "keyword.control.import.zig", + "match": "(?)?\\s*(?:([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")\\b(?!\\s*\\())?" }, { - "match": "\\\\\\\"", - "name": "constant.character.escape.double-quote.zig" + "name": "storage.type.function.zig", + "match": "\\bfn\\b" }, { - "match": "\\\\x[a-fA-F0-9]{2}", - "name": "constant.character.escape.hexidecimal.zig" + "name": "storage.type.test.zig", + "match": "\\btest\\b" }, { - "match": "\\\\u\\{[a-fA-F0-9]{1,6}\\}", - "name": "constant.character.escape.hexidecimal.zig" - } - ] - }, - "param_list": { - "end": "([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")?\\s*(?:(,)|(\\)))", - "begin": "([a-zA-Z_][a-zA-Z0-9_]*|@\\\".+\\\")\\s*(:)\\s*", - "beginCaptures": { - "1": { - "name": "variable.parameter.zig" - }, - "2": { - "name": "punctuation.separator.zig" - } - }, - "endCaptures": { - "1": { - "name": "storage.type.zig" + "name": "storage.type.struct.zig", + "match": "\\bstruct\\b" }, - "3": { - "name": "punctuation.section.parens.end.zig" + { + "name": "storage.type.enum.zig", + "match": "\\benum\\b" }, - "2": { - "name": "punctuation.separator.zig" - } - }, - "patterns": [ { - "include": "#main" + "name": "storage.type.union.zig", + "match": "\\bunion\\b" }, { - "match": "([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")", - "name": "storage.type.zig" + "name": "storage.type.error.zig", + "match": "\\berror\\b" } ] }, - "support": { - "match": "(?|<)=?)" }, { - "match": "\\b(?>|&|\\|(?=[^\\|])|\\^)?=)" }, { - "match": "\\b(?>|&(?=[a-zA-Z_]|@\\\")|\\|(?=[^\\|])|\\^|~)" }, { - "match": "(?|\\.\\?|\\.\\*|&(?=[a-zA-Z_]|@\\\")|\\?|\\|\\||\\.{2,3})" } ] }, - "storage_modifier": { - "match": "\\b(const|var|extern|packed|export|pub|noalias|inline|comptime|nakedcc|stdcallcc|volatile|align|linksection|threadlocal|allowzero)\\b", - "name": "storage.modifier.zig" - }, - "function_type": { - "endCaptures": { - "1": { - "name": "storage.type.zig" + "comments": { + "patterns": [ + { + "begin": "///", + "end": "$\\n?", + "name": "comment.line.documentation.zig" }, - "3": { - "name": "storage.type.zig" + { + "begin": "//[^/]\\s*TODO", + "end": "$\\n?", + "name": "comment.line.todo.zig" }, - "2": { - "name": "keyword.operator.zig" + { + "begin": "//[^/]*", + "end": "$\\n?", + "name": "comment.line.zig" } - }, + ] + }, + "function_type": { "patterns": [ { "include": "#label" @@ -363,15 +300,27 @@ "include": "#param_list" }, { - "match": "([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")", - "name": "storage.type.zig" + "name": "storage.type.zig", + "match": "([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")" }, { "include": "#main" } ], - "end": "(?<=\\)|\\})\\s*([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")?\\s*(!)?\\s*([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")", "begin": "\\b(fn)\\s*(\\()", + "end": "(?<=\\)|\\})\\s*([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")?\\s*(!)?\\s*([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")", + "endCaptures": { + "1": { + "name": "storage.type.zig" + }, + "3": { + "name": "storage.type.zig" + }, + "2": { + "name": "keyword.operator.zig" + } + }, + "contentName": "meta.function.parameters.zig", "beginCaptures": { "1": { "name": "storage.type.function.zig" @@ -379,201 +328,252 @@ "2": { "name": "punctuation.section.parens.begin.zig" } - }, - "contentName": "meta.function.parameters.zig" + } }, - "storage": { + "main": { "patterns": [ { - "match": "\\b(bool|void|noreturn|type|anyerror)\\b", - "name": "storage.type.zig" + "include": "#label" }, { - "match": "\\b(?)?\\s*(?:([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")\\b(?!\\s*\\())?", - "captures": { - "1": { - "name": "storage.type.zig" - }, - "3": { - "name": "storage.type.zig" - }, - "2": { - "name": "keyword.operator.zig" - } - } + "include": "#storage_modifier" }, { - "match": "\\bfn\\b", - "name": "storage.type.function.zig" + "include": "#container_decl" }, { - "match": "\\btest\\b", - "name": "storage.type.test.zig" + "include": "#constants" }, { - "match": "\\bstruct\\b", - "name": "storage.type.struct.zig" + "include": "#comments" }, { - "match": "\\benum\\b", - "name": "storage.type.enum.zig" + "include": "#strings" }, { - "match": "\\bunion\\b", - "name": "storage.type.union.zig" + "include": "#storage" }, { - "match": "\\berror\\b", - "name": "storage.type.error.zig" - } - ] - }, - "field_decl": { - "end": "([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")(?:(,)|\\s*(=)\\s*|(?=\\n|\\r))", - "begin": "([a-zA-Z_][a-zA-Z0-9_]*|@\\\".+\\\")\\s*(:)\\s*", - "beginCaptures": { - "1": { - "name": "variable.other.member.zig" + "include": "#keywords" }, - "2": { - "name": "punctuation.separator.zig" - } - }, - "endCaptures": { - "1": { - "name": "storage.type.zig" + { + "include": "#operators" }, - "3": { - "name": "keyword.operator.assignment.zig" + { + "include": "#support" }, - "2": { - "name": "punctuation.separator.zig" - } - }, - "patterns": [ { - "include": "#main" + "include": "#field_decl" + }, + { + "include": "#block" + }, + { + "include": "#function_def" + }, + { + "include": "#function_call" + }, + { + "include": "#enum_literal" } ] }, - "function_def": { - "end": "(?<=\\)[^\\)])\\s*([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")?(!)?\\s*(?:([a-zA-Z_][a-zA-Z0-9_.]*|@\\\".+\\\")\\b(?!\\s*\\())?", - "begin": "(?<=fn)\\s+([a-zA-Z_][a-zA-Z0-9_]*|@\\\".+\\\")(\\()", - "beginCaptures": { - "1": { - "name": "entity.name.function" + "storage_modifier": { + "name": "storage.modifier.zig", + "match": "\\b(const|var|extern|packed|export|pub|noalias|inline|comptime|nakedcc|stdcallcc|volatile|align|linksection|threadlocal|allowzero)\\b" + }, + "constants": { + "patterns": [ + { + "name": "constant.language.zig", + "match": "\\b(null|undefined|true|false)\\b" }, - "2": { - "name": "punctuation.section.parens.begin.zig" - } - }, - "endCaptures": { - "1": { - "name": "storage.type.zig" + { + "name": "constant.numeric.integer.zig", + "match": "\\b(?