diff options
| author | Amaan Qureshi <amaanq12@gmail.com> | 2023-05-18 19:37:56 -0400 |
|---|---|---|
| committer | Amaan Qureshi <amaanq12@gmail.com> | 2023-05-19 12:24:38 -0400 |
| commit | dad1b7cd6606ffaa5c283ba73d707b4741a5f445 (patch) | |
| tree | debe4dae05004405330beceb8bf89b176a1d838f /queries | |
| parent | Update parsers: dart (diff) | |
| download | nvim-treesitter-dad1b7cd6606ffaa5c283ba73d707b4741a5f445.tar nvim-treesitter-dad1b7cd6606ffaa5c283ba73d707b4741a5f445.tar.gz nvim-treesitter-dad1b7cd6606ffaa5c283ba73d707b4741a5f445.tar.bz2 nvim-treesitter-dad1b7cd6606ffaa5c283ba73d707b4741a5f445.tar.lz nvim-treesitter-dad1b7cd6606ffaa5c283ba73d707b4741a5f445.tar.xz nvim-treesitter-dad1b7cd6606ffaa5c283ba73d707b4741a5f445.tar.zst nvim-treesitter-dad1b7cd6606ffaa5c283ba73d707b4741a5f445.zip | |
feat: add Objective-C
Diffstat (limited to 'queries')
| -rw-r--r-- | queries/objc/folds.scm | 20 | ||||
| -rw-r--r-- | queries/objc/highlights.scm | 216 | ||||
| -rw-r--r-- | queries/objc/indents.scm | 1 | ||||
| -rw-r--r-- | queries/objc/injections.scm | 10 | ||||
| -rw-r--r-- | queries/objc/locals.scm | 1 |
5 files changed, 248 insertions, 0 deletions
diff --git a/queries/objc/folds.scm b/queries/objc/folds.scm new file mode 100644 index 000000000..43ffc78e9 --- /dev/null +++ b/queries/objc/folds.scm @@ -0,0 +1,20 @@ +; inherits: c + +[ + (class_declaration) + (class_interface) + (class_implementation) + (protocol_declaration) + (property_declaration) + (method_declaration) + (struct_declaration) + (struct_declarator) + (try_statement) + (catch_statement) + (finally_statement) + (throw_statement) + (block_literal) + (ms_asm_block) + (dictionary_literal) + (array_literal) +] @fold diff --git a/queries/objc/highlights.scm b/queries/objc/highlights.scm new file mode 100644 index 000000000..c636895f6 --- /dev/null +++ b/queries/objc/highlights.scm @@ -0,0 +1,216 @@ +; inherits: c + +; Preprocs + +(preproc_undef + name: (_) @constant) @preproc + +; Includes + +(module_import "@import" @include path: (identifier) @namespace) + +((preproc_include + _ @include path: (_)) + (#any-of? @include "#include" "#import")) + +; Type Qualifiers + +[ + "@optional" + "@required" + "__covariant" + "__contravariant" + (visibility_specification) +] @type.qualifier + +; Storageclasses + +[ + "@autoreleasepool" + "@synthesize" + "@dynamic" + "volatile" + (protocol_qualifier) +] @storageclass + +; Keywords + +[ + "@protocol" + "@interface" + "@implementation" + "@compatibility_alias" + "@property" + "@selector" + "@defs" + "availability" + "@end" +] @keyword + +(class_declaration "@" @keyword "class" @keyword) ; 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" +] @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) @method) + +(method_declaration (identifier) @method) + +(method_identifier (identifier)? @method ":" @method (identifier)? @method) + +(message_expression method: (identifier) @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.builtin + +[ "__real" "__imag" ] @function.macro.builtin + +((call_expression function: (identifier) @function.macro) + (#eq? @function.macro "testassert")) + +; Types + +(class_declaration (identifier) @type) + +(class_interface "@interface" . (identifier) @type superclass: _? @type category: _? @namespace) + +(class_implementation "@implementation" . (identifier) @type superclass: _? @type category: _? @namespace) + +(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) @property) + +((identifier) @property + (#has-ancestor? @property struct_declaration)) + +; Parameters + +(method_parameter ":" @method (identifier) @parameter) + +(method_parameter declarator: (identifier) @parameter) + +(parameter_declaration + declarator: (function_declarator + declarator: (parenthesized_declarator + (block_pointer_declarator + declarator: (identifier) @parameter)))) + +"..." @parameter.builtin + +; Operators + +[ + "^" +] @operator + +; Literals + +(platform) @string.special + +(version_number) @text.uri @number + +; Punctuation + +"@" @punctuation.special + +[ "<" ">" ] @punctuation.bracket diff --git a/queries/objc/indents.scm b/queries/objc/indents.scm new file mode 100644 index 000000000..a5a5208ca --- /dev/null +++ b/queries/objc/indents.scm @@ -0,0 +1 @@ +; inherits: c diff --git a/queries/objc/injections.scm b/queries/objc/injections.scm new file mode 100644 index 000000000..359420d10 --- /dev/null +++ b/queries/objc/injections.scm @@ -0,0 +1,10 @@ +; inherits: c + +; TODO(amaanq): uncomment/add when I add asm support +; (ms_asm_block "{" _ @asm "}") +; +; ((asm_specifier (string_literal) @asm) +; (#offset! @asm 0 1 0 -1)) +; +; ((asm_statement (string_literal) @asm) +; (#offset! @asm 0 1 0 -1)) diff --git a/queries/objc/locals.scm b/queries/objc/locals.scm new file mode 100644 index 000000000..a5a5208ca --- /dev/null +++ b/queries/objc/locals.scm @@ -0,0 +1 @@ +; inherits: c |
