diff --git a/crates/buffer/src/lib.rs b/crates/buffer/src/lib.rs index a5771ad4c0f55508bad6a93d73b674230a627e29..eec7da424bd972b1babf909849c86291a04a337c 100644 --- a/crates/buffer/src/lib.rs +++ b/crates/buffer/src/lib.rs @@ -73,12 +73,6 @@ pub struct Buffer { lamport_clock: clock::Lamport, } -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct SelectionSet { - pub selections: Arc<[Selection]>, - pub active: bool, -} - #[derive(Clone, Debug)] pub struct Transaction { start: clock::Global, @@ -2248,17 +2242,6 @@ impl<'a> Into for &'a Anchor { } } -impl<'a> Into for &'a Selection { - fn into(self) -> proto::Selection { - proto::Selection { - id: self.id as u64, - start: Some((&self.start).into()), - end: Some((&self.end).into()), - reversed: self.reversed, - } - } -} - impl TryFrom for Operation { type Error = anyhow::Error; diff --git a/crates/buffer/src/selection.rs b/crates/buffer/src/selection.rs index 98f34865f55a4544a749ce2a8d5c9cb305ab9394..df0834b67f72df2ef63a0a59f1166d572c814800 100644 --- a/crates/buffer/src/selection.rs +++ b/crates/buffer/src/selection.rs @@ -1,5 +1,7 @@ +use rpc::proto; + use crate::{Anchor, Buffer, Point, ToOffset as _, ToPoint as _}; -use std::{cmp::Ordering, mem, ops::Range}; +use std::{cmp::Ordering, mem, ops::Range, sync::Arc}; pub type SelectionSetId = clock::Lamport; pub type SelectionsVersion = usize; @@ -20,6 +22,12 @@ pub struct Selection { pub goal: SelectionGoal, } +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct SelectionSet { + pub selections: Arc<[Selection]>, + pub active: bool, +} + impl Selection { pub fn head(&self) -> &Anchor { if self.reversed { @@ -73,3 +81,14 @@ impl Selection { } } } + +impl<'a> Into for &'a Selection { + fn into(self) -> proto::Selection { + proto::Selection { + id: self.id as u64, + start: Some((&self.start).into()), + end: Some((&self.end).into()), + reversed: self.reversed, + } + } +}