diff --git a/book/src/guides/adding_languages.md b/book/src/guides/adding_languages.md
index cb7e0eb6..f9824215 100644
--- a/book/src/guides/adding_languages.md
+++ b/book/src/guides/adding_languages.md
@@ -38,12 +38,6 @@ below.
    for more information on writing queries.
 4. A list of highlight captures can be found [on the themes page](https://docs.helix-editor.com/themes.html#scopes).
 
-> 💡 In Helix, the first matching query takes precedence when evaluating
-> queries, which is different from other editors such as Neovim where the last
-> matching query supersedes the ones before it. See
-> [this issue](https://github.com/helix-editor/helix/pull/1170#issuecomment-997294090)
-> for an example.
-
 ## Common issues
 
 - If you encounter errors when running Helix after switching branches, you may
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs
index 852a9752..3f1853b0 100644
--- a/helix-core/src/syntax.rs
+++ b/helix-core/src/syntax.rs
@@ -2502,15 +2502,17 @@ impl Iterator for HighlightIter<'_> {
                 }
             }
 
-            // Once a highlighting pattern is found for the current node, skip over
-            // any later highlighting patterns that also match this node. Captures
+            // Use the last capture found for the current node, skipping over any
+            // highlight patterns that also match this node. Captures
             // for a given node are ordered by pattern index, so these subsequent
             // captures are guaranteed to be for highlighting, not injections or
             // local variables.
             while let Some((next_match, next_capture_index)) = captures.peek() {
                 let next_capture = next_match.captures[*next_capture_index];
                 if next_capture.node == capture.node {
-                    captures.next();
+                    match_.remove();
+                    capture = next_capture;
+                    match_ = captures.next().unwrap().0;
                 } else {
                     break;
                 }
diff --git a/languages.toml b/languages.toml
index 1b3b3c67..f5cab197 100644
--- a/languages.toml
+++ b/languages.toml
@@ -1198,7 +1198,7 @@ indent = { tab-width = 4, unit = "    " }
 
 [[grammar]]
 name = "julia"
-source = { git = "https://github.com/tree-sitter/tree-sitter-julia", rev = "8fb38abff74652c4faddbf04d2d5bbbc6b4bae25" }
+source = { git = "https://github.com/tree-sitter/tree-sitter-julia", rev = "e84f10db8eeb8b9807786bfc658808edaa1b4fa2" }
 
 [[language]]
 name = "java"
@@ -2008,7 +2008,7 @@ indent = { tab-width = 4, unit = "    " }
 
 [[grammar]]
 name = "ron"
-source = { git = "https://github.com/zee-editor/tree-sitter-ron", rev = "7762d709a0f7c1f9e269d0125a2e8a7a69006146" }
+source = { git = "https://github.com/tree-sitter-grammars/tree-sitter-ron", rev = "78938553b93075e638035f624973083451b29055" }
 
 [[language]]
 name = "robot"
@@ -2499,7 +2499,7 @@ formatter = { command = "cue", args = ["fmt", "-"] }
 
 [[grammar]]
 name = "cue"
-source = { git = "https://github.com/eonpatapon/tree-sitter-cue", rev = "61843e3beebf19417e4fede4e8be4df1084317ad" }
+source = { git = "https://github.com/eonpatapon/tree-sitter-cue", rev = "8a5f273bfa281c66354da562f2307c2d394b6c81" }
 
 [[language]]
 name = "slint"
diff --git a/runtime/queries/_jsx/highlights.scm b/runtime/queries/_jsx/highlights.scm
index 7061b581..70a03091 100644
--- a/runtime/queries/_jsx/highlights.scm
+++ b/runtime/queries/_jsx/highlights.scm
@@ -1,32 +1,3 @@
-; Opening elements
-; ----------------
-
-(jsx_opening_element ((identifier) @constructor
- (#match? @constructor "^[A-Z]")))
-
-(jsx_opening_element (identifier) @tag)
-
-; Closing elements
-; ----------------
-
-(jsx_closing_element ((identifier) @constructor
- (#match? @constructor "^[A-Z]")))
-
-(jsx_closing_element (identifier) @tag)
-
-; Self-closing elements
-; ---------------------
-
-(jsx_self_closing_element ((identifier) @constructor
- (#match? @constructor "^[A-Z]")))
-
-(jsx_self_closing_element (identifier) @tag)
-
-; Attributes
-; ----------
-
-(jsx_attribute (property_identifier) @attribute)
-
 ; Punctuation
 ; -----------
 
@@ -41,3 +12,32 @@
 
 ; <Component />
 (jsx_self_closing_element ["<" "/>"] @punctuation.bracket)
+
+; Attributes
+; ----------
+
+(jsx_attribute (property_identifier) @attribute)
+
+; Opening elements
+; ----------------
+
+(jsx_opening_element (identifier) @tag)
+
+(jsx_opening_element ((identifier) @constructor
+ (#match? @constructor "^[A-Z]")))
+
+; Closing elements
+; ----------------
+
+(jsx_closing_element (identifier) @tag)
+
+(jsx_closing_element ((identifier) @constructor
+ (#match? @constructor "^[A-Z]")))
+
+; Self-closing elements
+; ---------------------
+
+(jsx_self_closing_element (identifier) @tag)
+
+(jsx_self_closing_element ((identifier) @constructor
+ (#match? @constructor "^[A-Z]")))
diff --git a/runtime/queries/_typescript/highlights.scm b/runtime/queries/_typescript/highlights.scm
index 45c98ba8..a5bfd9ed 100644
--- a/runtime/queries/_typescript/highlights.scm
+++ b/runtime/queries/_typescript/highlights.scm
@@ -107,9 +107,9 @@
 ; Types
 ; -----
 
+(type_identifier) @type
 (type_parameter
   name: (type_identifier) @type.parameter)
-(type_identifier) @type
 (predefined_type) @type.builtin
 
 ; Type arguments and parameters
@@ -133,10 +133,3 @@
 [
   (template_literal_type)
 ] @string
-
-; Tokens
-; ------
-
-(template_type
-  "${" @punctuation.special
-  "}" @punctuation.special) @embedded
diff --git a/runtime/queries/awk/highlights.scm b/runtime/queries/awk/highlights.scm
index f8c903f2..d378f831 100644
--- a/runtime/queries/awk/highlights.scm
+++ b/runtime/queries/awk/highlights.scm
@@ -107,14 +107,15 @@
 (number) @constant.numeric
 (string) @string
 
-(func_call name: (identifier) @function)
-(func_def name: (identifier) @function)
-
-(field_ref (_) @variable)
 [
   (identifier)
   (field_ref)
 ] @variable
 
+(func_call name: (identifier) @function)
+(func_def name: (identifier) @function)
+
+(field_ref (_) @variable)
+
 (ns_qualified_name "::" @operator)
 (ns_qualified_name (namespace) @namespace)
diff --git a/runtime/queries/bash/highlights.scm b/runtime/queries/bash/highlights.scm
index c3e504f3..19d3cc9f 100644
--- a/runtime/queries/bash/highlights.scm
+++ b/runtime/queries/bash/highlights.scm
@@ -48,6 +48,9 @@
 
 (comment) @comment
 
+((word) @constant.builtin.boolean
+  (#any-of? @constant.builtin.boolean "true" "false"))
+
 (function_definition name: (word) @function)
 
 (file_descriptor) @constant.numeric.integer
@@ -56,7 +59,7 @@
   (command_substitution)
   (process_substitution)
   (expansion)
-]@embedded
+] @embedded
 
 [
   "$"
diff --git a/runtime/queries/bass/highlights.scm b/runtime/queries/bass/highlights.scm
index f8b70fc1..e0d67350 100644
--- a/runtime/queries/bass/highlights.scm
+++ b/runtime/queries/bass/highlights.scm
@@ -38,6 +38,17 @@
 (subpath (slash) @function)
 
 
+;;; generic highlighting for all forms
+
+; first symbol in a list form is a combiner call
+(list . (symbol) @function)
+
+; highlight symbols as vars only when they're clearly vars
+(cons (symbol) @variable)
+(scope (symbol) @variable)
+(path form: (symbol) @variable)
+(symbind form: (symbol) @variable)
+
 
 ;;; specific highlighting for builtins & special forms
 
@@ -88,14 +99,3 @@
   .
   (_)
   (symbol) @function)
-
-;;; generic highlighting for all forms
-
-; first symbol in a list form is a combiner call
-(list . (symbol) @function)
-
-; highlight symbols as vars only when they're clearly vars
-(cons (symbol) @variable)
-(scope (symbol) @variable)
-(path form: (symbol) @variable)
-(symbind form: (symbol) @variable)
diff --git a/runtime/queries/bitbake/highlights.scm b/runtime/queries/bitbake/highlights.scm
index 6e8ab0cf..7b37a79b 100644
--- a/runtime/queries/bitbake/highlights.scm
+++ b/runtime/queries/bitbake/highlights.scm
@@ -23,8 +23,8 @@
 
 ] @operator
 
-(variable_expansion [ "${" "}" ] @punctuation.special)
 [ "(" ")" "{" "}" "[" "]" ] @punctuation.bracket
+(variable_expansion [ "${" "}" ] @punctuation.special)
 
 [
   "noexec"
diff --git a/runtime/queries/c/highlights.scm b/runtime/queries/c/highlights.scm
index 07915f4e..e48e45ab 100644
--- a/runtime/queries/c/highlights.scm
+++ b/runtime/queries/c/highlights.scm
@@ -1,3 +1,9 @@
+
+(identifier) @variable
+
+((identifier) @constant
+  (#match? @constant "^[A-Z][A-Z\\d_]*$"))
+
 "sizeof" @keyword
 
 [
@@ -109,6 +115,12 @@
 (char_literal) @constant.character
 (escape_sequence) @constant.character.escape
 
+(field_identifier) @variable.other.member
+(statement_identifier) @label
+(type_identifier) @type
+(primitive_type) @type.builtin
+(sized_type_specifier) @type.builtin
+
 (call_expression
   function: (identifier) @function)
 (call_expression
@@ -128,15 +140,4 @@
 (attribute
   name: (identifier) @attribute)
 
-(field_identifier) @variable.other.member
-(statement_identifier) @label
-(type_identifier) @type
-(primitive_type) @type.builtin
-(sized_type_specifier) @type.builtin
-
-((identifier) @constant
-  (#match? @constant "^[A-Z][A-Z\\d_]*$"))
-
-(identifier) @variable
-
 (comment) @comment
diff --git a/runtime/queries/capnp/highlights.scm b/runtime/queries/capnp/highlights.scm
index 27ddf8e2..34b023be 100644
--- a/runtime/queries/capnp/highlights.scm
+++ b/runtime/queries/capnp/highlights.scm
@@ -1,7 +1,9 @@
 ; Preproc
 
-(unique_id) @keyword.directive
-(top_level_annotation_body) @keyword.directive
+[
+  (unique_id)
+  (top_level_annotation_body)
+] @keyword.directive
 
 ; Includes
 
@@ -9,6 +11,7 @@
   "import"
   "$import"
   "embed"
+  "using"
 ] @keyword.control.import
 
 (import_path) @string
@@ -84,10 +87,10 @@
   "union"
 ] @keyword.storage.type
 
+"extends" @keyword
+
 [
-  "extends"
   "namespace"
-  "using"
   (annotation_target)
 ] @special
 
diff --git a/runtime/queries/cel/highlights.scm b/runtime/queries/cel/highlights.scm
index ab3bae5a..73770752 100644
--- a/runtime/queries/cel/highlights.scm
+++ b/runtime/queries/cel/highlights.scm
@@ -22,16 +22,10 @@
 "in"
 ] @keyword
 
-; Function calls
-
-(call_expression
-  function: (identifier) @function)
-
-(member_call_expression
-  function: (identifier) @function)
-
 ; Identifiers
 
+(identifier) @variable.other.member
+
 (select_expression
   operand: (identifier) @type)
 
@@ -39,7 +33,13 @@
   operand: (select_expression
     member: (identifier) @type))
 
-(identifier) @variable.other.member
+; Function calls
+
+(call_expression
+  function: (identifier) @function)
+
+(member_call_expression
+  function: (identifier) @function)
 
 ; Literals
 
diff --git a/runtime/queries/clojure/highlights.scm b/runtime/queries/clojure/highlights.scm
index 1441ea97..8155e6e3 100644
--- a/runtime/queries/clojure/highlights.scm
+++ b/runtime/queries/clojure/highlights.scm
@@ -10,6 +10,14 @@
 
 (comment) @comment
 
+;; other symbols
+(sym_lit) @variable
+
+;; other calls
+(list_lit
+ .
+ (sym_lit) @function)
+
 ;; metadata experiment
 (meta_lit
  marker: "^" @punctuation)
@@ -61,20 +69,12 @@
 ((sym_lit) @operator
  (#match? @operator "^%"))
 
-;; other calls
-(list_lit
- .
- (sym_lit) @function)
-
 ;; interop-ish
 (list_lit
  .
  (sym_lit) @function.method
  (#match? @function.method "^\\."))
 
-;; other symbols
-(sym_lit) @variable
-
 ;; quote
 (quoting_lit) @constant.character.escape
 
diff --git a/runtime/queries/comment/highlights.scm b/runtime/queries/comment/highlights.scm
index e88288d5..56c1fd7d 100644
--- a/runtime/queries/comment/highlights.scm
+++ b/runtime/queries/comment/highlights.scm
@@ -1,35 +1,35 @@
-; Hint level tags
-((tag (name) @hint)
- (#match? @hint "^(HINT|MARK|PASSED|STUB|MOCK)$"))
-
-("text" @hint
- (#match? @hint "^(HINT|MARK|PASSED|STUB|MOCK)$"))
-
-; Info level tags
-((tag (name) @info)
- (#match? @info "^(INFO|NOTE|TODO|PERF|OPTIMIZE|PERFORMANCE|QUESTION|ASK)$"))
-
-("text" @info
- (#match? @info "^(INFO|NOTE|TODO|PERF|OPTIMIZE|PERFORMANCE|QUESTION|ASK)$"))
-
-; Warning level tags
-((tag (name) @warning)
- (#match? @warning "^(HACK|WARN|WARNING|TEST|TEMP)$"))
-
-("text" @warning
- (#match? @warning "^(HACK|WARN|WARNING|TEST|TEMP)$"))
-
-; Error level tags
-((tag (name) @error)
- (#match? @error "^(BUG|FIXME|ISSUE|XXX|FIX|SAFETY|FIXIT|FAILED|DEBUG|INVARIANT|COMPLIANCE)$"))
-
-("text" @error
- (#match? @error "^(BUG|FIXME|ISSUE|XXX|FIX|SAFETY|FIXIT|FAILED|DEBUG|INVARIANT|COMPLIANCE)$"))
-
 (tag
  (name) @ui.text
  (user)? @constant)
 
+; Hint level tags
+((tag (name) @hint)
+ (#any-of? @hint "HINT" "MARK" "PASSED" "STUB" "MOCK"))
+
+("text" @hint
+ (#any-of? @hint "HINT" "MARK" "PASSED" "STUB" "MOCK"))
+
+; Info level tags
+((tag (name) @info)
+ (#any-of? @info "INFO" "NOTE" "TODO" "PERF" "OPTIMIZE" "PERFORMANCE" "QUESTION" "ASK"))
+
+("text" @info
+ (#any-of? @info "INFO" "NOTE" "TODO" "PERF" "OPTIMIZE" "PERFORMANCE" "QUESTION" "ASK"))
+
+; Warning level tags
+((tag (name) @warning)
+ (#any-of? @warning "HACK" "WARN" "WARNING" "TEST" "TEMP"))
+
+("text" @warning
+ (#any-of? @warning "HACK" "WARN" "WARNING" "TEST" "TEMP"))
+
+; Error level tags
+((tag (name) @error)
+ (#any-of? @error "BUG" "FIXME" "ISSUE" "XXX" "FIX" "SAFETY" "FIXIT" "FAILED" "DEBUG" "INVARIANT" "COMPLIANCE"))
+
+("text" @error
+ (#any-of? @error "BUG" "FIXME" "ISSUE" "XXX" "FIX" "SAFETY" "FIXIT" "FAILED" "DEBUG" "INVARIANT" "COMPLIANCE"))
+
 ; Issue number (#123)
 ("text" @constant.numeric
  (#match? @constant.numeric "^#[0-9]+$"))
diff --git a/runtime/queries/cpp/highlights.scm b/runtime/queries/cpp/highlights.scm
index c1d14a0b..291163d3 100644
--- a/runtime/queries/cpp/highlights.scm
+++ b/runtime/queries/cpp/highlights.scm
@@ -1,3 +1,26 @@
+; inherits: c
+
+; Constants
+
+(this) @variable.builtin
+(nullptr) @constant.builtin
+
+; Types
+
+(using_declaration ("using" "namespace" (identifier) @namespace))
+(using_declaration ("using" "namespace" (qualified_identifier name: (identifier) @namespace)))
+(namespace_definition name: (namespace_identifier) @namespace)
+(namespace_identifier) @namespace
+
+(qualified_identifier name: (identifier) @type.enum.variant)
+
+(auto) @type
+"decltype" @type
+
+(ref_qualifier ["&" "&&"] @type.builtin)
+(reference_declarator ["&" "&&"] @type.builtin)
+(abstract_reference_declarator ["&" "&&"] @type.builtin)
+
 ; Functions
 
 ; These casts are parsed as function calls, but are not.
@@ -28,27 +51,6 @@
 (function_declarator
   declarator: (field_identifier) @function)
 
-; Types
-
-(using_declaration ("using" "namespace" (identifier) @namespace))
-(using_declaration ("using" "namespace" (qualified_identifier name: (identifier) @namespace)))
-(namespace_definition name: (namespace_identifier) @namespace)
-(namespace_identifier) @namespace
-
-(qualified_identifier name: (identifier) @type.enum.variant)
-
-(auto) @type
-"decltype" @type
-
-(ref_qualifier ["&" "&&"] @type.builtin)
-(reference_declarator ["&" "&&"] @type.builtin)
-(abstract_reference_declarator ["&" "&&"] @type.builtin)
-
-; Constants
-
-(this) @variable.builtin
-(nullptr) @constant.builtin
-
 ; Parameters
 
 (parameter_declaration
@@ -132,5 +134,3 @@
 ; Strings
 
 (raw_string_literal) @string
-
-; inherits: c
diff --git a/runtime/queries/css/highlights.scm b/runtime/queries/css/highlights.scm
index b5262e8f..ee85d141 100644
--- a/runtime/queries/css/highlights.scm
+++ b/runtime/queries/css/highlights.scm
@@ -28,6 +28,9 @@
  "or"
 ] @keyword.operator
 
+(property_name) @variable.other.member
+(plain_value) @constant
+
 ((property_name) @variable
  (#match? @variable "^--"))
 ((plain_value) @variable
@@ -39,7 +42,6 @@
 (function_name) @function
 (id_name) @label
 (namespace_name) @namespace
-(property_name) @variable.other.member
 
 [
  "@charset"
@@ -81,5 +83,3 @@
  ":"
  "::"
 ] @punctuation.delimiter
-
-(plain_value) @constant
diff --git a/runtime/queries/cue/highlights.scm b/runtime/queries/cue/highlights.scm
index aef016e8..4168036b 100644
--- a/runtime/queries/cue/highlights.scm
+++ b/runtime/queries/cue/highlights.scm
@@ -1,12 +1,46 @@
-(package_clause "package" @keyword.control.import)
+; Includes
+[
+  "package"
+  "import"
+] @keyword.control.import
 
-(package_identifier) @variable
+; Namespaces
+(package_identifier) @namespace
 
-(import_declaration "import" @keyword.control.import)
+(import_spec
+  [
+    "."
+    "_"
+  ] @punctuation.special)
 
 [
-  "!"
+  (attr_path)
+  (package_path)
+] @string.special.url ; In attributes
+
+; Attributes
+(attribute) @attribute
+
+; Conditionals
+"if" @keyword.control.conditional
+
+; Repeats
+"for" @keyword.control.repeat
+
+(for_clause
+  "_" @punctuation.special)
+
+; Keywords
+"let" @keyword
+
+"in" @keyword.operator
+
+; Operators
+[
+  "+"
+  "-"
   "*"
+  "/"
   "|"
   "&"
   "||"
@@ -19,92 +53,103 @@
   ">="
   "=~"
   "!~"
-  "+"
-  "-"
-  "*"
-  "/"
+  "!"
+  "="
 ] @operator
 
-(unary_expression "*" @operator.default)
+; Fields & Properties
+(field
+  (label
+    (identifier) @variable.other.member))
 
-(unary_expression "=~" @operator.regexp)
+(selector_expression
+  (_)
+  (identifier) @variable.other.member)
 
-(unary_expression "!~" @operator.regexp)
+; Functions
+(call_expression
+  function: (identifier) @function)
 
-(binary_expression _ "&" @operator.unify _)
+(call_expression
+  function: (selector_expression
+    (_)
+    (identifier) @function))
 
-(binary_expression _ "|" @operator.disjunct _)
+(call_expression
+  function: (builtin_function) @function)
 
-(builtin) @function.builtin
+(builtin_function) @function.builtin
 
-(qualified_identifier) @function.builtin
+; Variables
+(identifier) @variable
 
-(let_clause "let" @keyword.storage.type)
+; Types
+(primitive_type) @type.builtin
 
-(for_clause "for" @keyword.control.repeat)
-(for_clause "in" @keyword.control.repeat)
-
-(guard_clause "if" @keyword.control.conditional)
-
-(comment) @comment
+((identifier) @type
+  (#match? @type "^_?#"))
 
 [
-  (string_type)
-  (simple_string_lit)
-  (multiline_string_lit)
-  (bytes_type)
-  (simple_bytes_lit)
-  (multiline_bytes_lit)
-] @string
-
-[
-  (number_type)
-  (int_lit)
-  (int_type)
-  (uint_type)
-] @constant.numeric.integer
-
-[
-  (float_lit)
-  (float_type)
-] @constant.numeric.float
-
-[
-  (bool_type)
-  (true)
-  (false)
-] @constant.builtin.boolean
-
-(null) @constant.builtin
-
-(ellipsis) @punctuation.bracket
+  (slice_type)
+  (pointer_type)
+] @type ; In attributes
 
+; Punctuation
 [
   ","
   ":"
 ] @punctuation.delimiter
 
 [
-  "("
-  ")"
-  "["
-  "]"
   "{"
   "}"
+  "["
+  "]"
+  "("
+  ")"
+  "<"
+  ">"
 ] @punctuation.bracket
 
-(interpolation "\\(" @punctuation.bracket (_) ")" @punctuation.bracket) @variable.other.member
+[
+  (ellipsis)
+  "?"
+] @punctuation.special
 
-(field (label (identifier) @variable.other.member))
+; Literals
+(string) @string
 
-(
-  (identifier) @keyword.storage.type
-  (#match? @keyword.storage.type "^#")
-)
+[
+  (escape_char)
+  (escape_unicode)
+] @constant.character.escape
 
-(field (label alias: (identifier) @label))
+(number) @constant.numeric
 
-(let_clause left: (identifier) @label)
+(float) @constant.numeric.float
 
+(si_unit
+  (float)
+  (_) @string.special.symbol)
 
-(attribute (identifier) @tag)
+(boolean) @constant.builtin.boolean
+
+[
+  (null)
+  (top)
+  (bottom)
+] @constant.builtin
+
+; Interpolations
+(interpolation
+  "\\(" @punctuation.special
+  (_)
+  ")" @punctuation.special)
+
+(interpolation
+  "\\("
+  (identifier) @variable
+  ")")
+
+; Comments
+(comment) @comment
diff --git a/runtime/queries/d/highlights.scm b/runtime/queries/d/highlights.scm
index b5db8431..ee16c901 100644
--- a/runtime/queries/d/highlights.scm
+++ b/runtime/queries/d/highlights.scm
@@ -217,6 +217,8 @@
     (cfloat)
 ] @warning ; these types are deprecated
 
+(identifier) @variable
+
 (label (identifier) @label)
 (goto_statement (goto) @keyword (identifier) @label)
 
@@ -224,7 +226,6 @@
 (int_literal) @constant.numeric.integer
 (float_literal) @constant.numeric.float
 (char_literal) @constant.character
-(identifier) @variable
 (at_attribute) @attribute
 
 ; everything after __EOF_ is plain text
diff --git a/runtime/queries/devicetree/highlights.scm b/runtime/queries/devicetree/highlights.scm
index d27c79e4..b9b29fe2 100644
--- a/runtime/queries/devicetree/highlights.scm
+++ b/runtime/queries/devicetree/highlights.scm
@@ -51,14 +51,14 @@
 
 (integer_literal) @constant.numeric.integer
 
+(identifier) @variable
+
 (call_expression
   function: (identifier) @function)
 
 (labeled_item
   label: (identifier) @label)
 
-(identifier) @variable
-
 (unit_address) @tag
 
 (reference) @constant
diff --git a/runtime/queries/dockerfile/highlights.scm b/runtime/queries/dockerfile/highlights.scm
index 51398e59..7e638ecb 100644
--- a/runtime/queries/dockerfile/highlights.scm
+++ b/runtime/queries/dockerfile/highlights.scm
@@ -44,6 +44,15 @@
 	(heredoc_line)
 ] @string
 
+[
+  (heredoc_marker)
+  (heredoc_end)
+] @label
+
+((heredoc_block
+  (heredoc_line) @string)
+  (#set! "priority" 90))
+
 (expansion
   [
 	"$"
@@ -59,3 +68,6 @@
 	(param)
 	(mount_param)
 ] @constant
+
+(expose_instruction
+  (expose_port) @constant.numeric.integer)
diff --git a/runtime/queries/dot/highlights.scm b/runtime/queries/dot/highlights.scm
index 6ad64d28..eefb81f9 100644
--- a/runtime/queries/dot/highlights.scm
+++ b/runtime/queries/dot/highlights.scm
@@ -1,3 +1,5 @@
+(identifier) @variable
+
 (keyword) @keyword
 (string_literal) @string
 (number_literal) @constant.numeric
@@ -33,11 +35,9 @@
     (identifier) @constant)
 )
 
-[
-  (comment)
-  (preproc)
-] @comment
+(comment) @comment
+
+(preproc) @keyword.directive
 
 (ERROR) @error
 
-(identifier) @variable
diff --git a/runtime/queries/ecma/highlights.scm b/runtime/queries/ecma/highlights.scm
index b8df07a5..d56bbe14 100644
--- a/runtime/queries/ecma/highlights.scm
+++ b/runtime/queries/ecma/highlights.scm
@@ -1,148 +1,6 @@
-; Special identifiers
-;--------------------
-
-([
-    (identifier)
-    (shorthand_property_identifier)
-    (shorthand_property_identifier_pattern)
- ] @constant
- (#match? @constant "^[A-Z_][A-Z\\d_]+$"))
-
-
-((identifier) @constructor
- (#match? @constructor "^[A-Z]"))
-
-((identifier) @variable.builtin
- (#match? @variable.builtin "^(arguments|module|console|window|document)$")
- (#is-not? local))
-
-(call_expression
- (identifier) @function.builtin
- (#any-of? @function.builtin
-  "eval"
-  "fetch"
-  "isFinite"
-  "isNaN"
-  "parseFloat"
-  "parseInt"
-  "decodeURI"
-  "decodeURIComponent"
-  "encodeURI"
-  "encodeURIComponent"
-  "require"
-  "alert"
-  "prompt"
-  "btoa"
-  "atob"
-  "confirm"
-  "structuredClone"
-  "setTimeout"
-  "clearTimeout"
-  "setInterval"
-  "clearInterval"
-  "queueMicrotask")
- (#is-not? local))
-
-; Function and method definitions
-;--------------------------------
-
-(function
-  name: (identifier) @function)
-(function_declaration
-  name: (identifier) @function)
-(method_definition
-  name: (property_identifier) @function.method)
-(method_definition
-  name: (private_property_identifier) @function.method.private)
-
-(pair
-  key: (property_identifier) @function.method
-  value: [(function) (arrow_function)])
-(pair
-  key: (private_property_identifier) @function.method.private
-  value: [(function) (arrow_function)])
-
-(assignment_expression
-  left: (member_expression
-    property: (property_identifier) @function.method)
-  right: [(function) (arrow_function)])
-(assignment_expression
-  left: (member_expression
-    property: (private_property_identifier) @function.method.private)
-  right: [(function) (arrow_function)])
-
-(variable_declarator
-  name: (identifier) @function
-  value: [(function) (arrow_function)])
-
-(assignment_expression
-  left: (identifier) @function
-  right: [(function) (arrow_function)])
-
-; Function and method parameters
-;-------------------------------
-
-; Arrow function parameters in the form `p => ...` are supported by both
-; javascript and typescript grammars without conflicts.
-(arrow_function
-  parameter: (identifier) @variable.parameter)
-  
-; Function and method calls
-;--------------------------
-
-(call_expression
-  function: (identifier) @function)
-
-(call_expression
-  function: (member_expression
-    property: (property_identifier) @function.method))
-(call_expression
-  function: (member_expression
-    property: (private_property_identifier) @function.method.private))
-
-; Variables
-;----------
-
-(identifier) @variable
-
-; Properties
-;-----------
-
-(property_identifier) @variable.other.member
-(private_property_identifier) @variable.other.member.private
-(shorthand_property_identifier) @variable.other.member
-(shorthand_property_identifier_pattern) @variable.other.member
-
-; Literals
-;---------
-
-(this) @variable.builtin
-(super) @variable.builtin
-
-[
-  (true)
-  (false)
-  (null)
-  (undefined)
-] @constant.builtin
-
-(comment) @comment
-
-[
-  (string)
-  (template_string)
-] @string
-
-(regex) @string.regexp
-(number) @constant.numeric.integer
-
 ; Tokens
 ;-------
 
-(template_substitution
-  "${" @punctuation.special
-  "}" @punctuation.special) @embedded
-
 [
   ";"
   (optional_chain) ; ?.
@@ -209,6 +67,10 @@
   "}"
 ]  @punctuation.bracket
 
+(template_substitution
+  "${" @punctuation.special
+  "}" @punctuation.special) @embedded
+
 [
   "async"
   "debugger"
@@ -283,3 +145,139 @@
   "catch"
 ] @keyword.control.exception
 
+; Variables
+;----------
+
+(identifier) @variable
+
+; Properties
+;-----------
+
+(property_identifier) @variable.other.member
+(private_property_identifier) @variable.other.member.private
+(shorthand_property_identifier) @variable.other.member
+(shorthand_property_identifier_pattern) @variable.other.member
+
+; Function and method definitions
+;--------------------------------
+
+(function
+  name: (identifier) @function)
+(function_declaration
+  name: (identifier) @function)
+(method_definition
+  name: (property_identifier) @function.method)
+(method_definition
+  name: (private_property_identifier) @function.method.private)
+
+(pair
+  key: (property_identifier) @function.method
+  value: [(function) (arrow_function)])
+(pair
+  key: (private_property_identifier) @function.method.private
+  value: [(function) (arrow_function)])
+
+(assignment_expression
+  left: (member_expression
+    property: (property_identifier) @function.method)
+  right: [(function) (arrow_function)])
+(assignment_expression
+  left: (member_expression
+    property: (private_property_identifier) @function.method.private)
+  right: [(function) (arrow_function)])
+
+(variable_declarator
+  name: (identifier) @function
+  value: [(function) (arrow_function)])
+
+(assignment_expression
+  left: (identifier) @function
+  right: [(function) (arrow_function)])
+
+; Function and method parameters
+;-------------------------------
+
+; Arrow function parameters in the form `p => ...` are supported by both
+; javascript and typescript grammars without conflicts.
+(arrow_function
+  parameter: (identifier) @variable.parameter)
+  
+; Function and method calls
+;--------------------------
+
+(call_expression
+  function: (identifier) @function)
+
+(call_expression
+  function: (member_expression
+    property: (property_identifier) @function.method))
+(call_expression
+  function: (member_expression
+    property: (private_property_identifier) @function.method.private))
+
+; Literals
+;---------
+
+(this) @variable.builtin
+(super) @variable.builtin
+
+[
+  (true)
+  (false)
+  (null)
+  (undefined)
+] @constant.builtin
+
+(comment) @comment
+
+[
+  (string)
+  (template_string)
+] @string
+
+(regex) @string.regexp
+(number) @constant.numeric.integer
+
+; Special identifiers
+;--------------------
+
+((identifier) @constructor
+ (#match? @constructor "^[A-Z]"))
+
+([
+    (identifier)
+    (shorthand_property_identifier)
+    (shorthand_property_identifier_pattern)
+ ] @constant
+ (#match? @constant "^[A-Z_][A-Z\\d_]+$"))
+
+((identifier) @variable.builtin
+ (#match? @variable.builtin "^(arguments|module|console|window|document)$")
+ (#is-not? local))
+
+(call_expression
+ (identifier) @function.builtin
+ (#any-of? @function.builtin
+  "eval"
+  "fetch"
+  "isFinite"
+  "isNaN"
+  "parseFloat"
+  "parseInt"
+  "decodeURI"
+  "decodeURIComponent"
+  "encodeURI"
+  "encodeURIComponent"
+  "require"
+  "alert"
+  "prompt"
+  "btoa"
+  "atob"
+  "confirm"
+  "structuredClone"
+  "setTimeout"
+  "clearTimeout"
+  "setInterval"
+  "clearInterval"
+  "queueMicrotask")
+ (#is-not? local))
diff --git a/runtime/queries/edoc/highlights.scm b/runtime/queries/edoc/highlights.scm
index 5bab7992..66b3ccf9 100644
--- a/runtime/queries/edoc/highlights.scm
+++ b/runtime/queries/edoc/highlights.scm
@@ -16,8 +16,8 @@
    (section_marker) @markup.heading.marker)
  (#eq? @markup.heading.marker "===="))
 
-(macro (tag) @function.macro)
 (tag) @keyword
+(macro (tag) @function.macro)
 (macro_escape) @constant.character.escape
 (inline_quote) @markup.raw.inline
 (email_address) @markup.link.url
diff --git a/runtime/queries/elisp/highlights.scm b/runtime/queries/elisp/highlights.scm
index 1639168b..648c0221 100644
--- a/runtime/queries/elisp/highlights.scm
+++ b/runtime/queries/elisp/highlights.scm
@@ -26,6 +26,8 @@
   "while"
 ] @keyword
 
+(string) @string
+
 ;; Function definitions
 [
  "defun"
@@ -47,8 +49,6 @@
 (float) @constant.numeric.float
 (char) @constant.character
 
-(string) @string
-
 [
   "("
   ")"
diff --git a/runtime/queries/elixir/highlights.scm b/runtime/queries/elixir/highlights.scm
index db4c6476..c93accd0 100644
--- a/runtime/queries/elixir/highlights.scm
+++ b/runtime/queries/elixir/highlights.scm
@@ -15,40 +15,167 @@
 ; See the License for the specific language governing permissions and
 ; limitations under the License.
 
-; Reserved keywords
+; Punctuation
 
-["when" "and" "or" "not" "in" "not in" "fn" "do" "end" "catch" "rescue" "after" "else"] @keyword
+[
+ "%"
+] @punctuation
+
+[
+ ","
+ ";"
+] @punctuation.delimiter
+
+[
+  "("
+  ")"
+  "["
+  "]"
+  "{"
+  "}"
+  "<<"
+  ">>"
+] @punctuation.bracket
+
+; Literals
+
+(boolean) @constant.builtin.boolean
+(nil) @constant.builtin
+(integer) @constant.numeric.integer
+(float) @constant.numeric.float
+(char) @constant.character
+
+; Identifiers
+
+; * regular
+(identifier) @variable
+
+; * unused
+(
+  (identifier) @comment.unused
+  (#match? @comment.unused "^_")
+)
+
+; * special
+(
+  (identifier) @constant.builtin
+  (#any-of? @constant.builtin "__MODULE__" "__DIR__" "__ENV__" "__CALLER__" "__STACKTRACE__")
+)
+
+; Comment
+
+(comment) @comment
+
+; Quoted content
+
+(interpolation "#{" @punctuation.special "}" @punctuation.special) @embedded
+
+(escape_sequence) @constant.character.escape
+
+[
+  (string)
+  (charlist)
+] @string
+
+[
+  (atom)
+  (quoted_atom)
+  (keyword)
+  (quoted_keyword)
+] @string.special.symbol
+
+; Note that we explicitly target sigil quoted start/end, so they are not overridden by delimiters
+
+(sigil
+  (sigil_name) @__name__
+  quoted_start: _ @string.special
+  quoted_end: _ @string.special) @string.special
+
+(sigil
+  (sigil_name) @__name__
+  quoted_start: _ @string
+  quoted_end: _ @string
+  (#match? @__name__ "^[sS]$")) @string
+
+(sigil
+  (sigil_name) @__name__
+  quoted_start: _ @string.regex
+  quoted_end: _ @string.regex
+  (#match? @__name__ "^[rR]$")) @string.regex
+
+; Calls
+
+; * local function call
+(call
+  target: (identifier) @function)
+
+; * remote function call
+(call
+  target: (dot
+    right: (identifier) @function))
+
+; * field without parentheses or block
+(call
+  target: (dot
+    right: (identifier) @variable.other.member)
+  .)
+
+; * remote call without parentheses or block (overrides above)
+(call
+  target: (dot
+    left: [
+      (alias)
+      (atom)
+    ]
+    right: (identifier) @function)
+  .)
+
+; * definition keyword
+(call
+  target: (identifier) @keyword
+  (#any-of? @keyword "def" "defdelegate" "defexception" "defguard" "defguardp" "defimpl" "defmacro" "defmacrop" "defmodule" "defn" "defnp" "defoverridable" "defp" "defprotocol" "defstruct"))
+
+; * kernel or special forms keyword
+(call
+  target: (identifier) @keyword
+  (#any-of? @keyword "alias" "case" "cond" "for" "if" "import" "quote" "raise" "receive" "require" "reraise" "super" "throw" "try" "unless" "unquote" "unquote_splicing" "use" "with"))
+
+; * just identifier in function definition
+(call
+  target: (identifier) @keyword
+  (arguments
+    [
+      (identifier) @function
+      (binary_operator
+        left: (identifier) @function
+        operator: "when")
+    ])
+  (#any-of? @keyword "def" "defdelegate" "defguard" "defguardp" "defmacro" "defmacrop" "defn" "defnp" "defp"))
+
+; * pipe into identifier (function call)
+(binary_operator
+  operator: "|>"
+  right: (identifier) @function)
+
+; * pipe into identifier (definition)
+(call
+  target: (identifier) @keyword
+  (arguments
+    (binary_operator
+      operator: "|>"
+      right: (identifier) @variable))
+  (#any-of? @keyword "def" "defdelegate" "defguard" "defguardp" "defmacro" "defmacrop" "defn" "defnp" "defp"))
+
+; * pipe into field without parentheses (function call)
+(binary_operator
+  operator: "|>"
+  right: (call
+    target: (dot
+      right: (identifier) @function)))
 
 ; Operators
 
-; * doc string
-(unary_operator
-  operator: "@" @comment.block.documentation
-  operand: (call
-    target: (identifier) @comment.block.documentation.__attribute__
-    (arguments
-      [
-        (string) @comment.block.documentation
-        (charlist) @comment.block.documentation
-        (sigil
-          quoted_start: _ @comment.block.documentation
-          quoted_end: _ @comment.block.documentation) @comment.block.documentation
-        (boolean) @comment.block.documentation
-      ]))
-  (#any-of? @comment.block.documentation.__attribute__ "moduledoc" "typedoc" "doc"))
-
-; * module attribute
-(unary_operator
-  operator: "@" @variable.other.member
-  operand: [
-    (identifier) @variable.other.member
-    (call
-      target: (identifier) @variable.other.member)
-    (boolean) @variable.other.member
-    (nil) @variable.other.member
-  ])
-
-; * capture operator
+; * capture operand
 (unary_operator
   operator: "&"
   operand: [
@@ -74,13 +201,34 @@
 (stab_clause
   operator: _ @operator)
 
-; Literals
+; * module attribute
+(unary_operator
+  operator: "@" @variable.other.member
+  operand: [
+    (identifier) @variable.other.member
+    (call
+      target: (identifier) @variable.other.member)
+    (boolean) @variable.other.member
+    (nil) @variable.other.member
+  ])
 
-(nil) @constant.builtin
+; * doc string
+(unary_operator
+  operator: "@" @comment.block.documentation
+  operand: (call
+    target: (identifier) @comment.block.documentation.__attribute__
+    (arguments
+      [
+        (string) @comment.block.documentation
+        (charlist) @comment.block.documentation
+        (sigil
+          quoted_start: _ @comment.block.documentation
+          quoted_end: _ @comment.block.documentation) @comment.block.documentation
+        (boolean) @comment.block.documentation
+      ]))
+  (#any-of? @comment.block.documentation.__attribute__ "moduledoc" "typedoc" "doc"))
 
-(boolean) @constant.builtin.boolean
-(integer) @constant.numeric.integer
-(float) @constant.numeric.float
+; Module
 
 (alias) @namespace
 
@@ -88,132 +236,6 @@
   target: (dot
     left: (atom) @namespace))
 
-(char) @constant.character
+; Reserved keywords
 
-; Quoted content
-
-(interpolation "#{" @punctuation.special "}" @punctuation.special) @embedded
-
-(escape_sequence) @constant.character.escape
-
-[
-  (atom)
-  (quoted_atom)
-  (keyword)
-  (quoted_keyword)
-] @string.special.symbol
-
-[
-  (string)
-  (charlist)
-] @string
-
-; Note that we explicitly target sigil quoted start/end, so they are not overridden by delimiters
-
-(sigil
-  (sigil_name) @__name__
-  quoted_start: _ @string
-  quoted_end: _ @string
-  (#any-of? @__name__ "s" "S")) @string
-
-(sigil
-  (sigil_name) @__name__
-  quoted_start: _ @string.regexp
-  quoted_end: _ @string.regexp
-  (#any-of? @__name__ "r" "R")) @string.regexp
-
-(sigil
-  (sigil_name) @__name__
-  quoted_start: _ @string.special
-  quoted_end: _ @string.special) @string.special
-
-; Calls
-
-; * definition keyword
-(call
-  target: (identifier) @keyword
-  (#any-of? @keyword "def" "defdelegate" "defexception" "defguard" "defguardp" "defimpl" "defmacro" "defmacrop" "defmodule" "defn" "defnp" "defoverridable" "defp" "defprotocol" "defstruct"))
-
-; * kernel or special forms keyword
-(call
-  target: (identifier) @keyword
-  (#any-of? @keyword "alias" "case" "cond" "else" "for" "if" "import" "quote" "raise" "receive" "require" "reraise" "super" "throw" "try" "unless" "unquote" "unquote_splicing" "use" "with"))
-
-; * function call
-(call
-  target: [
-    ; local
-    (identifier) @function
-    ; remote
-    (dot
-      right: (identifier) @function)
-  ])
-
-; * just identifier in function definition
-(call
-  target: (identifier) @keyword
-  (arguments
-    [
-      (identifier) @function
-      (binary_operator
-        left: (identifier) @function
-        operator: "when")
-    ])
-  (#any-of? @keyword "def" "defdelegate" "defguard" "defguardp" "defmacro" "defmacrop" "defn" "defnp" "defp"))
-
-; * pipe into identifier (definition)
-(call
-  target: (identifier) @keyword
-  (arguments
-    (binary_operator
-      operator: "|>"
-      right: (identifier) @variable))
-  (#any-of? @keyword "def" "defdelegate" "defguard" "defguardp" "defmacro" "defmacrop" "defn" "defnp" "defp"))
-
-; * pipe into identifier (function call)
-(binary_operator
-  operator: "|>"
-  right: (identifier) @function)
-
-; Identifiers
-
-; * special
-(
-  (identifier) @constant.builtin
-  (#any-of? @constant.builtin "__MODULE__" "__DIR__" "__ENV__" "__CALLER__" "__STACKTRACE__")
-)
-
-; * unused
-(
-  (identifier) @comment
-  (#match? @comment "^_")
-)
-
-; * regular
-(identifier) @variable
-
-; Comment
-
-(comment) @comment
-
-; Punctuation
-
-[
- "%"
-] @punctuation
-
-[
- ","
- ";"
-] @punctuation.delimiter
-
-[
-  "("
-  ")"
-  "["
-  "]"
-  "{"
-  "}"
-  "<<"
-  ">>"
-] @punctuation.bracket
+["when" "and" "or" "not" "in" "not in" "fn" "do" "end" "catch" "rescue" "after" "else"] @keyword
diff --git a/runtime/queries/elvish/highlights.scm b/runtime/queries/elvish/highlights.scm
index fd70488d..af26d5c2 100644
--- a/runtime/queries/elvish/highlights.scm
+++ b/runtime/queries/elvish/highlights.scm
@@ -63,13 +63,13 @@
 (number) @constant.numeric
 (string) @string
 
+(variable (identifier) @variable)
 ((variable (identifier) @function)
   (#match? @function ".+\\~$"))
 ((variable (identifier) @constant.builtin.boolean)
  (#match? @constant.builtin.boolean "(true|false)"))
 ((variable (identifier) @constant.builtin)
  (#match? @constant.builtin "(_|after-chdir|args|before-chdir|buildinfo|nil|notify-bg-job-success|num-bg-jobs|ok|paths|pid|pwd|value-out-indicator|version)"))
-(variable (identifier) @variable)
 
 ["$" "@"] @punctuation.special
 ["(" ")" "[" "]" "{" "}"] @punctuation.bracket
diff --git a/runtime/queries/erlang/highlights.scm b/runtime/queries/erlang/highlights.scm
index f09f6104..041fb021 100644
--- a/runtime/queries/erlang/highlights.scm
+++ b/runtime/queries/erlang/highlights.scm
@@ -1,3 +1,45 @@
+; Comments
+(tripledot) @comment.discard
+
+[(comment) (line_comment) (shebang)] @comment
+
+; Basic types
+(variable) @variable
+((atom) @constant.builtin.boolean
+ (#match? @constant.builtin.boolean "^(true|false)$"))
+(atom) @string.special.symbol
+[(string) (sigil)] @string
+(character) @constant.character
+(escape_sequence) @constant.character.escape
+
+(integer) @constant.numeric.integer
+(float) @constant.numeric.float
+
+; Punctuation
+["," "." "-" ";"] @punctuation.delimiter
+["(" ")" "#" "{" "}" "[" "]" "<<" ">>"] @punctuation.bracket
+
+; Operators
+(binary_operator
+  left: (atom) @function
+  operator: "/"
+  right: (integer) @constant.numeric.integer)
+
+((binary_operator operator: _ @keyword.operator)
+ (#match? @keyword.operator "^\\w+$"))
+((unary_operator operator: _ @keyword.operator)
+ (#match? @keyword.operator "^\\w+$"))
+
+(binary_operator operator: _ @operator)
+(unary_operator operator: _ @operator)
+["/" ":" "->"] @operator
+
+
+; Keywords
+(attribute name: (atom) @keyword)
+
+["case" "fun" "if" "of" "when" "end" "receive" "try" "catch" "after" "begin" "maybe"] @keyword
+
 ; Attributes
 ; module declaration
 (attribute
@@ -122,46 +164,3 @@
 
 (record field: (atom) @variable.other.member)
 (record name: (atom) @type)
-
-; Keywords
-(attribute name: (atom) @keyword)
-
-["case" "fun" "if" "of" "when" "end" "receive" "try" "catch" "after" "begin" "maybe"] @keyword
-
-; Operators
-(binary_operator
-  left: (atom) @function
-  operator: "/"
-  right: (integer) @constant.numeric.integer)
-
-((binary_operator operator: _ @keyword.operator)
- (#match? @keyword.operator "^\\w+$"))
-((unary_operator operator: _ @keyword.operator)
- (#match? @keyword.operator "^\\w+$"))
-
-(binary_operator operator: _ @operator)
-(unary_operator operator: _ @operator)
-["/" ":" "->"] @operator
-
-; Comments
-(tripledot) @comment.discard
-
-[(comment) (line_comment) (shebang)] @comment
-
-; Basic types
-(variable) @variable
-((atom) @constant.builtin.boolean
- (#match? @constant.builtin.boolean "^(true|false)$"))
-(atom) @string.special.symbol
-[(string) (sigil)] @string
-(character) @constant.character
-(escape_sequence) @constant.character.escape
-
-(integer) @constant.numeric.integer
-(float) @constant.numeric.float
-
-; Punctuation
-["," "." "-" ";"] @punctuation.delimiter
-["(" ")" "#" "{" "}" "[" "]" "<<" ">>"] @punctuation.bracket
-
-; (ERROR) @error
diff --git a/runtime/queries/esdl/highlights.scm b/runtime/queries/esdl/highlights.scm
index 7dfde022..a009933f 100644
--- a/runtime/queries/esdl/highlights.scm
+++ b/runtime/queries/esdl/highlights.scm
@@ -18,6 +18,8 @@
   "function"
 ] @keyword
 
+(identifier) @variable
+
 (modifier) @keyword
 (extending) @keyword
 
@@ -31,7 +33,6 @@
 (link) @variable.other.member
 (annotation) @variable.other.member
 
-(identifier) @variable
 (string) @string
 (edgeql_fragment) @string
 ; Builtins
@@ -56,8 +57,8 @@
   "anytype"
 ] @type.builtin
 
-(true) @constant.builtin
-(false) @constant.builtin
+(true) @constant.builtin.boolean
+(false) @constant.builtin.boolean
 (null) @constant.builtin
 
 ; Delimiters
diff --git a/runtime/queries/fish/highlights.scm b/runtime/queries/fish/highlights.scm
index d9b5b427..b5668e7b 100644
--- a/runtime/queries/fish/highlights.scm
+++ b/runtime/queries/fish/highlights.scm
@@ -94,6 +94,8 @@
 
 ;; Commands
 
+(command name: (word) @function)
+
 (command
   name: (word) @function.builtin (#match? @function.builtin "^test$")
   argument: (word) @operator (#match? @operator "^(!?=|-[a-zA-Z]+)$"))
@@ -116,9 +118,6 @@
   ]
 )
 
-; non-builtin command names
-(command name: (word) @function)
-
 ;; Functions
 
 (function_definition ["function" "end"] @keyword.function)
diff --git a/runtime/queries/fortran/highlights.scm b/runtime/queries/fortran/highlights.scm
index 90f4ecd0..0901a4aa 100644
--- a/runtime/queries/fortran/highlights.scm
+++ b/runtime/queries/fortran/highlights.scm
@@ -112,6 +112,8 @@
   "\\.neqv\\."
 ] @keyword.operator
 
+(identifier) @variable
+
  ;; Brackets
  [
   "("
@@ -163,7 +165,6 @@
 (derived_type_member_expression
   (type_member) @variable.other.member)
 
-(identifier) @variable
 (string_literal) @string
 (number_literal) @constant.numeric
 (boolean_literal) @constant.builtin.boolean
diff --git a/runtime/queries/ghostty/highlights.scm b/runtime/queries/ghostty/highlights.scm
index aa31bbc3..4ae953e5 100644
--- a/runtime/queries/ghostty/highlights.scm
+++ b/runtime/queries/ghostty/highlights.scm
@@ -22,6 +22,11 @@
 
 (":") @punctuation.delimiter
 
+[
+ (string)
+ (color)
+] @string
+
 ; (color) are hex values
 (color "#" @punctuation.special
  (#eq? @punctuation.special "#"))
@@ -44,18 +49,13 @@
 (tuple "," @punctuation.delimiter.special
        (#eq? @punctuation.delimiter.special ","))
 
-[
- (string)
- (color)
-] @string
+; `keybind`
+(keybind_value) @string.special
 
 ; clear is a special keyword that clear all existing keybind up to that point
 ((keybind_value) @keyword 
  (#eq? @keyword "clear"))
 
-; `keybind`
-(keybind_value) @string.special
-
 ; NOTE: The order here matters!
 [
  (key_qualifier)
diff --git a/runtime/queries/gjs/highlights.scm b/runtime/queries/gjs/highlights.scm
index 51983852..3e63dc79 100644
--- a/runtime/queries/gjs/highlights.scm
+++ b/runtime/queries/gjs/highlights.scm
@@ -1 +1 @@
-; inherits: _gjs,_javascript,ecma
+; inherits: ecma,_javascript,_gjs
diff --git a/runtime/queries/gleam/highlights.scm b/runtime/queries/gleam/highlights.scm
index b40574b0..961afc34 100644
--- a/runtime/queries/gleam/highlights.scm
+++ b/runtime/queries/gleam/highlights.scm
@@ -1,3 +1,7 @@
+; Variables
+(identifier) @variable
+(discard) @comment.unused
+
 ; Comments
 (module_comment) @comment
 (statement_comment) @comment
@@ -72,10 +76,6 @@
 ((identifier) @error
  (#any-of? @error "auto" "delegate" "derive" "else" "implement" "macro" "test" "echo"))
 
-; Variables
-(identifier) @variable
-(discard) @comment.unused
-
 ; Keywords
 [
   (visibility_modifier) ; "pub"
diff --git a/runtime/queries/go/highlights.scm b/runtime/queries/go/highlights.scm
index 7dc20e69..0f9be048 100644
--- a/runtime/queries/go/highlights.scm
+++ b/runtime/queries/go/highlights.scm
@@ -1,8 +1,34 @@
-; Function calls
 
-(call_expression
-  function: (identifier) @function.builtin
-  (#match? @function.builtin "^(append|cap|close|complex|copy|delete|imag|len|make|new|panic|print|println|real|recover)$"))
+; Identifiers
+
+(field_identifier) @variable.other.member
+
+(identifier) @variable
+
+(package_identifier) @namespace
+
+(parameter_declaration (identifier) @variable.parameter)
+(variadic_parameter_declaration (identifier) @variable.parameter)
+
+(const_spec
+  name: (identifier) @constant)
+
+(type_spec 
+  name: (type_identifier) @constructor)
+
+(keyed_element (literal_element (identifier) @variable.other.member))
+(field_declaration
+  name: (field_identifier) @variable.other.member)
+
+(parameter_declaration (identifier) @variable.parameter)
+(variadic_parameter_declaration (identifier) @variable.parameter)
+
+(label_name) @label
+
+(const_spec
+  name: (identifier) @constant)
+
+; Function calls
 
 (call_expression
   function: (identifier) @function)
@@ -11,9 +37,14 @@
   function: (selector_expression
     field: (field_identifier) @function.method))
 
+(call_expression
+  function: (identifier) @function.builtin
+  (#match? @function.builtin "^(append|cap|close|complex|copy|delete|imag|len|make|new|panic|print|println|real|recover)$"))
 
 ; Types
 
+(type_identifier) @type
+
 (type_parameter_list
   (parameter_declaration
     name: (identifier) @type.parameter))
@@ -21,8 +52,6 @@
 ((type_identifier) @type.builtin
   (#match? @type.builtin "^(any|bool|byte|comparable|complex128|complex64|error|float32|float64|int|int16|int32|int64|int8|rune|string|uint|uint16|uint32|uint64|uint8|uintptr)$"))
 
-(type_identifier) @type
-
 ; Function definitions
 
 (function_declaration
@@ -34,28 +63,6 @@
 (method_spec 
   name: (field_identifier) @function.method) 
 
-; Identifiers
-
-(const_spec
-  name: (identifier) @constant)
-
-(parameter_declaration (identifier) @variable.parameter)
-(variadic_parameter_declaration (identifier) @variable.parameter)
-
-(type_spec 
-  name: (type_identifier) @constructor)
-(field_identifier) @variable.other.member
-(keyed_element (literal_element (identifier) @variable.other.member))
-(identifier) @variable
-(package_identifier) @namespace
-
-(parameter_declaration (identifier) @variable.parameter)
-(variadic_parameter_declaration (identifier) @variable.parameter)
-
-(label_name) @label
-
-(const_spec
-  name: (identifier) @constant)
 
 ; Operators
 
diff --git a/runtime/queries/gts/highlights.scm b/runtime/queries/gts/highlights.scm
index 5ad3ee1b..120e8f20 100644
--- a/runtime/queries/gts/highlights.scm
+++ b/runtime/queries/gts/highlights.scm
@@ -1 +1 @@
-; inherits: _gjs,_typescript,ecma
+; inherits: ecma,_typescript,_gjs
diff --git a/runtime/queries/hare/highlights.scm b/runtime/queries/hare/highlights.scm
index 5115328d..adaea14e 100644
--- a/runtime/queries/hare/highlights.scm
+++ b/runtime/queries/hare/highlights.scm
@@ -118,6 +118,8 @@
 ] @constant.builtin
 (literal "void") @constant.builtin
 
+(identifier) @variable
+
 (string_literal) @string
 (escape_sequence) @constant.character.escape
 (rune_literal) @string
@@ -138,5 +140,4 @@
 (decl_attr) @special
 (fndec_attrs) @special
 
-(identifier) @variable
 (struct_union_field (name)) @variable
diff --git a/runtime/queries/haskell/highlights.scm b/runtime/queries/haskell/highlights.scm
index 8f079185..4178055c 100644
--- a/runtime/queries/haskell/highlights.scm
+++ b/runtime/queries/haskell/highlights.scm
@@ -279,6 +279,20 @@
 ] @punctuation.delimiter
 
 
+;; ----------------------------------------------------------------------------
+;; Literals and comments
+
+(integer) @constant.numeric.integer
+(exp_negation) @constant.numeric.integer
+(exp_literal (float)) @constant.numeric.float
+(char) @constant.character
+(string) @string
+
+(comment) @comment
+
+(con_unit [ "(" ")" ] @constant.builtin) ; unit, as in ()
+
+
 ;; ----------------------------------------------------------------------------
 ;; Keywords, operators, includes
 
@@ -352,6 +366,8 @@
 ;; ----------------------------------------------------------------------------
 ;; Functions and variables
 
+(variable) @variable
+
 (signature name: (variable) @type)
 (function
   name: (variable) @function
@@ -366,7 +382,6 @@
 (exp_apply . (exp_name (variable) @function))
 (exp_apply . (exp_name (qualified_variable (variable) @function)))
 
-(variable) @variable
 (pat_wildcard) @variable
 
 ;; ----------------------------------------------------------------------------
diff --git a/runtime/queries/hcl/highlights.scm b/runtime/queries/hcl/highlights.scm
index d00f74f3..7e6e6cf7 100644
--- a/runtime/queries/hcl/highlights.scm
+++ b/runtime/queries/hcl/highlights.scm
@@ -1,48 +1,5 @@
 (ERROR) @error
 
-; { key: val }
-
-(object_elem val: (expression
-  (variable_expr
-      (identifier) @type.builtin (#match? @type.builtin "^(bool|string|number|object|tuple|list|map|set|any)$"))))
-
-(get_attr (identifier) @variable.builtin (#match? @variable.builtin  "^(root|cwd|module)$"))
-(variable_expr (identifier) @variable.builtin (#match? @variable.builtin "^(var|local|path)$"))
-((identifier) @type.builtin (#match? @type.builtin "^(bool|string|number|object|tuple|list|map|set|any)$"))
-((identifier) @keyword (#match? @keyword "^(module|root|cwd|resource|variable|data|locals|terraform|provider|output)$"))
-
-; highlight identifier keys as though they were block attributes
-(object_elem key: (expression (variable_expr (identifier) @variable.other.member)))
-
-(attribute (identifier) @variable.other.member)
-(function_call (identifier) @function.method)
-(block (identifier) @type.builtin)
-
-(identifier) @variable
-(comment) @comment
-(null_lit) @constant.builtin
-(numeric_lit) @constant.numeric
-(bool_lit) @constant.builtin.boolean
-
-[
-  (template_interpolation_start) ; ${
-  (template_interpolation_end) ; }
-  (template_directive_start) ; %{
-  (template_directive_end) ; }
-  (strip_marker) ; ~
-] @punctuation.special
-
-[
-  (heredoc_identifier) ; <<END
-  (heredoc_start) ; END
-] @punctuation.delimiter
-
-[
-  (quoted_template_start) ; "
-  (quoted_template_end); "
-  (template_literal) ; non-interpolation/directive content
-] @string
-
 [ 
   "if"
   "else"
@@ -98,3 +55,47 @@
   "&&"
   "||"
 ] @operator
+
+(identifier) @variable
+
+; { key: val }
+
+(object_elem val: (expression
+  (variable_expr
+      (identifier) @type.builtin (#match? @type.builtin "^(bool|string|number|object|tuple|list|map|set|any)$"))))
+
+(get_attr (identifier) @variable.builtin (#match? @variable.builtin  "^(root|cwd|module)$"))
+(variable_expr (identifier) @variable.builtin (#match? @variable.builtin "^(var|local|path)$"))
+((identifier) @type.builtin (#match? @type.builtin "^(bool|string|number|object|tuple|list|map|set|any)$"))
+((identifier) @keyword (#match? @keyword "^(module|root|cwd|resource|variable|data|locals|terraform|provider|output)$"))
+
+; highlight identifier keys as though they were block attributes
+(object_elem key: (expression (variable_expr (identifier) @variable.other.member)))
+
+(attribute (identifier) @variable.other.member)
+(function_call (identifier) @function.method)
+(block (identifier) @type.builtin)
+
+(comment) @comment
+(null_lit) @constant.builtin
+(numeric_lit) @constant.numeric
+(bool_lit) @constant.builtin.boolean
+
+[
+  (template_interpolation_start) ; ${
+  (template_interpolation_end) ; }
+  (template_directive_start) ; %{
+  (template_directive_end) ; }
+  (strip_marker) ; ~
+] @punctuation.special
+
+[
+  (heredoc_identifier) ; <<END
+  (heredoc_start) ; END
+] @punctuation.delimiter
+
+[
+  (quoted_template_start) ; "
+  (quoted_template_end); "
+  (template_literal) ; non-interpolation/directive content
+] @string
diff --git a/runtime/queries/hocon/highlights.scm b/runtime/queries/hocon/highlights.scm
index d1aa38a2..95210394 100644
--- a/runtime/queries/hocon/highlights.scm
+++ b/runtime/queries/hocon/highlights.scm
@@ -10,6 +10,8 @@
 
 (value [":" "=" "+=" ] @operator)
 
+[ "(" ")" "[" "]" "{" "}" ]  @punctuation.bracket
+
 (substitution (_) @string)
 (substitution ["${" "${?" "}"] @punctuation.special)
 
@@ -22,8 +24,6 @@
 
 (include) @keyword.directive
 
-[ "(" ")" "[" "]" "{" "}" ]  @punctuation.bracket
-
 (unit) @keyword
 (path (_) @keyword)
 (unquoted_path "." @punctuation.delimiter)
diff --git a/runtime/queries/inko/highlights.scm b/runtime/queries/inko/highlights.scm
index 2f1cdc12..d5730dce 100644
--- a/runtime/queries/inko/highlights.scm
+++ b/runtime/queries/inko/highlights.scm
@@ -49,6 +49,12 @@
   "|="
 ] @operator
 
+; Identifiers/variable references
+(identifier) @variable
+
+((identifier) @function
+  (#is-not? local))
+
 ; Keywords
 [
   "as"
@@ -185,9 +191,3 @@
   name: _ @function)
 
 (field) @variable.other.member
-
-; Identifiers/variable references
-((identifier) @function
-  (#is-not? local))
-
-(identifier) @variable
diff --git a/runtime/queries/janet/highlights.scm b/runtime/queries/janet/highlights.scm
index 13355943..94e4cdce 100644
--- a/runtime/queries/janet/highlights.scm
+++ b/runtime/queries/janet/highlights.scm
@@ -10,12 +10,15 @@
 
 (num_lit) @constant.numeric
 
-[(bool_lit) (nil_lit)] @constant.builtin
+(bool_lit) @constant.builtin.boolean
+(nil_lit) @constant.builtin 
 
 (comment) @comment
 
-((sym_lit) @variable
- (#match? @variable "^\\*.+\\*$"))
+(sym_lit) @variable
+
+((sym_lit) @variable.builtin
+ (#match? @variable.builtin "^\\*.+\\*$"))
 
 (short_fn_lit
  .
@@ -57,8 +60,6 @@
  .
  (sym_lit) @function)
 
-(sym_lit) @variable
-
 ["{" "@{" "}"
  "[" "@[" "]"
  "(" "@(" ")"] @punctuation.bracket
diff --git a/runtime/queries/java/highlights.scm b/runtime/queries/java/highlights.scm
index ae99a33a..1f5da9c6 100644
--- a/runtime/queries/java/highlights.scm
+++ b/runtime/queries/java/highlights.scm
@@ -1,3 +1,5 @@
+(identifier) @variable
+
 ; Methods
 
 (method_declaration
@@ -54,8 +56,6 @@
 ((identifier) @constant
  (#match? @constant "^_*[A-Z][A-Z\\d_]+$"))
 
-(identifier) @variable
-
 (this) @variable.builtin
 
 ; Literals
diff --git a/runtime/queries/javascript/highlights.scm b/runtime/queries/javascript/highlights.scm
index 2a40b372..bd09e048 100644
--- a/runtime/queries/javascript/highlights.scm
+++ b/runtime/queries/javascript/highlights.scm
@@ -1,3 +1,3 @@
 ; See runtime/queries/ecma/README.md for more info.
 
-; inherits: _javascript,ecma
+; inherits: ecma,_javascript
diff --git a/runtime/queries/jsonnet/highlights.scm b/runtime/queries/jsonnet/highlights.scm
index f54e7d5c..c5cb49ff 100644
--- a/runtime/queries/jsonnet/highlights.scm
+++ b/runtime/queries/jsonnet/highlights.scm
@@ -15,6 +15,7 @@
 (binaryop) @operator
 (unaryop) @operator
 
+(id) @variable
 (param identifier: (id) @variable.parameter)
 (bind function: (id) @function)
 (fieldname (id) @variable.other.member)
@@ -35,4 +36,3 @@
   ";"
   "="
 ] @punctuation.delimiter
-(id) @variable
diff --git a/runtime/queries/jsx/highlights.scm b/runtime/queries/jsx/highlights.scm
index eb2b1b1a..4d0e168a 100644
--- a/runtime/queries/jsx/highlights.scm
+++ b/runtime/queries/jsx/highlights.scm
@@ -1,3 +1,3 @@
 ; See runtime/queries/ecma/README.md for more info.
 
-; inherits: _jsx,_javascript,ecma
+; inherits: ecma,_javascript,_jsx
diff --git a/runtime/queries/julia/folds.scm b/runtime/queries/julia/folds.scm
index 91eede5f..91a26c0c 100644
--- a/runtime/queries/julia/folds.scm
+++ b/runtime/queries/julia/folds.scm
@@ -1,11 +1,14 @@
 [
- (module_definition)
- (struct_definition)
- (macro_definition)
- (function_definition)
- (compound_expression) ; begin blocks
- (let_statement)
- (if_statement)
- (for_statement)
- (while_statement)
+  (module_definition)
+  (struct_definition)
+  (macro_definition)
+  (function_definition)
+  (if_statement)
+  (try_statement)
+  (for_statement)
+  (while_statement)
+  (let_statement)
+  (quote_statement)
+  (do_clause)
+  (compound_statement) ; begin block
 ] @fold
diff --git a/runtime/queries/julia/highlights.scm b/runtime/queries/julia/highlights.scm
index 013f5063..7072640f 100644
--- a/runtime/queries/julia/highlights.scm
+++ b/runtime/queries/julia/highlights.scm
@@ -1,39 +1,48 @@
-; ----------
-; Primitives
-; ----------
+; ------------
+; Variables identifiers
+; ------------
 
-[
-  (line_comment)
-  (block_comment)
-] @comment
+(identifier) @variable
 
+; Remaining identifiers that start with capital letters should be types (PascalCase)
 (
-  ((identifier) @constant.builtin)
-  (#match? @constant.builtin "^(nothing|missing|undef)$"))
-
-[
-  (true)
-  (false)
-] @constant.builtin.boolean
-
-(integer_literal) @constant.numeric.integer
-(float_literal) @constant.numeric.float
+  (identifier) @type
+  (#match? @type "^[A-Z]"))
 
+; SCREAMING_SNAKE_CASE
 (
-  ((identifier) @constant.numeric.float)
-  (#match? @constant.numeric.float "^((Inf|NaN)(16|32|64)?)$"))
+  (identifier) @constant
+  (#match? @constant "^[A-Z][A-Z0-9_]*$"))
 
-(character_literal) @constant.character
-(escape_sequence) @constant.character.escape
+(const_statement
+  (assignment
+    . (identifier) @constant))
 
-(string_literal) @string
-
-(prefixed_string_literal
-  prefix: (identifier) @function.macro) @string
+; Field expressions are either module content or struct fields.
+; Module types and constants should already be captured, so this
+; assumes the remaining identifiers to be struct fields.
+(field_expression
+  (_)
+  (identifier) @variable.other.member)
 
 (quote_expression
-  (identifier) @string.special.symbol) 
-  
+  ":" @string.special.symbol
+  [
+    (identifier)
+    (operator)
+  ] @string.special.symbol)
+
+; ------
+; Macros
+; ------
+
+(macro_definition
+  name: (identifier) @function.macro)
+
+(macro_identifier
+  "@" @function.macro
+  (identifier) @function.macro)
+
 ; -------------------
 ; Modules and Imports
 ; -------------------
@@ -50,49 +59,6 @@
 (scoped_identifier
   (identifier) @namespace)
 
-; -----
-; Types
-; -----
-
-(abstract_definition
-  name: (identifier) @type)
-  
-(primitive_definition
-  name: (identifier) @type)
-
-(struct_definition
-  name: (identifier) @type)
-
-(struct_definition
-  . (_)
-    (identifier) @variable.other.member)
-
-(struct_definition
-  . (_)
-  (typed_expression
-    . (identifier) @variable.other.member))
-    
-(type_parameter_list
-  (identifier) @type)
-
-(constrained_type_parameter
-  (identifier) @type)
-  
-(subtype_clause
-  (identifier) @type)
-
-(typed_expression
-  (identifier) @type . )
-
-(parameterized_identifier
-  (identifier) @type)
-  
-(type_argument_list
-  (identifier) @type)
-
-(where_clause
-  (identifier) @type)
-
 ; -------------------
 ; Function definition
 ; -------------------
@@ -119,22 +85,6 @@
   ; prevent constructors (PascalCase) to be highlighted as functions
   (#match? @function "^[^A-Z]"))
 
-(parameter_list
-  (identifier) @variable.parameter)
-
-(typed_parameter
-  (identifier) @variable.parameter
-  (identifier)? @type)
-
-(optional_parameter
-  . (identifier) @variable.parameter)
-
-(slurp_parameter
-  (identifier) @variable.parameter)
-
-(function_expression
-  . (identifier) @variable.parameter)
-
 ; ---------------
 ; Functions calls
 ; ---------------
@@ -145,93 +95,294 @@
   ; prevent constructors (PascalCase) to be highlighted as functions
   (#match? @function "^[^A-Z]"))
 
-(
-  (broadcast_call_expression
-    (identifier) @function)
-  (#match? @function "^[^A-Z]"))
-
 (
   (call_expression
     (field_expression (identifier) @function .))
   (#match? @function "^[^A-Z]"))
 
+(
+  (broadcast_call_expression
+    (identifier) @function)
+  (#match? @function "^[^A-Z]"))
+
 (
   (broadcast_call_expression
     (field_expression (identifier) @function .))
   (#match? @function "^[^A-Z]"))
 
-; ------
-; Macros
-; ------
 
-(macro_definition
-  name: (identifier) @function.macro)
+; -------------------
+; Functions builtins
+; -------------------
+
+((identifier) @function.builtin
+  (#any-of? @function.builtin
+    "_abstracttype" "_apply_iterate" "_apply_pure" "_call_in_world" "_call_in_world_total"
+    "_call_latest" "_equiv_typedef" "_expr" "_primitivetype" "_setsuper!" "_structtype" "_typebody!"
+    "_typevar" "applicable" "apply_type" "arrayref" "arrayset" "arraysize" "const_arrayref"
+    "donotdelete" "fieldtype" "get_binding_type" "getfield" "ifelse" "invoke" "isa" "isdefined"
+    "modifyfield!" "nfields" "replacefield!" "set_binding_type!" "setfield!" "sizeof" "svec"
+    "swapfield!" "throw" "tuple" "typeassert" "typeof"))
+
+; -----------
+; Parameters
+; -----------
+
+(parameter_list
+  (identifier) @variable.parameter)
+
+(optional_parameter
+  . (identifier) @variable.parameter)
+
+(slurp_parameter
+  (identifier) @variable.parameter)
+
+(typed_parameter
+  parameter: (identifier)? @variable.parameter
+  type: (_) @type)
+
+(function_expression
+  . (identifier) @variable.parameter) ; Single parameter arrow functions
+
+; -----
+; Types
+; -----
+
+; Definitions
+(abstract_definition
+  name: (identifier) @type.definition) @keyword
+
+(primitive_definition
+  name: (identifier) @type.definition) @keyword
+
+(struct_definition
+  name: (identifier) @type)
+
+(struct_definition
+  . (_)
+    (identifier) @variable.other.member)
+
+(struct_definition
+  . (_)
+  (typed_expression
+    . (identifier) @variable.other.member))
+
+(type_clause
+  [
+    (identifier) @type
+    (field_expression
+      (identifier) @type .)
+  ])
+
+; Annotations
+(parametrized_type_expression
+  (_) @type
+  (curly_expression
+    (_) @type))
+
+(type_parameter_list
+  (identifier) @type)
+
+(typed_expression
+  (identifier) @type . )
+
+(function_definition
+  return_type: (identifier) @type)
+
+(short_function_definition
+  return_type: (identifier) @type)
+
+(where_clause
+  (identifier) @type)
+
+(where_clause
+  (curly_expression
+    (_) @type))
+
+; ---------
+; Builtins
+; ---------
+
+; This list was generated with:
+;
+;  istype(x) = typeof(x) === DataType || typeof(x) === UnionAll
+;  get_types(m) = filter(x -> istype(Base.eval(m, x)), names(m))
+;  type_names = sort(union(get_types(Core), get_types(Base)))
+;
+((identifier) @type.builtin
+  (#any-of? @type.builtin
+    "AbstractArray" "AbstractChannel" "AbstractChar" "AbstractDict" "AbstractDisplay"
+    "AbstractFloat" "AbstractIrrational" "AbstractLock" "AbstractMatch" "AbstractMatrix"
+    "AbstractPattern" "AbstractRange" "AbstractSet" "AbstractSlices" "AbstractString"
+    "AbstractUnitRange" "AbstractVecOrMat" "AbstractVector" "Any" "ArgumentError" "Array"
+    "AssertionError" "Atomic" "BigFloat" "BigInt" "BitArray" "BitMatrix" "BitSet" "BitVector" "Bool"
+    "BoundsError" "By" "CanonicalIndexError" "CapturedException" "CartesianIndex" "CartesianIndices"
+    "Cchar" "Cdouble" "Cfloat" "Channel" "Char" "Cint" "Cintmax_t" "Clong" "Clonglong" "Cmd" "Colon"
+    "ColumnSlices" "Complex" "ComplexF16" "ComplexF32" "ComplexF64" "ComposedFunction"
+    "CompositeException" "ConcurrencyViolationError" "Condition" "Cptrdiff_t" "Cshort" "Csize_t"
+    "Cssize_t" "Cstring" "Cuchar" "Cuint" "Cuintmax_t" "Culong" "Culonglong" "Cushort" "Cvoid"
+    "Cwchar_t" "Cwstring" "DataType" "DenseArray" "DenseMatrix" "DenseVecOrMat" "DenseVector" "Dict"
+    "DimensionMismatch" "Dims" "DivideError" "DomainError" "EOFError" "Enum" "ErrorException"
+    "Exception" "ExponentialBackOff" "Expr" "Float16" "Float32" "Float64" "Function" "GlobalRef"
+    "HTML" "IO" "IOBuffer" "IOContext" "IOStream" "IdDict" "IndexCartesian" "IndexLinear"
+    "IndexStyle" "InexactError" "InitError" "Int" "Int128" "Int16" "Int32" "Int64" "Int8" "Integer"
+    "InterruptException" "InvalidStateException" "Irrational" "KeyError" "LazyString" "LinRange"
+    "LineNumberNode" "LinearIndices" "LoadError" "Lt" "MIME" "Matrix" "Method" "MethodError"
+    "Missing" "MissingException" "Module" "NTuple" "NamedTuple" "Nothing" "Number" "Ordering"
+    "OrdinalRange" "OutOfMemoryError" "OverflowError" "Pair" "ParseError" "PartialQuickSort" "Perm"
+    "PermutedDimsArray" "Pipe" "ProcessFailedException" "Ptr" "QuoteNode" "Rational" "RawFD"
+    "ReadOnlyMemoryError" "Real" "ReentrantLock" "Ref" "Regex" "RegexMatch" "Returns"
+    "ReverseOrdering" "RoundingMode" "RowSlices" "SegmentationFault" "Set" "Signed" "Slices" "Some"
+    "SpinLock" "StackFrame" "StackOverflowError" "StackTrace" "Stateful" "StepRange" "StepRangeLen"
+    "StridedArray" "StridedMatrix" "StridedVecOrMat" "StridedVector" "String" "StringIndexError"
+    "SubArray" "SubString" "SubstitutionString" "Symbol" "SystemError" "Task" "TaskFailedException"
+    "Text" "TextDisplay" "Timer" "Tmstruct" "Tuple" "Type" "TypeError" "TypeVar" "UInt" "UInt128"
+    "UInt16" "UInt32" "UInt64" "UInt8" "UndefInitializer" "UndefKeywordError" "UndefRefError"
+    "UndefVarError" "Union" "UnionAll" "UnitRange" "Unsigned" "Val" "VecElement" "VecOrMat" "Vector"
+    "VersionNumber" "WeakKeyDict" "WeakRef"))
+
+((identifier) @variable.builtin
+  (#any-of? @variable.builtin "begin" "end")
+  (#has-ancestor? @variable.builtin index_expression))
+
+((identifier) @variable.builtin
+  (#any-of? @variable.builtin "begin" "end")
+  (#has-ancestor? @variable.builtin range_expression))
 
-(macro_identifier
-  "@" @function.macro
-  (identifier) @function.macro)
 
 ; --------
 ; Keywords
 ; --------
 
-(function_definition 
-  ["function" "end"] @keyword.function)
+[
+  "global"
+  "local"
+] @keyword
+
+(compound_statement
+  [
+    "begin"
+    "end"
+  ] @keyword)
+
+(quote_statement
+  [
+    "quote"
+    "end"
+  ] @keyword)
+
+(let_statement
+  [
+    "let"
+    "end"
+  ] @keyword)
 
 (if_statement
-  ["if" "end"] @keyword.control.conditional)
-(elseif_clause
-  ["elseif"] @keyword.control.conditional)
-(else_clause
-  ["else"] @keyword.control.conditional)
-(ternary_expression
-  ["?" ":"] @keyword.control.conditional)
+  [
+    "if"
+    "end"
+  ] @keyword.control.conditional)
 
-(for_statement
-  ["for" "end"] @keyword.control.repeat)
-(while_statement
-  ["while" "end"] @keyword.control.repeat)
-(break_statement) @keyword.control.repeat
-(continue_statement) @keyword.control.repeat
-(for_binding
-  "in" @keyword.control.repeat)
-(for_clause
-  "for" @keyword.control.repeat)
+(elseif_clause
+  "elseif" @keyword.control.conditional)
+
+(else_clause
+  "else" @keyword.control.conditional)
+
+(if_clause
+  "if" @keyword.control.conditional) ; `if` clause in comprehensions
+
+(ternary_expression
+  [
+    "?"
+    ":"
+  ] @keyword.control.conditional)
 
 (try_statement
-  ["try" "end" ] @keyword.control.exception)
+  [
+    "try"
+    "end"
+  ] @keyword.control.exception)
+
 (finally_clause
   "finally" @keyword.control.exception)
+
 (catch_clause
   "catch" @keyword.control.exception)
 
-[
-  "export"
-  "import"
-  "using"
-] @keyword.control.import
+(for_statement
+  [
+    "for"
+    "end"
+  ] @keyword.control.repeat)
+
+(while_statement
+  [
+    "while"
+    "end"
+  ] @keyword.control.repeat)
+
+(for_clause
+  "for" @keyword.control.repeat)
+
+[
+  (break_statement)
+  (continue_statement)
+] @keyword.control.repeat
+
+(module_definition
+  [
+    "module"
+    "baremodule"
+    "end"
+  ] @keyword.control.import)
+
+(import_statement
+  [
+    "import"
+    "using"
+  ] @keyword.control.import)
+
+(import_alias
+  "as" @keyword.control.import)
+
+(export_statement
+  "export" @keyword.control.import)
+
+(selected_import
+  ":" @punctuation.delimiter)
+
+(struct_definition
+  [
+    "struct"
+    "end"
+  ] @keyword)
+
+(macro_definition
+  [
+    "macro"
+    "end"
+  ] @keyword)
+
+(function_definition
+  [
+    "function"
+    "end"
+  ] @keyword.function)
+
+(do_clause
+  [
+    "do"
+    "end"
+  ] @keyword.function)
+
+(return_statement
+  "return" @keyword.control.return)
 
 [
-  "abstract"
-  "baremodule"
-  "begin"
   "const"
-  "do"
-  "end"
-  "let"
-  "macro"
-  "module"
   "mutable"
-  "primitive"
-  "quote"
-  "return"
-  "struct"
-  "type"
-  "where"
-] @keyword
-
-; TODO: fix this
-((identifier) @keyword (#match? @keyword "global|local"))
+] @keyword.storage.modifier
 
 ; ---------
 ; Operators
@@ -239,14 +390,34 @@
 
 [
   (operator)
-  "::"
-  "<:"
-  ":"
-  "=>"
-  "..."
-  "$"
+  "="
+  "∈"
 ] @operator
 
+(adjoint_expression
+  "'" @operator)
+
+(range_expression
+  ":" @operator)
+
+((operator) @keyword.operator
+  (#any-of? @keyword.operator "in" "isa"))
+
+(for_binding
+  "in" @keyword.operator)
+
+(where_clause
+  "where" @keyword.operator)
+
+(where_expression
+  "where" @keyword.operator)
+
+(binary_expression
+  (_)
+  (operator) @operator
+  (identifier) @function
+  (#any-of? @operator "|>" ".|>"))
+
 ; ------------
 ; Punctuations
 ; ------------
@@ -255,40 +426,58 @@
   "."
   "," 
   ";"
+  "::"
+  "->"
 ] @punctuation.delimiter
 
+"..." @punctuation.special
+
 [
-  "["
-  "]"
   "("
   ")" 
+  "["
+  "]"
   "{" 
   "}"
 ] @punctuation.bracket
 
-; ---------------------
-; Remaining identifiers
-; ---------------------
+; ---------
+; Literals
+; ---------
 
-(const_statement
-  (variable_declaration
-    . (identifier) @constant))
+(boolean_literal) @constant.builtin.boolean
+
+(integer_literal) @constant.numeric.integer
+
+(float_literal) @constant.numeric.float
 
-; SCREAMING_SNAKE_CASE
 (
-  (identifier) @constant
-  (#match? @constant "^[A-Z][A-Z0-9_]*$"))
+  ((identifier) @constant.numeric.float)
+  (#match? @constant.numeric.float "^((Inf|NaN)(16|32|64)?)$"))
 
-; remaining identifiers that start with capital letters should be types (PascalCase)
 (
-  (identifier) @type
-  (#match? @type "^[A-Z]"))
+  ((identifier) @constant.builtin)
+  (#match? @constant.builtin "^(nothing|missing|undef)$"))
 
-; Field expressions are either module content or struct fields.
-; Module types and constants should already be captured, so this
-; assumes the remaining identifiers to be struct fields.
-(field_expression
-  (_)
-  (identifier) @variable.other.member)
+(character_literal) @constant.character
 
-(identifier) @variable
+(escape_sequence) @constant.character.escape
+
+(string_literal) @string
+
+(prefixed_string_literal
+  prefix: (identifier) @function.macro) @string
+
+(command_literal) @string
+
+(prefixed_command_literal
+  prefix: (identifier) @function.macro) @string
+
+; ---------
+; Comments
+; ---------
+
+[
+  (line_comment)
+  (block_comment)
+] @comment
diff --git a/runtime/queries/julia/indents.scm b/runtime/queries/julia/indents.scm
index 08f55aa7..d7320177 100644
--- a/runtime/queries/julia/indents.scm
+++ b/runtime/queries/julia/indents.scm
@@ -2,15 +2,39 @@
   (struct_definition)
   (macro_definition)
   (function_definition)
-  (compound_expression)
-  (let_statement)
+  (compound_statement)
   (if_statement)
+  (try_statement)
   (for_statement)
   (while_statement)
+  (let_statement)
+  (quote_statement)
   (do_clause)
-  (parameter_list)
+  (assignment)
+  (for_binding)
+  (call_expression)
+  (parenthesized_expression)
+  (tuple_expression)
+  (comprehension_expression)
+  (matrix_expression)
+  (vector_expression)
 ] @indent
 
 [
   "end"
+  ")"
+  "]"
+  "}"
 ] @outdent
+
+(argument_list
+  . (_) @anchor
+  (#set! "scope" "tail")) @align
+
+(parameter_list
+  . (_) @anchor
+  (#set! "scope" "tail")) @align
+
+(curly_expression
+  . (_) @anchor
+  (#set! "scope" "tail")) @align
diff --git a/runtime/queries/julia/injections.scm b/runtime/queries/julia/injections.scm
index fd174a4a..3b80163f 100644
--- a/runtime/queries/julia/injections.scm
+++ b/runtime/queries/julia/injections.scm
@@ -9,7 +9,8 @@
       (primitive_definition)
       (abstract_definition)
       (struct_definition)
-      (assignment_expression)
+      (short_function_definition)
+      (assignment)
       (const_statement)
     ])
   (#set! injection.language "markdown"))
@@ -21,10 +22,17 @@
   ] @injection.content
   (#set! injection.language "comment"))
 
+(
+  [
+    (command_literal)
+    (prefixed_command_literal)
+  ] @injection.content
+  (#set! injection.language "sh"))
+
 (
   (prefixed_string_literal
     prefix: (identifier) @function.macro) @injection.content
-  (#eq? @function.macro "re")
+  (#eq? @function.macro "r")
   (#set! injection.language "regex"))
 
 (
diff --git a/runtime/queries/julia/locals.scm b/runtime/queries/julia/locals.scm
index 70b31e50..bbf72c0e 100644
--- a/runtime/queries/julia/locals.scm
+++ b/runtime/queries/julia/locals.scm
@@ -2,43 +2,100 @@
 ; Definitions
 ; -----------
 
-; Imports
-(import_statement
+; Variables
+(assignment
   (identifier) @local.definition)
-  
+
+(assignment
+  (tuple_expression
+    (identifier) @local.definition))
+
 ; Constants
 (const_statement
-  (variable_declaration
+  (assignment
     . (identifier) @local.definition))
 
+; let/const bindings
+(let_binding
+  (identifier) @local.definition)
+
+(let_binding
+  (tuple_expression
+    (identifier) @local.definition))
+
+; For bindings
+(for_binding
+  (identifier) @local.definition)
+
+(for_binding
+  (tuple_expression
+    (identifier) @local.definition))
+
+; Types
+(struct_definition
+  name: (identifier) @local.definition)
+
+(abstract_definition
+  name: (identifier) @local.definition)
+
+(abstract_definition
+  name: (identifier) @local.definition)
+
+(type_parameter_list
+  (identifier) @local.definition)
+
+; Module imports
+(import_statement
+  (identifier) @local.definition)
+
 ; Parameters
 (parameter_list
   (identifier) @local.definition)
 
-(typed_parameter
-  . (identifier) @local.definition)
-
-(optional_parameter .
+(optional_parameter
+  .
   (identifier) @local.definition)
 
 (slurp_parameter
   (identifier) @local.definition)
 
-(function_expression
-  . (identifier) @local.definition)
- 
-; ------
-; Scopes
-; ------
+(typed_parameter
+  parameter: (identifier) @local.definition
+  (_))
 
-[
-  (function_definition)
-  (short_function_definition)
-  (macro_definition)
-] @local.scope
+; Single parameter arrow function
+(function_expression
+  .
+  (identifier) @local.definition)
+
+; Function/macro definitions
+(function_definition
+  name: (identifier) @local.definition) @local.scope
+
+(short_function_definition
+  name: (identifier) @local.definition) @local.scope
+
+(macro_definition
+  name: (identifier) @local.definition) @local.scope
 
 ; ----------
 ; References
 ; ----------
 
 (identifier) @local.reference
+ 
+; ------
+; Scopes
+; ------
+
+[
+  (for_statement)
+  (while_statement)
+  (try_statement)
+  (catch_clause)
+  (finally_clause)
+  (let_statement)
+  (quote_statement)
+  (do_clause)
+] @local.scope 
+
diff --git a/runtime/queries/koka/highlights.scm b/runtime/queries/koka/highlights.scm
index 1ef40927..cec2881f 100644
--- a/runtime/queries/koka/highlights.scm
+++ b/runtime/queries/koka/highlights.scm
@@ -1,3 +1,48 @@
+; Identifiers
+
+(qconid) @namespace
+
+(qidop) @namespace
+
+(varid) @variable
+
+(conid) @constructor
+
+(puredecl
+  (binder
+    (identifier
+      [(varid) (idop)] @constant)))
+
+; TODO: Highlight vars differently once helix has an appropriate highlight query
+; for that purpose.
+
+(pparameter
+  (pattern
+    (identifier
+      (varid) @variable.parameter)))
+
+(paramid
+  (identifier
+    (varid) @variable.parameter))
+
+(typedecl
+  "effect"
+  (varid) @type)
+
+(typeid
+  (varid) @type)
+
+(tbinder
+  (varid) @type)
+
+(typecon
+  (varid) @type)
+
+(qvarid
+  (qid) @namespace)
+
+(modulepath (varid) @namespace)
+
 ; Function calls
 
 (appexpr
@@ -55,51 +100,6 @@
   (identifier
     [(varid) (idop)] @function))
 
-; Identifiers
-
-(puredecl
-  (binder
-    (identifier
-      [(varid) (idop)] @constant)))
-
-; TODO: Highlight vars differently once helix has an appropriate highlight query
-; for that purpose.
-
-(pparameter
-  (pattern
-    (identifier
-      (varid) @variable.parameter)))
-
-(paramid
-  (identifier
-    (varid) @variable.parameter))
-
-(typedecl
-  "effect"
-  (varid) @type)
-
-(typeid
-  (varid) @type)
-
-(tbinder
-  (varid) @type)
-
-(typecon
-  (varid) @type)
-
-(qvarid
-  (qid) @namespace)
-
-(modulepath (varid) @namespace)
-
-(qconid) @namespace
-
-(qidop) @namespace
-
-(varid) @variable
-
-(conid) @constructor
-
 ; Operators
 
 [
diff --git a/runtime/queries/kotlin/highlights.scm b/runtime/queries/kotlin/highlights.scm
index 5b19f849..11fae331 100644
--- a/runtime/queries/kotlin/highlights.scm
+++ b/runtime/queries/kotlin/highlights.scm
@@ -1,22 +1,21 @@
+;;; Identifiers
+(simple_identifier) @variable
+
+; `field` keyword inside property getter/setter
+; FIXME: This will highlight the keyword outside of getters and setters
+;        since tree-sitter does not allow us to check for arbitrary nestation
+((simple_identifier) @variable.builtin
+(#eq? @variable.builtin "field"))
+
+; `it` keyword inside lambdas
+; FIXME: This will highlight the keyword outside of lambdas since tree-sitter
+;        does not allow us to check for arbitrary nestation
+((simple_identifier) @variable.builtin
+(#eq? @variable.builtin "it"))
+
+
 ;;; Operators & Punctuation
 
-(multi_line_string_literal
-	"$" @punctuation
-  (interpolated_identifier) @none)
-(multi_line_string_literal
-	"${" @punctuation
-	(interpolated_expression) @none
-	"}" @punctuation.)
-
-; NOTE: `interpolated_identifier`s can be highlighted in any way
-(line_string_literal
-	"$" @punctuation
-	(interpolated_identifier) @none)
-(line_string_literal
-	"${" @punctuation
-	(interpolated_expression) @none
-	"}" @punctuation)
-
 [
 	"."
 	","
@@ -69,6 +68,23 @@
 	"->"
 ] @operator
 
+(multi_line_string_literal
+	"$" @punctuation
+  (interpolated_identifier) @none)
+(multi_line_string_literal
+	"${" @punctuation
+	(interpolated_expression) @none
+	"}" @punctuation.)
+
+; NOTE: `interpolated_identifier`s can be highlighted in any way
+(line_string_literal
+	"$" @punctuation
+	(interpolated_identifier) @none)
+(line_string_literal
+	"${" @punctuation
+	(interpolated_expression) @none
+	"}" @punctuation)
+
 ;;; Keywords
 
 (type_alias "typealias" @keyword)
@@ -281,18 +297,3 @@
 
 ; `this` this keyword inside classes
 (this_expression) @variable.builtin
-
-;;; Identifiers
-; `field` keyword inside property getter/setter
-; FIXME: This will highlight the keyword outside of getters and setters
-;        since tree-sitter does not allow us to check for arbitrary nestation
-((simple_identifier) @variable.builtin
-(#eq? @variable.builtin "field"))
-
-; `it` keyword inside lambdas
-; FIXME: This will highlight the keyword outside of lambdas since tree-sitter
-;        does not allow us to check for arbitrary nestation
-((simple_identifier) @variable.builtin
-(#eq? @variable.builtin "it"))
-
-(simple_identifier) @variable
diff --git a/runtime/queries/koto/highlights.scm b/runtime/queries/koto/highlights.scm
index 61f97123..1e9104aa 100644
--- a/runtime/queries/koto/highlights.scm
+++ b/runtime/queries/koto/highlights.scm
@@ -70,9 +70,6 @@
   "as"
 ] @keyword.control.import
 
-(string (interpolation ("{") @punctuation.special))
-(string (interpolation ("}") @punctuation.special))
-
 [
   "("
   ")"
@@ -83,12 +80,16 @@
   "|"
 ] @punctuation.bracket
 
+(string (interpolation ["{" "}"] @punctuation.special))
+
 [
   ";"
   ":"
   ","
 ] @punctuation.delimiter
 
+(identifier) @variable
+
 (import_module
   (identifier) @module)
 
@@ -148,5 +149,3 @@
 
 (function
   output_type: (identifier) @type)
-
-(identifier) @variable
diff --git a/runtime/queries/ld/highlights.scm b/runtime/queries/ld/highlights.scm
index e0c9dd1e..c4ba0bb1 100644
--- a/runtime/queries/ld/highlights.scm
+++ b/runtime/queries/ld/highlights.scm
@@ -1,11 +1,11 @@
 ; Identifiers
 
+[(NAME) (SYMBOLNAME)] @variable
+
 (section
   .
   (NAME) @namespace)
 
-[(NAME) (SYMBOLNAME)] @variable
-
 ; Operators
 
 [
diff --git a/runtime/queries/ldif/highlights.scm b/runtime/queries/ldif/highlights.scm
index 882ace9f..06f7f6c1 100644
--- a/runtime/queries/ldif/highlights.scm
+++ b/runtime/queries/ldif/highlights.scm
@@ -1,5 +1,7 @@
 (comment) @comment
 
+(attributeType) @type.parameter
+
 ((distinguishedName
   (name
     (name_componet
@@ -13,7 +15,6 @@
 (changerecord) @constant
 (mod_spec) @constant
 
-(attributeType) @type.parameter
 (change_modify) @string
 
 (value_spec) @keyword
diff --git a/runtime/queries/lean/highlights.scm b/runtime/queries/lean/highlights.scm
index ca19b835..43e3a62e 100644
--- a/runtime/queries/lean/highlights.scm
+++ b/runtime/queries/lean/highlights.scm
@@ -1,3 +1,8 @@
+; Variables
+(identifier) @variable
+
+; Namespaces
+
 (open
   namespace: (identifier) @namespace)
 (namespace
@@ -212,6 +217,3 @@
 
 ;; Error
 (ERROR) @error
-
-; Variables
-(identifier) @variable
diff --git a/runtime/queries/lua/highlights.scm b/runtime/queries/lua/highlights.scm
index 2f3b3c05..4fedcd57 100644
--- a/runtime/queries/lua/highlights.scm
+++ b/runtime/queries/lua/highlights.scm
@@ -115,6 +115,18 @@
  "}"
 ] @punctuation.bracket
 
+;; Variables
+(identifier) @variable
+
+((identifier) @variable.builtin
+ (#eq? @variable.builtin "self"))
+
+(variable_list
+  (attribute
+    "<" @punctuation.bracket
+    (identifier) @attribute
+    ">" @punctuation.bracket))
+
 ; ;; Constants
 [
 (false)
@@ -208,17 +220,5 @@
 ;; Property
 (dot_index_expression field: (identifier) @variable.other.member)
 
-;; Variables
-((identifier) @variable.builtin
- (#eq? @variable.builtin "self"))
-
-(variable_list
-  (attribute
-    "<" @punctuation.bracket
-    (identifier) @attribute
-    ">" @punctuation.bracket))
-
-(identifier) @variable
-
 ;; Error
 (ERROR) @error
diff --git a/runtime/queries/meson/highlights.scm b/runtime/queries/meson/highlights.scm
index c4775540..58c2baca 100644
--- a/runtime/queries/meson/highlights.scm
+++ b/runtime/queries/meson/highlights.scm
@@ -1,7 +1,6 @@
 (comment) @comment
 
-; these are listed first, because they override keyword queries
-(function_expression (identifier) @function)
+(identifier) @variable
 
 [
     (assignment_operator)
@@ -59,4 +58,5 @@
     (fstring_literal)
 ] @string
 
-(identifier) @variable
+; these are listed last, because they override keyword queries
+(function_expression (identifier) @function)
diff --git a/runtime/queries/mojo/highlights.scm b/runtime/queries/mojo/highlights.scm
index 7acaf1ea..4ad3500d 100644
--- a/runtime/queries/mojo/highlights.scm
+++ b/runtime/queries/mojo/highlights.scm
@@ -1,3 +1,28 @@
+; Variables
+
+(identifier) @variable
+
+(attribute attribute: (identifier) @variable.other.member)
+
+((identifier) @constant
+  (#match? @constant "^_*[A-Z][A-Z\\d_]*$"))
+
+((identifier) @type
+  (#match? @type "^[A-Z]"))
+
+; Literals
+(none) @constant.builtin
+[
+  (true)
+  (false)
+] @constant.builtin.boolean
+
+(integer) @constant.numeric.integer
+(float) @constant.numeric.float
+(comment) @comment
+(string) @string
+(escape_sequence) @constant.character.escape
+
 ; Docstrings
 
 (expression_statement (string) @comment.block.documentation)
@@ -98,30 +123,6 @@
 (class_definition name: (identifier) @type)
 (class_definition superclasses: (argument_list (identifier) @type))
 
-; Variables
-
-((identifier) @constant
-  (#match? @constant "^_*[A-Z][A-Z\\d_]*$"))
-
-((identifier) @type
-  (#match? @type "^[A-Z]"))
-
-(attribute attribute: (identifier) @variable.other.member)
-(identifier) @variable
-
-; Literals
-(none) @constant.builtin
-[
-  (true)
-  (false)
-] @constant.builtin.boolean
-
-(integer) @constant.numeric.integer
-(float) @constant.numeric.float
-(comment) @comment
-(string) @string
-(escape_sequence) @constant.character.escape
-
 ["," "." ":" ";" (ellipsis)] @punctuation.delimiter
 (interpolation
   "{" @punctuation.special
diff --git a/runtime/queries/move/highlights.scm b/runtime/queries/move/highlights.scm
index 86a79dc2..bf607e1f 100644
--- a/runtime/queries/move/highlights.scm
+++ b/runtime/queries/move/highlights.scm
@@ -23,12 +23,16 @@
 (borrow_expression "&" @keyword.storage.modifier.ref)
 (borrow_expression "&mut" @keyword.storage.modifier.mut)
 
+(identifier) @variable
+
 (constant_identifier) @constant
 ((identifier) @constant
  (#match? @constant "^[A-Z][A-Z\\d_]*$"))
 
 (function_identifier) @function
 
+(primitive_type) @type.builtin
+
 (struct_identifier) @type
 (pack_expression
   access: (module_access
@@ -152,6 +156,3 @@
   "with"
 ] @keyword
 
-(primitive_type) @type.buildin
-
-(identifier) @variable
diff --git a/runtime/queries/nasm/highlights.scm b/runtime/queries/nasm/highlights.scm
index 5e3cfebe..6cdc4f97 100644
--- a/runtime/queries/nasm/highlights.scm
+++ b/runtime/queries/nasm/highlights.scm
@@ -4,6 +4,12 @@
 
 (preproc_expression) @keyword.directive
 
+(word) @variable
+((word) @constant
+  (#match? @constant "^[A-Z_][?A-Z_0-9]+$"))
+((word) @constant.builtin
+  (#match? @constant.builtin "^__\\?[A-Z_a-z0-9]+\\?__$"))
+
 [
   (line_here_token)
   (section_here_token)
@@ -56,12 +62,6 @@
 (float_literal) @constant.numeric.float
 (packed_bcd_literal) @constant.numeric.integer
 
-((word) @constant
-  (#match? @constant "^[A-Z_][?A-Z_0-9]+$"))
-((word) @constant.builtin
-  (#match? @constant.builtin "^__\\?[A-Z_a-z0-9]+\\?__$"))
-(word) @variable
-
 (preproc_arg) @keyword.directive
 
 [
diff --git a/runtime/queries/nim/highlights.scm b/runtime/queries/nim/highlights.scm
index e02ba516..04c4e1b2 100644
--- a/runtime/queries/nim/highlights.scm
+++ b/runtime/queries/nim/highlights.scm
@@ -1,3 +1,5 @@
+(identifier) @variable
+
 ;; Constants, Comments, and Literals
 
 (comment) @comment.line
@@ -329,5 +331,3 @@
 (dot_expression
   left: (identifier) @variable
   right: (identifier) @variable.other.member)
-
-(identifier) @variable
diff --git a/runtime/queries/nix/highlights.scm b/runtime/queries/nix/highlights.scm
index 4633e178..b55bcf8c 100644
--- a/runtime/queries/nix/highlights.scm
+++ b/runtime/queries/nix/highlights.scm
@@ -1,5 +1,23 @@
 (comment) @comment
 
+[
+  ";"
+  "."
+  ","
+  "="
+  ":"
+  (ellipses)
+] @punctuation.delimiter
+
+[
+  "("
+  ")"
+  "["
+  "]"
+  "{"
+  "}"
+] @punctuation.bracket
+
 "assert" @keyword.control.exception
 "or" @keyword.operator
 "rec" @keyword.control.repeat
@@ -17,6 +35,18 @@
   "with" 
 ] @keyword
 
+(variable_expression name: (identifier) @variable)
+
+(select_expression
+  attrpath: (attrpath attr: (identifier)) @variable.other.member)
+
+(apply_expression
+  function: [
+    (variable_expression name: (identifier) @function)
+    (select_expression
+      attrpath: (attrpath
+        attr: (identifier) @function .))])
+
 ((identifier) @variable.builtin
  (#match? @variable.builtin "^(__currentSystem|__currentTime|__nixPath|__nixVersion|__storeDir|builtins)$")
  (#is-not? local))
@@ -59,28 +89,16 @@
   name: (identifier) @variable.parameter
   "?"? @punctuation.delimiter)
 
-(select_expression
-  attrpath: (attrpath attr: (identifier)) @variable.other.member)
-
 (interpolation
   "${" @punctuation.special
   "}" @punctuation.special) @embedded
 
-(apply_expression
-  function: [
-    (variable_expression name: (identifier) @function)
-    (select_expression
-      attrpath: (attrpath
-        attr: (identifier) @function .))])
-
 (unary_expression
   operator: _ @operator)
 
 (binary_expression
   operator: _ @operator)
 
-(variable_expression name: (identifier) @variable)
-
 (binding
   attrpath: (attrpath attr: (identifier)) @variable.other.member)
 
@@ -92,21 +110,3 @@
   "?" @operator
   attrpath: (attrpath
     attr: (identifier) @variable.other.member))
-
-[
-  ";"
-  "."
-  ","
-  "="
-  ":"
-  (ellipses)
-] @punctuation.delimiter
-
-[
-  "("
-  ")"
-  "["
-  "]"
-  "{"
-  "}"
-] @punctuation.bracket
\ No newline at end of file
diff --git a/runtime/queries/ocaml/highlights.scm b/runtime/queries/ocaml/highlights.scm
index f2a4f0a4..5e2a576f 100644
--- a/runtime/queries/ocaml/highlights.scm
+++ b/runtime/queries/ocaml/highlights.scm
@@ -1,3 +1,25 @@
+; Punctuation
+;------------
+
+"%" @punctuation.special
+
+["(" ")" "[" "]" "{" "}" "[|" "|]" "[<" "[>"] @punctuation.bracket
+
+[
+  "," "." ";" ":" "=" "|" "~" "?" "+" "-" "!" ">" "&"
+  "->" ";;" ":>" "+=" ":=" ".."
+] @punctuation.delimiter
+
+(object_type ["<" ">"] @punctuation.bracket)
+
+(attribute ["[@" "]"] @punctuation.special)
+(item_attribute ["[@@" "]"] @punctuation.special)
+(floating_attribute ["[@@@" "]"] @punctuation.special)
+(extension ["[%" "]"] @punctuation.special)
+(item_extension ["[%%" "]"] @punctuation.special)
+(quoted_extension ["{%" "}"] @punctuation.special)
+(quoted_item_extension ["{%%" "}"] @punctuation.special)
+
 ; Modules
 ;--------
 
@@ -83,9 +105,7 @@
 ; Operators
 ;----------
 
-(match_expression (match_operator) @keyword)
-
-(value_definition [(let_operator) (let_and_operator)] @keyword)
+["*" "#" "::" "<-"] @operator
 
 [
   (prefix_operator)
@@ -105,7 +125,9 @@
   (match_operator)
 ] @operator
 
-["*" "#" "::" "<-"] @operator
+(match_expression (match_operator) @keyword)
+
+(value_definition [(let_operator) (let_and_operator)] @keyword)
 
 ; Keywords
 ;---------
@@ -118,28 +140,6 @@
   "then" "to" "try" "type" "val" "virtual" "when" "while" "with"
 ] @keyword
 
-; Punctuation
-;------------
-
-(attribute ["[@" "]"] @punctuation.special)
-(item_attribute ["[@@" "]"] @punctuation.special)
-(floating_attribute ["[@@@" "]"] @punctuation.special)
-(extension ["[%" "]"] @punctuation.special)
-(item_extension ["[%%" "]"] @punctuation.special)
-(quoted_extension ["{%" "}"] @punctuation.special)
-(quoted_item_extension ["{%%" "}"] @punctuation.special)
-
-"%" @punctuation.special
-
-["(" ")" "[" "]" "{" "}" "[|" "|]" "[<" "[>"] @punctuation.bracket
-
-(object_type ["<" ">"] @punctuation.bracket)
-
-[
-  "," "." ";" ":" "=" "|" "~" "?" "+" "-" "!" ">" "&"
-  "->" ";;" ":>" "+=" ":=" ".."
-] @punctuation.delimiter
-
 ; Attributes
 ;-----------
 
diff --git a/runtime/queries/odin/highlights.scm b/runtime/queries/odin/highlights.scm
index ed302cdb..ed8f03ab 100644
--- a/runtime/queries/odin/highlights.scm
+++ b/runtime/queries/odin/highlights.scm
@@ -1,3 +1,8 @@
+
+; Variables
+
+(identifier) @variable
+
 [
   (calling_convention)
   (tag)
@@ -264,7 +269,3 @@
 (call_expression argument: (identifier) @variable.parameter "=")
 
 (procedure_type (parameters (parameter (identifier) @variable.parameter)))
-
-; Variables
-
-(identifier) @variable
diff --git a/runtime/queries/opencl/highlights.scm b/runtime/queries/opencl/highlights.scm
index 9d76d6c6..36133bd2 100644
--- a/runtime/queries/opencl/highlights.scm
+++ b/runtime/queries/opencl/highlights.scm
@@ -106,6 +106,11 @@
 
 [(true) (false)] @constant.builtin.boolean
 
+(identifier) @variable
+
+((identifier) @constant
+  (#match? @constant "^[A-Z][A-Z\\d_]*$"))
+
 (enumerator name: (identifier) @type.enum.variant)
 
 (string_literal) @string
@@ -142,9 +147,4 @@
 (vector_type) @type.builtin
 (other_builtin_type) @type.builtin
 
-((identifier) @constant
-  (#match? @constant "^[A-Z][A-Z\\d_]*$"))
-
-(identifier) @variable
-
 (comment) @comment
diff --git a/runtime/queries/openscad/highlights.scm b/runtime/queries/openscad/highlights.scm
index c06738e8..90d5ac59 100644
--- a/runtime/queries/openscad/highlights.scm
+++ b/runtime/queries/openscad/highlights.scm
@@ -3,13 +3,14 @@
 (boolean) @constant.builtin.boolean
 (include_path) @string.special.path
 
+(identifier) @variable
+
 (parameters_declaration (identifier) @variable.parameter)
 (function_declaration name: (identifier) @function)
 
 (function_call function: (identifier) @function)
 (module_call name: (identifier) @function)
 
-(identifier) @variable
 (special_variable) @variable.builtin
 
 [
@@ -60,4 +61,4 @@
   "."
 ] @punctuation.delimiter
 
-(comment) @comment
\ No newline at end of file
+(comment) @comment
diff --git a/runtime/queries/perl/highlights.scm b/runtime/queries/perl/highlights.scm
index bf5918b9..5f224333 100644
--- a/runtime/queries/perl/highlights.scm
+++ b/runtime/queries/perl/highlights.scm
@@ -39,6 +39,8 @@
 
 (comment) @comment
 
+(function) @function
+
 (eof_marker) @keyword.directive
 (data_section) @comment
 
@@ -95,5 +97,3 @@
 
 (func0op_call_expression function: _ @function.builtin)
 (func1op_call_expression function: _ @function.builtin)
-
-(function) @function
diff --git a/runtime/queries/php-only/highlights.scm b/runtime/queries/php-only/highlights.scm
index 9fdbe029..d19e0cee 100644
--- a/runtime/queries/php-only/highlights.scm
+++ b/runtime/queries/php-only/highlights.scm
@@ -1,6 +1,23 @@
 (php_tag) @tag
 "?>" @tag
 
+; Variables
+
+(variable_name) @variable
+
+(relative_scope) @variable.builtin
+
+((name) @constant
+ (#match? @constant "^_?[A-Z][A-Z\\d_]+$"))
+((name) @constant.builtin
+ (#match? @constant.builtin "^__[A-Z][A-Z\d_]+__$"))
+
+((name) @constructor
+ (#match? @constructor "^[A-Z]"))
+
+((name) @variable.builtin
+ (#eq? @variable.builtin "this"))
+
 ; Types
 
 (primitive_type) @type.builtin
@@ -38,23 +55,6 @@
 (member_access_expression
   name: (name) @variable.other.member)
 
-; Variables
-
-(relative_scope) @variable.builtin
-
-((name) @constant
- (#match? @constant "^_?[A-Z][A-Z\\d_]+$"))
-((name) @constant.builtin
- (#match? @constant.builtin "^__[A-Z][A-Z\d_]+__$"))
-
-((name) @constructor
- (#match? @constructor "^[A-Z]"))
-
-((name) @variable.builtin
- (#eq? @variable.builtin "this"))
-
-(variable_name) @variable
-
 ; Basic tokens
 [
   (string)
diff --git a/runtime/queries/php/highlights.scm b/runtime/queries/php/highlights.scm
index b9429ae8..737e2d5f 100644
--- a/runtime/queries/php/highlights.scm
+++ b/runtime/queries/php/highlights.scm
@@ -1,6 +1,21 @@
 (php_tag) @tag
 "?>" @tag
 
+; Variables
+
+(relative_scope) @variable.builtin
+
+(variable_name) @variable
+
+((name) @constant
+ (#match? @constant "^_?[A-Z][A-Z\\d_]+$"))
+
+((name) @constructor
+ (#match? @constructor "^[A-Z]"))
+
+((name) @variable.builtin
+ (#eq? @variable.builtin "this"))
+
 ; Types
 [
   (primitive_type)
@@ -110,21 +125,6 @@
 (member_access_expression
   name: (name) @variable.other.member)
 
-; Variables
-
-(relative_scope) @variable.builtin
-
-((name) @constant
- (#match? @constant "^_?[A-Z][A-Z\\d_]+$"))
-
-((name) @constructor
- (#match? @constructor "^[A-Z]"))
-
-((name) @variable.builtin
- (#eq? @variable.builtin "this"))
-
-(variable_name) @variable
-
 ; Attributes
 (attribute_list) @attribute
 
diff --git a/runtime/queries/pkl/highlights.scm b/runtime/queries/pkl/highlights.scm
index 1de6ba3c..f08660d4 100644
--- a/runtime/queries/pkl/highlights.scm
+++ b/runtime/queries/pkl/highlights.scm
@@ -149,14 +149,14 @@
 
 ; Identifiers
 
+(identifier) @variable
+
 (classProperty (identifier) @variable.other.member)
 (objectProperty (identifier) @variable.other.member)
 
 (parameterList (typedIdentifier (identifier) @variable.parameter))
 (objectBodyParameters (typedIdentifier (identifier) @variable.parameter))
 
-(identifier) @variable
-
 ; Method definitions
 
 (classMethod (methodHeader (identifier)) @function.method)
diff --git a/runtime/queries/ponylang/highlights.scm b/runtime/queries/ponylang/highlights.scm
index 2d0594a7..f67e9a68 100644
--- a/runtime/queries/ponylang/highlights.scm
+++ b/runtime/queries/ponylang/highlights.scm
@@ -9,6 +9,7 @@
 (character) @constant.character
 
 ;; strings and docstring
+(string) @string
 (source_file docstring: (string) @string.special)
 (entity docstring: (string) @string.special)
 (method docstring: (string) @string.special) ; docstring for methods without body
@@ -18,7 +19,6 @@
 (behavior body: (block . (string) @string.special))
 (constructor body: (block . (string) @string.special))
 (field docstring: (string) @string.special)
-(string) @string
 
 ;; Punctuation
 [
@@ -137,6 +137,14 @@
   "<="
 ] @operator
 
+;; variables
+;; references to upper case things are considered constructors
+(identifier) @variable
+(
+  (identifier) @constructor
+  (#match? @constructor "^[A-Z]")
+)
+
 ;; Types
 (entity name: (identifier) @type)
 (nominal_type name: (identifier) @type)
@@ -166,11 +174,3 @@
 ;; annotations
 (annotations (identifier) @attribute)
 
-;; variables
-;; references to upper case things are considered constructors
-(
-  (identifier) @constructor
-  (#match @constructor "^[A-Z]")
-)
-(identifier) @variable
-
diff --git a/runtime/queries/purescript/highlights.scm b/runtime/queries/purescript/highlights.scm
index b7868e6e..314fb313 100644
--- a/runtime/queries/purescript/highlights.scm
+++ b/runtime/queries/purescript/highlights.scm
@@ -1,19 +1,3 @@
-; ----------------------------------------------------------------------------
-; Record fields would need to come before literal strings in order to be captured correctly
-
- (record_accessor
-    field: [ (variable)
-             (string)
-             (triple_quote_string)
-           ] @variable.other.member)
-
- (exp_record_access
-    field: [ (variable)
-             (string)
-             (triple_quote_string)
-           ] @variable.other.member)
-
-
 ; ----------------------------------------------------------------------------
 ; Literals and comments
 
@@ -21,6 +5,7 @@
  (exp_negation) @constant.numeric.integer
  (exp_literal (number)) @constant.numeric.float
  (char) @constant.character
+
  [
    (string)
    (triple_quote_string)
@@ -28,7 +13,6 @@
 
  (comment) @comment
 
-
 ; ----------------------------------------------------------------------------
 ; Punctuation
 
@@ -41,18 +25,19 @@
    "]"
  ] @punctuation.bracket
 
- [
- (comma)
- ";"
- ] @punctuation.delimiter
+ (comma) @punctuation.delimiter
 
+; ----------------------------------------------------------------------------
+; Types
+
+ (type) @type
+
+ (constructor) @constructor
 
 ; ----------------------------------------------------------------------------
 ; Keywords, operators, includes
 
- ; This needs to come before the other "else" in
- ; order to be highlighted correctly
- (class_instance "else" @keyword)
+ (module) @namespace
 
  [
    "if"
@@ -95,7 +80,6 @@
  ] @operator
 
  (qualified_module (module) @constructor)
- (module) @namespace
  (qualified_type (module) @namespace)
  (qualified_variable (module) @namespace)
  (import (module) @namespace)
@@ -122,6 +106,11 @@
    "infixr"
  ] @keyword
 
+ ; NOTE
+ ; Needs to come after the other `else` in
+ ; order to be highlighted correctly
+ (class_instance "else" @keyword)
+
  (type_role_declaration
    "role" @keyword
    role: (type_role) @keyword)
@@ -131,10 +120,27 @@
 ; ----------------------------------------------------------------------------
 ; Functions and variables
 
+ (variable) @variable
+
  (row_field (field_name) @variable.other.member)
  (record_field (field_name) @variable.other.member)
  (record_field (field_pun) @variable.other.member)
 
+ ; NOTE
+ ; Record fields must come after literal strings and
+ ; plain variables in order to be highlighted correctly
+ (record_accessor
+    field: [ (variable)
+             (string)
+             (triple_quote_string)
+           ] @variable.other.member)
+
+ (exp_record_access
+    field: [ (variable)
+             (string)
+             (triple_quote_string)
+           ] @variable.other.member)
+
  (signature name: (variable) @type)
  (function name: (variable) @function)
  (class_instance (instance_name) @function)
@@ -151,14 +157,5 @@
  (exp_ticked (exp_name (variable) @operator))
  (exp_ticked (exp_name (qualified_variable (variable) @operator)))
 
- (variable) @variable
-
- ("@" @namespace)  ; "as" pattern operator, e.g. x@Constructor
-
-; ----------------------------------------------------------------------------
-; Types
-
- (type) @type
-
- (constructor) @constructor
+ (patterns (pat_as "@" @namespace))
 
diff --git a/runtime/queries/python/highlights.scm b/runtime/queries/python/highlights.scm
index 9f7d2790..0786eba6 100644
--- a/runtime/queries/python/highlights.scm
+++ b/runtime/queries/python/highlights.scm
@@ -1,125 +1,8 @@
-; Imports
-
-(dotted_name
-  (identifier)* @namespace)
-
-(aliased_import
-  alias: (identifier) @namespace)
-
-; Builtin functions
-
-((call
-  function: (identifier) @function.builtin)
- (#match?
-   @function.builtin
-   "^(abs|all|any|ascii|bin|bool|breakpoint|bytearray|bytes|callable|chr|classmethod|compile|complex|delattr|dict|dir|divmod|enumerate|eval|exec|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|isinstance|issubclass|iter|len|list|locals|map|max|memoryview|min|next|object|oct|open|ord|pow|print|property|range|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|vars|zip|__import__)$"))
-
-; Function calls
-
-[
-  "def"
-  "lambda"
-] @keyword.function
-
-(call
-  function: (attribute attribute: (identifier) @constructor)
- (#match? @constructor "^[A-Z]"))
-(call
-  function: (identifier) @constructor
- (#match? @constructor "^[A-Z]"))
-
-(call
-  function: (attribute attribute: (identifier) @function.method))
-
-(call
-  function: (identifier) @function)
-
-; Function definitions
-
-(function_definition
-  name: (identifier) @constructor
- (#match? @constructor "^(__new__|__init__)$"))
-
-(function_definition
-  name: (identifier) @function)
-
-; Decorators
-
-(decorator) @function
-(decorator (identifier) @function)
-(decorator (attribute attribute: (identifier) @function))
-(decorator (call
-  function: (attribute attribute: (identifier) @function)))
-
-; Parameters
-
-((identifier) @variable.builtin
- (#match? @variable.builtin "^(self|cls)$"))
-
-(parameters (identifier) @variable.parameter)
-(parameters (typed_parameter (identifier) @variable.parameter))
-(parameters (default_parameter name: (identifier) @variable.parameter))
-(parameters (typed_default_parameter name: (identifier) @variable.parameter))
-
-(parameters
-  (list_splat_pattern ; *args
-    (identifier) @variable.parameter))
-(parameters
-  (dictionary_splat_pattern ; **kwargs
-    (identifier) @variable.parameter))
-
-(lambda_parameters
-  (identifier) @variable.parameter)
-
-; Types
-
-((identifier) @type.builtin
- (#match?
-   @type.builtin
-   "^(bool|bytes|dict|float|frozenset|int|list|set|str|tuple)$"))
-
-; In type hints make everything types to catch non-conforming identifiers
-; (e.g., datetime.datetime) and None
-(type [(identifier) (none)] @type)
-; Handle [] . and | nesting 4 levels deep
-(type
-  (_ [(identifier) (none)]? @type
-    (_ [(identifier) (none)]? @type
-      (_ [(identifier) (none)]? @type
-        (_ [(identifier) (none)]? @type)))))
-
-(class_definition name: (identifier) @type)
-(class_definition superclasses: (argument_list (identifier) @type))
-
-; Variables
-
-((identifier) @constant
- (#match? @constant "^_*[A-Z][A-Z\\d_]*$"))
-
-((identifier) @type
- (#match? @type "^[A-Z]"))
-
-(attribute attribute: (identifier) @variable.other.member)
-(identifier) @variable
-
-; Literals
-(none) @constant.builtin
-[
-  (true)
-  (false)
-] @constant.builtin.boolean
-
-(integer) @constant.numeric.integer
-(float) @constant.numeric.float
-(comment) @comment
-(string) @string
-(escape_sequence) @constant.character.escape
-
 ["," "." ":" ";" (ellipsis)] @punctuation.delimiter
+["(" ")" "[" "]" "{" "}"] @punctuation.bracket
 (interpolation
   "{" @punctuation.special
   "}" @punctuation.special) @embedded
-["(" ")" "[" "]" "{" "}"] @punctuation.bracket
 
 [
   "-"
@@ -223,8 +106,128 @@
   "is"
 ] @keyword.operator
 
+; Literals
+(none) @constant.builtin
+[
+  (true)
+  (false)
+] @constant.builtin.boolean
+
+(integer) @constant.numeric.integer
+(float) @constant.numeric.float
+(comment) @comment
+(string) @string
+(escape_sequence) @constant.character.escape
+
+; Variables
+
+(identifier) @variable
+
+(attribute attribute: (identifier) @variable.other.member)
+
+; Imports
+
+(dotted_name
+  (identifier)* @namespace)
+
+(aliased_import
+  alias: (identifier) @namespace)
+
+; Function calls
+
+[
+  "def"
+  "lambda"
+] @keyword.function
+
+(call
+  function: (attribute attribute: (identifier) @function.method))
+
+(call
+  function: (identifier) @function)
+
+(call
+  function: (attribute attribute: (identifier) @constructor)
+ (#match? @constructor "^[A-Z]"))
+(call
+  function: (identifier) @constructor
+ (#match? @constructor "^[A-Z]"))
+
+; Builtin functions
+
+((call
+  function: (identifier) @function.builtin)
+ (#match?
+   @function.builtin
+   "^(abs|all|any|ascii|bin|bool|breakpoint|bytearray|bytes|callable|chr|classmethod|compile|complex|delattr|dict|dir|divmod|enumerate|eval|exec|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|isinstance|issubclass|iter|len|list|locals|map|max|memoryview|min|next|object|oct|open|ord|pow|print|property|range|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|vars|zip|__import__)$"))
+
+; Function definitions
+
+(function_definition
+  name: (identifier) @function)
+
+(function_definition
+  name: (identifier) @constructor
+ (#match? @constructor "^(__new__|__init__)$"))
+
+; Decorators
+
+(decorator) @function
+(decorator (identifier) @function)
+(decorator (attribute attribute: (identifier) @function))
+(decorator (call
+  function: (attribute attribute: (identifier) @function)))
+
+; Parameters
+
+(parameters (identifier) @variable.parameter)
+(parameters (typed_parameter (identifier) @variable.parameter))
+(parameters (default_parameter name: (identifier) @variable.parameter))
+(parameters (typed_default_parameter name: (identifier) @variable.parameter))
+
+(parameters
+  (list_splat_pattern ; *args
+    (identifier) @variable.parameter))
+(parameters
+  (dictionary_splat_pattern ; **kwargs
+    (identifier) @variable.parameter))
+
+(lambda_parameters
+  (identifier) @variable.parameter)
+
+; Builtins, constants, etc.
+
+((identifier) @variable.builtin
+ (#match? @variable.builtin "^(self|cls)$"))
+
 ((identifier) @type.builtin
   (#match? @type.builtin
     "^(BaseException|Exception|ArithmeticError|BufferError|LookupError|AssertionError|AttributeError|EOFError|FloatingPointError|GeneratorExit|ImportError|ModuleNotFoundError|IndexError|KeyError|KeyboardInterrupt|MemoryError|NameError|NotImplementedError|OSError|OverflowError|RecursionError|ReferenceError|RuntimeError|StopIteration|StopAsyncIteration|SyntaxError|IndentationError|TabError|SystemError|SystemExit|TypeError|UnboundLocalError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ValueError|ZeroDivisionError|EnvironmentError|IOError|WindowsError|BlockingIOError|ChildProcessError|ConnectionError|BrokenPipeError|ConnectionAbortedError|ConnectionRefusedError|ConnectionResetError|FileExistsError|FileNotFoundError|InterruptedError|IsADirectoryError|NotADirectoryError|PermissionError|ProcessLookupError|TimeoutError|Warning|UserWarning|DeprecationWarning|PendingDeprecationWarning|SyntaxWarning|RuntimeWarning|FutureWarning|ImportWarning|UnicodeWarning|BytesWarning|ResourceWarning)$"))
 
+((identifier) @type
+ (#match? @type "^[A-Z]"))
+
+((identifier) @constant
+ (#match? @constant "^_*[A-Z][A-Z\\d_]*$"))
+
+; Types
+
+((identifier) @type.builtin
+ (#match?
+   @type.builtin
+   "^(bool|bytes|dict|float|frozenset|int|list|set|str|tuple)$"))
+
+; In type hints make everything types to catch non-conforming identifiers
+; (e.g., datetime.datetime) and None
+(type [(identifier) (none)] @type)
+; Handle [] . and | nesting 4 levels deep
+(type
+  (_ [(identifier) (none)]? @type
+    (_ [(identifier) (none)]? @type
+      (_ [(identifier) (none)]? @type
+        (_ [(identifier) (none)]? @type)))))
+
+(class_definition name: (identifier) @type)
+(class_definition superclasses: (argument_list (identifier) @type))
+
 (ERROR) @error
diff --git a/runtime/queries/r/highlights.scm b/runtime/queries/r/highlights.scm
index 4b931a05..34d70bd8 100644
--- a/runtime/queries/r/highlights.scm
+++ b/runtime/queries/r/highlights.scm
@@ -1,5 +1,6 @@
 ; highlights.scm
 
+(identifier) @variable
 
 ; Literals
 
@@ -122,7 +123,5 @@
 (namespace_get function: (identifier) @function.method)
 (namespace_get_internal function: (identifier) @function.method)
 
-(identifier) @variable
-
 ; Error
 (ERROR) @error
diff --git a/runtime/queries/rescript/highlights.scm b/runtime/queries/rescript/highlights.scm
index 51d37b87..cfb8a351 100644
--- a/runtime/queries/rescript/highlights.scm
+++ b/runtime/queries/rescript/highlights.scm
@@ -1,5 +1,69 @@
 (comment) @comment
 
+[
+  "."
+  ","
+  "|"
+] @punctuation.delimiter
+
+[
+  "++"
+  "+"
+  "+."
+  "-"
+  "-."
+  "*"
+  "**"
+  "*."
+  "/."
+  "<="
+  "=="
+  "==="
+  "!"
+  "!="
+  "!=="
+  ">="
+  "&&"
+  "||"
+  "="
+  ":="
+  "->"
+  "|>"
+  ":>"
+  "+="
+  (uncurry)
+] @operator
+
+; Explicitly enclose these operators with binary_expression
+; to avoid confusion with JSX tag delimiters
+(binary_expression ["<" ">" "/"] @operator)
+
+[
+  "("
+  ")"
+  "{"
+  "}"
+  "["
+  "]"
+] @punctuation.bracket
+
+(polyvar_type
+  [
+   "["
+   "[>"
+   "[<"
+   "]"
+  ] @punctuation.bracket)
+
+[
+  "~"
+  "?"
+  "=>"
+  ".."
+  "..."
+] @punctuation.special
+
+
 ; Identifiers
 ;------------
 
@@ -143,69 +207,6 @@
   "while"
 ] @keyword.control.conditional
 
-[
-  "."
-  ","
-  "|"
-] @punctuation.delimiter
-
-[
-  "++"
-  "+"
-  "+."
-  "-"
-  "-."
-  "*"
-  "**"
-  "*."
-  "/."
-  "<="
-  "=="
-  "==="
-  "!"
-  "!="
-  "!=="
-  ">="
-  "&&"
-  "||"
-  "="
-  ":="
-  "->"
-  "|>"
-  ":>"
-  "+="
-  (uncurry)
-] @operator
-
-; Explicitly enclose these operators with binary_expression
-; to avoid confusion with JSX tag delimiters
-(binary_expression ["<" ">" "/"] @operator)
-
-[
-  "("
-  ")"
-  "{"
-  "}"
-  "["
-  "]"
-] @punctuation.bracket
-
-(polyvar_type
-  [
-   "["
-   "[>"
-   "[<"
-   "]"
-  ] @punctuation.bracket)
-
-[
-  "~"
-  "?"
-  "=>"
-  ".."
-  "..."
-] @punctuation.special
-
 (ternary_expression ["?" ":"] @operator)
 
 ; JSX
diff --git a/runtime/queries/ron/highlights.scm b/runtime/queries/ron/highlights.scm
index 1061d559..fe0545cd 100644
--- a/runtime/queries/ron/highlights.scm
+++ b/runtime/queries/ron/highlights.scm
@@ -1,3 +1,11 @@
+; Structs
+;------------
+
+(enum_variant) @type.enum.variant
+(struct_entry (_) @variable.other.member ":")
+(struct_name (identifier)) @type
+(unit_struct) @type.builtin
+
 ; Literals
 ;------------
 
@@ -7,16 +15,6 @@
 (float) @constant.numeric.float
 (char) @constant.character
 
-; Structs
-;------------
-
-(enum_variant) @type.enum.variant
-(struct_entry (_) @variable.other.member ":")
-(struct_name (identifier)) @type
-
-
-
-
 ; Comments
 ;------------
 
@@ -37,6 +35,7 @@
 "{" @punctuation.bracket
 "}" @punctuation.bracket
 
+"-" @operator
 
 ; Special
 ;------------
diff --git a/runtime/queries/ruby/highlights.scm b/runtime/queries/ruby/highlights.scm
index 7c69276b..35babfe3 100644
--- a/runtime/queries/ruby/highlights.scm
+++ b/runtime/queries/ruby/highlights.scm
@@ -1,3 +1,81 @@
+; Operators
+[
+":"
+"?"
+"~"
+"=>"
+"->"
+"!"
+] @operator
+
+(assignment
+  "=" @operator)
+
+(operator_assignment
+  operator: ["+=" "-=" "*=" "**=" "/=" "||=" "|=" "&&=" "&=" "%=" ">>=" "<<=" "^="] @operator)
+
+(binary
+  operator: ["/" "|" "==" "===" "||" "&&" ">>" "<<" "<" ">" "<=" ">=" "&" "^" "!~" "=~" "<=>" "**" "*" "!=" "%" "-" "+"] @operator)
+
+(range
+  operator: [".." "..."] @operator)
+
+[
+  ","
+  ";"
+  "."
+  "&."
+] @punctuation.delimiter
+
+[
+  "|"
+  "("
+  ")"
+  "["
+  "]"
+  "{"
+  "}"
+  "%w("
+  "%i("
+] @punctuation.bracket
+
+; Identifiers
+
+[
+  (identifier)
+] @variable
+((identifier) @function.method
+ (#is-not? local))
+
+[
+  (class_variable)
+  (instance_variable)
+] @variable.other.member
+
+((identifier) @constant.builtin
+ (#match? @constant.builtin "^(__FILE__|__LINE__|__ENCODING__)$"))
+
+((constant) @constant.builtin
+ (#match? @constant.builtin "^(ENV|ARGV|ARGF|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING)$"))
+
+((constant) @constant
+ (#match? @constant "^[A-Z\\d_]+$"))
+
+(constant) @constructor
+
+(self) @variable.builtin
+(super) @function.builtin
+
+[(forward_parameter)(forward_argument)] @variable.parameter
+(keyword_parameter name:((_)":" @variable.parameter) @variable.parameter)
+(optional_parameter name:((_)"=" @operator) @variable.parameter)
+(optional_parameter name: (identifier) @variable.parameter)
+(splat_parameter name: (identifier) @variable.parameter) @variable.parameter
+(hash_splat_parameter name: (identifier) @variable.parameter) @variable.parameter
+(method_parameters (identifier) @variable.parameter)
+(block_parameter (identifier) @variable.parameter)
+(block_parameters (identifier) @variable.parameter)
+
 ; Keywords
 
 [
@@ -73,43 +151,6 @@
 (method name: [(identifier) (constant)] @function.method)
 (singleton_method name: [(identifier) (constant)] @function.method)
 
-; Identifiers
-
-[
-  (class_variable)
-  (instance_variable)
-] @variable.other.member
-
-((identifier) @constant.builtin
- (#match? @constant.builtin "^(__FILE__|__LINE__|__ENCODING__)$"))
-
-((constant) @constant.builtin
- (#match? @constant.builtin "^(ENV|ARGV|ARGF|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING)$"))
-
-((constant) @constant
- (#match? @constant "^[A-Z\\d_]+$"))
-
-(constant) @constructor
-
-(self) @variable.builtin
-(super) @function.builtin
-
-[(forward_parameter)(forward_argument)] @variable.parameter
-(keyword_parameter name:((_)":" @variable.parameter) @variable.parameter)
-(optional_parameter name:((_)"=" @operator) @variable.parameter)
-(optional_parameter name: (identifier) @variable.parameter)
-(splat_parameter name: (identifier) @variable.parameter) @variable.parameter
-(hash_splat_parameter name: (identifier) @variable.parameter) @variable.parameter
-(method_parameters (identifier) @variable.parameter)
-(block_parameter (identifier) @variable.parameter)
-(block_parameters (identifier) @variable.parameter)
-
-((identifier) @function.method
- (#is-not? local))
-[
-  (identifier)
-] @variable
-
 ; Literals
 
 [
@@ -147,44 +188,3 @@
   "}" @punctuation.special) @embedded
 
 (comment) @comment
-
-; Operators
-[
-":"
-"?"
-"~"
-"=>"
-"->"
-"!"
-] @operator
-
-(assignment
-  "=" @operator)
-
-(operator_assignment
-  operator: ["+=" "-=" "*=" "**=" "/=" "||=" "|=" "&&=" "&=" "%=" ">>=" "<<=" "^="] @operator)
-
-(binary
-  operator: ["/" "|" "==" "===" "||" "&&" ">>" "<<" "<" ">" "<=" ">=" "&" "^" "!~" "=~" "<=>" "**" "*" "!=" "%" "-" "+"] @operator)
-
-(range
-  operator: [".." "..."] @operator)
-
-[
-  ","
-  ";"
-  "."
-  "&."
-] @punctuation.delimiter
-
-[
-  "|"
-  "("
-  ")"
-  "["
-  "]"
-  "{"
-  "}"
-  "%w("
-  "%i("
-] @punctuation.bracket
diff --git a/runtime/queries/rust/highlights.scm b/runtime/queries/rust/highlights.scm
index 32424ac2..66a21ffb 100644
--- a/runtime/queries/rust/highlights.scm
+++ b/runtime/queries/rust/highlights.scm
@@ -1,10 +1,90 @@
 ; -------
-; Tree-Sitter doesn't allow overrides in regards to captures,
-; though it is possible to affect the child node of a captured
-; node. Thus, the approach here is to flip the order so that
-; overrides are unnecessary.
+; Basic identifiers
 ; -------
 
+; We do not style ? as an operator on purpose as it allows styling ? differently, as many highlighters do. @operator.special might have been a better scope, but @special is already documented so the change would break themes (including the intent of the default theme)
+"?" @special
+
+(type_identifier) @type
+(identifier) @variable
+(field_identifier) @variable.other.member
+
+; -------
+; Operators
+; -------
+
+[
+  "*"
+  "'"
+  "->"
+  "=>"
+  "<="
+  "="
+  "=="
+  "!"
+  "!="
+  "%"
+  "%="
+  "&"
+  "&="
+  "&&"
+  "|"
+  "|="
+  "||"
+  "^"
+  "^="
+  "*"
+  "*="
+  "-"
+  "-="
+  "+"
+  "+="
+  "/"
+  "/="
+  ">"
+  "<"
+  ">="
+  ">>"
+  "<<"
+  ">>="
+  "<<="
+  "@"
+  ".."
+  "..="
+  "'"
+] @operator
+
+; -------
+; Paths
+; -------
+
+(use_declaration
+  argument: (identifier) @namespace)
+(use_wildcard
+  (identifier) @namespace)
+(extern_crate_declaration
+  name: (identifier) @namespace
+  alias: (identifier)? @namespace)
+(mod_item
+  name: (identifier) @namespace)
+(scoped_use_list
+  path: (identifier)? @namespace)
+(use_list
+  (identifier) @namespace)
+(use_as_clause
+  path: (identifier)? @namespace
+  alias: (identifier) @namespace)
+
+; ---
+; Remaining Paths
+; ---
+
+(scoped_identifier
+  path: (identifier)? @namespace
+  name: (identifier) @namespace)
+(scoped_type_identifier
+  path: (identifier) @namespace)
+
 ; -------
 ; Types
 ; -------
@@ -15,6 +95,8 @@
   left: (type_identifier) @type.parameter)
 (optional_type_parameter
   name: (type_identifier) @type.parameter)
+(type_arguments
+  (type_identifier))
 
 ; ---
 ; Primitives
@@ -282,9 +364,42 @@
   ((identifier) @constructor)
   (#match? @constructor "^[A-Z]"))
 
+; -------
+; Functions
+; -------
+
+(call_expression
+  function: [
+    ((identifier) @function)
+    (scoped_identifier
+      name: (identifier) @function)
+    (field_expression
+      field: (field_identifier) @function)
+  ])
+(generic_function
+  function: [
+    ((identifier) @function)
+    (scoped_identifier
+      name: (identifier) @function)
+    (field_expression
+      field: (field_identifier) @function.method)
+  ])
+
+(function_item
+  name: (identifier) @function)
+
+(function_signature_item
+  name: (identifier) @function)
+
 ; -------
 ; Guess Other Types
 ; -------
+; Other PascalCase identifiers are assumed to be structs.
+
+((identifier) @type
+  (#match? @type "^[A-Z]"))
+
+(never_type "!" @type)
 
 ((identifier) @constant
  (#match? @constant "^[A-Z][A-Z\\d_]*$"))
@@ -319,42 +434,6 @@
       (#match? @type "^[A-Z]")
       (#match? @constructor "^[A-Z]")))
 
-; ---
-; Other PascalCase identifiers are assumed to be structs.
-; ---
-
-((identifier) @type
-  (#match? @type "^[A-Z]"))
-
-(never_type "!" @type)
-
-; -------
-; Functions
-; -------
-
-(call_expression
-  function: [
-    ((identifier) @function)
-    (scoped_identifier
-      name: (identifier) @function)
-    (field_expression
-      field: (field_identifier) @function)
-  ])
-(generic_function
-  function: [
-    ((identifier) @function)
-    (scoped_identifier
-      name: (identifier) @function)
-    (field_expression
-      field: (field_identifier) @function.method)
-  ])
-
-(function_item
-  name: (identifier) @function)
-
-(function_signature_item
-  name: (identifier) @function)
-
 ; ---
 ; Macros
 ; ---
@@ -389,90 +468,3 @@
 
 (metavariable) @variable.parameter
 (fragment_specifier) @type
-
-; -------
-; Operators
-; -------
-
-[
-  "*"
-  "'"
-  "->"
-  "=>"
-  "<="
-  "="
-  "=="
-  "!"
-  "!="
-  "%"
-  "%="
-  "&"
-  "&="
-  "&&"
-  "|"
-  "|="
-  "||"
-  "^"
-  "^="
-  "*"
-  "*="
-  "-"
-  "-="
-  "+"
-  "+="
-  "/"
-  "/="
-  ">"
-  "<"
-  ">="
-  ">>"
-  "<<"
-  ">>="
-  "<<="
-  "@"
-  ".."
-  "..="
-  "'"
-] @operator
-
-; -------
-; Paths
-; -------
-
-(use_declaration
-  argument: (identifier) @namespace)
-(use_wildcard
-  (identifier) @namespace)
-(extern_crate_declaration
-  name: (identifier) @namespace
-  alias: (identifier)? @namespace)
-(mod_item
-  name: (identifier) @namespace)
-(scoped_use_list
-  path: (identifier)? @namespace)
-(use_list
-  (identifier) @namespace)
-(use_as_clause
-  path: (identifier)? @namespace
-  alias: (identifier) @namespace)
-
-; ---
-; Remaining Paths
-; ---
-
-(scoped_identifier
-  path: (identifier)? @namespace
-  name: (identifier) @namespace)
-(scoped_type_identifier
-  path: (identifier) @namespace)
-
-; -------
-; Remaining Identifiers
-; -------
-
-; We do not style ? as an operator on purpose as it allows styling ? differently, as many highlighters do. @operator.special might have been a better scope, but @special is already documented so the change would break themes (including the intent of the default theme)
-"?" @special
-
-(type_identifier) @type
-(identifier) @variable
-(field_identifier) @variable.other.member
diff --git a/runtime/queries/scala/highlights.scm b/runtime/queries/scala/highlights.scm
index e21a3909..5e5d63e4 100644
--- a/runtime/queries/scala/highlights.scm
+++ b/runtime/queries/scala/highlights.scm
@@ -2,6 +2,9 @@
 
 ;; variables
 
+(identifier) @variable
+
+(operator_identifier) @operator
 
 ((identifier) @variable.builtin
  (#match? @variable.builtin "^this$"))
@@ -262,7 +265,3 @@
 
 (case_block
   (case_clause ("case") @keyword.control.conditional))
-
-(identifier) @variable
-
-(operator_identifier) @operator
diff --git a/runtime/queries/scheme/highlights.scm b/runtime/queries/scheme/highlights.scm
index c7050847..a0c15a12 100644
--- a/runtime/queries/scheme/highlights.scm
+++ b/runtime/queries/scheme/highlights.scm
@@ -10,32 +10,28 @@
 (block_comment) @comment.block
 (directive) @keyword.directive
 
-; operators
+; variables
 
-((symbol) @operator
- (#match? @operator "^(\\+|-|\\*|/|=|>|<|>=|<=)$"))
+((symbol) @variable.builtin
+ (#eq? @variable.builtin "..."))
 
-; keywords
+((symbol) @variable.builtin
+ (#eq? @variable.builtin "."))
+
+(symbol) @variable
+
+["(" ")" "[" "]" "{" "}"] @punctuation.bracket
+
+(quote "'") @operator
+(unquote_splicing ",@") @operator
+(unquote ",") @operator
+(quasiquote "`") @operator
+
+; procedure
 
 (list
   .
-  ((symbol) @keyword.conditional
-   (#match? @keyword.conditional "^(if|cond|case|when|unless)$"
-  )))
- 
-(list
-  .
-  (symbol) @keyword
-  (#match? @keyword
-   "^(define-syntax|let\\*|lambda|λ|case|=>|quote-splicing|unquote-splicing|set!|let|letrec|letrec-syntax|let-values|let\\*-values|do|else|define|cond|syntax-rules|unquote|begin|quote|let-syntax|and|if|quasiquote|letrec|delay|or|when|unless|identifier-syntax|assert|library|export|import|rename|only|except|prefix)$"
-   ))
-
-(list
-  .
-  (symbol) @function.builtin
-  (#match? @function.builtin
-   "^(caar|cadr|call-with-input-file|call-with-output-file|cdar|cddr|list|open-input-file|open-output-file|with-input-from-file|with-output-to-file|\\*|\\+|-|/|<|<=|=|>|>=|abs|acos|angle|append|apply|asin|assoc|assq|assv|atan|boolean\\?|caaaar|caaadr|caaar|caadar|caaddr|caadr|cadaar|cadadr|cadar|caddar|cadddr|caddr|call-with-current-continuation|call-with-values|car|cdaaar|cdaadr|cdaar|cdadar|cdaddr|cdadr|cddaar|cddadr|cddar|cdddar|cddddr|cdddr|cdr|ceiling|char->integer|char-alphabetic\\?|char-ci<=\\?|char-ci<\\?|char-ci=\\?|char-ci>=\\?|char-ci>\\?|char-downcase|char-lower-case\\?|char-numeric\\?|char-ready\\?|char-upcase|char-upper-case\\?|char-whitespace\\?|char<=\\?|char<\\?|char=\\?|char>=\\?|char>\\?|char\\?|close-input-port|close-output-port|complex\\?|cons|cos|current-error-port|current-input-port|current-output-port|denominator|display|dynamic-wind|eof-object\\?|eq\\?|equal\\?|eqv\\?|eval|even\\?|exact->inexact|exact\\?|exp|expt|floor|flush-output|for-each|force|gcd|imag-part|inexact->exact|inexact\\?|input-port\\?|integer->char|integer\\?|interaction-environment|lcm|length|list->string|list->vector|list-ref|list-tail|list\\?|load|log|magnitude|make-polar|make-rectangular|make-string|make-vector|map|max|member|memq|memv|min|modulo|negative\\?|newline|not|null-environment|null\\?|number->string|number\\?|numerator|odd\\?|output-port\\?|pair\\?|peek-char|positive\\?|procedure\\?|quotient|rational\\?|rationalize|read|read-char|real-part|real\\?|remainder|reverse|round|scheme-report-environment|set-car!|set-cdr!|sin|sqrt|string|string->list|string->number|string->symbol|string-append|string-ci<=\\?|string-ci<\\?|string-ci=\\?|string-ci>=\\?|string-ci>\\?|string-copy|string-fill!|string-length|string-ref|string-set!|string<=\\?|string<\\?|string=\\?|string>=\\?|string>\\?|string\\?|substring|symbol->string|symbol\\?|tan|transcript-off|transcript-on|truncate|values|vector|vector->list|vector-fill!|vector-length|vector-ref|vector-set!|vector\\?|write|write-char|zero\\?)$"
-   ))
+  (symbol) @function)
 
 ; special forms
 
@@ -62,12 +58,10 @@
  (#match? @_f
   "^(let|let\\*|let-syntax|let-values|let\\*-values|letrec|letrec\\*|letrec-syntax)$"))
 
-; quote
+; operators
 
-(list
- .
- (symbol) @_f
- (#eq? @_f "quote")) @string.symbol
+((symbol) @operator
+ (#match? @operator "^(\\+|-|\\*|/|=|>|<|>=|<=)$"))
 
 ; library
 
@@ -79,26 +73,31 @@
 
  (#eq? @_lib "library"))
 
-; procedure
+; quote
+
+(list
+ .
+ (symbol) @_f
+ (#eq? @_f "quote")) @string.symbol
+
+; keywords
 
 (list
   .
-  (symbol) @function)
-
-;; variables
-
-((symbol) @variable.builtin
- (#eq? @variable.builtin "..."))
-
-((symbol) @variable.builtin
- (#eq? @variable.builtin "."))
-
-(symbol) @variable
-
-["(" ")" "[" "]" "{" "}"] @punctuation.bracket
-
-(quote "'") @operator
-(unquote_splicing ",@") @operator
-(unquote ",") @operator
-(quasiquote "`") @operator
+  ((symbol) @keyword.conditional
+   (#match? @keyword.conditional "^(if|cond|case|when|unless)$"
+  )))
+ 
+(list
+  .
+  (symbol) @keyword
+  (#match? @keyword
+   "^(define-syntax|let\\*|lambda|λ|case|=>|quote-splicing|unquote-splicing|set!|let|letrec|letrec-syntax|let-values|let\\*-values|do|else|define|cond|syntax-rules|unquote|begin|quote|let-syntax|and|if|quasiquote|letrec|delay|or|when|unless|identifier-syntax|assert|library|export|import|rename|only|except|prefix)$"
+   ))
 
+(list
+  .
+  (symbol) @function.builtin
+  (#match? @function.builtin
+   "^(caar|cadr|call-with-input-file|call-with-output-file|cdar|cddr|list|open-input-file|open-output-file|with-input-from-file|with-output-to-file|\\*|\\+|-|/|<|<=|=|>|>=|abs|acos|angle|append|apply|asin|assoc|assq|assv|atan|boolean\\?|caaaar|caaadr|caaar|caadar|caaddr|caadr|cadaar|cadadr|cadar|caddar|cadddr|caddr|call-with-current-continuation|call-with-values|car|cdaaar|cdaadr|cdaar|cdadar|cdaddr|cdadr|cddaar|cddadr|cddar|cdddar|cddddr|cdddr|cdr|ceiling|char->integer|char-alphabetic\\?|char-ci<=\\?|char-ci<\\?|char-ci=\\?|char-ci>=\\?|char-ci>\\?|char-downcase|char-lower-case\\?|char-numeric\\?|char-ready\\?|char-upcase|char-upper-case\\?|char-whitespace\\?|char<=\\?|char<\\?|char=\\?|char>=\\?|char>\\?|char\\?|close-input-port|close-output-port|complex\\?|cons|cos|current-error-port|current-input-port|current-output-port|denominator|display|dynamic-wind|eof-object\\?|eq\\?|equal\\?|eqv\\?|eval|even\\?|exact->inexact|exact\\?|exp|expt|floor|flush-output|for-each|force|gcd|imag-part|inexact->exact|inexact\\?|input-port\\?|integer->char|integer\\?|interaction-environment|lcm|length|list->string|list->vector|list-ref|list-tail|list\\?|load|log|magnitude|make-polar|make-rectangular|make-string|make-vector|map|max|member|memq|memv|min|modulo|negative\\?|newline|not|null-environment|null\\?|number->string|number\\?|numerator|odd\\?|output-port\\?|pair\\?|peek-char|positive\\?|procedure\\?|quotient|rational\\?|rationalize|read|read-char|real-part|real\\?|remainder|reverse|round|scheme-report-environment|set-car!|set-cdr!|sin|sqrt|string|string->list|string->number|string->symbol|string-append|string-ci<=\\?|string-ci<\\?|string-ci=\\?|string-ci>=\\?|string-ci>\\?|string-copy|string-fill!|string-length|string-ref|string-set!|string<=\\?|string<\\?|string=\\?|string>=\\?|string>\\?|string\\?|substring|symbol->string|symbol\\?|tan|transcript-off|transcript-on|truncate|values|vector|vector->list|vector-fill!|vector-length|vector-ref|vector-set!|vector\\?|write|write-char|zero\\?)$"
+   ))
diff --git a/runtime/queries/scss/highlights.scm b/runtime/queries/scss/highlights.scm
index de20e047..eb361f96 100644
--- a/runtime/queries/scss/highlights.scm
+++ b/runtime/queries/scss/highlights.scm
@@ -43,6 +43,8 @@
 "@warn" @constant.builtin
 "@while" @keyword.control.repeat
 
+(property_name) @variable.other.member
+
 ((property_name) @variable
  (#match? @variable "^--"))
 ((plain_value) @variable
@@ -59,7 +61,6 @@
 (class_name) @variable
 (id_name) @variable
 (namespace_name) @variable
-(property_name) @variable.other.member
 (feature_name) @variable
 (variable) @variable
 (variable_name) @variable.other.member
diff --git a/runtime/queries/solidity/highlights.scm b/runtime/queries/solidity/highlights.scm
index 0701a5ab..0e49429d 100644
--- a/runtime/queries/solidity/highlights.scm
+++ b/runtime/queries/solidity/highlights.scm
@@ -1,3 +1,9 @@
+; identifiers
+; -----------
+(identifier) @variable
+((identifier) @variable.builtin (#any-of? @variable.builtin "this" "msg" "block" "tx"))
+(yul_identifier) @variable
+
 ; Pragma
 (pragma_directive) @keyword.directive
 (solidity_version_comparison_operator _ @keyword.directive)
@@ -231,10 +237,3 @@
   "delete"
   "new"
 ] @keyword.operator
-
-; identifiers
-; -----------
-((identifier) @variable.builtin (#any-of? @variable.builtin "this" "msg" "block" "tx"))
-(identifier) @variable
-(yul_identifier) @variable
-
diff --git a/runtime/queries/strace/highlights.scm b/runtime/queries/strace/highlights.scm
index 4f54cb3e..82ba7068 100644
--- a/runtime/queries/strace/highlights.scm
+++ b/runtime/queries/strace/highlights.scm
@@ -1,4 +1,4 @@
-(syscall) @function
+(syscall) @function.builtin
 (integer) @constant.numeric
 (pointer) @constant.numeric
 (value) @label
diff --git a/runtime/queries/sway/highlights.scm b/runtime/queries/sway/highlights.scm
index 98f4d449..969ef776 100644
--- a/runtime/queries/sway/highlights.scm
+++ b/runtime/queries/sway/highlights.scm
@@ -1,14 +1,87 @@
 ; -------
-; Tree-Sitter doesn't allow overrides in regards to captures,
-; though it is possible to affect the child node of a captured
-; node. Thus, the approach here is to flip the order so that
-; overrides are unnecessary.
+; Basic identifiers
 ; -------
 
+; We do not style ? as an operator on purpose as it allows styling ? differently, as many highlighters do. @operator.special might have been a better scope, but @special is already documented so the change would break themes (including the intent of the default theme)
+"?" @special
+
+(type_identifier) @type
+(identifier) @variable
+(field_identifier) @variable.other.member
+
 ; -------
-; Types
+; Operators
 ; -------
 
+[
+  "*"
+  "'"
+  "->"
+  "=>"
+  "<="
+  "="
+  "=="
+  "!"
+  "!="
+  "%"
+  "%="
+  "&"
+  "&="
+  "&&"
+  "|"
+  "|="
+  "||"
+  "^"
+  "^="
+  "*"
+  "*="
+  "-"
+  "-="
+  "+"
+  "+="
+  "/"
+  "/="
+  ">"
+  "<"
+  ">="
+  ">>"
+  "<<"
+  ">>="
+  "<<="
+  "@"
+  ".."
+  "..="
+  "'"
+] @operator
+
+; -------
+; Paths
+; -------
+
+(use_declaration
+  argument: (identifier) @namespace)
+(use_wildcard
+  (identifier) @namespace)
+(dep_item
+  name: (identifier) @namespace)
+(scoped_use_list
+  path: (identifier)? @namespace)
+(use_list
+  (identifier) @namespace)
+(use_as_clause
+  path: (identifier)? @namespace
+  alias: (identifier) @namespace)
+
+; ---
+; Remaining Paths
+; ---
+
+(scoped_identifier
+  path: (identifier)? @namespace
+  name: (identifier) @namespace)
+(scoped_type_identifier
+  path: (identifier) @namespace)
+
 ; ---
 ; Primitives
 ; ---
@@ -179,6 +252,10 @@
 ; -------
 ; Guess Other Types
 ; -------
+; Other PascalCase identifiers are assumed to be structs.
+
+((identifier) @type
+  (#match? @type "^[A-Z]"))
 
 ((identifier) @constant
  (#match? @constant "^[A-Z][A-Z\\d_]*$"))
@@ -190,40 +267,28 @@
 
 (call_expression
   function: [
-    ((identifier) @type.enum.variant
-      (#match? @type.enum.variant "^[A-Z]"))
+    ((identifier) @constructor
+      (#match? @constructor "^[A-Z]"))
     (scoped_identifier
-      name: ((identifier) @type.enum.variant
-        (#match? @type.enum.variant "^[A-Z]")))
+      name: ((identifier) @constructor
+        (#match? @constructor "^[A-Z]")))
   ])
 
 ; ---
-; Assume that types in match arms are enums and not
-; tuple structs. Same for `if let` expressions.
+; PascalCase identifiers under a path which is also PascalCase
+; are assumed to be constructors if they have methods or fields.
 ; ---
 
-(match_pattern
-    (scoped_identifier
-      name: (identifier) @constructor))
-(tuple_struct_pattern
-    type: [
-      ((identifier) @constructor)
-      (scoped_identifier  
-        name: (identifier) @constructor)
-      ])
-(struct_pattern
-  type: [
-    ((type_identifier) @constructor)
-    (scoped_type_identifier
-      name: (type_identifier) @constructor)
-    ])
-
-; ---
-; Other PascalCase identifiers are assumed to be structs.
-; ---
-
-((identifier) @type
-  (#match? @type "^[A-Z]"))
+(field_expression
+  value: (scoped_identifier
+    path: [
+      (identifier) @type
+      (scoped_identifier
+        name: (identifier) @type)
+    ]
+    name: (identifier) @constructor
+      (#match? @type "^[A-Z]")
+      (#match? @constructor "^[A-Z]")))
 
 ; -------
 ; Functions
@@ -251,86 +316,3 @@
 
 (function_signature_item
   name: (identifier) @function)
-
-; -------
-; Operators
-; -------
-
-[
-  "*"
-  "'"
-  "->"
-  "=>"
-  "<="
-  "="
-  "=="
-  "!"
-  "!="
-  "%"
-  "%="
-  "&"
-  "&="
-  "&&"
-  "|"
-  "|="
-  "||"
-  "^"
-  "^="
-  "*"
-  "*="
-  "-"
-  "-="
-  "+"
-  "+="
-  "/"
-  "/="
-  ">"
-  "<"
-  ">="
-  ">>"
-  "<<"
-  ">>="
-  "<<="
-  "@"
-  ".."
-  "..="
-  "'"
-] @operator
-
-; -------
-; Paths
-; -------
-
-(use_declaration
-  argument: (identifier) @namespace)
-(use_wildcard
-  (identifier) @namespace)
-(dep_item
-  name: (identifier) @namespace)
-(scoped_use_list
-  path: (identifier)? @namespace)
-(use_list
-  (identifier) @namespace)
-(use_as_clause
-  path: (identifier)? @namespace
-  alias: (identifier) @namespace)
-
-; ---
-; Remaining Paths
-; ---
-
-(scoped_identifier
-  path: (identifier)? @namespace
-  name: (identifier) @namespace)
-(scoped_type_identifier
-  path: (identifier) @namespace)
-
-; -------
-; Remaining Identifiers
-; -------
-
-"?" @special
-
-(type_identifier) @type
-(identifier) @variable
-(field_identifier) @variable.other.member
diff --git a/runtime/queries/swift/highlights.scm b/runtime/queries/swift/highlights.scm
index df05a643..ecafde40 100644
--- a/runtime/queries/swift/highlights.scm
+++ b/runtime/queries/swift/highlights.scm
@@ -6,7 +6,48 @@
 ["." ";" ":" "," ] @punctuation.delimiter
 ["(" ")" "[" "]" "{" "}" "<" ">"] @punctuation.bracket
 
+; Operators
+[
+  "!"
+  "?"
+  "+"
+  "-"
+  "\\"
+  "*"
+  "/"
+  "%"
+  "="
+  "+="
+  "-="
+  "*="
+  "/="
+  "<"
+  ">"
+  "<="
+  ">="
+  "++"
+  "--"
+  "&"
+  "~"
+  "%="
+  "!="
+  "!=="
+  "=="
+  "==="
+  "??"
+
+  "->"
+
+  "..<"
+  "..."
+  (custom_operator)
+] @operator
+
+"?" @type
+(type_annotation "!" @type)
+
 ; Identifiers
+(simple_identifier) @variable
 (attribute) @variable
 (type_identifier) @type
 (self_expression) @variable.builtin
@@ -153,48 +194,6 @@
 (boolean_literal) @constant.builtin.boolean
 "nil" @constant.builtin
 
-"?" @type
-(type_annotation "!" @type)
-
-(simple_identifier) @variable
-
-; Operators
-[
-  "!"
-  "?"
-  "+"
-  "-"
-  "\\"
-  "*"
-  "/"
-  "%"
-  "="
-  "+="
-  "-="
-  "*="
-  "/="
-  "<"
-  ">"
-  "<="
-  ">="
-  "++"
-  "--"
-  "&"
-  "~"
-  "%="
-  "!="
-  "!=="
-  "=="
-  "==="
-  "??"
-
-  "->"
-
-  "..<"
-  "..."
-  (custom_operator)
-] @operator
-
 (value_parameter_pack ["each" @keyword])
 (value_pack_expansion ["repeat" @keyword])
 (type_parameter_pack ["each" @keyword])
diff --git a/runtime/queries/t32/highlights.scm b/runtime/queries/t32/highlights.scm
index 8a29cee2..bcfa3add 100644
--- a/runtime/queries/t32/highlights.scm
+++ b/runtime/queries/t32/highlights.scm
@@ -81,6 +81,10 @@
   "."
 ] @punctuation.delimiter
 
+; HLL variables
+(identifier) @variable
+(hll_field_identifier) @variable.other.member
+
 
 ; Strings and others literal types
 (access_class) @constant.builtin
@@ -219,9 +223,5 @@
   command: (identifier) @keyword.control.loop)
 
 
-; HLL variables
-(identifier) @variable
-(hll_field_identifier) @variable.other.member
-
 
 (comment) @comment
diff --git a/runtime/queries/tact/highlights.scm b/runtime/queries/tact/highlights.scm
index 53bf985b..51b1ea9e 100644
--- a/runtime/queries/tact/highlights.scm
+++ b/runtime/queries/tact/highlights.scm
@@ -9,40 +9,90 @@
   "@interface"
 ] @attribute
 
-; comment.line
-; ------------
+; operator
+; --------
 
-((comment) @comment.line
-  (#match? @comment.line "^//"))
+[
+  "-" "-="
+  "+" "+="
+  "*" "*="
+  "/" "/="
+  "%" "%="
+  "=" "=="
+  "!" "!=" "!!"
+  "<" "<=" "<<"
+  ">" ">=" ">>"
+  "&" "|"
+  "&&" "||"
+] @operator
+
+; punctuation.bracket
+; -------------------
+
+[
+  "(" ")"
+  "{" "}"
+] @punctuation.bracket
+
+; punctuation.delimiter
+; ---------------------
+
+[
+  ";"
+  ","
+  "."
+  ":"
+  "?"
+] @punctuation.delimiter
+
+; variable
+; --------
+
+(identifier) @variable
+
+; variable.builtin
+; ----------------
+
+(self) @variable.builtin
+
+; variable.parameter
+; ------------------
+
+(parameter
+  name: (identifier) @variable.parameter)
+
+; variable.other.member
+; ---------------------
+
+(field
+  name: (identifier) @variable.other.member)
+
+(contract_body
+  (constant
+    name: (identifier) @variable.other.member))
+
+(trait_body
+  (constant
+    name: (identifier) @variable.other.member))
+
+(field_access_expression
+  name: (identifier) @variable.other.member)
+
+(lvalue (_) (_) @variable.other.member)
+
+(instance_argument
+  name: (identifier) @variable.other.member)
 
 ; comment.block
 ; -------------
 
 (comment) @comment.block
 
-; function.builtin
-; ----------------
+; comment.line
+; ------------
 
-((identifier) @function.builtin
-  (#any-of? @function.builtin
-    "send" "sender" "require" "now"
-    "myBalance" "myAddress" "newAddress"
-    "contractAddress" "contractAddressExt"
-    "emit" "cell" "ton"
-    "beginString" "beginComment" "beginTailString" "beginStringFromBuilder" "beginCell" "emptyCell"
-    "randomInt" "random"
-    "checkSignature" "checkDataSignature" "sha256"
-    "min" "max" "abs" "pow"
-    "throw" "dump" "getConfigParam"
-    "nativeThrowWhen" "nativeThrowUnless" "nativeReserve"
-    "nativeRandomize" "nativeRandomizeLt" "nativePrepareRandom" "nativeRandom" "nativeRandomInterval")
-  (#is-not? local))
-
-; function.method
-; ---------------
-
-(method_call_expression
-  name: (identifier) @function.method)
+((comment) @comment.line
+  (#match? @comment.line "^//"))
 
 ; function
 ; --------
@@ -73,6 +123,30 @@
 (function
   name: (identifier) @function.method)
 
+; function.method
+; ---------------
+
+(method_call_expression
+  name: (identifier) @function.method)
+
+; function.builtin
+; ----------------
+
+((identifier) @function.builtin
+  (#any-of? @function.builtin
+    "send" "sender" "require" "now"
+    "myBalance" "myAddress" "newAddress"
+    "contractAddress" "contractAddressExt"
+    "emit" "cell" "ton"
+    "beginString" "beginComment" "beginTailString" "beginStringFromBuilder" "beginCell" "emptyCell"
+    "randomInt" "random"
+    "checkSignature" "checkDataSignature" "sha256"
+    "min" "max" "abs" "pow"
+    "throw" "dump" "getConfigParam"
+    "nativeThrowWhen" "nativeThrowUnless" "nativeReserve"
+    "nativeRandomize" "nativeRandomizeLt" "nativePrepareRandom" "nativeRandom" "nativeRandomInterval")
+  (#is-not? local))
+
 ; keyword.control.conditional
 ; ---------------------------
 
@@ -169,16 +243,21 @@
 (constant
   name: (identifier) @constant)
 
+; string
+; ------
+
+(string) @string
+
 ; string.special.path
 ; -------------------
 
 (import_statement
   library: (string) @string.special.path)
 
-; string
-; ------
+; type
+; ----
 
-(string) @string
+(type_identifier) @type
 
 ; type.builtin
 ; ------------
@@ -209,11 +288,6 @@
   (#eq? @type.builtin "SendParameters")
   (#is-not? local))
 
-; type
-; ----
-
-(type_identifier) @type
-
 ; constructor
 ; -----------
 
@@ -222,77 +296,3 @@
 
 (initOf
   name: (identifier) @constructor)
-
-; operator
-; --------
-
-[
-  "-" "-="
-  "+" "+="
-  "*" "*="
-  "/" "/="
-  "%" "%="
-  "=" "=="
-  "!" "!=" "!!"
-  "<" "<=" "<<"
-  ">" ">=" ">>"
-  "&" "|"
-  "&&" "||"
-] @operator
-
-; punctuation.bracket
-; -------------------
-
-[
-  "(" ")"
-  "{" "}"
-] @punctuation.bracket
-
-; punctuation.delimiter
-; ---------------------
-
-[
-  ";"
-  ","
-  "."
-  ":"
-  "?"
-] @punctuation.delimiter
-
-; variable.other.member
-; ---------------------
-
-(field
-  name: (identifier) @variable.other.member)
-
-(contract_body
-  (constant
-    name: (identifier) @variable.other.member))
-
-(trait_body
-  (constant
-    name: (identifier) @variable.other.member))
-
-(field_access_expression
-  name: (identifier) @variable.other.member)
-
-(lvalue (_) (_) @variable.other.member)
-
-(instance_argument
-  name: (identifier) @variable.other.member)
-
-; variable.parameter
-; ------------------
-
-(parameter
-  name: (identifier) @variable.parameter)
-
-; variable.builtin
-; ----------------
-
-(self) @variable.builtin
-
-; variable
-; --------
-
-(identifier) @variable
diff --git a/runtime/queries/tsq/highlights.scm b/runtime/queries/tsq/highlights.scm
index a7fd0b38..4ef463a6 100644
--- a/runtime/queries/tsq/highlights.scm
+++ b/runtime/queries/tsq/highlights.scm
@@ -36,12 +36,12 @@
 (named_node
   name: (identifier) @tag)
 
+(predicate name: (identifier) @error)
 ((predicate
    "#" @function.builtin
    name: (identifier) @function.builtin @_name
    type: (predicate_type) @function.builtin)
  (#any-of? @_name "eq" "not-eq" "match" "not-match" "any-of" "not-any-of" "is" "is-not" "not-same-line" "not-kind-eq" "set" "select-adjacent" "strip"))
-(predicate name: (identifier) @error)
 
 (capture) @label
 
diff --git a/runtime/queries/tsx/highlights.scm b/runtime/queries/tsx/highlights.scm
index 721c56c7..83c7617f 100644
--- a/runtime/queries/tsx/highlights.scm
+++ b/runtime/queries/tsx/highlights.scm
@@ -1,3 +1,3 @@
 ; See runtime/queries/ecma/README.md for more info.
 
-; inherits: _jsx,_typescript,ecma
+; inherits: ecma,_typescript,_jsx
diff --git a/runtime/queries/twig/highlights.scm b/runtime/queries/twig/highlights.scm
index 1ef8d06b..6eca5572 100644
--- a/runtime/queries/twig/highlights.scm
+++ b/runtime/queries/twig/highlights.scm
@@ -41,11 +41,6 @@
     "="
 ] @punctuation.delimiter
 
-(interpolated_string [
-    "#{" 
-    "}"
-] @punctuation.delimiter)
-
 [
     "("
     ")"
@@ -58,3 +53,8 @@
     "}"
 ] @punctuation.bracket)
 
+(interpolated_string [
+    "#{"
+    "}"
+] @punctuation.delimiter)
+
diff --git a/runtime/queries/typescript/highlights.scm b/runtime/queries/typescript/highlights.scm
index 5b8c8f24..dbe6665a 100644
--- a/runtime/queries/typescript/highlights.scm
+++ b/runtime/queries/typescript/highlights.scm
@@ -1,3 +1,3 @@
 ; See runtime/queries/ecma/README.md for more info.
 
-; inherits: _typescript,ecma
+; inherits: ecma,_typescript
diff --git a/runtime/queries/typespec/highlights.scm b/runtime/queries/typespec/highlights.scm
index 8b8aa4c3..0b58a3ef 100644
--- a/runtime/queries/typespec/highlights.scm
+++ b/runtime/queries/typespec/highlights.scm
@@ -59,6 +59,10 @@
 
 "?" @punctuation.special
 
+; Identifiers
+
+(identifier_or_member_expression) @type
+
 ; Imports
 
 (import_statement
@@ -171,7 +175,3 @@
 ] @constant.numeric.integer
 
 (builtin_type) @type.builtin
-
-; Identifiers
-
-(identifier_or_member_expression) @type
diff --git a/runtime/queries/vala/highlights.scm b/runtime/queries/vala/highlights.scm
index 685cda13..3d804cf8 100644
--- a/runtime/queries/vala/highlights.scm
+++ b/runtime/queries/vala/highlights.scm
@@ -24,6 +24,7 @@
 (unqualified_type (symbol . (identifier) @type))
 (unqualified_type (symbol (symbol) @namespace (identifier) @type))
 
+(identifier) @variable
 (attribute) @variable.other.member
 (method_declaration (symbol (symbol) @type (identifier) @function))
 (method_declaration (symbol (identifier) @function))
@@ -41,7 +42,6 @@
 (parameter (identifier) @variable.parameter)
 (property_declaration (symbol (identifier) @variable.other.member))
 (field_declaration (identifier) @variable)
-(identifier) @variable
 [
  (this_access)
  (base_access)
diff --git a/runtime/queries/vhs/highlights.scm b/runtime/queries/vhs/highlights.scm
index a7e1af30..5e53584b 100644
--- a/runtime/queries/vhs/highlights.scm
+++ b/runtime/queries/vhs/highlights.scm
@@ -40,6 +40,7 @@
 (float) @constant.numeric.float
 (integer) @constant.numeric.integer
 (comment) @comment
-[(path) (string) (json)] @string.special.path
+[(string) (json)] @string.special.path
+(path) @string.special.path
 (time) @string.special.symbol
 (boolean) @constant.builtin.boolean
diff --git a/runtime/queries/wgsl/highlights.scm b/runtime/queries/wgsl/highlights.scm
index 2817ea3a..fe10c684 100644
--- a/runtime/queries/wgsl/highlights.scm
+++ b/runtime/queries/wgsl/highlights.scm
@@ -89,6 +89,8 @@
   "~"
 ] @operator
 
+(identifier) @variable
+
 (function_declaration
   (identifier) @function)
 
@@ -112,6 +114,4 @@
 (attribute
   (identifier) @attribute)
 
-(identifier) @variable
-
 (comment) @comment
diff --git a/runtime/queries/wren/highlights.scm b/runtime/queries/wren/highlights.scm
index c37bc3bc..3d934b36 100644
--- a/runtime/queries/wren/highlights.scm
+++ b/runtime/queries/wren/highlights.scm
@@ -1,3 +1,13 @@
+(comment) @comment
+(string) @string
+(raw_string) @string
+(number) @constant.numeric.integer
+(name) @variable
+(field) @variable
+(static_field) @variable
+(null) @constant.builtin
+(boolean) @constant.builtin.boolean
+
 ((name) @variable.builtin
  (#match? @variable.builtin "^(Bool|Class|Fiber|Fn|List|Map|Null|Num|Object|Range|Sequence|String|System)$"))
 
@@ -9,15 +19,6 @@
 
 ((parameter) @variable.parameter)
 
-(comment) @comment
-(string) @string
-(raw_string) @string
-(number) @constant.numeric.integer
-(name) @variable
-(field) @variable
-(static_field) @variable
-(null) @constant.builtin
-(boolean) @constant.builtin.boolean
 
 (if_statement
 [
diff --git a/runtime/queries/yaml/highlights.scm b/runtime/queries/yaml/highlights.scm
index e4fed27a..6d58e445 100644
--- a/runtime/queries/yaml/highlights.scm
+++ b/runtime/queries/yaml/highlights.scm
@@ -1,13 +1,3 @@
-(block_mapping_pair
-  key: (flow_node [(double_quote_scalar) (single_quote_scalar)] @variable.other.member))
-(block_mapping_pair
-  key: (flow_node (plain_scalar (string_scalar) @variable.other.member)))
-
-(flow_mapping
-  (_ key: (flow_node [(double_quote_scalar) (single_quote_scalar)] @variable.other.member)))
-(flow_mapping
-  (_ key: (flow_node (plain_scalar (string_scalar) @variable.other.member))))
-
 (boolean_scalar) @constant.builtin.boolean
 (null_scalar) @constant.builtin
 (double_quote_scalar) @string
@@ -24,6 +14,16 @@
 (yaml_directive) @keyword
 (ERROR) @error
 
+(block_mapping_pair
+  key: (flow_node [(double_quote_scalar) (single_quote_scalar)] @variable.other.member))
+(block_mapping_pair
+  key: (flow_node (plain_scalar (string_scalar) @variable.other.member)))
+
+(flow_mapping
+  (_ key: (flow_node [(double_quote_scalar) (single_quote_scalar)] @variable.other.member)))
+(flow_mapping
+  (_ key: (flow_node (plain_scalar (string_scalar) @variable.other.member))))
+
 [
 ","
 "-"
diff --git a/runtime/queries/yuck/highlights.scm b/runtime/queries/yuck/highlights.scm
index 70de4cbe..74d04fca 100644
--- a/runtime/queries/yuck/highlights.scm
+++ b/runtime/queries/yuck/highlights.scm
@@ -1,3 +1,6 @@
+(ident) @variable
+(index) @variable
+
 ; Errors
 
 (ERROR) @error
@@ -64,6 +67,12 @@
 (function_call
   name: (ident) @function)
 
+; Tags
+
+; TODO apply to every symbol in list? I think it should probably only be applied to the first child of the list
+(list
+  (symbol) @tag)
+
 ; Variables
 
 (ident) @variable
@@ -94,14 +103,3 @@
 (loop_widget . "for" @keyword.control.repeat . (symbol) @variable . "in" @keyword.operator . (symbol) @variable)
 
 (loop_widget . "for" @keyword.control.repeat . (symbol) @variable . "in" @keyword.operator)
-
-; Tags
-
-; TODO apply to every symbol in list? I think it should probably only be applied to the first child of the list
-(list
-  (symbol) @tag)
-
-; Other stuff that has not been caught by the previous queries yet
-
-(ident) @variable
-(index) @variable