From 8968e833592c4feedd7ac2fda6e777c3926758ed Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 19 Oct 2026 12:21:01 -0400 Subject: [PATCH] RangeRef::parse: whole columns take at most one $ too Co-Authored-By: Claude Opus 5.5 --- crates/core/src/addr.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/core/src/addr.rs b/crates/core/src/addr.rs index 4780158e8..2c087f22e 100644 --- a/crates/core/src/addr.rs +++ b/crates/core/src/addr.rs @@ -210,7 +210,7 @@ impl RangeRef { if let (Some(x), Some(y)) = (CellRef::parse(a), CellRef::parse(b)) { return Some(RangeRef::new(x, y)); } - let strip = |t: &str| t.trim_start_matches('$').to_string(); + let strip = |t: &str| t.strip_prefix('$').unwrap_or(t).to_string(); if let (Some(x), Some(y)) = (letters_to_col(&strip(a)), letters_to_col(&strip(b))) { return Some(RangeRef::cols(x.min(y), x.max(y))); } @@ -247,6 +247,8 @@ mod tests { assert!(RangeRef::parse("-1:3").is_none()); assert!(RangeRef::parse("$$1:3").is_none()); assert!(RangeRef::parse(":3").is_none()); + assert!(RangeRef::parse("$$A:$$C").is_none()); + assert!(RangeRef::parse("$A:$C").is_some()); let r = RangeRef::parse("$1:$3").unwrap(); assert_eq!((r.start.row, r.end.row), (0, 2)); }