diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index e534df3d65..951a41f9dd 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -3123,14 +3123,24 @@ impl Editor { let anchor = snapshot.anchor_after(selection.end); if !self.linked_edit_ranges.is_empty() { let start_anchor = snapshot.anchor_before(selection.start); - if let Some(ranges) = - self.linked_editing_ranges_for(start_anchor.text_anchor..anchor.text_anchor, cx) - { - for (buffer, edits) in ranges { - linked_edits - .entry(buffer.clone()) - .or_default() - .extend(edits.into_iter().map(|range| (range, text.clone()))); + + let is_word_char = text.chars().next().map_or(true, |char| { + let scope = snapshot.language_scope_at(start_anchor.to_offset(&snapshot)); + let kind = char_kind(&scope, char); + + kind == CharKind::Word + }); + + if is_word_char { + if let Some(ranges) = self + .linked_editing_ranges_for(start_anchor.text_anchor..anchor.text_anchor, cx) + { + for (buffer, edits) in ranges { + linked_edits + .entry(buffer.clone()) + .or_default() + .extend(edits.into_iter().map(|range| (range, text.clone()))); + } } } }