Change summary
crates/language/src/syntax_map.rs | 32 ++++++++++++++++++++++++++++----
1 file changed, 28 insertions(+), 4 deletions(-)
Detailed changes
@@ -453,10 +453,9 @@ impl SyntaxSnapshot {
Some(old_layer.tree.clone()),
);
changed_ranges = join_ranges(
- edits
- .iter()
- .map(|e| e.new.clone())
- .filter(|range| range.start < step_end_byte && range.end > step_start_byte),
+ edits.iter().map(|e| e.new.clone()).filter(|range| {
+ range.start <= step_end_byte && range.end >= step_start_byte
+ }),
old_layer
.tree
.changed_ranges(&tree)
@@ -1919,6 +1918,31 @@ mod tests {
);
}
+ #[gpui::test]
+ fn test_combined_injections_splitting_some_injections() {
+ let (_buffer, _syntax_map) = test_edit_sequence(
+ "ERB",
+ &[
+ r#"
+ <%A if b(:c) %>
+ d
+ <% end %>
+ eee
+ <% f %>
+ "#,
+ r#"
+ <%ยซ AAAAAAA %>
+ hhhhhhh
+ <%=ยป if b(:c) %>
+ d
+ <% end %>
+ eee
+ <% f %>
+ "#,
+ ],
+ );
+ }
+
#[gpui::test(iterations = 50)]
fn test_random_syntax_map_edits(mut rng: StdRng) {
let operations = env::var("OPERATIONS")