%YAML 1.2 --- # http://www.sublimetext.com/docs/3/syntax.html name: Zig file_extensions: - zig scope: source.zig contexts: main: - include: dummy_main block: - match: '([a-zA-Z_][\w.]*|@\".+\")?\s*(\{)' captures: 1: storage.type.zig 2: punctuation.section.braces.begin.zig push: - match: '(\})' captures: 1: punctuation.section.braces.end.zig pop: true - include: dummy_main character_escapes: - match: \\n scope: constant.character.escape.newline.zig - match: \\r scope: constant.character.escape.carrigereturn.zig - match: \\t scope: constant.character.escape.tabulator.zig - match: \\\\ scope: constant.character.escape.backslash.zig - match: \\' scope: constant.character.escape.single-quote.zig - match: \\\" scope: constant.character.escape.double-quote.zig - match: '\\x[a-fA-F\d]{2}' scope: constant.character.escape.hexidecimal.zig - match: '\\u\{[a-fA-F\d]{1,6}\}' scope: constant.character.escape.hexidecimal.zig comments: - match: /// push: - meta_scope: comment.line.documentation.zig - match: $\n? pop: true - match: '//[^/]\s*TODO' push: - meta_scope: comment.line.todo.zig - match: $\n? pop: true - match: "//[^/]*" push: - meta_scope: comment.line.zig - match: $\n? pop: true constants: - match: \b(null|undefined|true|false)\b scope: constant.language.zig - match: '\b(?])' scope: constant.language.enum field_decl: - match: '([a-zA-Z_]\w*|@\".+\")\s*(:)\s*' captures: 1: variable.other.member.zig 2: punctuation.separator.zig push: - match: '([a-zA-Z_][\w.]*|@\".+\")?\s*(?:(,)|(=)|$)' captures: 1: storage.type.zig 2: punctuation.separator.zig 3: keyword.operator.assignment.zig pop: true - include: dummy_main function_call: - match: '(?|<)=?) scope: keyword.operator.logical.zig - match: \b(and|or)\b scope: keyword.operator.word.zig - match: '((?:(?:\+|-|\*)\%?|/|%|<<|>>|&|\|(?=[^\|])|\^)?=)' scope: keyword.operator.assignment.zig - match: ((?:\+|-|\*)\%?|/(?!/)|%) scope: keyword.operator.arithmetic.zig - match: '(<<|>>|&(?=[a-zA-Z_]|@\")|\|(?=[^\|])|\^|~)' scope: keyword.operator.bitwise.zig - match: '(\+\+|\*\*|->|\.\?|\.\*|&(?=[a-zA-Z_]|@\")|\?|\|\||\.{2,3})' scope: keyword.operator.other.zig param_list: - match: '([a-zA-Z_]\w*|@\".+\")\s*(:)\s*' captures: 1: variable.parameter.zig 2: punctuation.separator.zig push: - match: '([a-zA-Z_][\w.]*|@\".+\")?\s*(?:(,)|(\)))' captures: 1: storage.type.zig 2: punctuation.separator.zig 3: punctuation.section.parens.end.zig pop: true - include: dummy_main - match: '([a-zA-Z_][\w.]*|@\".+\")' scope: storage.type.zig punctuation: - match: "," scope: punctuation.separator.zig - match: ; scope: punctuation.terminator.zig - match: (\() scope: punctuation.section.parens.begin.zig - match: (\)) scope: punctuation.section.parens.end.zig storage: - match: \b(bool|void|noreturn|type|anyerror|anytype)\b scope: storage.type.zig - match: '\b(?)?\s*(?:([a-zA-Z_][\w.]*|@\".+\")\b(?!\s*\())?' captures: 1: storage.type.zig 2: keyword.operator.zig 3: storage.type.zig - match: \bfn\b scope: storage.type.function.zig - match: \btest\b scope: storage.type.test.zig - match: \bstruct\b scope: storage.type.struct.zig - match: \benum\b scope: storage.type.enum.zig - match: \bunion\b scope: storage.type.union.zig - match: \berror\b scope: storage.type.error.zig storage_modifier: - match: \b(const|var|extern|packed|export|pub|noalias|inline|noinline|comptime|volatile|align|linksection|threadlocal|allowzero)\b scope: storage.modifier.zig strings: - match: \' push: - meta_scope: string.quoted.single.zig - match: \' pop: true - include: character_escapes - match: '\\[^\''][^\'']*?' scope: invalid.illegal.character.zig - match: c?\" push: - meta_scope: string.quoted.double.zig - match: \" pop: true - include: character_escapes - match: '\\[^\''][^\'']*?' scope: invalid.illegal.character.zig - match: c?\\\\ push: - meta_scope: string.quoted.other.zig - match: $\n? pop: true support: - match: '(?