Unnamed repository; edit this file 'description' to name the repository.
Exit gracefully when close operation fails (#4081)
If the close method fails, the editor will quit before restoring the terminal. This causes the shell to break if, e.g. the LS times out shutting down. This fixes this by always restoring the terminal after closing, and printing out a message to stderr if there is an error.
Skyler Hawthorne 2022-10-03
parent 6cca737 · commit 27b7069
-rw-r--r--helix-term/src/application.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index ee0e08ef..c7d98fce 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -870,9 +870,16 @@ impl Application {
}));
self.event_loop(input_stream).await;
- self.close().await?;
+
+ let err = self.close().await.err();
+
restore_term()?;
+ if let Some(err) = err {
+ self.editor.exit_code = 1;
+ eprintln!("Error: {}", err);
+ }
+
Ok(self.editor.exit_code)
}