@@ -471,16 +471,25 @@ impl MultiBuffer {
}
self.insert_excerpts_with_ids_after(insert_after, buffer, to_insert, cx);
+ // todo(lw): There is a logic bug somewhere that causes the to_remove vector to be not ordered correctly
+ to_remove.sort_by_cached_key(|&id| snapshot.excerpt_locator_for_id(id));
self.remove_excerpts(to_remove, cx);
if excerpt_ids.is_empty() {
self.excerpts_by_path.remove(&path);
} else {
- for excerpt_id in &excerpt_ids {- self.paths_by_excerpt.insert(*excerpt_id, path.clone());
+ let snapshot = &*self.snapshot.get_mut();
+ let excerpt_ids = excerpt_ids
+ .iter()
+ .dedup()
+ .cloned()
+ // todo(lw): There is a logic bug somewhere that causes excerpt_ids to not necessarily be in order by locator
+ .sorted_by_cached_key(|&id| snapshot.excerpt_locator_for_id(id))
+ .collect();
+ for &excerpt_id in &excerpt_ids {
+ self.paths_by_excerpt.insert(excerpt_id, path.clone());
}
- self.excerpts_by_path- .insert(path, excerpt_ids.iter().dedup().cloned().collect());
+ self.excerpts_by_path.insert(path, excerpt_ids);
}
PathExcerptInsertResult {