diff --git a/crates/project2/src/project2.rs b/crates/project2/src/project2.rs index 4c6a601d96..4b8f061a4d 100644 --- a/crates/project2/src/project2.rs +++ b/crates/project2/src/project2.rs @@ -800,7 +800,7 @@ impl Project { this.set_collaborators_from_proto(response.payload.collaborators, cx)?; this.client_subscriptions.push(subscription); anyhow::Ok(()) - })?; + })??; Ok(this) } @@ -1832,7 +1832,8 @@ impl Project { (worktree.read(cx).id(), language_server_name), language_server_id, ); - }); + }) + .ok(); (worktree, PathBuf::new()) }; @@ -1915,7 +1916,7 @@ impl Project { if let Some(old_file) = &old_file { this.update(&mut cx, |this, cx| { this.unregister_buffer_from_language_servers(&buffer, old_file, cx); - }); + })?; } let (worktree, path) = worktree_task.await?; worktree @@ -1930,7 +1931,7 @@ impl Project { this.update(&mut cx, |this, cx| { this.detect_language_for_buffer(&buffer, cx); this.register_buffer_with_language_servers(&buffer, cx); - }); + })?; Ok(()) }) } @@ -2241,7 +2242,7 @@ impl Project { is_local, &mut cx, ) - .await; + .await?; this.update(&mut cx, |this, _| { if let Some(project_id) = this.remote_id() { @@ -2253,7 +2254,7 @@ impl Project { }) .log_err(); } - }); + })?; } } } @@ -2265,7 +2266,7 @@ impl Project { is_local, &mut cx, ) - .await; + .await?; } Ok(()) @@ -2446,7 +2447,7 @@ impl Project { }, ) .ok(); - }); + }).ok(); } }); *simulate_disk_based_diagnostics_completion = Some(task); @@ -2587,46 +2588,54 @@ impl Project { let reload_count = languages.reload_count(); if reload_count > prev_reload_count { prev_reload_count = reload_count; - project.update(&mut cx, |this, cx| { - let buffers = this - .opened_buffers - .values() - .filter_map(|b| b.upgrade()) - .collect::>(); - for buffer in buffers { - if let Some(f) = File::from_dyn(buffer.read(cx).file()).cloned() { - this.unregister_buffer_from_language_servers(&buffer, &f, cx); - buffer.update(cx, |buffer, cx| buffer.set_language(None, cx)); + project + .update(&mut cx, |this, cx| { + let buffers = this + .opened_buffers + .values() + .filter_map(|b| b.upgrade()) + .collect::>(); + for buffer in buffers { + if let Some(f) = File::from_dyn(buffer.read(cx).file()).cloned() + { + this.unregister_buffer_from_language_servers( + &buffer, &f, cx, + ); + buffer + .update(cx, |buffer, cx| buffer.set_language(None, cx)); + } } - } - }); + }) + .ok(); } - project.update(&mut cx, |project, cx| { - let mut plain_text_buffers = Vec::new(); - let mut buffers_with_unknown_injections = Vec::new(); - for buffer in project.opened_buffers.values() { - if let Some(handle) = buffer.upgrade() { - let buffer = &handle.read(cx); - if buffer.language().is_none() - || buffer.language() == Some(&*language2::PLAIN_TEXT) - { - plain_text_buffers.push(handle); - } else if buffer.contains_unknown_injections() { - buffers_with_unknown_injections.push(handle); + project + .update(&mut cx, |project, cx| { + let mut plain_text_buffers = Vec::new(); + let mut buffers_with_unknown_injections = Vec::new(); + for buffer in project.opened_buffers.values() { + if let Some(handle) = buffer.upgrade() { + let buffer = &handle.read(cx); + if buffer.language().is_none() + || buffer.language() == Some(&*language2::PLAIN_TEXT) + { + plain_text_buffers.push(handle); + } else if buffer.contains_unknown_injections() { + buffers_with_unknown_injections.push(handle); + } } } - } - for buffer in plain_text_buffers { - project.detect_language_for_buffer(&buffer, cx); - project.register_buffer_with_language_servers(&buffer, cx); - } + for buffer in plain_text_buffers { + project.detect_language_for_buffer(&buffer, cx); + project.register_buffer_with_language_servers(&buffer, cx); + } - for buffer in buffers_with_unknown_injections { - buffer.update(cx, |buffer, cx| buffer.reparse(cx)); - } - }); + for buffer in buffers_with_unknown_injections { + buffer.update(cx, |buffer, cx| buffer.reparse(cx)); + } + }) + .ok(); } } }) @@ -2834,7 +2843,8 @@ impl Project { installation_test_binary, cx, ) - }); + }) + .ok(); } } @@ -2948,7 +2958,7 @@ impl Project { key, cx, ) - })?; + })??; Ok(Some(language_server)) } @@ -2983,7 +2993,8 @@ impl Project { cx, ) .log_err(); - }); + }) + .ok(); } } }) @@ -3111,7 +3122,8 @@ impl Project { disk_based_diagnostics_progress_token.clone(), cx, ); - }); + }) + .ok(); } }) .detach(); @@ -3321,7 +3333,8 @@ impl Project { this.update(&mut cx, |this, cx| { this.language_server_statuses.remove(&server_id); cx.notify(); - }); + }) + .ok(); } (root_path, orphaned_worktrees) @@ -3411,7 +3424,8 @@ impl Project { } } } - }); + }) + .ok(); }) .detach(); } @@ -3757,7 +3771,7 @@ impl Project { this.last_workspace_edits_by_language_server .insert(server_id, transaction); } - }); + })?; Ok(lsp2::ApplyWorkspaceEditResponse { applied: true, failed_change: None, @@ -4061,7 +4075,7 @@ impl Project { } project_transaction.0.insert(cx.handle(), transaction); } - }); + })?; } Ok(project_transaction) @@ -4097,7 +4111,7 @@ impl Project { this.buffers_being_formatted .insert(buffer.read(cx).remote_id()) }); - }); + })?; let _cleanup = defer({ let this = this.clone(); @@ -4109,7 +4123,7 @@ impl Project { this.buffers_being_formatted .remove(&buffer.read(cx).remote_id()); } - }); + }).ok(); } }); @@ -4305,7 +4319,7 @@ impl Project { } project_transaction.0.insert(buffer.clone(), transaction); } - }); + })?; } Ok(project_transaction) @@ -4779,7 +4793,7 @@ impl Project { cx, )); } - }); + })?; let mut completions = Vec::new(); for task in tasks { @@ -4896,7 +4910,7 @@ impl Project { if push_to_history { buffer_handle.update(&mut cx, |buffer, _| { buffer.push_transaction(transaction.clone(), Instant::now()); - }); + })?; } Ok(Some(transaction)) } else { @@ -4985,7 +4999,7 @@ impl Project { this.update(&mut cx, |this, _| { this.last_workspace_edits_by_language_server .remove(&lang_server.server_id()); - }); + })?; let result = lang_server .request::(lsp2::ExecuteCommandParams { @@ -5046,7 +5060,7 @@ impl Project { this.update(&mut cx, |this, cx| { this.buffers_being_formatted .insert(buffer.read(cx).remote_id()) - }); + })?; let _cleanup = defer({ let this = this.clone(); @@ -5056,7 +5070,8 @@ impl Project { this.update(&mut cx, |this, cx| { this.buffers_being_formatted .remove(&closure_buffer.read(cx).remote_id()); - }); + }) + .ok(); } }); @@ -6022,10 +6037,11 @@ impl Project { project.update(&mut cx, |project, _| { project.loading_local_worktrees.remove(&path); - }); + })?; let worktree = worktree?; - project.update(&mut cx, |project, cx| project.add_worktree(&worktree, cx)); + project + .update(&mut cx, |project, cx| project.add_worktree(&worktree, cx))?; Ok(worktree) } .map_err(Arc::new) @@ -6445,7 +6461,8 @@ impl Project { } } }); - }); + }) + .ok(); }) .detach(); } @@ -6649,7 +6666,7 @@ impl Project { this.collaborators .insert(collaborator.peer_id, collaborator); cx.notify(); - }); + })?; Ok(()) } @@ -6879,7 +6896,7 @@ impl Project { ) -> Result { let entry_id = ProjectEntryId::from_proto(envelope.payload.entry_id); - this.update(&mut cx, |_, cx| cx.emit(Event::DeletedEntry(entry_id))); + this.update(&mut cx, |_, cx| cx.emit(Event::DeletedEntry(entry_id)))?; let worktree = this.update(&mut cx, |this, cx| { this.worktree_for_entry(entry_id, cx) @@ -6975,7 +6992,7 @@ impl Project { }, ); cx.notify(); - }); + })?; Ok(()) } @@ -7346,7 +7363,7 @@ impl Project { .detach(); } } - }); + })?; Ok(response) } @@ -7803,7 +7820,7 @@ impl Project { if push_to_history { buffer.update(&mut cx, |buffer, _| { buffer.push_transaction(transaction.clone(), Instant::now()); - }); + })?; } } @@ -8524,7 +8541,8 @@ impl Project { project .prettier_instances .insert((worktree_id, prettier_dir), new_prettier_task.clone()); - }); + }) + .ok(); Some(new_prettier_task) }) } else if self.remote_id().is_some() { diff --git a/crates/project2/src/worktree.rs b/crates/project2/src/worktree.rs index 56133ba595..506b64a4cb 100644 --- a/crates/project2/src/worktree.rs +++ b/crates/project2/src/worktree.rs @@ -358,7 +358,8 @@ impl Worktree { } } cx.notify(); - }); + }) + .ok(); } }) .detach(); @@ -962,7 +963,7 @@ impl LocalWorktree { if has_changed_file { buffer.file_updated(new_file, cx).detach(); } - }); + })?; } if let Some(project_id) = project_id { @@ -977,7 +978,7 @@ impl LocalWorktree { buffer_handle.update(&mut cx, |buffer, cx| { buffer.did_save(version.clone(), fingerprint, entry.mtime, cx); - }); + })?; Ok(()) }) @@ -1453,7 +1454,7 @@ impl RemoteWorktree { let mut snapshot = worktree.background_snapshot.lock(); snapshot.delete_entry(id); worktree.snapshot = snapshot.clone(); - }); + })?; Ok(()) }) }