Skip to content

Commit fc3fc57

Browse files
committed
Cleaner API
1 parent 3a6ae42 commit fc3fc57

File tree

3 files changed

+10
-9
lines changed

3 files changed

+10
-9
lines changed

crates/ide/src/syntax_highlighting/highlights.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,20 @@ impl Node {
5151
}
5252
}
5353

54-
let (start, len) =
54+
let overlapping =
5555
equal_range_by(&self.nested, |n| ordering(n.hl_range.range, hl_range.range));
5656

57-
if len == 1 && self.nested[start].hl_range.range.contains_range(hl_range.range) {
58-
return self.nested[start].add(hl_range);
57+
if overlapping.len() == 1
58+
&& self.nested[overlapping.start].hl_range.range.contains_range(hl_range.range)
59+
{
60+
return self.nested[overlapping.start].add(hl_range);
5961
}
6062

6163
let nested = self
6264
.nested
63-
.splice(start..start + len, iter::once(Node::new(hl_range)))
65+
.splice(overlapping.clone(), iter::once(Node::new(hl_range)))
6466
.collect::<Vec<_>>();
65-
self.nested[start].nested = nested;
67+
self.nested[overlapping.start].nested = nested;
6668
}
6769

6870
fn flatten(&self, acc: &mut Vec<HlRange>) {

crates/ide/src/syntax_highlighting/injector.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ impl Injector {
3333
&self.buf
3434
}
3535
pub(super) fn map_range_up(&self, range: TextRange) -> impl Iterator<Item = TextRange> + '_ {
36-
let (start, len) = equal_range_by(&self.ranges, |&(r, _)| ordering(r, range));
37-
(start..start + len).filter_map(move |i| {
36+
equal_range_by(&self.ranges, |&(r, _)| ordering(r, range)).filter_map(move |i| {
3837
let (target_range, delta) = self.ranges[i];
3938
let intersection = target_range.intersect(range).unwrap();
4039
Some(intersection + delta?)

crates/stdx/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,13 +152,13 @@ where
152152
left
153153
}
154154

155-
pub fn equal_range_by<T, F>(slice: &[T], mut key: F) -> (usize, usize)
155+
pub fn equal_range_by<T, F>(slice: &[T], mut key: F) -> ops::Range<usize>
156156
where
157157
F: FnMut(&T) -> Ordering,
158158
{
159159
let start = partition_point(slice, |it| key(it) == Ordering::Less);
160160
let len = partition_point(&slice[start..], |it| key(it) == Ordering::Equal);
161-
(start, len)
161+
start..start + len
162162
}
163163

164164
pub struct JodChild(pub process::Child);

0 commit comments

Comments
 (0)