aboutsummaryrefslogtreecommitdiff
path: root/runtime/queries/c/highlights.scm
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries/c/highlights.scm')
-rw-r--r--runtime/queries/c/highlights.scm167
1 files changed, 108 insertions, 59 deletions
diff --git a/runtime/queries/c/highlights.scm b/runtime/queries/c/highlights.scm
index 647df05d..8122216d 100644
--- a/runtime/queries/c/highlights.scm
+++ b/runtime/queries/c/highlights.scm
@@ -1,71 +1,111 @@
-(storage_class_specifier) @keyword.storage
-
-"goto" @keyword
-"register" @keyword
-"break" @keyword
-"case" @keyword
-"continue" @keyword
-"default" @keyword
-"do" @keyword
-"else" @keyword
-"enum" @keyword
-"extern" @keyword
-"for" @keyword
-"if" @keyword
-"inline" @keyword
-"return" @keyword
"sizeof" @keyword
-"struct" @keyword
-"switch" @keyword
-"typedef" @keyword
-"union" @keyword
-"volatile" @keyword
-"while" @keyword
-"const" @keyword
[
- "#define"
- "#elif"
- "#else"
- "#endif"
- "#if"
- "#ifdef"
- "#ifndef"
- "#include"
- (preproc_directive)
+ "enum"
+ "struct"
+ "typedef"
+ "union"
+] @keyword.storage.type
+
+[
+ "extern"
+ "register"
+ (type_qualifier)
+ (storage_class_specifier)
+] @keyword.storage.modifier
+
+[
+ "goto"
+ "break"
+ "continue"
+] @keyword.control
+
+[
+ "do"
+ "for"
+ "while"
+] @keyword.control.repeat
+
+[
+ "if"
+ "else"
+ "switch"
+ "case"
+ "default"
+] @keyword.control.conditional
+
+"return" @keyword.control.return
+
+[
+ "defined"
+ "#define"
+ "#elif"
+ "#else"
+ "#endif"
+ "#if"
+ "#ifdef"
+ "#ifndef"
+ "#include"
+ (preproc_directive)
] @keyword.directive
-"--" @operator
-"-" @operator
-"-=" @operator
-"->" @operator
-"=" @operator
-"!=" @operator
-"*" @operator
-"&" @operator
-"&&" @operator
-"+" @operator
-"++" @operator
-"+=" @operator
-"<" @operator
-"==" @operator
-">" @operator
-"||" @operator
-">=" @operator
-"<=" @operator
-
-"." @punctuation.delimiter
-";" @punctuation.delimiter
+(pointer_declarator "*" @type.builtin)
+(abstract_pointer_declarator "*" @type.builtin)
+
+[
+ "+"
+ "-"
+ "*"
+ "/"
+ "++"
+ "--"
+ "%"
+ "=="
+ "!="
+ ">"
+ "<"
+ ">="
+ "<="
+ "&&"
+ "||"
+ "!"
+ "&"
+ "|"
+ "^"
+ "~"
+ "<<"
+ ">>"
+ "="
+ "+="
+ "-="
+ "*="
+ "/="
+ "%="
+ "<<="
+ ">>="
+ "&="
+ "^="
+ "|="
+ "?"
+] @operator
+
+(conditional_expression ":" @operator)
+
+"..." @punctuation
+
+["," "." ":" ";" "->" "::"] @punctuation.delimiter
+
+["(" ")" "[" "]" "{" "}"] @punctuation.bracket
[(true) (false)] @constant.builtin.boolean
-(enumerator) @type.enum.variant
+(enumerator name: (identifier) @type.enum.variant)
(string_literal) @string
(system_lib_string) @string
(null) @constant
-(number_literal) @constant.numeric.integer
+(number_literal) @constant.numeric
(char_literal) @constant.character
(call_expression
@@ -73,19 +113,28 @@
(call_expression
function: (field_expression
field: (field_identifier) @function))
+(call_expression (argument_list (identifier) @variable))
(function_declarator
- declarator: (identifier) @function)
+ declarator: [(identifier) (field_identifier)] @function)
+(parameter_declaration
+ declarator: (identifier) @variable.parameter)
+(parameter_declaration
+ (pointer_declarator
+ declarator: (identifier) @variable.parameter))
(preproc_function_def
name: (identifier) @function.special)
+(attribute
+ name: (identifier) @attribute)
+
(field_identifier) @variable.other.member
(statement_identifier) @label
(type_identifier) @type
-(primitive_type) @type
-(sized_type_specifier) @type
+(primitive_type) @type.builtin
+(sized_type_specifier) @type.builtin
((identifier) @constant
- (#match? @constant "^[A-Z][A-Z\\d_]*$"))
+ (#match? @constant "^[A-Z][A-Z\\d_]*$"))
(identifier) @variable