tree-sitter-objc/queries/highlights.scm

368 lines
6.2 KiB
Scheme

[
(comment)
(pragma)
] @comment
[
(self)
(super)
] @variable.builtin
[
(getter)
(setter)
(nonnull)
(nullable)
(null_resettable)
(unsafe_unretained)
(null_unspecified)
(direct)
(readwrite)
(readonly)
(strong)
(weak)
(copy)
(assign)
(retain)
(atomic)
(nonatomic)
(class)
(NS_NONATOMIC_IOSONLY)
(DISPATCH_QUEUE_REFERENCE_TYPE)
] @keyword
[
"@interface"
"@protocol"
"@property"
"@end"
"@implementation"
"@compatibility_alias"
"@autoreleasepool"
"@synchronized"
"@class"
"@synthesize"
"@dynamic"
"@defs"
"@try"
"@catch"
"@finally"
"@throw"
"@selector"
"@encode"
"@available"
"__builtin_available"
(private)
(public)
(protected)
(package)
(optional)
(required)
"NS_ENUM"
"NS_ERROR_ENUM"
"NS_OPTIONS"
(type_qualifier)
(storage_class_specifier)
(attribute_specifier)
(class_interface_attribute_sepcifier)
(method_variadic_arguments_attribute_specifier)
"NS_NOESCAPE"
"const"
"default"
"enum"
"extern"
"inline"
"static"
"struct"
"typedef"
"typeof"
"__typeof"
"__typeof__"
"_Atomic"
"union"
"volatile"
"goto"
"register"
"__covariant"
"__contravariant"
"__GENERICS"
] @keyword
"sizeof" @keyword.operator
"return" @keyword.return
[
"while"
"for"
"do"
"continue"
"break"
] @keyword.repeat
"#define" @constant.macro
[
"#if"
"#ifdef"
"#ifndef"
"#else"
"#elif"
"#endif"
(preproc_directive)
] @keyword
"#include" @include
"#import" @include
"@import" @include
[
"="
"-"
"*"
"/"
"+"
"%"
"~"
"|"
"&"
"^"
"<<"
">>"
"->"
"<"
"<="
">="
">"
"=="
"!="
"!"
"&&"
"||"
"-="
"+="
"*="
"/="
"%="
"|="
"&="
"^="
">>="
"<<="
"--"
"++"
"@"
] @operator
[
"if"
"else"
"case"
"switch"
] @keyword.conditional
(conditional_expression [ "?" ":" ] @keyword.conditional)
[
(true)
(false)
(YES)
(NO)
] @keyword.boolean
[ "." ";" ":" "," ] @punctuation.delimiter
"..." @punctuation.special
[ "(" ")" "[" "]" "{" "}"] @punctuation.bracket
[
(string_literal)
(string_expression)
(system_lib_string)
(module_string)
] @string
(escape_sequence) @string.escape
(null) @constant.builtin
(nil) @constant.builtin
(number_literal) @number
(number_expression) @number
(char_literal) @character
[
(preproc_arg)
(preproc_defined)
] @function.macro
declarator: (identifier) @property
(cast_expression value: (identifier) @property)
(((field_expression
(field_identifier) @property)) @_parent
(#not-has-parent? @_parent function_declarator call_expression))
(((field_identifier) @property)
(#has-ancestor? @property field_declaration)
(#not-has-ancestor? @property function_declarator))
[
(type_identifier)
(primitive_type)
(sized_type_specifier)
(type_descriptor)
(generics_type_reference)
] @type
[
(id)
(Class)
(Method)
(IMP)
(SEL)
(BOOL)
(instancetype)
(auto)
] @type.builtin
(declaration (type_qualifier) @type)
(cast_expression type: (type_descriptor) @type)
(sizeof_expression value: (parenthesized_expression (identifier) @type))
(class_interface name: (identifier) @type.class)
(category_interface name: (identifier) @type.class)
(category_interface category: (identifier) @type.category)
(superclass_reference name: (identifier) @type.class)
(parameterized_class_type_arguments) @type.class
(class_implementation name: (identifier) @type.class)
(category_implementation name: (identifier) @type.class)
(compatibility_alias_declaration (identifier) @type.class)
(category_implementation category: (identifier) @type.category)
(class_forward_declaration name: (identifier) @type.class)
(protocol_forward_declaration name: (identifier) @type.protocol)
(protocol_declaration name: (identifier) @type.protocol)
(protocol_qualifiers (protocol_identifier) @type.protocol)
(protocol_expression (identifier) @type.protocol)
;; Preproc def / undef
(preproc_def
name: (_) @constant)
(preproc_call
directive: (preproc_directive) @_u
argument: (_) @constant
(#eq? @_u "#undef"))
(call_expression
function: (identifier) @function)
(field_expression
field: (field_identifier) @function)
(function_declarator
declarator: (identifier) @function)
(preproc_function_def
name: (identifier) @function.macro)
(selector_expression
name: (identifier) @function)
(method_declaration
selector: (identifier) @function)
(method_declaration
(keyword_selector
(keyword_declarator
keyword: (identifier) @function)))
(method_declaration
(keyword_selector
(keyword_declarator
name: (identifier) @function)))
(message_expression
receiver: (field_expression
field: (field_identifier) @variable))
(method_definition
selector: (identifier) @function)
(method_definition
(keyword_selector
(keyword_declarator
keyword: (identifier) @function)))
(message_expression
selector: (identifier) @function)
(method_definition
(keyword_selector
(keyword_declarator
name: (identifier) @property)))
(message_expression
selector: (keyword_argument_list
(keyword_argument
keyword: (identifier) @function)))
(message_expression
selector: (keyword_argument_list
(keyword_argument
argument: (identifier) @property)))
(unary_expression argument: (identifier) @function)
(va_arg_expression) @function
(va_arg_expression va_list: (identifier) @property)
(enumerator name: (identifier) @property)
;; Parameters
(parameter_declaration
declarator: (identifier) @variable.parameter)
(parameter_declaration
declarator: (pointer_declarator) @variable.parameter)
(parameter_declaration
declarator: (pointer_declarator
declarator: (identifier) @variable.parameter))
(for_in_statement
loop: (identifier) @variable.parameter)
(dictionary_expression
key:(_expression) @property)
(dictionary_expression
value: (_expression) @property)
(array_expression
(identifier) @property)
(argument_list
(identifier) @property)
(expression_statement
(identifier) @property)
(_expression (identifier) @property)
[
"__attribute"
"__attribute__"
"__cdecl"
"__clrcall"
"__stdcall"
"__fastcall"
"__thiscall"
"__vectorcall"
"_unaligned"
"__unaligned"
"__declspec"
] @attribute
(attribute_specifier) @attribute
((identifier) @constant
(#match? @constant "^[A-Z][A-Z0-9_$]+$"))
(ERROR) @error