This commit is contained in:
Cole Miller
2025-12-19 10:48:20 -05:00
parent ae44c3c881
commit 54dc913a79

View File

@@ -189,7 +189,7 @@ use std::{
time::{Duration, Instant},
};
use task::{ResolvedTask, RunnableTag, TaskTemplate, TaskVariables};
use text::{BufferId, FromAnchor, OffsetUtf16, Rope, ToOffset as _};
use text::{BufferId, FromAnchor, OffsetUtf16, Rope, ToOffset as _, ToPoint as _};
use theme::{
AccentColors, ActiveTheme, PlayerColor, StatusColors, SyntaxTheme, Theme, ThemeSettings,
observe_buffer_font_size_adjustment,
@@ -11413,12 +11413,25 @@ impl Editor {
let diff = buffer.diff_for(hunk.buffer_id)?;
let buffer = buffer.buffer(hunk.buffer_id)?;
let buffer = buffer.read(cx);
let original_text = diff
.read(cx)
.base_text()
.as_rope()
.slice(hunk.diff_base_byte_range.start.0..hunk.diff_base_byte_range.end.0);
let base_text = diff.read(cx).base_text();
let mut base_text_start = hunk.diff_base_byte_range.start.0.to_point(base_text);
let buffer_snapshot = buffer.snapshot();
let mut buffer_start = hunk.buffer_range.start.to_point(&buffer_snapshot);
if base_text_start.row > 0
&& base_text_start.column == 0
&& buffer_start.row > 0
&& buffer_start.column == 0
{
base_text_start.row -= 1;
base_text_start.column = base_text.line_len(base_text_start.row);
buffer_start.row -= 1;
buffer_start.column = buffer.line_len(buffer_start.row);
}
let original_text = diff.read(cx).base_text().as_rope().slice(
text::ToOffset::to_offset(&base_text_start, base_text)..hunk.diff_base_byte_range.end.0,
);
let buffer_revert_changes = revert_changes.entry(buffer.remote_id()).or_default();
if let Err(i) = buffer_revert_changes.binary_search_by(|probe| {
probe
@@ -11427,7 +11440,13 @@ impl Editor {
.cmp(&hunk.buffer_range.start, &buffer_snapshot)
.then(probe.0.end.cmp(&hunk.buffer_range.end, &buffer_snapshot))
}) {
buffer_revert_changes.insert(i, (hunk.buffer_range.clone(), original_text));
buffer_revert_changes.insert(
i,
(
buffer_snapshot.anchor_before(buffer_start)..hunk.buffer_range.end,
original_text,
),
);
Some(())
} else {
None