diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 58f6e549a4..c587a61620 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -4737,8 +4737,8 @@ impl Editor { let lookahead = replace_range .end .saturating_sub(newest_anchor.end.text_anchor.to_offset(buffer)); - let prefix = &old_text[..old_text.len() - lookahead]; - let suffix = &old_text[lookbehind..]; + let prefix = &old_text[..old_text.len().saturating_sub(lookahead)]; + let suffix = &old_text[lookbehind.min(old_text.len())..]; let selections = self.selections.all::(cx); let mut edits = Vec::new(); @@ -4753,7 +4753,7 @@ impl Editor { // if prefix is present, don't duplicate it if snapshot.contains_str_at(range.start.saturating_sub(lookbehind), prefix) { - text = &new_text[lookbehind..]; + text = &new_text[lookbehind.min(new_text.len())..]; // if suffix is also present, mimic the newest cursor and replace it if selection.id != newest_anchor.id