mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-02 15:00:23 +00:00
Add more InlaySnapshot text summary impls
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
This commit is contained in:
parent
568a67c4d7
commit
ab7dd80423
1 changed files with 55 additions and 7 deletions
|
@ -310,7 +310,6 @@ impl InlayMap {
|
||||||
drop(cursor);
|
drop(cursor);
|
||||||
|
|
||||||
snapshot.suggestion_snapshot = suggestion_snapshot;
|
snapshot.suggestion_snapshot = suggestion_snapshot;
|
||||||
dbg!(new_transforms.items(&()));
|
|
||||||
snapshot.transforms = new_transforms;
|
snapshot.transforms = new_transforms;
|
||||||
|
|
||||||
(snapshot.clone(), Default::default())
|
(snapshot.clone(), Default::default())
|
||||||
|
@ -555,10 +554,61 @@ impl InlaySnapshot {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn text_summary_for_range(&self, range: Range<InlayPoint>) -> TextSummary {
|
pub fn text_summary_for_range(&self, range: Range<InlayPoint>) -> TextSummary {
|
||||||
// TODO kb copied from suggestion_map
|
let mut summary = TextSummary::default();
|
||||||
self.suggestion_snapshot.text_summary_for_range(
|
|
||||||
self.to_suggestion_point(range.start)..self.to_suggestion_point(range.end),
|
let mut cursor = self.transforms.cursor::<(InlayPoint, SuggestionPoint)>();
|
||||||
)
|
cursor.seek(&range.start, Bias::Right, &());
|
||||||
|
|
||||||
|
let overshoot = range.start.0 - cursor.start().0 .0;
|
||||||
|
match cursor.item() {
|
||||||
|
Some(Transform::Isomorphic(transform)) => {
|
||||||
|
let suggestion_start = cursor.start().1 .0;
|
||||||
|
let suffix_start = SuggestionPoint(suggestion_start + overshoot);
|
||||||
|
let suffix_end = SuggestionPoint(
|
||||||
|
suggestion_start
|
||||||
|
+ (cmp::min(cursor.end(&()).0, range.end).0 - cursor.start().0 .0),
|
||||||
|
);
|
||||||
|
summary = self
|
||||||
|
.suggestion_snapshot
|
||||||
|
.text_summary_for_range(suffix_start..suffix_end);
|
||||||
|
cursor.next(&());
|
||||||
|
}
|
||||||
|
Some(Transform::Inlay(inlay)) => {
|
||||||
|
let text = &inlay.properties.text;
|
||||||
|
let suffix_start = text.point_to_offset(overshoot);
|
||||||
|
let suffix_end = text.point_to_offset(
|
||||||
|
cmp::min(cursor.end(&()).0, range.end).0 - cursor.start().0 .0,
|
||||||
|
);
|
||||||
|
summary = text.cursor(suffix_start).summary(suffix_end);
|
||||||
|
cursor.next(&());
|
||||||
|
}
|
||||||
|
None => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
if range.end > cursor.start().0 {
|
||||||
|
summary += cursor
|
||||||
|
.summary::<_, TransformSummary>(&range.end, Bias::Right, &())
|
||||||
|
.output;
|
||||||
|
|
||||||
|
let overshoot = range.end.0 - cursor.start().0 .0;
|
||||||
|
match cursor.item() {
|
||||||
|
Some(Transform::Isomorphic(transform)) => {
|
||||||
|
let prefix_start = cursor.start().1;
|
||||||
|
let prefix_end = SuggestionPoint(prefix_start.0 + overshoot);
|
||||||
|
summary += self
|
||||||
|
.suggestion_snapshot
|
||||||
|
.text_summary_for_range(prefix_start..prefix_end);
|
||||||
|
}
|
||||||
|
Some(Transform::Inlay(inlay)) => {
|
||||||
|
let text = &inlay.properties.text;
|
||||||
|
let prefix_end = text.point_to_offset(overshoot);
|
||||||
|
summary += text.cursor(0).summary::<TextSummary>(prefix_end);
|
||||||
|
}
|
||||||
|
None => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
summary
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn buffer_rows<'a>(&'a self, row: u32) -> InlayBufferRows<'a> {
|
pub fn buffer_rows<'a>(&'a self, row: u32) -> InlayBufferRows<'a> {
|
||||||
|
@ -579,8 +629,6 @@ impl InlaySnapshot {
|
||||||
text_highlights: Option<&'a TextHighlights>,
|
text_highlights: Option<&'a TextHighlights>,
|
||||||
suggestion_highlight: Option<HighlightStyle>,
|
suggestion_highlight: Option<HighlightStyle>,
|
||||||
) -> InlayChunks<'a> {
|
) -> InlayChunks<'a> {
|
||||||
dbg!(self.transforms.items(&()));
|
|
||||||
|
|
||||||
let mut cursor = self.transforms.cursor::<(InlayOffset, SuggestionOffset)>();
|
let mut cursor = self.transforms.cursor::<(InlayOffset, SuggestionOffset)>();
|
||||||
cursor.seek(&range.start, Bias::Right, &());
|
cursor.seek(&range.start, Bias::Right, &());
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue