pub const HIGHLIGHTS_QUERY: &str = ";; ----------------------------------------------------------------------------\n;; Literals and comments\n\n[\n (line_comment)\n (block_comment)\n] @comment @spell\n\n((line_comment) @comment.documentation @spell\n (#match? @comment.documentation \"^///\"))\n\n(const\n [\n (_) @constant\n (unit) @constant.builtin\n ])\n\n(primary_constr_args (_) @variable.parameter)\n\n(class_as_reference\n (_) @variable.parameter.builtin)\n\n\n((argument_patterns (long_identifier (identifier) @character.special))\n (#match? @character.special \"^\\_.*\"))\n\n;; ----------------------------------------------------------------------------\n;; Punctuation\n\n(wildcard_pattern) @character.special\n\n(type_name type_name: (_) @type.definition)\n\n[\n (_type)\n (atomic_type)\n] @type\n\n(member_signature\n .\n (identifier) @function.member\n (curried_spec\n (arguments_spec\n \"*\"* @operator\n (argument_spec\n (argument_name_spec\n \"?\"? @character.special\n name: (_) @variable.parameter)))))\n\n(union_type_case) @constant\n\n(rules\n (rule\n pattern: (_) @constant\n block: (_)))\n\n(identifier_pattern\n .\n (_) @constant\n .\n (_) @variable)\n\n(optional_pattern\n \"?\" @character.special)\n\n(fsi_directive_decl . (string) @module)\n\n(import_decl . (_) @module)\n(named_module\n name: (_) @module)\n(namespace\n name: (_) @module)\n(module_defn\n .\n (_) @module)\n\n(ce_expression\n .\n (_) @constant.macro)\n\n(field_initializer\n field: (_) @property)\n\n(record_fields\n (record_field\n .\n (identifier) @property))\n\n(dot_expression\n base: (_)? @module)\n\n(value_declaration_left . (_) @variable)\n\n(function_declaration_left\n . (_) @function\n . (_)* @variable_parameter)\n\n(member_defn\n (method_or_prop_defn\n [\n (property_or_ident) @function\n (property_or_ident\n instance: (identifier) @variable.parameter.builtin\n method: (identifier) @function.method)\n ]\n args: (_)* @variable.parameter))\n\n(application_expression\n .\n (_) @function.call\n .\n (_) @variable)\n\n((infix_expression\n .\n (_)\n .\n (infix_op) @operator\n .\n (_) @function.call\n )\n (#eq? @operator \"|>\")\n )\n\n((infix_expression\n .\n (_) @function.call\n .\n (infix_op) @operator\n .\n (_)\n )\n (#eq? @operator \"<|\")\n )\n\n[\n (xint)\n (int)\n (int16)\n (uint16)\n (int32)\n (uint32)\n (int64)\n (uint64)\n (nativeint)\n (unativeint)\n] @number\n\n[\n (ieee32)\n (ieee64)\n (float)\n (decimal)\n] @number.float\n\n(bool) @boolean\n\n([\n (string)\n (triple_quoted_string)\n (verbatim_string)\n (char)\n] @spell @string)\n\n(compiler_directive_decl) @keyword.directive\n\n(preproc_line\n \"#line\" @keyword.directive)\n\n(attribute) @attribute\n\n[\n \"(\"\n \")\"\n \"{\"\n \"}\"\n \"[\"\n \"]\"\n \"[|\"\n \"|]\"\n \"{|\"\n \"|}\"\n] @punctuation.bracket\n\n[\n \"[<\"\n \">]\"\n] @punctuation.special\n\n(format_string_eval\n [\n \"{\"\n \"}\"\n ] @punctuation.special)\n\n[\n \",\"\n \";\"\n] @punctuation.delimiter\n\n[\n \"|\"\n \"=\"\n \">\"\n \"<\"\n \"-\"\n \"~\"\n \"->\"\n \"<-\"\n \"&&\"\n \"||\"\n \":>\"\n \":?>\"\n (infix_op)\n (prefix_op)\n] @operator\n\n[\n \"if\"\n \"then\"\n \"else\"\n \"elif\"\n \"when\"\n \"match\"\n \"match!\"\n] @keyword.conditional\n\n[\n \"and\"\n \"or\"\n \"not\"\n \"upcast\"\n \"downcast\"\n] @keyword.operator\n\n[\n \"return\"\n \"return!\"\n \"yield\"\n \"yield!\"\n] @keyword.return\n\n[\n \"for\"\n \"while\"\n \"downto\"\n \"to\"\n] @keyword.repeat\n\n\n[\n \"open\"\n \"#r\"\n \"#load\"\n] @keyword.import\n\n[\n \"abstract\"\n \"delegate\"\n \"static\"\n \"inline\"\n \"mutable\"\n \"override\"\n \"rec\"\n \"global\"\n (access_modifier)\n] @keyword.modifier\n\n[\n \"let\"\n \"let!\"\n \"use\"\n \"use!\"\n \"member\"\n] @keyword.function\n\n[\n \"enum\"\n \"type\"\n \"inherit\"\n \"interface\"\n \"and\"\n \"class\"\n \"struct\"\n] @keyword.type\n\n((identifier) @keyword.exception\n (#any-of? @keyword.exception \"failwith\" \"failwithf\" \"raise\" \"reraise\"))\n\n[\n \"as\"\n \"assert\"\n \"begin\"\n \"end\"\n \"done\"\n \"default\"\n \"in\"\n \"do\"\n \"do!\"\n \"event\"\n \"field\"\n \"fun\"\n \"function\"\n \"get\"\n \"set\"\n \"lazy\"\n \"new\"\n \"of\"\n \"param\"\n \"property\"\n \"struct\"\n \"val\"\n \"module\"\n \"namespace\"\n \"with\"\n] @keyword\n\n[\n \"null\"\n] @constant.builtin\n\n(match_expression \"with\" @keyword.conditional)\n\n(try_expression\n [\n \"try\"\n \"with\"\n \"finally\"\n ] @keyword.exception)\n\n((_type\n (long_identifier (identifier) @type.builtin))\n (#any-of? @type.builtin \"bool\" \"byte\" \"sbyte\" \"int16\" \"uint16\" \"int\" \"uint\" \"int64\" \"uint64\" \"nativeint\" \"unativeint\" \"decimal\" \"float\" \"double\" \"float32\" \"single\" \"char\" \"string\" \"unit\"))\n\n(preproc_if\n [\n \"#if\" @keyword.directive\n \"#endif\" @keyword.directive\n ]\n condition: (_)? @keyword.directive)\n\n(preproc_else\n \"#else\" @keyword.directive)\n\n((long_identifier\n (identifier)+ @module\n .\n (identifier)))\n\n(op_identifier) @operator\n\n((identifier) @module.builtin\n (#any-of? @module.builtin \"Array\" \"Async\" \"Directory\" \"File\" \"List\" \"Option\" \"Path\" \"Map\" \"Set\" \"Lazy\" \"Seq\" \"Task\" \"String\" \"Result\" ))\n\n((value_declaration\n (attributes\n (attribute\n (_type\n (long_identifier\n (identifier) @attribute_name))))\n (function_or_value_defn\n (value_declaration_left\n .\n (_) @constant)))\n (#eq? @attribute_name \"Literal\"))\n";