123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- ; Lower priority to prefer @variable.parameter when identifier appears in parameter_declaration.
- ((identifier) @variable
- (#set! priority 95))
- (preproc_def
- (preproc_arg) @variable)
- [
- "default"
- "goto"
- "asm"
- "__asm__"
- ] @keyword
- [
- "enum"
- "struct"
- "union"
- "typedef"
- ] @keyword.type
- [
- "sizeof"
- "offsetof"
- ] @keyword.operator
- (alignof_expression
- .
- _ @keyword.operator)
- "return" @keyword.return
- [
- "while"
- "for"
- "do"
- "continue"
- "break"
- ] @keyword.repeat
- [
- "if"
- "else"
- "case"
- "switch"
- ] @keyword.conditional
- [
- "#if"
- "#ifdef"
- "#ifndef"
- "#else"
- "#elif"
- "#endif"
- "#elifdef"
- "#elifndef"
- (preproc_directive)
- ] @keyword.directive
- "#define" @keyword.directive.define
- "#include" @keyword.import
- [
- ";"
- ":"
- ","
- "::"
- ] @punctuation.delimiter
- "..." @punctuation.special
- [
- "("
- ")"
- "["
- "]"
- "{"
- "}"
- ] @punctuation.bracket
- [
- "="
- "-"
- "*"
- "/"
- "+"
- "%"
- "~"
- "|"
- "&"
- "^"
- "<<"
- ">>"
- "->"
- "."
- "<"
- "<="
- ">="
- ">"
- "=="
- "!="
- "!"
- "&&"
- "||"
- "-="
- "+="
- "*="
- "/="
- "%="
- "|="
- "&="
- "^="
- ">>="
- "<<="
- "--"
- "++"
- ] @operator
- ; Make sure the comma operator is given a highlight group after the comma
- ; punctuator so the operator is highlighted properly.
- (comma_expression
- "," @operator)
- [
- (true)
- (false)
- ] @boolean
- (conditional_expression
- [
- "?"
- ":"
- ] @keyword.conditional.ternary)
- (string_literal) @string
- (system_lib_string) @string
- (escape_sequence) @string.escape
- (null) @constant.builtin
- (number_literal) @number
- (char_literal) @character
- (preproc_defined) @function.macro
- ((field_expression
- (field_identifier) @property) @_parent
- (#not-has-parent? @_parent template_method function_declarator call_expression))
- (field_designator) @property
- ((field_identifier) @property
- (#has-ancestor? @property field_declaration)
- (#not-has-ancestor? @property function_declarator))
- (statement_identifier) @label
- (declaration
- type: (type_identifier) @_type
- declarator: (identifier) @label
- (#eq? @_type "__label__"))
- [
- (type_identifier)
- (type_descriptor)
- ] @type
- (storage_class_specifier) @keyword.modifier
- [
- (type_qualifier)
- (gnu_asm_qualifier)
- "__extension__"
- ] @keyword.modifier
- (linkage_specification
- "extern" @keyword.modifier)
- (type_definition
- declarator: (type_identifier) @type.definition)
- (primitive_type) @type.builtin
- (sized_type_specifier
- _ @type.builtin
- type: _?)
- ((identifier) @constant
- (#lua-match? @constant "^[A-Z][A-Z0-9_]+$"))
- (preproc_def
- (preproc_arg) @constant
- (#lua-match? @constant "^[A-Z][A-Z0-9_]+$"))
- (enumerator
- name: (identifier) @constant)
- (case_statement
- value: (identifier) @constant)
- ((identifier) @constant.builtin
- ; format-ignore
- (#any-of? @constant.builtin
- "stderr" "stdin" "stdout"
- "__FILE__" "__LINE__" "__DATE__" "__TIME__"
- "__STDC__" "__STDC_VERSION__" "__STDC_HOSTED__"
- "__cplusplus" "__OBJC__" "__ASSEMBLER__"
- "__BASE_FILE__" "__FILE_NAME__" "__INCLUDE_LEVEL__"
- "__TIMESTAMP__" "__clang__" "__clang_major__"
- "__clang_minor__" "__clang_patchlevel__"
- "__clang_version__" "__clang_literal_encoding__"
- "__clang_wide_literal_encoding__"
- "__FUNCTION__" "__func__" "__PRETTY_FUNCTION__"
- "__VA_ARGS__" "__VA_OPT__"))
- (preproc_def
- (preproc_arg) @constant.builtin
- ; format-ignore
- (#any-of? @constant.builtin
- "stderr" "stdin" "stdout"
- "__FILE__" "__LINE__" "__DATE__" "__TIME__"
- "__STDC__" "__STDC_VERSION__" "__STDC_HOSTED__"
- "__cplusplus" "__OBJC__" "__ASSEMBLER__"
- "__BASE_FILE__" "__FILE_NAME__" "__INCLUDE_LEVEL__"
- "__TIMESTAMP__" "__clang__" "__clang_major__"
- "__clang_minor__" "__clang_patchlevel__"
- "__clang_version__" "__clang_literal_encoding__"
- "__clang_wide_literal_encoding__"
- "__FUNCTION__" "__func__" "__PRETTY_FUNCTION__"
- "__VA_ARGS__" "__VA_OPT__"))
- (attribute_specifier
- (argument_list
- (identifier) @variable.builtin))
- (attribute_specifier
- (argument_list
- (call_expression
- function: (identifier) @variable.builtin)))
- ((call_expression
- function: (identifier) @function.builtin)
- (#lua-match? @function.builtin "^__builtin_"))
- ((call_expression
- function: (identifier) @function.builtin)
- (#has-ancestor? @function.builtin attribute_specifier))
- ; Preproc def / undef
- (preproc_def
- name: (_) @constant.macro)
- (preproc_call
- directive: (preproc_directive) @_u
- argument: (_) @constant.macro
- (#eq? @_u "#undef"))
- (preproc_ifdef
- name: (identifier) @constant.macro)
- (preproc_elifdef
- name: (identifier) @constant.macro)
- (preproc_defined
- (identifier) @constant.macro)
- (call_expression
- function: (identifier) @function.call)
- (call_expression
- function: (field_expression
- field: (field_identifier) @function.call))
- (function_declarator
- declarator: (identifier) @function)
- (function_declarator
- declarator: (parenthesized_declarator
- (pointer_declarator
- declarator: (field_identifier) @function)))
- (preproc_function_def
- name: (identifier) @function.macro)
- (comment) @comment @spell
- ((comment) @comment.documentation
- (#lua-match? @comment.documentation "^/[*][*][^*].*[*]/$"))
- ; Parameters
- (parameter_declaration
- declarator: (identifier) @variable.parameter)
- (parameter_declaration
- declarator: (array_declarator) @variable.parameter)
- (parameter_declaration
- declarator: (pointer_declarator) @variable.parameter)
- ; K&R functions
- ; To enable support for K&R functions,
- ; add the following lines to your own query config and uncomment them.
- ; They are commented out as they'll conflict with C++
- ; Note that you'll need to have `; extends` at the top of your query file.
- ;
- ; (parameter_list (identifier) @variable.parameter)
- ;
- ; (function_definition
- ; declarator: _
- ; (declaration
- ; declarator: (identifier) @variable.parameter))
- ;
- ; (function_definition
- ; declarator: _
- ; (declaration
- ; declarator: (array_declarator) @variable.parameter))
- ;
- ; (function_definition
- ; declarator: _
- ; (declaration
- ; declarator: (pointer_declarator) @variable.parameter))
- (preproc_params
- (identifier) @variable.parameter)
- [
- "__attribute__"
- "__declspec"
- "__based"
- "__cdecl"
- "__clrcall"
- "__stdcall"
- "__fastcall"
- "__thiscall"
- "__vectorcall"
- (ms_pointer_modifier)
- (attribute_declaration)
- ] @attribute
|