Draft remote prettier formatting

This commit is contained in:
Kirill Bulatov
2023-10-11 12:56:29 +03:00
parent 2ec2036c2f
commit b5705e079f
5 changed files with 121 additions and 32 deletions
+2 -2
View File
@@ -317,8 +317,8 @@ pub struct Chunk<'a> {
pub struct Diff {
pub(crate) base_version: clock::Global,
line_ending: LineEnding,
edits: Vec<(Range<usize>, Arc<str>)>,
pub(crate) line_ending: LineEnding,
pub(crate) edits: Vec<(Range<usize>, Arc<str>)>,
}
#[derive(Clone, Copy)]
+40 -1
View File
@@ -1,6 +1,6 @@
use crate::{
diagnostic_set::DiagnosticEntry, CodeAction, CodeLabel, Completion, CursorShape, Diagnostic,
Language,
Diff, Language,
};
use anyhow::{anyhow, Result};
use clock::ReplicaId;
@@ -587,3 +587,42 @@ pub fn serialize_version(version: &clock::Global) -> Vec<proto::VectorClockEntry
})
.collect()
}
pub fn serialize_diff(diff: Diff) -> proto::Diff {
proto::Diff {
version: serialize_version(&diff.base_version),
line_ending: serialize_line_ending(diff.line_ending) as i32,
edits: diff
.edits
.into_iter()
.map(|(range, edit)| proto::DiffEdit {
range: Some(proto::Range {
start: range.start as u64,
end: range.end as u64,
}),
edit: edit.to_string(),
})
.collect(),
}
}
pub fn deserialize_diff(diff: proto::Diff) -> Diff {
Diff {
base_version: deserialize_version(&diff.version),
line_ending: deserialize_line_ending(
rpc::proto::LineEnding::from_i32(diff.line_ending)
.unwrap_or_else(|| panic!("invalid line ending {}", diff.line_ending)),
),
edits: diff
.edits
.into_iter()
.map(|edit| {
let range = edit.range.expect("incorrect edit without a range");
(
range.start as usize..range.end as usize,
Arc::from(edit.edit.as_str()),
)
})
.collect(),
}
}