mirror of
https://github.com/zed-industries/zed.git
synced 2025-02-05 18:25:57 +00:00
Merge FoldRange
into Fold
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
parent
e8179f7e3e
commit
2c1e4cae19
1 changed files with 10 additions and 16 deletions
|
@ -109,10 +109,7 @@ impl FoldMap {
|
||||||
self.folds = {
|
self.folds = {
|
||||||
let mut new_tree = SumTree::new();
|
let mut new_tree = SumTree::new();
|
||||||
let mut cursor = self.folds.cursor::<_, ()>();
|
let mut cursor = self.folds.cursor::<_, ()>();
|
||||||
new_tree.push_tree(
|
new_tree.push_tree(cursor.slice(&fold, SeekBias::Right, buffer), buffer);
|
||||||
cursor.slice(&FoldRange(fold.0.clone()), SeekBias::Right, buffer),
|
|
||||||
buffer,
|
|
||||||
);
|
|
||||||
new_tree.push(fold, buffer);
|
new_tree.push(fold, buffer);
|
||||||
new_tree.push_tree(cursor.suffix(buffer), buffer);
|
new_tree.push_tree(cursor.suffix(buffer), buffer);
|
||||||
new_tree
|
new_tree
|
||||||
|
@ -298,7 +295,7 @@ impl FoldMap {
|
||||||
|
|
||||||
let anchor = buffer.anchor_before(edit.new_range.start).unwrap();
|
let anchor = buffer.anchor_before(edit.new_range.start).unwrap();
|
||||||
let mut folds_cursor = self.folds.cursor::<_, ()>();
|
let mut folds_cursor = self.folds.cursor::<_, ()>();
|
||||||
folds_cursor.seek(&FoldRange(anchor..Anchor::End), SeekBias::Left, buffer);
|
folds_cursor.seek(&Fold(anchor..Anchor::End), SeekBias::Left, buffer);
|
||||||
let mut folds = folds_cursor
|
let mut folds = folds_cursor
|
||||||
.map(|f| f.0.start.to_offset(buffer).unwrap()..f.0.end.to_offset(buffer).unwrap())
|
.map(|f| f.0.start.to_offset(buffer).unwrap()..f.0.end.to_offset(buffer).unwrap())
|
||||||
.peekable();
|
.peekable();
|
||||||
|
@ -482,6 +479,12 @@ impl<'a> sum_tree::Dimension<'a, TransformSummary> for TransformSummary {
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
struct Fold(Range<Anchor>);
|
struct Fold(Range<Anchor>);
|
||||||
|
|
||||||
|
impl Default for Fold {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self(Anchor::Start..Anchor::End)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl sum_tree::Item for Fold {
|
impl sum_tree::Item for Fold {
|
||||||
type Summary = FoldSummary;
|
type Summary = FoldSummary;
|
||||||
|
|
||||||
|
@ -542,23 +545,14 @@ impl sum_tree::Summary for FoldSummary {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
impl<'a> sum_tree::Dimension<'a, FoldSummary> for Fold {
|
||||||
struct FoldRange(Range<Anchor>);
|
|
||||||
|
|
||||||
impl Default for FoldRange {
|
|
||||||
fn default() -> Self {
|
|
||||||
Self(Anchor::Start..Anchor::End)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> sum_tree::Dimension<'a, FoldSummary> for FoldRange {
|
|
||||||
fn add_summary(&mut self, summary: &'a FoldSummary) {
|
fn add_summary(&mut self, summary: &'a FoldSummary) {
|
||||||
self.0.start = summary.start.clone();
|
self.0.start = summary.start.clone();
|
||||||
self.0.end = summary.end.clone();
|
self.0.end = summary.end.clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> sum_tree::SeekDimension<'a, FoldSummary> for FoldRange {
|
impl<'a> sum_tree::SeekDimension<'a, FoldSummary> for Fold {
|
||||||
fn cmp(&self, other: &Self, buffer: &Buffer) -> Ordering {
|
fn cmp(&self, other: &Self, buffer: &Buffer) -> Ordering {
|
||||||
self.0.cmp(&other.0, buffer).unwrap()
|
self.0.cmp(&other.0, buffer).unwrap()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue