@@ -951,28 +951,10 @@ impl Application {
952 self.event_loop(input_stream).await;
952 self.event_loop(input_stream).await;
954− // let mut save_errs = Vec::new();
956− // for doc in self.editor.documents_mut() {
957− // if let Some(Err(err)) = doc.close().await {
960− // .map(|path| path.to_string_lossy().into_owned())
961− // .unwrap_or_else(|| "".into()),
967− let close_err = self.close().await.err();
954+ let close_errs = self.close().await;
968 restore_term()?;
955 restore_term()?;
970− // for (path, err) in save_errs {
957+ for err in close_errs {
971− // self.editor.exit_code = 1;
972− // eprintln!("Error closing '{}': {}", path, err);
975− if let Some(err) = close_err {
976 self.editor.exit_code = 1;
958 self.editor.exit_code = 1;
977 eprintln!("Error: {}", err);
959 eprintln!("Error: {}", err);
@@ -980,49 +962,41 @@ impl Application {
980 Ok(self.editor.exit_code)
962 Ok(self.editor.exit_code)
983− pub async fn close(&mut self) -> anyhow::Result<()> {
965+ pub async fn close(&mut self) -> Vec<anyhow::Error> {
984 // [NOTE] we intentionally do not return early for errors because we
966 // [NOTE] we intentionally do not return early for errors because we
985 // want to try to run as much cleanup as we can, regardless of
967 // want to try to run as much cleanup as we can, regardless of
986 // errors along the way
968 // errors along the way
969+ let mut errs = Vec::new();
988− let mut result = match self
971+ if let Err(err) = self
990 .finish(&mut self.editor, Some(&mut self.compositor))
973 .finish(&mut self.editor, Some(&mut self.compositor))
995− log::error!("Error executing job: {}", err);
976+ log::error!("Error executing job: {}", err);
996− Err(err)
977+ errs.push(err);
1000 for doc in self.editor.documents_mut() {
980 for doc in self.editor.documents_mut() {
1001− if let Some(save_result) = doc.close().await {
981+ if let Some(Err(err)) = doc.close().await {
1002− result = match save_result {
1005− if let Some(path) = doc.path() {
982+ if let Some(path) = doc.path() {
1006− log::error!(
983+ log::error!(
1007− "Error saving document '{}': {}",
984+ "Error saving document '{}': {}",
1008− path.to_string_lossy(),
985+ path.to_string_lossy(),
1012− Err(err)
989+ errs.push(err);
1018− match self.editor.close_language_servers(None).await {
993+ if self.editor.close_language_servers(None).await.is_err() {
1021− log::error!("Timed out waiting for language servers to shutdown");
994+ log::error!("Timed out waiting for language servers to shutdown");
1022− Err(anyhow::format_err!(
995+ errs.push(anyhow::format_err!(
1023− "Timed out waiting for language servers to shutdown"
996+ "Timed out waiting for language servers to shutdown"