diff options
-rw-r--r-- | languages.toml | 2 | ||||
-rw-r--r-- | runtime/queries/swift/highlights.scm | 133 | ||||
-rw-r--r-- | runtime/queries/swift/locals.scm | 21 |
3 files changed, 79 insertions, 77 deletions
diff --git a/languages.toml b/languages.toml index 4b01869d..1bab3433 100644 --- a/languages.toml +++ b/languages.toml @@ -1234,7 +1234,7 @@ language-server = { command = "sourcekit-lsp" } [[grammar]] name = "swift" -source = { git = "https://github.com/Dispersia/tree-sitter-swift", rev = "e75240f89bb3bfd3396155859ae364e5c58d7377" } +source = { git = "https://github.com/alex-pinkus/tree-sitter-swift", rev = "77c6312c8438f4dbaa0350cec92b3d6dd3d74a66" } [[language]] name = "erb" diff --git a/runtime/queries/swift/highlights.scm b/runtime/queries/swift/highlights.scm index fe240e9d..5560010b 100644 --- a/runtime/queries/swift/highlights.scm +++ b/runtime/queries/swift/highlights.scm @@ -1,5 +1,10 @@ -[ "." ";" ":" "," ] @punctuation.delimiter -[ "\\(" "(" ")" "[" "]" "{" "}"] @punctuation.bracket ; TODO: "\\(" ")" in interpolations should be @punctuation.special +; Upstream: https://github.com/alex-pinkus/tree-sitter-swift/blob/8d2fd80e3322df51e3f70952e60d57f5d4077eb8/queries/highlights.scm + +(line_string_literal + ["\\(" ")"] @punctuation.special) + +["." ";" ":" "," ] @punctuation.delimiter +["(" ")" "[" "]" "{" "}"] @punctuation.bracket ; TODO: "\\(" ")" in interpolations should be @punctuation.special ; Identifiers (attribute) @variable @@ -18,7 +23,7 @@ ] @keyword (function_declaration (simple_identifier) @function.method) -(function_declaration ["init" @constructor]) +(function_declaration "init" @constructor) (throws) @keyword "async" @keyword (where_keyword) @keyword @@ -27,16 +32,21 @@ (type_parameter (type_identifier) @variable.parameter) (inheritance_constraint (identifier (simple_identifier) @variable.parameter)) (equality_constraint (identifier (simple_identifier) @variable.parameter)) -(non_binding_pattern bound_identifier: (simple_identifier)) @variable +(pattern bound_identifier: (simple_identifier)) @variable [ "typealias" "struct" "class" + "actor" "enum" "protocol" "extension" "indirect" + "nonisolated" + "override" + "convenience" + "required" "some" ] @keyword @@ -46,12 +56,12 @@ (modify_specifier) ] @keyword -(class_body (property_declaration (value_binding_pattern (non_binding_pattern (simple_identifier) @variable.other.member)))) -(protocol_property_declaration (value_binding_pattern (non_binding_pattern (simple_identifier) @variable.other.member))) +(class_body (property_declaration (pattern (simple_identifier) @variable.other.member))) +(protocol_property_declaration (pattern (simple_identifier) @variable.other.member)) -(import_declaration ["import" @keyword.control.import]) +(import_declaration "import" @keyword.control.import) -(enum_entry ["case" @keyword]) +(enum_entry "case" @keyword) ; Function calls (call_expression (simple_identifier) @function) ; foo() @@ -66,8 +76,8 @@ (diagnostic) @function.macro ; Statements -(for_statement ["for" @keyword.control.repeat]) -(for_statement ["in" @keyword.control.repeat]) +(for_statement "for" @keyword.control.repeat) +(for_statement "in" @keyword.control.repeat) (for_statement item: (simple_identifier) @variable) (else) @keyword (as_operator) @keyword @@ -75,15 +85,14 @@ ["while" "repeat" "continue" "break"] @keyword.control.repeat ["let" "var"] @keyword -(non_binding_pattern (simple_identifier) @variable) -(guard_statement ["guard" @keyword.control.conditional]) -(if_statement ["if" @keyword.control.conditional]) -(switch_statement ["switch" @keyword.control.conditional]) -(switch_entry ["case" @keyword]) -(switch_entry ["fallthrough" @keyword]) +(guard_statement "guard" @keyword.control.conditional) +(if_statement "if" @keyword.control.conditional) +(switch_statement "switch" @keyword.control.conditional) +(switch_entry "case" @keyword) +(switch_entry "fallthrough" @keyword) (switch_entry (default_keyword) @keyword) -"return" @keyword.control.return +"return" @keyword.return (ternary_expression ["?" ":"] @keyword.control.conditional) @@ -92,8 +101,8 @@ (statement_label) @label ; Comments -(comment) @comment.line -(multiline_comment) @comment.block +(comment) @comment +(multiline_comment) @comment ; String literals (line_str_text) @string @@ -101,58 +110,62 @@ (multi_line_str_text) @string (raw_str_part) @string (raw_str_end_part) @string -(raw_str_interpolation_start) @string.special +(raw_str_interpolation_start) @punctuation.special ["\"" "\"\"\""] @string ; Lambda literals -(lambda_literal ["in" @keyword.operator]) +(lambda_literal "in" @keyword.operator) ; Basic literals -(integer_literal) @constant.numeric.integer [ - (hex_literal) - (oct_literal) - (bin_literal) + (hex_literal) + (oct_literal) + (bin_literal) ] @constant.numeric +(integer_literal) @constant.numeric.integer (real_literal) @constant.numeric.float (boolean_literal) @constant.builtin.boolean "nil" @variable.builtin +"?" @type +(type_annotation "!" @type) + +(simple_identifier) @variable + ; Operators -(custom_operator) @operator [ - "try" - "try?" - "try!" - "!" - "+" - "-" - "*" - "/" - "%" - "=" - "+=" - "-=" - "*=" - "/=" - "<" - ">" - "<=" - ">=" - "++" - "--" - "&" - "~" - "%=" - "!=" - "!==" - "==" - "===" - "??" - - "->" - - "..<" - "..." + "try" + "try?" + "try!" + "!" + "+" + "-" + "*" + "/" + "%" + "=" + "+=" + "-=" + "*=" + "/=" + "<" + ">" + "<=" + ">=" + "++" + "--" + "&" + "~" + "%=" + "!=" + "!==" + "==" + "===" + "??" + + "->" + + "..<" + "..." + (custom_operator) ] @operator - diff --git a/runtime/queries/swift/locals.scm b/runtime/queries/swift/locals.scm index dfe1c83b..59cd4c00 100644 --- a/runtime/queries/swift/locals.scm +++ b/runtime/queries/swift/locals.scm @@ -1,18 +1,7 @@ -(import_declaration (identifier) @definition.import) -(function_declaration name: (simple_identifier) @definition.function) - -; Scopes [ - (statements) - (for_statement) - (while_statement) - (repeat_while_statement) - (do_statement) - (if_statement) - (guard_statement) - (switch_statement) - (property_declaration) (function_declaration) - (class_declaration) - (protocol_declaration) -] @scope +] @local.scope + +(parameter name: (simple_identifier) @local.definition) + +(simple_identifier) @local.reference |