Introduce text::Buffer::subscribe

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
Antonio Scandurra 2021-12-01 15:55:05 +01:00
parent 47c467dafc
commit 3b536f153f
7 changed files with 159 additions and 73 deletions

View file

@ -1322,8 +1322,7 @@ impl Buffer {
was_dirty: bool,
cx: &mut ModelContext<Self>,
) {
let patch =
unsafe { Patch::new_unchecked(self.edits_since::<usize>(old_version).collect()) };
let patch = Patch::new(self.edits_since::<usize>(old_version).collect());
if patch.is_empty() {
return;
}
@ -1502,30 +1501,6 @@ impl Entity for Buffer {
}
}
// TODO: Do we need to clone a buffer?
impl Clone for Buffer {
fn clone(&self) -> Self {
Self {
text: self.text.clone(),
saved_version: self.saved_version.clone(),
saved_mtime: self.saved_mtime,
file: self.file.as_ref().map(|f| f.boxed_clone()),
language: self.language.clone(),
syntax_tree: Mutex::new(self.syntax_tree.lock().clone()),
parsing_in_background: false,
sync_parse_timeout: self.sync_parse_timeout,
parse_count: self.parse_count,
autoindent_requests: Default::default(),
pending_autoindent: Default::default(),
diagnostics: self.diagnostics.clone(),
diagnostics_update_count: self.diagnostics_update_count,
language_server: None,
#[cfg(test)]
operations: self.operations.clone(),
}
}
}
impl Deref for Buffer {
type Target = TextBuffer;