Get tests passing w/ multibuffer in editor

Max Brunsfeld and Nathan Sobo created

Co-Authored-By: Nathan Sobo <nathan@zed.dev>

Change summary

crates/editor/src/editor.rs                | 3 ++-
crates/language/src/multi_buffer/anchor.rs | 3 +++
2 files changed, 5 insertions(+), 1 deletion(-)

Detailed changes

crates/editor/src/editor.rs 🔗

@@ -2403,8 +2403,9 @@ impl Editor {
         let mut to_unfold = Vec::new();
         let mut new_selections = Vec::new();
         {
+            let selections = self.selections::<Point>(cx);
             let buffer = self.buffer.read(cx).read(cx);
-            for selection in self.selections::<Point>(cx) {
+            for selection in selections {
                 for row in selection.start.row..selection.end.row {
                     let cursor = Point::new(row, buffer.line_len(row));
                     new_selections.push(Selection {

crates/language/src/multi_buffer/anchor.rs 🔗

@@ -31,6 +31,9 @@ impl Anchor {
     pub fn cmp<'a>(&self, other: &Anchor, snapshot: &MultiBufferSnapshot) -> Result<Ordering> {
         let excerpt_id_cmp = self.excerpt_id.cmp(&other.excerpt_id);
         if excerpt_id_cmp.is_eq() {
+            if self.excerpt_id == ExcerptId::max() {
+                return Ok(Ordering::Equal);
+            }
             self.text_anchor.cmp(
                 &other.text_anchor,
                 snapshot