diff options
Diffstat (limited to 'runtime/queries/objc/highlights.scm')
| -rw-r--r-- | runtime/queries/objc/highlights.scm | 268 |
1 files changed, 268 insertions, 0 deletions
diff --git a/runtime/queries/objc/highlights.scm b/runtime/queries/objc/highlights.scm new file mode 100644 index 000000000..0f412404f --- /dev/null +++ b/runtime/queries/objc/highlights.scm @@ -0,0 +1,268 @@ +; inherits: c + +; Preprocs +(preproc_undef + name: (_) @constant) @keyword.directive + +; Includes +(module_import + "@import" @keyword.import + path: (identifier) @module) + +((preproc_include + _ @keyword.import + path: (_)) + (#any-of? @keyword.import "#include" "#import")) + +; Type Qualifiers +[ + "@optional" + "@required" + "__covariant" + "__contravariant" + (visibility_specification) +] @keyword.modifier + +; Storageclasses +[ + "@autoreleasepool" + "@synthesize" + "@dynamic" + "volatile" + (protocol_qualifier) +] @keyword.modifier + +; Keywords +[ + "@protocol" + "@interface" + "@implementation" + "@compatibility_alias" + "@property" + "@selector" + "@defs" + "availability" + "@end" +] @keyword + +(class_declaration + "@" @keyword.type + "class" @keyword.type) ; I hate Obj-C for allowing "@ class" :) + +(method_definition + [ + "+" + "-" + ] @keyword.function) + +(method_declaration + [ + "+" + "-" + ] @keyword.function) + +[ + "__typeof__" + "__typeof" + "typeof" + "in" +] @keyword.operator + +[ + "@synchronized" + "oneway" +] @keyword.coroutine + +; Exceptions +[ + "@try" + "__try" + "@catch" + "__catch" + "@finally" + "__finally" + "@throw" +] @keyword.exception + +; Variables +((identifier) @variable.builtin + (#any-of? @variable.builtin "self" "super")) + +; Functions & Methods +[ + "objc_bridge_related" + "@available" + "__builtin_available" + "va_arg" + "asm" +] @function.builtin + +(method_definition + (identifier) @function.method) + +(method_declaration + (identifier) @function.method) + +(method_identifier + (identifier)? @function.method + ":" @function.method + (identifier)? @function.method) + +(message_expression + method: (identifier) @function.method.call) + +; Constructors +((message_expression + method: (identifier) @constructor) + (#eq? @constructor "init")) + +; Attributes +(availability_attribute_specifier + [ + "CF_FORMAT_FUNCTION" + "NS_AVAILABLE" + "__IOS_AVAILABLE" + "NS_AVAILABLE_IOS" + "API_AVAILABLE" + "API_UNAVAILABLE" + "API_DEPRECATED" + "NS_ENUM_AVAILABLE_IOS" + "NS_DEPRECATED_IOS" + "NS_ENUM_DEPRECATED_IOS" + "NS_FORMAT_FUNCTION" + "DEPRECATED_MSG_ATTRIBUTE" + "__deprecated_msg" + "__deprecated_enum_msg" + "NS_SWIFT_NAME" + "NS_SWIFT_UNAVAILABLE" + "NS_EXTENSION_UNAVAILABLE_IOS" + "NS_CLASS_AVAILABLE_IOS" + "NS_CLASS_DEPRECATED_IOS" + "__OSX_AVAILABLE_STARTING" + "NS_ROOT_CLASS" + "NS_UNAVAILABLE" + "NS_REQUIRES_NIL_TERMINATION" + "CF_RETURNS_RETAINED" + "CF_RETURNS_NOT_RETAINED" + "DEPRECATED_ATTRIBUTE" + "UI_APPEARANCE_SELECTOR" + "UNAVAILABLE_ATTRIBUTE" + ]) @attribute + +; Macros +(type_qualifier + [ + "_Complex" + "_Nonnull" + "_Nullable" + "_Nullable_result" + "_Null_unspecified" + "__autoreleasing" + "__block" + "__bridge" + "__bridge_retained" + "__bridge_transfer" + "__complex" + "__kindof" + "__nonnull" + "__nullable" + "__ptrauth_objc_class_ro" + "__ptrauth_objc_isa_pointer" + "__ptrauth_objc_super_pointer" + "__strong" + "__thread" + "__unsafe_unretained" + "__unused" + "__weak" + ]) @function.macro + +[ + "__real" + "__imag" +] @function.macro + +((call_expression + function: (identifier) @function.macro) + (#eq? @function.macro "testassert")) + +; Types +(class_declaration + (identifier) @type) + +(class_interface + "@interface" + . + (identifier) @type + superclass: _? @type + category: _? @module) + +(class_implementation + "@implementation" + . + (identifier) @type + superclass: _? @type + category: _? @module) + +(protocol_forward_declaration + (identifier) @type) ; @interface :( + +(protocol_reference_list + (identifier) @type) ; ^ + +[ + "BOOL" + "IMP" + "SEL" + "Class" + "id" +] @type.builtin + +; Constants +(property_attribute + (identifier) @constant + "="?) + +[ + "__asm" + "__asm__" +] @constant.macro + +; Properties +(property_implementation + "@synthesize" + (identifier) @variable.member) + +((identifier) @variable.member + (#has-ancestor? @variable.member struct_declaration)) + +; Parameters +(method_parameter + ":" @function.method + (identifier) @variable.parameter) + +(method_parameter + declarator: (identifier) @variable.parameter) + +(parameter_declaration + declarator: (function_declarator + declarator: (parenthesized_declarator + (block_pointer_declarator + declarator: (identifier) @variable.parameter)))) + +"..." @variable.parameter.builtin + +; Operators +"^" @operator + +; Literals +(platform) @string.special + +(version_number) @string.special + +; Punctuation +"@" @punctuation.special + +[ + "<" + ">" +] @punctuation.bracket |
