@@ -1,65 +1,104 @@
1−(storage_class_specifier) @keyword.storage
2−
3−"goto" @keyword
4−"register" @keyword
5−"break" @keyword
6−"case" @keyword
7−"continue" @keyword
8−"default" @keyword
9−"do" @keyword
10−"else" @keyword
11−"enum" @keyword
12−"extern" @keyword
13−"for" @keyword
14−"if" @keyword
15−"inline" @keyword
16−"return" @keyword
171"sizeof" @keyword
18−"struct" @keyword
19−"switch" @keyword
20−"typedef" @keyword
21−"union" @keyword
22−"volatile" @keyword
23−"while" @keyword
24−"const" @keyword
252
263[
27− "#define"
28− "#elif"
29− "#else"
30− "#endif"
31− "#if"
32− "#ifdef"
33− "#ifndef"
34− "#include"
35− (preproc_directive)
4+ "enum"
5+ "struct"
6+ "typedef"
7+ "union"
8+] @keyword.storage.type
9+
10+[
11+ "const"
12+ "extern"
13+ "inline"
14+ "register"
15+ "volatile"
16+ (storage_class_specifier)
17+] @keyword.storage.modifier
18+
19+[
20+ "goto"
21+ "break"
22+ "continue"
23+] @keyword.control
24+
25+[
26+ "do"
27+ "for"
28+ "while"
29+] @keyword.control.repeat
30+
31+[
32+ "if"
33+ "else"
34+ "switch"
35+ "case"
36+ "default"
37+] @keyword.control.conditional
38+
39+"return" @keyword.control.return
40+
41+[
42+ "defined"
43+ "#define"
44+ "#elif"
45+ "#else"
46+ "#endif"
47+ "#if"
48+ "#ifdef"
49+ "#ifndef"
50+ "#include"
51+ (preproc_directive)
3652] @keyword.directive
3753
38−"--" @operator
39−"-" @operator
40−"-=" @operator
41−"->" @operator
42−"=" @operator
43−"!=" @operator
44−"*" @operator
45−"&" @operator
46−"&&" @operator
47−"+" @operator
48−"++" @operator
49−"+=" @operator
50−"<" @operator
51−"==" @operator
52−">" @operator
53−"||" @operator
54−">=" @operator
55−"<=" @operator
56−
57−"." @punctuation.delimiter
58−";" @punctuation.delimiter
54+[
55+ "+"
56+ "-"
57+ "*"
58+ "/"
59+ "++"
60+ "--"
61+ "%"
62+ "=="
63+ "!="
64+ ">"
65+ "<"
66+ ">="
67+ "<="
68+ "&&"
69+ "||"
70+ "!"
71+ "&"
72+ "|"
73+ "^"
74+ "~"
75+ "<<"
76+ ">>"
77+ "="
78+ "+="
79+ "-="
80+ "*="
81+ "/="
82+ "%="
83+ "<<="
84+ ">>="
85+ "&="
86+ "^="
87+ "|="
88+ "?"
89+] @operator
90+
91+(conditional_expression ":" @operator)
92+
93+"..." @punctuation
94+
95+["," "." ":" ";" "->" "::"] @punctuation.delimiter
96+
97+["(" ")" "[" "]" "{" "}"] @punctuation.bracket
5998
6099[(true) (false)] @constant.builtin.boolean
61100
62−(enumerator) @type.enum.variant
101+(enumerator name: (identifier) @type.enum.variant)
63102
64103(string_literal) @string
65104(system_lib_string) @string
@@ -73,19 +112,28 @@
73112(call_expression
74113 function: (field_expression
75114 field: (field_identifier) @function))
115+(call_expression (argument_list (identifier) @variable))
76116(function_declarator
77− declarator: (identifier) @function)
117+ declarator: [(identifier) (field_identifier)] @function)
118+(parameter_declaration
119+ declarator: (identifier) @variable.parameter)
120+(parameter_declaration
121+ (pointer_declarator
122+ declarator: (identifier) @variable.parameter))
78123(preproc_function_def
79124 name: (identifier) @function.special)
80125
126+(attribute
127+ name: (identifier) @attribute)
128+
81129(field_identifier) @variable.other.member
82130(statement_identifier) @label
83131(type_identifier) @type
84−(primitive_type) @type
132+(primitive_type) @type.builtin
85133(sized_type_specifier) @type
86134
87135((identifier) @constant
88− (#match? @constant "^[A-Z][A-Z\\d_]*$"))
136+ (#match? @constant "^[A-Z][A-Z\\d_]*$"))
89137
90138(identifier) @variable
91139