From 2b8f8df1afc2ae019c809b0f633dfd5c905944c1 Mon Sep 17 00:00:00 2001 From: Nikita Revenco <154856872+NikitaRevenco@users.noreply.github.com> Date: Sun, 5 Jan 2025 16:54:45 +0000 Subject: [PATCH] feat: correct Swift highlights (#12409) - Adds injections for the `comment` language - Correct highlight of the `nil` value. Same highlight as `null` in javascript, java and others - Recognize `<` and `>` as punctuation, used in generics (same color as the syntax used in other languages) - `protocol` function methods are recognized - When accessing object properties, like `hello.world`, the `world` is properly recognized as being a member - Recognize the `\` as an operator --- runtime/queries/swift/highlights.scm | 9 +++++++-- runtime/queries/swift/injections.scm | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/runtime/queries/swift/highlights.scm b/runtime/queries/swift/highlights.scm index 42411d90..df05a643 100644 --- a/runtime/queries/swift/highlights.scm +++ b/runtime/queries/swift/highlights.scm @@ -4,7 +4,7 @@ ["\\(" ")"] @punctuation.special) ["." ";" ":" "," ] @punctuation.delimiter -["(" ")" "[" "]" "{" "}"] @punctuation.bracket +["(" ")" "[" "]" "{" "}" "<" ">"] @punctuation.bracket ; Identifiers (attribute) @variable @@ -24,6 +24,7 @@ ] @keyword (function_declaration (simple_identifier) @function.method) +(protocol_function_declaration (simple_identifier) @function.method) (init_declaration ["init" @constructor]) (deinit_declaration ["deinit" @constructor]) @@ -91,6 +92,9 @@ (#match? @type "^[A-Z]")) (call_expression (simple_identifier) @keyword (#eq? @keyword "defer")) ; defer { ... } +(navigation_suffix + (simple_identifier) @variable.other.member) + (try_operator) @operator (try_operator ["try" @keyword]) @@ -147,7 +151,7 @@ (integer_literal) @constant.numeric.integer (real_literal) @constant.numeric.float (boolean_literal) @constant.builtin.boolean -"nil" @variable.builtin +"nil" @constant.builtin "?" @type (type_annotation "!" @type) @@ -160,6 +164,7 @@ "?" "+" "-" + "\\" "*" "/" "%" diff --git a/runtime/queries/swift/injections.scm b/runtime/queries/swift/injections.scm index 0ac6cddf..fb78129a 100644 --- a/runtime/queries/swift/injections.scm +++ b/runtime/queries/swift/injections.scm @@ -4,3 +4,7 @@ ((regex_literal) @injection.content (#set! injection.language "regex")) + +((comment) @injection.content + (#set! injection.language "comment") + (#set! injection.include-children))