Remove use of current File for new buffers that never have File (#20832)

`create_buffer` calls `Buffer::local` which sets `file` to `None`
[here](https://github.com/zed-industries/zed/blob/f12981db32f9b936cd29e39ccc7f8a0b4e54cee1/crates/language/src/buffer.rs#L629).
So there's no point in then immediately attempting to update maps that
rely on `file` being present.

Release Notes:

- N/A
This commit is contained in:
Michael Sloan
2024-11-18 14:30:38 -08:00
committed by GitHub
parent 8666ec95ba
commit b4c2f29c8b
-18
View File
@@ -902,30 +902,12 @@ impl BufferStoreImpl for Model<LocalBufferStore> {
}
fn create_buffer(&self, cx: &mut ModelContext<BufferStore>) -> Task<Result<Model<Buffer>>> {
let handle = self.clone();
cx.spawn(|buffer_store, mut cx| async move {
let buffer = cx.new_model(|cx| {
Buffer::local("", cx).with_language(language::PLAIN_TEXT.clone(), cx)
})?;
buffer_store.update(&mut cx, |buffer_store, cx| {
buffer_store.add_buffer(buffer.clone(), cx).log_err();
let buffer_id = buffer.read(cx).remote_id();
handle.update(cx, |this, cx| {
if let Some(file) = File::from_dyn(buffer.read(cx).file()) {
this.local_buffer_ids_by_path.insert(
ProjectPath {
worktree_id: file.worktree_id(cx),
path: file.path.clone(),
},
buffer_id,
);
if let Some(entry_id) = file.entry_id {
this.local_buffer_ids_by_entry_id
.insert(entry_id, buffer_id);
}
}
});
})?;
Ok(buffer)
})