aboutsummaryrefslogtreecommitdiff
path: root/helix-term
diff options
context:
space:
mode:
authorSkyler Hawthorne2022-10-03 15:35:42 +0000
committerGitHub2022-10-03 15:35:42 +0000
commit27b70696df78430c5596cb7681be496ac305ec05 (patch)
tree33b023637a90b196673feca96fcbdd464e416ef2 /helix-term
parent6cca7375ec1965e61c791bbe738c617ea43c6dce (diff)
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.
Diffstat (limited to 'helix-term')
-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)
}