@@ -2094,7 +2094,7 @@ impl Conversation {
let buffer = self.buffer.read(cx);
let mut message_anchors = self.message_anchors.iter().enumerate().peekable();
iter::from_fn(move || {
- while let Some((start_ix, message_anchor)) = message_anchors.next() {
+ if let Some((start_ix, message_anchor)) = message_anchors.next() {
let metadata = self.messages_metadata.get(&message_anchor.id)?;
let message_start = message_anchor.start.to_offset(buffer);
let mut message_end = None;
@@ -1349,7 +1349,7 @@ impl MultiBuffer {
cursor.next(&());
// Skip over any subsequent excerpts that are also removed.
- while let Some(&next_excerpt_id) = excerpt_ids.peek() {
+ if let Some(&next_excerpt_id) = excerpt_ids.peek() {
let next_locator = snapshot.excerpt_locator_for_id(next_excerpt_id);
if let Some(next_excerpt) = cursor.item() {
if next_excerpt.locator == *next_locator {
@@ -1358,7 +1358,6 @@ impl MultiBuffer {
continue 'remove_excerpts;
}
}
- break;
}
break;
@@ -230,68 +230,66 @@ fn start_default_prettier(
cx: &mut ModelContext<'_, Project>,
) -> Task<anyhow::Result<PrettierTask>> {
cx.spawn(|project, mut cx| async move {
- loop {
- let installation_task = project.update(&mut cx, |project, _| {
- match &project.default_prettier.prettier {
- PrettierInstallation::NotInstalled {
- installation_task, ..
- } => ControlFlow::Continue(installation_task.clone()),
- PrettierInstallation::Installed(default_prettier) => {
- ControlFlow::Break(default_prettier.clone())
- }
+ let installation_task = project.update(&mut cx, |project, _| {
+ match &project.default_prettier.prettier {
+ PrettierInstallation::NotInstalled {
+ installation_task, ..
+ } => ControlFlow::Continue(installation_task.clone()),
+ PrettierInstallation::Installed(default_prettier) => {
+ ControlFlow::Break(default_prettier.clone())
}
- })?;
- match installation_task {
- ControlFlow::Continue(None) => {
- anyhow::bail!("Default prettier is not installed and cannot be started")
+ }
+ })?;
+ match installation_task {
+ ControlFlow::Continue(None) => {
+ anyhow::bail!("Default prettier is not installed and cannot be started")
+ }
+ ControlFlow::Continue(Some(installation_task)) => {
+ log::info!("Waiting for default prettier to install");
+ if let Err(e) = installation_task.await {
+ project.update(&mut cx, |project, _| {
+ if let PrettierInstallation::NotInstalled {
+ installation_task,
+ attempts,
+ ..
+ } = &mut project.default_prettier.prettier
+ {
+ *installation_task = None;
+ *attempts += 1;
+ }
+ })?;
+ anyhow::bail!(
+ "Cannot start default prettier due to its installation failure: {e:#}"
+ );
}
- ControlFlow::Continue(Some(installation_task)) => {
- log::info!("Waiting for default prettier to install");
- if let Err(e) = installation_task.await {
- project.update(&mut cx, |project, _| {
- if let PrettierInstallation::NotInstalled {
- installation_task,
- attempts,
- ..
- } = &mut project.default_prettier.prettier
- {
- *installation_task = None;
- *attempts += 1;
- }
- })?;
- anyhow::bail!(
- "Cannot start default prettier due to its installation failure: {e:#}"
- );
- }
+ let new_default_prettier = project.update(&mut cx, |project, cx| {
+ let new_default_prettier =
+ start_prettier(node, DEFAULT_PRETTIER_DIR.clone(), worktree_id, cx);
+ project.default_prettier.prettier =
+ PrettierInstallation::Installed(PrettierInstance {
+ attempt: 0,
+ prettier: Some(new_default_prettier.clone()),
+ });
+ new_default_prettier
+ })?;
+ return Ok(new_default_prettier);
+ }
+ ControlFlow::Break(instance) => match instance.prettier {
+ Some(instance) => return Ok(instance),
+ None => {
let new_default_prettier = project.update(&mut cx, |project, cx| {
let new_default_prettier =
start_prettier(node, DEFAULT_PRETTIER_DIR.clone(), worktree_id, cx);
project.default_prettier.prettier =
PrettierInstallation::Installed(PrettierInstance {
- attempt: 0,
+ attempt: instance.attempt + 1,
prettier: Some(new_default_prettier.clone()),
});
new_default_prettier
})?;
return Ok(new_default_prettier);
}
- ControlFlow::Break(instance) => match instance.prettier {
- Some(instance) => return Ok(instance),
- None => {
- let new_default_prettier = project.update(&mut cx, |project, cx| {
- let new_default_prettier =
- start_prettier(node, DEFAULT_PRETTIER_DIR.clone(), worktree_id, cx);
- project.default_prettier.prettier =
- PrettierInstallation::Installed(PrettierInstance {
- attempt: instance.attempt + 1,
- prettier: Some(new_default_prettier.clone()),
- });
- new_default_prettier
- })?;
- return Ok(new_default_prettier);
- }
- },
- }
+ },
}
})
}