diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 8580acc15a772925b515afe4afb4b95e106943bc..509ea6bf4facdf45428f8ea1d9af2aefd2def9e4 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -5578,21 +5578,21 @@ impl LineWithInvisibles { }); } } else { - invisibles.extend( - line_chunk - .bytes() - .enumerate() - .filter(|(_, line_byte)| { - let is_whitespace = - (*line_byte as char).is_whitespace(); - non_whitespace_added |= !is_whitespace; - is_whitespace - && (non_whitespace_added || !is_soft_wrapped) - }) - .map(|(whitespace_index, _)| Invisible::Whitespace { - line_offset: line.len() + whitespace_index, - }), - ) + invisibles.extend(line_chunk.char_indices().filter_map( + |(index, c)| { + let is_whitespace = c.is_whitespace(); + non_whitespace_added |= !is_whitespace; + if is_whitespace + && (non_whitespace_added || !is_soft_wrapped) + { + Some(Invisible::Whitespace { + line_offset: line.len() + index, + }) + } else { + None + } + }, + )) } }