Open wellcomez opened 2 years ago
(identifier) @variable (self) @variable.builtin (super) @variable.builtin (strong) @variable.builtin (nonatomic) @variable.builtin (weak) @variable.builtin
[ "in" "@interface" "@protocol" "@property" "@end" "@implementation" "const" "default" "enum" "extern" "inline" "static" "struct" "typedef" "union" "volatile" "goto" "register" ] @keyword
"sizeof" @keyword.operator "return" @keyword.return
[ "while" "for" "do" "continue" "break" ] @repeat
[ "if" "else" "case" "switch" ] @conditional
"#define" @constant.macro [ "#if" "#ifdef" "#ifndef" "#else" "#elif" "#endif" (preproc_directive) ] @keyword
"#include" @include "#import" @include
[ "="
"-" "*" "/" "+" "%"
"~" "|" "&" "^" "<<" ">>"
"->"
"<" "<=" ">=" ">" "==" "!="
"!" "&&" "||"
"-=" "+=" "*=" "/=" "%=" "|=" "&=" "^=" ">>=" "<<=" "--" "++" "@" ] @operator
[ (true) (false) ] @boolean
[ "." ";" ":" "," ] @punctuation.delimiter
"..." @punctuation.special
(conditional_expression [ "?" ":" ] @conditional)
[ "(" ")" "[" "]" "{" "}"] @punctuation.bracket
(string_literal) @string (system_lib_string) @string (escape_sequence) @string.escape
(null) @constant.builtin (number_literal) @number (char_literal) @character
[ (preproc_arg) (preproc_defined) ] @function.macro
(((field_expression (field_identifier) @property)) @_parent (#not-has-parent? @_parent template_method function_declarator call_expression))
(((field_identifier) @property) (#has-ancestor? @property field_declaration) (#not-has-ancestor? @property function_declarator))
(statement_identifier) @label
[ (type_identifier) (primitive_type) (sized_type_specifier) (type_descriptor) ] @type
(declaration (type_qualifier) @type) (cast_expression type: (type_descriptor) @type) (sizeof_expression value: (parenthesized_expression (identifier) @type))
((identifier) @constant (#match? @constant "^[A-Z][A-Z0-9_]+$"))
;; Preproc def / undef (preprocdef name: () @constant) (preproc_call directive: (preproc_directive) @u argument: () @constant (#eq? @_u "#undef"))
(call_expression function: (identifier) @function) (call_expression function: (field_expression field: (field_identifier) @function)) (function_declarator declarator: (identifier) @function) (preproc_function_def name: (identifier) @function.macro)
(comment) @comment
;; Parameters (parameter_declaration declarator: (identifier) @parameter)
(parameter_declaration declarator: (pointer_declarator) @parameter)
(preproc_params (identifier)) @parameter
[ "attribute" "cdecl" "clrcall" "stdcall" "fastcall" "thiscall" "vectorcall" "_unaligned" "unaligned" "declspec" ] @attribute
(ERROR) @error
As objc is supper-set of c, we just need append some extendable syntax.
(identifier) @variable (self) @variable.builtin (super) @variable.builtin (strong) @variable.builtin (nonatomic) @variable.builtin (weak) @variable.builtin
[ "in" "@interface" "@protocol" "@property" "@end" "@implementation" "const" "default" "enum" "extern" "inline" "static" "struct" "typedef" "union" "volatile" "goto" "register" ] @keyword
"sizeof" @keyword.operator "return" @keyword.return
[ "while" "for" "do" "continue" "break" ] @repeat
[ "if" "else" "case" "switch" ] @conditional
"#define" @constant.macro [ "#if" "#ifdef" "#ifndef" "#else" "#elif" "#endif" (preproc_directive) ] @keyword
"#include" @include "#import" @include
[ "="
"-" "*" "/" "+" "%"
"~" "|" "&" "^" "<<" ">>"
"->"
"<" "<=" ">=" ">" "==" "!="
"!" "&&" "||"
"-=" "+=" "*=" "/=" "%=" "|=" "&=" "^=" ">>=" "<<=" "--" "++" "@" ] @operator
[ (true) (false) ] @boolean
[ "." ";" ":" "," ] @punctuation.delimiter
"..." @punctuation.special
(conditional_expression [ "?" ":" ] @conditional)
[ "(" ")" "[" "]" "{" "}"] @punctuation.bracket
(string_literal) @string (system_lib_string) @string (escape_sequence) @string.escape
(null) @constant.builtin (number_literal) @number (char_literal) @character
[ (preproc_arg) (preproc_defined) ] @function.macro
(((field_expression (field_identifier) @property)) @_parent (#not-has-parent? @_parent template_method function_declarator call_expression))
(((field_identifier) @property) (#has-ancestor? @property field_declaration) (#not-has-ancestor? @property function_declarator))
(statement_identifier) @label
[ (type_identifier) (primitive_type) (sized_type_specifier) (type_descriptor) ] @type
(declaration (type_qualifier) @type) (cast_expression type: (type_descriptor) @type) (sizeof_expression value: (parenthesized_expression (identifier) @type))
((identifier) @constant (#match? @constant "^[A-Z][A-Z0-9_]+$"))
;; Preproc def / undef (preprocdef name: () @constant) (preproc_call directive: (preproc_directive) @u argument: () @constant (#eq? @_u "#undef"))
(call_expression function: (identifier) @function) (call_expression function: (field_expression field: (field_identifier) @function)) (function_declarator declarator: (identifier) @function) (preproc_function_def name: (identifier) @function.macro)
(comment) @comment
;; Parameters (parameter_declaration declarator: (identifier) @parameter)
(parameter_declaration declarator: (pointer_declarator) @parameter)
(preproc_params (identifier)) @parameter
[ "attribute" "cdecl" "clrcall" "stdcall" "fastcall" "thiscall" "vectorcall" "_unaligned" "unaligned" "declspec" ] @attribute
(ERROR) @error