Fix `Buffer::remote_selections_in_range` at query range boundaries

Antonio Scandurra created

Change summary

crates/language/src/buffer.rs | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)

Detailed changes

crates/language/src/buffer.rs 🔗

@@ -1814,14 +1814,22 @@ impl BufferSnapshot {
             .iter()
             .filter(|(replica_id, _)| **replica_id != self.text.replica_id())
             .map(move |(replica_id, selections)| {
-                let start_ix = match selections
-                    .binary_search_by(|probe| probe.end.cmp(&range.start, self).unwrap())
-                {
+                let start_ix = match selections.binary_search_by(|probe| {
+                    probe
+                        .end
+                        .cmp(&range.start, self)
+                        .unwrap()
+                        .then(Ordering::Greater)
+                }) {
                     Ok(ix) | Err(ix) => ix,
                 };
-                let end_ix = match selections
-                    .binary_search_by(|probe| probe.start.cmp(&range.end, self).unwrap())
-                {
+                let end_ix = match selections.binary_search_by(|probe| {
+                    probe
+                        .start
+                        .cmp(&range.end, self)
+                        .unwrap()
+                        .then(Ordering::Less)
+                }) {
                     Ok(ix) | Err(ix) => ix,
                 };