From baf85edd05b2467ac54aef973cfc7eac73bc9027 Mon Sep 17 00:00:00 2001 From: nik rev Date: Sun, 31 Aug 2025 10:24:23 +0100 Subject: [PATCH 1/2] queries(rust): add scope for mutable variables test file: ```rs fn foo() { let mut a = 100; } ``` split up https://github.com/helix-editor/helix/pull/13932 --- book/src/themes.md | 1 + runtime/queries/rust/highlights.scm | 2 -- runtime/queries/rust/locals.scm | 14 ++++++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/book/src/themes.md b/book/src/themes.md index 8140120bc1b1..c6de601212db 100644 --- a/book/src/themes.md +++ b/book/src/themes.md @@ -190,6 +190,7 @@ We use a similar set of scopes as - `variable` - Variables - `builtin` - Reserved language variables (`self`, `this`, `super`, etc.) - `parameter` - Function parameters + - `mutable` - Mutable variables (e.g. marked with `mut` in Rust) - `other` - `member` - Fields of composite data types (e.g. structs, unions) - `private` - Private fields that use a unique syntax (currently just ECMAScript-based languages) diff --git a/runtime/queries/rust/highlights.scm b/runtime/queries/rust/highlights.scm index a305c94e0dd4..553a138ae642 100644 --- a/runtime/queries/rust/highlights.scm +++ b/runtime/queries/rust/highlights.scm @@ -289,8 +289,6 @@ "dyn" ] @keyword.storage.modifier -; TODO: variable.mut to highlight mutable identifiers via locals.scm - ; --- ; Remaining Paths ; --- diff --git a/runtime/queries/rust/locals.scm b/runtime/queries/rust/locals.scm index a9ca760d6aa1..1a3dc4fd389e 100644 --- a/runtime/queries/rust/locals.scm +++ b/runtime/queries/rust/locals.scm @@ -21,5 +21,19 @@ (closure_parameters (identifier) @local.definition.variable.parameter) +; Mutable variables + +[ + (let_declaration + (mutable_specifier) + pattern: (identifier) @local.definition.variable.mutable @variable.mutable) + (parameter + (mutable_specifier) + pattern: (identifier) @local.definition.variable.mutable @variable.mutable) + (mut_pattern + (mutable_specifier) + (identifier) @local.definition.variable.mutable @variable.mutable) +] + ; References (identifier) @local.reference From 92c389f12ee02992bffa5e2dab6ab566ce36da63 Mon Sep 17 00:00:00 2001 From: nik rev Date: Sun, 31 Aug 2025 14:22:59 +0100 Subject: [PATCH 2/2] fix: do not use local query for highlights --- runtime/queries/rust/highlights.scm | 14 ++++++++++++++ runtime/queries/rust/locals.scm | 6 +++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/runtime/queries/rust/highlights.scm b/runtime/queries/rust/highlights.scm index 553a138ae642..626e208f99b9 100644 --- a/runtime/queries/rust/highlights.scm +++ b/runtime/queries/rust/highlights.scm @@ -206,6 +206,20 @@ (closure_parameters (identifier) @variable.parameter) +; mutable variables + +[ + (let_declaration + (mutable_specifier) + pattern: (identifier) @variable.mutable) + (parameter + (mutable_specifier) + pattern: (identifier) @variable.mutable) + (mut_pattern + (mutable_specifier) + (identifier) @variable.mutable) +] + ; ------- ; Keywords ; ------- diff --git a/runtime/queries/rust/locals.scm b/runtime/queries/rust/locals.scm index 1a3dc4fd389e..07c59a9bf6fb 100644 --- a/runtime/queries/rust/locals.scm +++ b/runtime/queries/rust/locals.scm @@ -26,13 +26,13 @@ [ (let_declaration (mutable_specifier) - pattern: (identifier) @local.definition.variable.mutable @variable.mutable) + pattern: (identifier) @local.definition.variable.mutable) (parameter (mutable_specifier) - pattern: (identifier) @local.definition.variable.mutable @variable.mutable) + pattern: (identifier) @local.definition.variable.mutable) (mut_pattern (mutable_specifier) - (identifier) @local.definition.variable.mutable @variable.mutable) + (identifier) @local.definition.variable.mutable) ] ; References