pub const HIGHLIGHTS_QUERY: &str = "[ \".\" \";\" \":\" \",\" ] @punctuation.delimiter\n[ \"\\\\(\" \"(\" \")\" \"[\" \"]\" \"{\" \"}\"] @punctuation.bracket ; TODO: \"\\\\(\" \")\" in interpolations should be @punctuation.special\n\n; Identifiers\n(attribute) @variable\n(type_identifier) @type\n(self_expression) @variable.builtin\n(user_type (type_identifier) @variable.builtin (#eq? @variable.builtin \"Self\"))\n\n; Declarations\n\"func\" @keyword.function\n[\n (visibility_modifier)\n (member_modifier)\n (function_modifier)\n (property_modifier)\n (parameter_modifier)\n (inheritance_modifier)\n] @keyword\n\n(function_declaration (simple_identifier) @method)\n(init_declaration [\"init\" @constructor])\n(deinit_declaration [\"deinit\" @constructor])\n(throws) @keyword\n\"async\" @keyword\n\"await\" @keyword\n(where_keyword) @keyword\n(parameter external_name: (simple_identifier) @parameter)\n(parameter name: (simple_identifier) @parameter)\n(type_parameter (type_identifier) @parameter)\n(inheritance_constraint (identifier (simple_identifier) @parameter))\n(equality_constraint (identifier (simple_identifier) @parameter))\n(pattern bound_identifier: (simple_identifier)) @variable\n\n[\n \"typealias\"\n \"struct\"\n \"class\"\n \"actor\"\n \"enum\"\n \"protocol\"\n \"extension\"\n \"indirect\"\n \"nonisolated\"\n \"override\"\n \"convenience\"\n \"required\"\n \"mutating\"\n \"associatedtype\"\n \"package\"\n] @keyword\n\n(opaque_type [\"some\" @keyword])\n(existential_type [\"any\" @keyword])\n\n(precedence_group_declaration\n [\"precedencegroup\" @keyword]\n (simple_identifier) @type)\n(precedence_group_attribute\n (simple_identifier) @keyword\n [(simple_identifier) @type\n (boolean_literal) @boolean])\n\n[\n (getter_specifier)\n (setter_specifier)\n (modify_specifier)\n] @keyword\n\n(class_body (property_declaration (pattern (simple_identifier) @property)))\n(protocol_property_declaration (pattern (simple_identifier) @property))\n\n(import_declaration [\"import\" @include])\n\n(enum_entry [\"case\" @keyword])\n\n; Function calls\n(call_expression (simple_identifier) @function.call) ; foo()\n(call_expression ; foo.bar.baz(): highlight the baz()\n (navigation_expression\n (navigation_suffix (simple_identifier) @function.call)))\n((navigation_expression\n (simple_identifier) @type) ; SomeType.method(): highlight SomeType as a type\n (#match? @type \"^[A-Z]\"))\n(call_expression (simple_identifier) @keyword (#eq? @keyword \"defer\")) ; defer { ... }\n\n(try_operator) @operator\n(try_operator [\"try\" @keyword])\n\n(directive) @function.macro\n(diagnostic) @function.macro\n\n; Statements\n(for_statement [\"for\" @repeat])\n(for_statement [\"in\" @repeat])\n(for_statement (pattern) @variable)\n(else) @keyword\n(as_operator) @keyword\n\n[\"while\" \"repeat\" \"continue\" \"break\"] @repeat\n\n[\"let\" \"var\"] @keyword\n\n(guard_statement [\"guard\" @conditional])\n(if_statement [\"if\" @conditional])\n(switch_statement [\"switch\" @conditional])\n(switch_entry [\"case\" @keyword])\n(switch_entry [\"fallthrough\" @keyword])\n(switch_entry (default_keyword) @keyword)\n\"return\" @keyword.return\n(ternary_expression\n [\"?\" \":\"] @conditional)\n\n[\"do\" (throw_keyword) (catch_keyword)] @keyword\n\n(statement_label) @label\n\n; Comments\n[\n (comment)\n (multiline_comment)\n] @comment @spell\n\n; String literals\n(line_str_text) @string\n(str_escaped_char) @string\n(multi_line_str_text) @string\n(raw_str_part) @string\n(raw_str_end_part) @string\n(raw_str_interpolation_start) @punctuation.special\n[\"\\\"\" \"\\\"\\\"\\\"\"] @string\n\n; Lambda literals\n(lambda_literal [\"in\" @keyword.operator])\n\n; Basic literals\n[\n (integer_literal)\n (hex_literal)\n (oct_literal)\n (bin_literal)\n] @number\n(real_literal) @float\n(boolean_literal) @boolean\n\"nil\" @variable.builtin\n\n; Regex literals\n(regex_literal) @string.regex\n\n; Operators\n(custom_operator) @operator\n[\n \"!\"\n \"?\"\n \"+\"\n \"-\"\n \"*\"\n \"/\"\n \"%\"\n \"=\"\n \"+=\"\n \"-=\"\n \"*=\"\n \"/=\"\n \"<\"\n \">\"\n \"<=\"\n \">=\"\n \"++\"\n \"--\"\n \"&\"\n \"~\"\n \"%=\"\n \"!=\"\n \"!==\"\n \"==\"\n \"===\"\n \"??\"\n\n \"->\"\n\n \"..<\"\n \"...\"\n] @operator\n\n(value_parameter_pack [\"each\" @keyword])\n(value_pack_expansion [\"repeat\" @keyword])\n(type_parameter_pack [\"each\" @keyword])\n(type_pack_expansion [\"repeat\" @keyword])\n";